π Language: English | δΈζ
A comprehensive guide and toolkit for creating 3Blue1Brown-style mathematical explainer animations using Manim Community (ManimCE).
This project combines narrative-first planning with ManimCE implementation best practices, providing a structured workflow from concept to production-ready animation.
Manim Personal Style is designed to help you create engaging mathematical visualizations by:
- Planning first: Draft detailed scene compositions before writing code
- Best practices: Follow proven patterns and rules from the Manim community and 3Blue1Brown's style
- Reusable patterns: Templates, examples, and rule documents for common scenarios
- Modular workflow: Three-phase approach (understand β plan β implement)
Perfect for educators, content creators, and anyone making math explainer videos.
Add this skills toolkit to your project with a single command:
npx skills add Ermaotie/manim-personal-styleThis will import all templates, examples, rules, and references into your workspace, giving you instant access to:
- π Scene planning templates
- π Complete rule documentation
- π‘ Working code examples
- π¨ Visual technique guides
Requirements:
- Node.js 14+ (for
npx) - Manim Community installed (for animation rendering)
Before planning, gather key requirements:
- Audience and scope (who is this for? what's the core concept?)
- Length and delivery format (mp4/gif, resolution/quality)
- Style and visual metaphors (animations, colors, recurring motifs)
- Narration and math depth (what's the target knowledge level?)
- Assets and constraints (timeline, render limits, brand colors)
Create a comprehensive scene plan using the provided template:
- Break the video into clear scenes with purpose, visuals, and narration
- Define a color palette and visual language
- Outline transitions and recurring motifs
- Include technical notes for implementation
Output: scenes.md in your working directory (use templates/scenes-template.md as a guide)
Validate the spatial layout and frame composition:
- Enumerate all objects, their sizes and positions for each scene
- Perform boundary checks (ensure objects fit within frame)
- Check for overlaps and resolve conflicts
- Document z-order if relevant for 3D scenes
Output: scene_with_position.md in your working directory (use templates/scene-with-position-template.md)
- Request user approval or edits to the plan
- Validate total duration, style, and delivery format fit requirements
- Confirm implementation approach before coding
- Translate scenes into ManimCE code using
from manim import * - Prefer one Python file per scene or logical grouping
- Use provided templates (
templates/basic_scene.py,templates/camera_scene.py, etc.) - Follow rules from
rules/directory - Keep code modular with reusable mobjects and clear timing
manim-personal-style/
βββ SKILL.md # Full workflow guide and system prompt
βββ README.md # This file
βββ examples/ # Working ManimCE code examples
β βββ basic_animations.py # Shape creation, transforms, groups
β βββ graph_plotting.py # Axes, functions, parametric curves
β βββ math_visualization.py # Derivatives, integrals, series
β βββ 3d_visualization.py # 3D shapes, cameras, projections
β βββ updater_patterns.py # Dynamic objects with updaters
β βββ lorenz_attractor.py # Complex animation example
β βββ attention/ # Specialized animation examples
β βββ scenes.py
β βββ helpers.py
βββ rules/ # ManimCE best practices reference
β βββ scenes.md # Scene structure and lifecycle
β βββ mobjects.md # Mobjects (shapes, text, groups)
β βββ animations.md # Core animation types
β βββ positioning.md # Layout and alignment
β βββ grouping.md # Grouping and organizing objects
β βββ text.md # Text objects and styling
β βββ latex.md # LaTeX rendering and math
β βββ text-animations.md # Text-specific animations
β βββ shapes.md # Common shapes
β βββ lines.md # Line types and drawing
β βββ axes.md # Axes and coordinate systems
β βββ graphing.md # Plotting graphs and functions
β βββ 3d.md # 3D scenes and transformations
β βββ camera.md # Camera movement and control
β βββ timing.md # Duration and pacing
β βββ updaters.md # Dynamic updates with updaters
β βββ styling.md # Colors and visual appearance
β βββ colors.md # Color palettes and schemes
β βββ animation-groups.md # Parallel and sequential animations
β βββ creation-animations.md # Object creation effects
β βββ transform-animations.md # Transformation effects
β βββ config.md # Configuration and settings
β βββ cli.md # Command-line rendering
βββ references/ # Narrative and composition guides
β βββ narrative-patterns.md # Story structures (Mystery β Investigation β Resolution, etc.)
β βββ visual-techniques.md # Visualization techniques
β βββ scene-examples.md # Example scenes.md fragments
βββ templates/ # Starting templates for new projects
βββ scenes-template.md # Template for scenes.md
βββ scene-with-position-template.md # Template for layout planning
βββ basic_scene.py # Standard Scene template
βββ camera_scene.py # MovingCameraScene template
βββ threed_scene.py # ThreeDScene template
Ask yourself (or clarify with the user):
- What is the core mathematical concept?
- Who is the target audience?
- How long should the video be?
- What colors and style fit the topic?
Copy templates/scenes-template.md and fill in:
# Scene Plan: [Title]
## Overview
[2-3 sentence description]
## Visual Language
- Colors: [primary, secondary, highlight]
- Motifs: [visual patterns]
- Style: [minimal, detailed, etc.]
## Scenes
1. **Opening** (duration: 5s)
- Purpose: Hook the viewer
- Visuals: [describe objects/animations]
- Narration: [what the narrator says]
2. **Build Up** (duration: 15s)
- Purpose: Introduce key concepts
- [continue...]
[Include all scenes, transitions, palette, math content, and implementation notes]Copy templates/scene-with-position-template.md and specify positions for each object in each scene.
Start with templates/basic_scene.py and reference examples/ for patterns:
from manim import *
class MyScene(Scene):
def construct(self):
# Create objects
circle = Circle(radius=1, color=BLUE)
text = Text("Hello, Manim!", font_size=48)
# Animate
self.play(Create(circle))
self.play(Write(text))
self.wait(2)Run with:
manim -pql my_file.py MyScene # Quick preview
manim -pqh my_file.py MyScene # High quality
manim -i my_file.py MyScene # Interactive (jupyter-like)For beginners:
- Read
references/narrative-patterns.mdfor story structure - Study
examples/basic_animations.pyfor fundamental techniques - Review
rules/scenes.mdandrules/mobjects.md - Create your first
scenes.mdusing the template
For intermediate creators:
- Explore
examples/graph_plotting.pyandexamples/3d_visualization.py - Dive into
rules/positioning.md,rules/timing.md,rules/updaters.md - Study
references/visual-techniques.mdfor composition - Experiment with
templates/camera_scene.pyandtemplates/threed_scene.py
For advanced animators:
- Master
rules/camera.mdandrules/3d.mdfor complex scenes - Study
examples/updater_patterns.pyandexamples/lorenz_attractor.py - Reference
examples/attention/for specialized patterns - Optimize rendering with
rules/cli.mdandrules/config.md
| Task | Reference |
|---|---|
| Create basic shapes | examples/basic_animations.py, rules/shapes.md |
| Plot graphs and axes | examples/graph_plotting.py, rules/axes.md, rules/graphing.md |
| Write LaTeX math | rules/latex.md, rules/text.md |
| Animate text | rules/text-animations.md |
| Move the camera | rules/camera.md, templates/camera_scene.py |
| Build 3D scenes | rules/3d.md, examples/3d_visualization.py, templates/threed_scene.py |
| Use dynamic objects | rules/updaters.md, examples/updater_patterns.py |
| Choose colors | rules/colors.md, rules/styling.md |
| Time your animations | rules/timing.md, rules/animation-groups.md |
- Phase 0: Gather that target is high school students, video should be 2 minutes, use animated graph
- Phase 1: Create
scenes.mdwith: Opening hook β Tangent line concept β Derivative definition β Examples - Phase 1.5: Plan positions for axes, function curve, tangent line, labels
- Phase 2: Get approval on scene outline
- Phase 3: Implement using
templates/basic_scene.py+examples/graph_plotting.pypatterns
- Phase 0: Audience is math enthusiasts, 3-minute deep dive, colorful and detailed
- Phase 1: Create
scenes.mdwith: Intro β Complex plane in 2D β Extension to 3D β Multiplication in 3D - Phase 1.5: Plan 3D coordinates and camera positions
- Phase 2: Approve the narrative flow
- Phase 3: Implement using
templates/threed_scene.py+examples/3d_visualization.py
All Manim Community configuration goes in manim.cfg (in your project root):
[CLI]
quality = high_quality_1080p
preview = True
show_in_file_browser = False
[resolution_default]
pixel_height = 1080
pixel_width = 1920
frame_rate = 60See rules/config.md for all available options.
- Official Docs: https://docs.manim.community/
- Installation: https://docs.manim.community/en/stable/installation.html
- Examples Gallery: https://docs.manim.community/en/stable/examples.html
- Discord Community: https://discord.gg/manimgl
β Do:
- Plan with
scenes.mdbefore coding - Validate layouts with
scene_with_position.md - Use one file per scene or logical grouping
- Keep animations under 6 seconds per scene (unless building complexity)
- Reuse and transform mobjects rather than replacing them
- Use constants for colors, fonts, and timing
- Test rendering at low quality first (
-ql), then increase - When objects overlap or exceed frame boundaries, use
scene_with_position.mdto referencescene #andobject_idfor precise positioning adjustments in code- Example: In
scene_with_position.md, documentscene 2, object_id: axis_x, position: (0, -3.5, 0) - In code, adjust:
axis_x.move_to([0, -3.5, 0])or reference the mapping dictionary
- Example: In
β Don't:
- Write code without a scene plan
- Skip layout validation
- Use hardcoded magic numbers
- Create massive files with 10+ scenes
- Animate too many objects simultaneously without grouping
- Forget to include narration notes in the plan
- Render everything at the highest quality until final version
- Leave overlapping or out-of-bounds objects without documented fixes in
scene_with_position.md
This toolkit is designed to evolve. When you create new examples or discover useful patterns:
- Add examples to
examples/ - Document the rule in
rules/ - Update this README with references
Manim Personal Style is licensed under the Apache License 2.0.
- π Full license text: LICENSE
- β You can freely use, modify, and distribute this project
- β You can use it commercially
β οΈ You must include a copy of the license and state significant changes made- π For more details on Apache 2.0: https://www.apache.org/licenses/LICENSE-2.0
Note: Manim Community itself is licensed under the MIT License. See https://github.com/ManimCommunity/manim for details.
Q: Do I need to use the three-phase workflow every time?
A: For complex videos, yes. For simple scenes, a minimal scenes.md is fineβbut still start with planning.
Q: Can I use this with ManimGL instead of ManimCE? A: This toolkit focuses on ManimCE. ManimGL has different APIs and conventions; you'd need to adapt.
Q: How long does it take to render a video?
A: Depends on complexity and quality. A 1-minute video at high quality can take 10-30 minutes. Use -ql (low quality) during development and -qh (high quality) for final output.
Q: Can I export to GIF?
A: Yes! Use manim -pql -s -f gif my_file.py MyScene to render a static frame, or create individual frames and use ImageMagick.
Q: Where can I get help with Manim?
A: Check the official docs, ask on the Manim Discord, or review the examples/ and rules/ in this toolkit.
Happy animating! π¬