[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-browser-use-manim-video":3,"mdc-nwv3oj-key":36,"related-org-browser-use-manim-video":2537,"related-repo-browser-use-manim-video":2714},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"manim-video","create technical animations with Manim","Production pipeline for mathematical and technical animations using Manim Community Edition. Creates 3Blue1Brown-style explainer videos, algorithm visualizations, equation derivations, architecture diagrams, and data stories. Use when users request: animated explanations, math animations, concept visualizations, algorithm walkthroughs, technical explainers, 3Blue1Brown style videos, or any programmatic animation with geometric\u002Fmathematical content.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"browser-use","Browser-use","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fbrowser-use.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Mathematics","mathematics","tag",{"name":17,"slug":18,"type":15},"Creative","creative",{"name":20,"slug":21,"type":15},"Animation","animation",{"name":23,"slug":24,"type":15},"Video","video",17171,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fvideo-use","2026-04-16T05:01:44.229054",null,2058,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"Edit videos with coding agents","https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fvideo-use\u002Ftree\u002FHEAD\u002Fskills\u002Fmanim-video","---\nname: manim-video\ndescription: \"Production pipeline for mathematical and technical animations using Manim Community Edition. Creates 3Blue1Brown-style explainer videos, algorithm visualizations, equation derivations, architecture diagrams, and data stories. Use when users request: animated explanations, math animations, concept visualizations, algorithm walkthroughs, technical explainers, 3Blue1Brown style videos, or any programmatic animation with geometric\u002Fmathematical content.\"\nversion: 1.0.0\n---\n\n# Manim Video Production Pipeline\n\n## Creative Standard\n\nThis is educational cinema. Every frame teaches. Every animation reveals structure.\n\n**Before writing a single line of code**, articulate the narrative arc. What misconception does this correct? What is the \"aha moment\"? What visual story takes the viewer from confusion to understanding? The user's prompt is a starting point — interpret it with pedagogical ambition.\n\n**Geometry before algebra.** Show the shape first, the equation second. Visual memory encodes faster than symbolic memory. When the viewer sees the geometric pattern before the formula, the equation feels earned.\n\n**First-render excellence is non-negotiable.** The output must be visually clear and aesthetically cohesive without revision rounds. If something looks cluttered, poorly timed, or like \"AI-generated slides,\" it is wrong.\n\n**Opacity layering directs attention.** Never show everything at full brightness. Primary elements at 1.0, contextual elements at 0.4, structural elements (axes, grids) at 0.15. The brain processes visual salience in layers.\n\n**Breathing room.** Every animation needs `self.wait()` after it. The viewer needs time to absorb what just appeared. Never rush from one animation to the next. A 2-second pause after a key reveal is never wasted.\n\n**Cohesive visual language.** All scenes share a color palette, consistent typography sizing, matching animation speeds. A technically correct video where every scene uses random different colors is an aesthetic failure.\n\n## Prerequisites\n\nRun `scripts\u002Fsetup.sh` to verify all dependencies. Requires: Python 3.10+, Manim Community Edition v0.20+ (`pip install manim`), LaTeX (`texlive-full` on Linux, `mactex` on macOS), and ffmpeg. Reference docs tested against Manim CE v0.20.1.\n\n## Modes\n\n| Mode | Input | Output | Reference |\n|------|-------|--------|-----------|\n| **Concept explainer** | Topic\u002Fconcept | Animated explanation with geometric intuition | `references\u002Fscene-planning.md` |\n| **Equation derivation** | Math expressions | Step-by-step animated proof | `references\u002Fequations.md` |\n| **Algorithm visualization** | Algorithm description | Step-by-step execution with data structures | `references\u002Fgraphs-and-data.md` |\n| **Data story** | Data\u002Fmetrics | Animated charts, comparisons, counters | `references\u002Fgraphs-and-data.md` |\n| **Architecture diagram** | System description | Components building up with connections | `references\u002Fmobjects.md` |\n| **Paper explainer** | Research paper | Key findings and methods animated | `references\u002Fscene-planning.md` |\n| **3D visualization** | 3D concept | Rotating surfaces, parametric curves, spatial geometry | `references\u002Fcamera-and-3d.md` |\n\n## Stack\n\nSingle Python script per project. No browser, no Node.js, no GPU required.\n\n| Layer | Tool | Purpose |\n|-------|------|---------|\n| Core | Manim Community Edition | Scene rendering, animation engine |\n| Math | LaTeX (texlive\u002FMiKTeX) | Equation rendering via `MathTex` |\n| Video I\u002FO | ffmpeg | Scene stitching, format conversion, audio muxing |\n| TTS | ElevenLabs \u002F Qwen3-TTS (optional) | Narration voiceover |\n\n## Pipeline\n\n```\nPLAN --> CODE --> RENDER --> STITCH --> AUDIO (optional) --> REVIEW\n```\n\n1. **PLAN** — Write `plan.md` with narrative arc, scene list, visual elements, color palette, voiceover script\n2. **CODE** — Write `script.py` with one class per scene, each independently renderable\n3. **RENDER** — `manim -ql script.py Scene1 Scene2 ...` for draft, `-qh` for production\n4. **STITCH** — ffmpeg concat of scene clips into `final.mp4`\n5. **AUDIO** (optional) — Add voiceover and\u002For background music via ffmpeg. See `references\u002Frendering.md`\n6. **REVIEW** — Render preview stills, verify against plan, adjust\n\n## Project Structure\n\n```\nproject-name\u002F\n  plan.md                # Narrative arc, scene breakdown\n  script.py              # All scenes in one file\n  concat.txt             # ffmpeg scene list\n  final.mp4              # Stitched output\n  media\u002F                 # Auto-generated by Manim\n    videos\u002Fscript\u002F480p15\u002F\n```\n\n## Creative Direction\n\n### Color Palettes\n\n| Palette | Background | Primary | Secondary | Accent | Use case |\n|---------|-----------|---------|-----------|--------|----------|\n| **Classic 3B1B** | `#1C1C1C` | `#58C4DD` (BLUE) | `#83C167` (GREEN) | `#FFFF00` (YELLOW) | General math\u002FCS |\n| **Warm academic** | `#2D2B55` | `#FF6B6B` | `#FFD93D` | `#6BCB77` | Approachable |\n| **Neon tech** | `#0A0A0A` | `#00F5FF` | `#FF00FF` | `#39FF14` | Systems, architecture |\n| **Monochrome** | `#1A1A2E` | `#EAEAEA` | `#888888` | `#FFFFFF` | Minimalist |\n\n### Animation Speed\n\n| Context | run_time | self.wait() after |\n|---------|----------|-------------------|\n| Title\u002Fintro appear | 1.5s | 1.0s |\n| Key equation reveal | 2.0s | 2.0s |\n| Transform\u002Fmorph | 1.5s | 1.5s |\n| Supporting label | 0.8s | 0.5s |\n| FadeOut cleanup | 0.5s | 0.3s |\n| \"Aha moment\" reveal | 2.5s | 3.0s |\n\n### Typography Scale\n\n| Role | Font size | Usage |\n|------|-----------|-------|\n| Title | 48 | Scene titles, opening text |\n| Heading | 36 | Section headers within a scene |\n| Body | 30 | Explanatory text |\n| Label | 24 | Annotations, axis labels |\n| Caption | 20 | Subtitles, fine print |\n\n### Fonts\n\n**Use monospace fonts for all text.** Manim's Pango renderer produces broken kerning with proportional fonts at all sizes. See `references\u002Fvisual-design.md` for full recommendations.\n\n```python\nMONO = \"Menlo\"  # define once at top of file\n\nText(\"Fourier Series\", font_size=48, font=MONO, weight=BOLD)  # titles\nText(\"n=1: sin(x)\", font_size=20, font=MONO)                  # labels\nMathTex(r\"\\nabla L\")                                            # math (uses LaTeX)\n```\n\nMinimum `font_size=18` for readability.\n\n### Per-Scene Variation\n\nNever use identical config for all scenes. For each scene:\n- **Different dominant color** from the palette\n- **Different layout** — don't always center everything\n- **Different animation entry** — vary between Write, FadeIn, GrowFromCenter, Create\n- **Different visual weight** — some scenes dense, others sparse\n\n## Workflow\n\n### Step 1: Plan (plan.md)\n\nBefore any code, write `plan.md`. See `references\u002Fscene-planning.md` for the comprehensive template.\n\n### Step 2: Code (script.py)\n\nOne class per scene. Every scene is independently renderable.\n\n```python\nfrom manim import *\n\nBG = \"#1C1C1C\"\nPRIMARY = \"#58C4DD\"\nSECONDARY = \"#83C167\"\nACCENT = \"#FFFF00\"\nMONO = \"Menlo\"\n\nclass Scene1_Introduction(Scene):\n    def construct(self):\n        self.camera.background_color = BG\n        title = Text(\"Why Does This Work?\", font_size=48, color=PRIMARY, weight=BOLD, font=MONO)\n        self.add_subcaption(\"Why does this work?\", duration=2)\n        self.play(Write(title), run_time=1.5)\n        self.wait(1.0)\n        self.play(FadeOut(title), run_time=0.5)\n```\n\nKey patterns:\n- **Subtitles** on every animation: `self.add_subcaption(\"text\", duration=N)` or `subcaption=\"text\"` on `self.play()`\n- **Shared color constants** at file top for cross-scene consistency\n- **`self.camera.background_color`** set in every scene\n- **Clean exits** — FadeOut all mobjects at scene end: `self.play(FadeOut(Group(*self.mobjects)))`\n\n### Step 3: Render\n\n```bash\nmanim -ql script.py Scene1_Introduction Scene2_CoreConcept  # draft\nmanim -qh script.py Scene1_Introduction Scene2_CoreConcept  # production\n```\n\n### Step 4: Stitch\n\n```bash\ncat > concat.txt \u003C\u003C 'EOF'\nfile 'media\u002Fvideos\u002Fscript\u002F480p15\u002FScene1_Introduction.mp4'\nfile 'media\u002Fvideos\u002Fscript\u002F480p15\u002FScene2_CoreConcept.mp4'\nEOF\nffmpeg -y -f concat -safe 0 -i concat.txt -c copy final.mp4\n```\n\n### Step 5: Review\n\n```bash\nmanim -ql --format=png -s script.py Scene2_CoreConcept  # preview still\n```\n\n## Critical Implementation Notes\n\n### Raw Strings for LaTeX\n```python\n# WRONG: MathTex(\"\\frac{1}{2}\")\n# RIGHT:\nMathTex(r\"\\frac{1}{2}\")\n```\n\n### buff >= 0.5 for Edge Text\n```python\nlabel.to_edge(DOWN, buff=0.5)  # never \u003C 0.5\n```\n\n### FadeOut Before Replacing Text\n```python\nself.play(ReplacementTransform(note1, note2))  # not Write(note2) on top\n```\n\n### Never Animate Non-Added Mobjects\n```python\nself.play(Create(circle))  # must add first\nself.play(circle.animate.set_color(RED))  # then animate\n```\n\n## Performance Targets\n\n| Quality | Resolution | FPS | Speed |\n|---------|-----------|-----|-------|\n| `-ql` (draft) | 854x480 | 15 | 5-15s\u002Fscene |\n| `-qm` (medium) | 1280x720 | 30 | 15-60s\u002Fscene |\n| `-qh` (production) | 1920x1080 | 60 | 30-120s\u002Fscene |\n\nAlways iterate at `-ql`. Only render `-qh` for final output.\n\n## References\n\n| File | Contents |\n|------|----------|\n| `references\u002Fanimations.md` | Core animations, rate functions, composition, `.animate` syntax, timing patterns |\n| `references\u002Fmobjects.md` | Text, shapes, VGroup\u002FGroup, positioning, styling, custom mobjects |\n| `references\u002Fvisual-design.md` | 12 design principles, opacity layering, layout templates, color palettes |\n| `references\u002Fequations.md` | LaTeX in Manim, TransformMatchingTex, derivation patterns |\n| `references\u002Fgraphs-and-data.md` | Axes, plotting, BarChart, animated data, algorithm visualization |\n| `references\u002Fcamera-and-3d.md` | MovingCameraScene, ThreeDScene, 3D surfaces, camera control |\n| `references\u002Fscene-planning.md` | Narrative arcs, layout templates, scene transitions, planning template |\n| `references\u002Frendering.md` | CLI reference, quality presets, ffmpeg, voiceover workflow, GIF export |\n| `references\u002Ftroubleshooting.md` | LaTeX errors, animation errors, common mistakes, debugging |\n| `references\u002Fanimation-design-thinking.md` | When to animate vs show static, decomposition, pacing, narration sync |\n| `references\u002Fupdaters-and-trackers.md` | ValueTracker, add_updater, always_redraw, time-based updaters, patterns |\n| `references\u002Fpaper-explainer.md` | Turning research papers into animations — workflow, templates, domain patterns |\n| `references\u002Fdecorations.md` | SurroundingRectangle, Brace, arrows, DashedLine, Angle, annotation lifecycle |\n| `references\u002Fproduction-quality.md` | Pre-code, pre-render, post-render checklists, spatial layout, color, tempo |\n\n---\n\n## Creative Divergence (use only when user requests experimental\u002Fcreative\u002Funique output)\n\nIf the user asks for creative, experimental, or unconventional explanatory approaches, select a strategy and reason through it BEFORE designing the animation.\n\n- **SCAMPER** — when the user wants a fresh take on a standard explanation\n- **Assumption Reversal** — when the user wants to challenge how something is typically taught\n\n### SCAMPER Transformation\nTake a standard mathematical\u002Ftechnical visualization and transform it:\n- **Substitute**: replace the standard visual metaphor (number line → winding path, matrix → city grid)\n- **Combine**: merge two explanation approaches (algebraic + geometric simultaneously)\n- **Reverse**: derive backward — start from the result and deconstruct to axioms\n- **Modify**: exaggerate a parameter to show why it matters (10x the learning rate, 1000x the sample size)\n- **Eliminate**: remove all notation — explain purely through animation and spatial relationships\n\n### Assumption Reversal\n1. List what's \"standard\" about how this topic is visualized (left-to-right, 2D, discrete steps, formal notation)\n2. Pick the most fundamental assumption\n3. Reverse it (right-to-left derivation, 3D embedding of a 2D concept, continuous morphing instead of steps, zero notation)\n4. Explore what the reversal reveals that the standard approach hides\n",{"data":37,"body":39},{"name":4,"description":6,"version":38},"1.0.0",{"type":40,"children":41},"root",[42,51,58,64,75,85,95,105,124,134,140,177,183,429,435,440,545,551,563,671,677,686,692,699,955,961,1092,1098,1215,1221,1239,1296,1309,1315,1320,1364,1370,1376,1395,1401,1406,1550,1555,1630,1636,1710,1716,1833,1839,1880,1886,1892,1923,1929,1943,1949,1963,1969,1992,1998,2115,2134,2140,2401,2405,2411,2416,2439,2445,2450,2503,2508,2531],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"manim-video-production-pipeline",[48],{"type":49,"value":50},"text","Manim Video Production Pipeline",{"type":43,"tag":52,"props":53,"children":55},"h2",{"id":54},"creative-standard",[56],{"type":49,"value":57},"Creative Standard",{"type":43,"tag":59,"props":60,"children":61},"p",{},[62],{"type":49,"value":63},"This is educational cinema. Every frame teaches. Every animation reveals structure.",{"type":43,"tag":59,"props":65,"children":66},{},[67,73],{"type":43,"tag":68,"props":69,"children":70},"strong",{},[71],{"type":49,"value":72},"Before writing a single line of code",{"type":49,"value":74},", articulate the narrative arc. What misconception does this correct? What is the \"aha moment\"? What visual story takes the viewer from confusion to understanding? The user's prompt is a starting point — interpret it with pedagogical ambition.",{"type":43,"tag":59,"props":76,"children":77},{},[78,83],{"type":43,"tag":68,"props":79,"children":80},{},[81],{"type":49,"value":82},"Geometry before algebra.",{"type":49,"value":84}," Show the shape first, the equation second. Visual memory encodes faster than symbolic memory. When the viewer sees the geometric pattern before the formula, the equation feels earned.",{"type":43,"tag":59,"props":86,"children":87},{},[88,93],{"type":43,"tag":68,"props":89,"children":90},{},[91],{"type":49,"value":92},"First-render excellence is non-negotiable.",{"type":49,"value":94}," The output must be visually clear and aesthetically cohesive without revision rounds. If something looks cluttered, poorly timed, or like \"AI-generated slides,\" it is wrong.",{"type":43,"tag":59,"props":96,"children":97},{},[98,103],{"type":43,"tag":68,"props":99,"children":100},{},[101],{"type":49,"value":102},"Opacity layering directs attention.",{"type":49,"value":104}," Never show everything at full brightness. Primary elements at 1.0, contextual elements at 0.4, structural elements (axes, grids) at 0.15. The brain processes visual salience in layers.",{"type":43,"tag":59,"props":106,"children":107},{},[108,113,115,122],{"type":43,"tag":68,"props":109,"children":110},{},[111],{"type":49,"value":112},"Breathing room.",{"type":49,"value":114}," Every animation needs ",{"type":43,"tag":116,"props":117,"children":119},"code",{"className":118},[],[120],{"type":49,"value":121},"self.wait()",{"type":49,"value":123}," after it. The viewer needs time to absorb what just appeared. Never rush from one animation to the next. A 2-second pause after a key reveal is never wasted.",{"type":43,"tag":59,"props":125,"children":126},{},[127,132],{"type":43,"tag":68,"props":128,"children":129},{},[130],{"type":49,"value":131},"Cohesive visual language.",{"type":49,"value":133}," All scenes share a color palette, consistent typography sizing, matching animation speeds. A technically correct video where every scene uses random different colors is an aesthetic failure.",{"type":43,"tag":52,"props":135,"children":137},{"id":136},"prerequisites",[138],{"type":49,"value":139},"Prerequisites",{"type":43,"tag":59,"props":141,"children":142},{},[143,145,151,153,159,161,167,169,175],{"type":49,"value":144},"Run ",{"type":43,"tag":116,"props":146,"children":148},{"className":147},[],[149],{"type":49,"value":150},"scripts\u002Fsetup.sh",{"type":49,"value":152}," to verify all dependencies. Requires: Python 3.10+, Manim Community Edition v0.20+ (",{"type":43,"tag":116,"props":154,"children":156},{"className":155},[],[157],{"type":49,"value":158},"pip install manim",{"type":49,"value":160},"), LaTeX (",{"type":43,"tag":116,"props":162,"children":164},{"className":163},[],[165],{"type":49,"value":166},"texlive-full",{"type":49,"value":168}," on Linux, ",{"type":43,"tag":116,"props":170,"children":172},{"className":171},[],[173],{"type":49,"value":174},"mactex",{"type":49,"value":176}," on macOS), and ffmpeg. Reference docs tested against Manim CE v0.20.1.",{"type":43,"tag":52,"props":178,"children":180},{"id":179},"modes",[181],{"type":49,"value":182},"Modes",{"type":43,"tag":184,"props":185,"children":186},"table",{},[187,216],{"type":43,"tag":188,"props":189,"children":190},"thead",{},[191],{"type":43,"tag":192,"props":193,"children":194},"tr",{},[195,201,206,211],{"type":43,"tag":196,"props":197,"children":198},"th",{},[199],{"type":49,"value":200},"Mode",{"type":43,"tag":196,"props":202,"children":203},{},[204],{"type":49,"value":205},"Input",{"type":43,"tag":196,"props":207,"children":208},{},[209],{"type":49,"value":210},"Output",{"type":43,"tag":196,"props":212,"children":213},{},[214],{"type":49,"value":215},"Reference",{"type":43,"tag":217,"props":218,"children":219},"tbody",{},[220,251,281,311,340,370,399],{"type":43,"tag":192,"props":221,"children":222},{},[223,232,237,242],{"type":43,"tag":224,"props":225,"children":226},"td",{},[227],{"type":43,"tag":68,"props":228,"children":229},{},[230],{"type":49,"value":231},"Concept explainer",{"type":43,"tag":224,"props":233,"children":234},{},[235],{"type":49,"value":236},"Topic\u002Fconcept",{"type":43,"tag":224,"props":238,"children":239},{},[240],{"type":49,"value":241},"Animated explanation with geometric intuition",{"type":43,"tag":224,"props":243,"children":244},{},[245],{"type":43,"tag":116,"props":246,"children":248},{"className":247},[],[249],{"type":49,"value":250},"references\u002Fscene-planning.md",{"type":43,"tag":192,"props":252,"children":253},{},[254,262,267,272],{"type":43,"tag":224,"props":255,"children":256},{},[257],{"type":43,"tag":68,"props":258,"children":259},{},[260],{"type":49,"value":261},"Equation derivation",{"type":43,"tag":224,"props":263,"children":264},{},[265],{"type":49,"value":266},"Math expressions",{"type":43,"tag":224,"props":268,"children":269},{},[270],{"type":49,"value":271},"Step-by-step animated proof",{"type":43,"tag":224,"props":273,"children":274},{},[275],{"type":43,"tag":116,"props":276,"children":278},{"className":277},[],[279],{"type":49,"value":280},"references\u002Fequations.md",{"type":43,"tag":192,"props":282,"children":283},{},[284,292,297,302],{"type":43,"tag":224,"props":285,"children":286},{},[287],{"type":43,"tag":68,"props":288,"children":289},{},[290],{"type":49,"value":291},"Algorithm visualization",{"type":43,"tag":224,"props":293,"children":294},{},[295],{"type":49,"value":296},"Algorithm description",{"type":43,"tag":224,"props":298,"children":299},{},[300],{"type":49,"value":301},"Step-by-step execution with data structures",{"type":43,"tag":224,"props":303,"children":304},{},[305],{"type":43,"tag":116,"props":306,"children":308},{"className":307},[],[309],{"type":49,"value":310},"references\u002Fgraphs-and-data.md",{"type":43,"tag":192,"props":312,"children":313},{},[314,322,327,332],{"type":43,"tag":224,"props":315,"children":316},{},[317],{"type":43,"tag":68,"props":318,"children":319},{},[320],{"type":49,"value":321},"Data story",{"type":43,"tag":224,"props":323,"children":324},{},[325],{"type":49,"value":326},"Data\u002Fmetrics",{"type":43,"tag":224,"props":328,"children":329},{},[330],{"type":49,"value":331},"Animated charts, comparisons, counters",{"type":43,"tag":224,"props":333,"children":334},{},[335],{"type":43,"tag":116,"props":336,"children":338},{"className":337},[],[339],{"type":49,"value":310},{"type":43,"tag":192,"props":341,"children":342},{},[343,351,356,361],{"type":43,"tag":224,"props":344,"children":345},{},[346],{"type":43,"tag":68,"props":347,"children":348},{},[349],{"type":49,"value":350},"Architecture diagram",{"type":43,"tag":224,"props":352,"children":353},{},[354],{"type":49,"value":355},"System description",{"type":43,"tag":224,"props":357,"children":358},{},[359],{"type":49,"value":360},"Components building up with connections",{"type":43,"tag":224,"props":362,"children":363},{},[364],{"type":43,"tag":116,"props":365,"children":367},{"className":366},[],[368],{"type":49,"value":369},"references\u002Fmobjects.md",{"type":43,"tag":192,"props":371,"children":372},{},[373,381,386,391],{"type":43,"tag":224,"props":374,"children":375},{},[376],{"type":43,"tag":68,"props":377,"children":378},{},[379],{"type":49,"value":380},"Paper explainer",{"type":43,"tag":224,"props":382,"children":383},{},[384],{"type":49,"value":385},"Research paper",{"type":43,"tag":224,"props":387,"children":388},{},[389],{"type":49,"value":390},"Key findings and methods animated",{"type":43,"tag":224,"props":392,"children":393},{},[394],{"type":43,"tag":116,"props":395,"children":397},{"className":396},[],[398],{"type":49,"value":250},{"type":43,"tag":192,"props":400,"children":401},{},[402,410,415,420],{"type":43,"tag":224,"props":403,"children":404},{},[405],{"type":43,"tag":68,"props":406,"children":407},{},[408],{"type":49,"value":409},"3D visualization",{"type":43,"tag":224,"props":411,"children":412},{},[413],{"type":49,"value":414},"3D concept",{"type":43,"tag":224,"props":416,"children":417},{},[418],{"type":49,"value":419},"Rotating surfaces, parametric curves, spatial geometry",{"type":43,"tag":224,"props":421,"children":422},{},[423],{"type":43,"tag":116,"props":424,"children":426},{"className":425},[],[427],{"type":49,"value":428},"references\u002Fcamera-and-3d.md",{"type":43,"tag":52,"props":430,"children":432},{"id":431},"stack",[433],{"type":49,"value":434},"Stack",{"type":43,"tag":59,"props":436,"children":437},{},[438],{"type":49,"value":439},"Single Python script per project. No browser, no Node.js, no GPU required.",{"type":43,"tag":184,"props":441,"children":442},{},[443,464],{"type":43,"tag":188,"props":444,"children":445},{},[446],{"type":43,"tag":192,"props":447,"children":448},{},[449,454,459],{"type":43,"tag":196,"props":450,"children":451},{},[452],{"type":49,"value":453},"Layer",{"type":43,"tag":196,"props":455,"children":456},{},[457],{"type":49,"value":458},"Tool",{"type":43,"tag":196,"props":460,"children":461},{},[462],{"type":49,"value":463},"Purpose",{"type":43,"tag":217,"props":465,"children":466},{},[467,485,509,527],{"type":43,"tag":192,"props":468,"children":469},{},[470,475,480],{"type":43,"tag":224,"props":471,"children":472},{},[473],{"type":49,"value":474},"Core",{"type":43,"tag":224,"props":476,"children":477},{},[478],{"type":49,"value":479},"Manim Community Edition",{"type":43,"tag":224,"props":481,"children":482},{},[483],{"type":49,"value":484},"Scene rendering, animation engine",{"type":43,"tag":192,"props":486,"children":487},{},[488,493,498],{"type":43,"tag":224,"props":489,"children":490},{},[491],{"type":49,"value":492},"Math",{"type":43,"tag":224,"props":494,"children":495},{},[496],{"type":49,"value":497},"LaTeX (texlive\u002FMiKTeX)",{"type":43,"tag":224,"props":499,"children":500},{},[501,503],{"type":49,"value":502},"Equation rendering via ",{"type":43,"tag":116,"props":504,"children":506},{"className":505},[],[507],{"type":49,"value":508},"MathTex",{"type":43,"tag":192,"props":510,"children":511},{},[512,517,522],{"type":43,"tag":224,"props":513,"children":514},{},[515],{"type":49,"value":516},"Video I\u002FO",{"type":43,"tag":224,"props":518,"children":519},{},[520],{"type":49,"value":521},"ffmpeg",{"type":43,"tag":224,"props":523,"children":524},{},[525],{"type":49,"value":526},"Scene stitching, format conversion, audio muxing",{"type":43,"tag":192,"props":528,"children":529},{},[530,535,540],{"type":43,"tag":224,"props":531,"children":532},{},[533],{"type":49,"value":534},"TTS",{"type":43,"tag":224,"props":536,"children":537},{},[538],{"type":49,"value":539},"ElevenLabs \u002F Qwen3-TTS (optional)",{"type":43,"tag":224,"props":541,"children":542},{},[543],{"type":49,"value":544},"Narration voiceover",{"type":43,"tag":52,"props":546,"children":548},{"id":547},"pipeline",[549],{"type":49,"value":550},"Pipeline",{"type":43,"tag":552,"props":553,"children":557},"pre",{"className":554,"code":556,"language":49},[555],"language-text","PLAN --> CODE --> RENDER --> STITCH --> AUDIO (optional) --> REVIEW\n",[558],{"type":43,"tag":116,"props":559,"children":561},{"__ignoreMap":560},"",[562],{"type":49,"value":556},{"type":43,"tag":564,"props":565,"children":566},"ol",{},[567,586,603,629,645,661],{"type":43,"tag":568,"props":569,"children":570},"li",{},[571,576,578,584],{"type":43,"tag":68,"props":572,"children":573},{},[574],{"type":49,"value":575},"PLAN",{"type":49,"value":577}," — Write ",{"type":43,"tag":116,"props":579,"children":581},{"className":580},[],[582],{"type":49,"value":583},"plan.md",{"type":49,"value":585}," with narrative arc, scene list, visual elements, color palette, voiceover script",{"type":43,"tag":568,"props":587,"children":588},{},[589,594,595,601],{"type":43,"tag":68,"props":590,"children":591},{},[592],{"type":49,"value":593},"CODE",{"type":49,"value":577},{"type":43,"tag":116,"props":596,"children":598},{"className":597},[],[599],{"type":49,"value":600},"script.py",{"type":49,"value":602}," with one class per scene, each independently renderable",{"type":43,"tag":568,"props":604,"children":605},{},[606,611,613,619,621,627],{"type":43,"tag":68,"props":607,"children":608},{},[609],{"type":49,"value":610},"RENDER",{"type":49,"value":612}," — ",{"type":43,"tag":116,"props":614,"children":616},{"className":615},[],[617],{"type":49,"value":618},"manim -ql script.py Scene1 Scene2 ...",{"type":49,"value":620}," for draft, ",{"type":43,"tag":116,"props":622,"children":624},{"className":623},[],[625],{"type":49,"value":626},"-qh",{"type":49,"value":628}," for production",{"type":43,"tag":568,"props":630,"children":631},{},[632,637,639],{"type":43,"tag":68,"props":633,"children":634},{},[635],{"type":49,"value":636},"STITCH",{"type":49,"value":638}," — ffmpeg concat of scene clips into ",{"type":43,"tag":116,"props":640,"children":642},{"className":641},[],[643],{"type":49,"value":644},"final.mp4",{"type":43,"tag":568,"props":646,"children":647},{},[648,653,655],{"type":43,"tag":68,"props":649,"children":650},{},[651],{"type":49,"value":652},"AUDIO",{"type":49,"value":654}," (optional) — Add voiceover and\u002For background music via ffmpeg. See ",{"type":43,"tag":116,"props":656,"children":658},{"className":657},[],[659],{"type":49,"value":660},"references\u002Frendering.md",{"type":43,"tag":568,"props":662,"children":663},{},[664,669],{"type":43,"tag":68,"props":665,"children":666},{},[667],{"type":49,"value":668},"REVIEW",{"type":49,"value":670}," — Render preview stills, verify against plan, adjust",{"type":43,"tag":52,"props":672,"children":674},{"id":673},"project-structure",[675],{"type":49,"value":676},"Project Structure",{"type":43,"tag":552,"props":678,"children":681},{"className":679,"code":680,"language":49},[555],"project-name\u002F\n  plan.md                # Narrative arc, scene breakdown\n  script.py              # All scenes in one file\n  concat.txt             # ffmpeg scene list\n  final.mp4              # Stitched output\n  media\u002F                 # Auto-generated by Manim\n    videos\u002Fscript\u002F480p15\u002F\n",[682],{"type":43,"tag":116,"props":683,"children":684},{"__ignoreMap":560},[685],{"type":49,"value":680},{"type":43,"tag":52,"props":687,"children":689},{"id":688},"creative-direction",[690],{"type":49,"value":691},"Creative Direction",{"type":43,"tag":693,"props":694,"children":696},"h3",{"id":695},"color-palettes",[697],{"type":49,"value":698},"Color Palettes",{"type":43,"tag":184,"props":700,"children":701},{},[702,738],{"type":43,"tag":188,"props":703,"children":704},{},[705],{"type":43,"tag":192,"props":706,"children":707},{},[708,713,718,723,728,733],{"type":43,"tag":196,"props":709,"children":710},{},[711],{"type":49,"value":712},"Palette",{"type":43,"tag":196,"props":714,"children":715},{},[716],{"type":49,"value":717},"Background",{"type":43,"tag":196,"props":719,"children":720},{},[721],{"type":49,"value":722},"Primary",{"type":43,"tag":196,"props":724,"children":725},{},[726],{"type":49,"value":727},"Secondary",{"type":43,"tag":196,"props":729,"children":730},{},[731],{"type":49,"value":732},"Accent",{"type":43,"tag":196,"props":734,"children":735},{},[736],{"type":49,"value":737},"Use case",{"type":43,"tag":217,"props":739,"children":740},{},[741,799,851,903],{"type":43,"tag":192,"props":742,"children":743},{},[744,752,761,772,783,794],{"type":43,"tag":224,"props":745,"children":746},{},[747],{"type":43,"tag":68,"props":748,"children":749},{},[750],{"type":49,"value":751},"Classic 3B1B",{"type":43,"tag":224,"props":753,"children":754},{},[755],{"type":43,"tag":116,"props":756,"children":758},{"className":757},[],[759],{"type":49,"value":760},"#1C1C1C",{"type":43,"tag":224,"props":762,"children":763},{},[764,770],{"type":43,"tag":116,"props":765,"children":767},{"className":766},[],[768],{"type":49,"value":769},"#58C4DD",{"type":49,"value":771}," (BLUE)",{"type":43,"tag":224,"props":773,"children":774},{},[775,781],{"type":43,"tag":116,"props":776,"children":778},{"className":777},[],[779],{"type":49,"value":780},"#83C167",{"type":49,"value":782}," (GREEN)",{"type":43,"tag":224,"props":784,"children":785},{},[786,792],{"type":43,"tag":116,"props":787,"children":789},{"className":788},[],[790],{"type":49,"value":791},"#FFFF00",{"type":49,"value":793}," (YELLOW)",{"type":43,"tag":224,"props":795,"children":796},{},[797],{"type":49,"value":798},"General math\u002FCS",{"type":43,"tag":192,"props":800,"children":801},{},[802,810,819,828,837,846],{"type":43,"tag":224,"props":803,"children":804},{},[805],{"type":43,"tag":68,"props":806,"children":807},{},[808],{"type":49,"value":809},"Warm academic",{"type":43,"tag":224,"props":811,"children":812},{},[813],{"type":43,"tag":116,"props":814,"children":816},{"className":815},[],[817],{"type":49,"value":818},"#2D2B55",{"type":43,"tag":224,"props":820,"children":821},{},[822],{"type":43,"tag":116,"props":823,"children":825},{"className":824},[],[826],{"type":49,"value":827},"#FF6B6B",{"type":43,"tag":224,"props":829,"children":830},{},[831],{"type":43,"tag":116,"props":832,"children":834},{"className":833},[],[835],{"type":49,"value":836},"#FFD93D",{"type":43,"tag":224,"props":838,"children":839},{},[840],{"type":43,"tag":116,"props":841,"children":843},{"className":842},[],[844],{"type":49,"value":845},"#6BCB77",{"type":43,"tag":224,"props":847,"children":848},{},[849],{"type":49,"value":850},"Approachable",{"type":43,"tag":192,"props":852,"children":853},{},[854,862,871,880,889,898],{"type":43,"tag":224,"props":855,"children":856},{},[857],{"type":43,"tag":68,"props":858,"children":859},{},[860],{"type":49,"value":861},"Neon tech",{"type":43,"tag":224,"props":863,"children":864},{},[865],{"type":43,"tag":116,"props":866,"children":868},{"className":867},[],[869],{"type":49,"value":870},"#0A0A0A",{"type":43,"tag":224,"props":872,"children":873},{},[874],{"type":43,"tag":116,"props":875,"children":877},{"className":876},[],[878],{"type":49,"value":879},"#00F5FF",{"type":43,"tag":224,"props":881,"children":882},{},[883],{"type":43,"tag":116,"props":884,"children":886},{"className":885},[],[887],{"type":49,"value":888},"#FF00FF",{"type":43,"tag":224,"props":890,"children":891},{},[892],{"type":43,"tag":116,"props":893,"children":895},{"className":894},[],[896],{"type":49,"value":897},"#39FF14",{"type":43,"tag":224,"props":899,"children":900},{},[901],{"type":49,"value":902},"Systems, architecture",{"type":43,"tag":192,"props":904,"children":905},{},[906,914,923,932,941,950],{"type":43,"tag":224,"props":907,"children":908},{},[909],{"type":43,"tag":68,"props":910,"children":911},{},[912],{"type":49,"value":913},"Monochrome",{"type":43,"tag":224,"props":915,"children":916},{},[917],{"type":43,"tag":116,"props":918,"children":920},{"className":919},[],[921],{"type":49,"value":922},"#1A1A2E",{"type":43,"tag":224,"props":924,"children":925},{},[926],{"type":43,"tag":116,"props":927,"children":929},{"className":928},[],[930],{"type":49,"value":931},"#EAEAEA",{"type":43,"tag":224,"props":933,"children":934},{},[935],{"type":43,"tag":116,"props":936,"children":938},{"className":937},[],[939],{"type":49,"value":940},"#888888",{"type":43,"tag":224,"props":942,"children":943},{},[944],{"type":43,"tag":116,"props":945,"children":947},{"className":946},[],[948],{"type":49,"value":949},"#FFFFFF",{"type":43,"tag":224,"props":951,"children":952},{},[953],{"type":49,"value":954},"Minimalist",{"type":43,"tag":693,"props":956,"children":958},{"id":957},"animation-speed",[959],{"type":49,"value":960},"Animation Speed",{"type":43,"tag":184,"props":962,"children":963},{},[964,985],{"type":43,"tag":188,"props":965,"children":966},{},[967],{"type":43,"tag":192,"props":968,"children":969},{},[970,975,980],{"type":43,"tag":196,"props":971,"children":972},{},[973],{"type":49,"value":974},"Context",{"type":43,"tag":196,"props":976,"children":977},{},[978],{"type":49,"value":979},"run_time",{"type":43,"tag":196,"props":981,"children":982},{},[983],{"type":49,"value":984},"self.wait() after",{"type":43,"tag":217,"props":986,"children":987},{},[988,1006,1023,1039,1057,1074],{"type":43,"tag":192,"props":989,"children":990},{},[991,996,1001],{"type":43,"tag":224,"props":992,"children":993},{},[994],{"type":49,"value":995},"Title\u002Fintro appear",{"type":43,"tag":224,"props":997,"children":998},{},[999],{"type":49,"value":1000},"1.5s",{"type":43,"tag":224,"props":1002,"children":1003},{},[1004],{"type":49,"value":1005},"1.0s",{"type":43,"tag":192,"props":1007,"children":1008},{},[1009,1014,1019],{"type":43,"tag":224,"props":1010,"children":1011},{},[1012],{"type":49,"value":1013},"Key equation reveal",{"type":43,"tag":224,"props":1015,"children":1016},{},[1017],{"type":49,"value":1018},"2.0s",{"type":43,"tag":224,"props":1020,"children":1021},{},[1022],{"type":49,"value":1018},{"type":43,"tag":192,"props":1024,"children":1025},{},[1026,1031,1035],{"type":43,"tag":224,"props":1027,"children":1028},{},[1029],{"type":49,"value":1030},"Transform\u002Fmorph",{"type":43,"tag":224,"props":1032,"children":1033},{},[1034],{"type":49,"value":1000},{"type":43,"tag":224,"props":1036,"children":1037},{},[1038],{"type":49,"value":1000},{"type":43,"tag":192,"props":1040,"children":1041},{},[1042,1047,1052],{"type":43,"tag":224,"props":1043,"children":1044},{},[1045],{"type":49,"value":1046},"Supporting label",{"type":43,"tag":224,"props":1048,"children":1049},{},[1050],{"type":49,"value":1051},"0.8s",{"type":43,"tag":224,"props":1053,"children":1054},{},[1055],{"type":49,"value":1056},"0.5s",{"type":43,"tag":192,"props":1058,"children":1059},{},[1060,1065,1069],{"type":43,"tag":224,"props":1061,"children":1062},{},[1063],{"type":49,"value":1064},"FadeOut cleanup",{"type":43,"tag":224,"props":1066,"children":1067},{},[1068],{"type":49,"value":1056},{"type":43,"tag":224,"props":1070,"children":1071},{},[1072],{"type":49,"value":1073},"0.3s",{"type":43,"tag":192,"props":1075,"children":1076},{},[1077,1082,1087],{"type":43,"tag":224,"props":1078,"children":1079},{},[1080],{"type":49,"value":1081},"\"Aha moment\" reveal",{"type":43,"tag":224,"props":1083,"children":1084},{},[1085],{"type":49,"value":1086},"2.5s",{"type":43,"tag":224,"props":1088,"children":1089},{},[1090],{"type":49,"value":1091},"3.0s",{"type":43,"tag":693,"props":1093,"children":1095},{"id":1094},"typography-scale",[1096],{"type":49,"value":1097},"Typography Scale",{"type":43,"tag":184,"props":1099,"children":1100},{},[1101,1122],{"type":43,"tag":188,"props":1102,"children":1103},{},[1104],{"type":43,"tag":192,"props":1105,"children":1106},{},[1107,1112,1117],{"type":43,"tag":196,"props":1108,"children":1109},{},[1110],{"type":49,"value":1111},"Role",{"type":43,"tag":196,"props":1113,"children":1114},{},[1115],{"type":49,"value":1116},"Font size",{"type":43,"tag":196,"props":1118,"children":1119},{},[1120],{"type":49,"value":1121},"Usage",{"type":43,"tag":217,"props":1123,"children":1124},{},[1125,1143,1161,1179,1197],{"type":43,"tag":192,"props":1126,"children":1127},{},[1128,1133,1138],{"type":43,"tag":224,"props":1129,"children":1130},{},[1131],{"type":49,"value":1132},"Title",{"type":43,"tag":224,"props":1134,"children":1135},{},[1136],{"type":49,"value":1137},"48",{"type":43,"tag":224,"props":1139,"children":1140},{},[1141],{"type":49,"value":1142},"Scene titles, opening text",{"type":43,"tag":192,"props":1144,"children":1145},{},[1146,1151,1156],{"type":43,"tag":224,"props":1147,"children":1148},{},[1149],{"type":49,"value":1150},"Heading",{"type":43,"tag":224,"props":1152,"children":1153},{},[1154],{"type":49,"value":1155},"36",{"type":43,"tag":224,"props":1157,"children":1158},{},[1159],{"type":49,"value":1160},"Section headers within a scene",{"type":43,"tag":192,"props":1162,"children":1163},{},[1164,1169,1174],{"type":43,"tag":224,"props":1165,"children":1166},{},[1167],{"type":49,"value":1168},"Body",{"type":43,"tag":224,"props":1170,"children":1171},{},[1172],{"type":49,"value":1173},"30",{"type":43,"tag":224,"props":1175,"children":1176},{},[1177],{"type":49,"value":1178},"Explanatory text",{"type":43,"tag":192,"props":1180,"children":1181},{},[1182,1187,1192],{"type":43,"tag":224,"props":1183,"children":1184},{},[1185],{"type":49,"value":1186},"Label",{"type":43,"tag":224,"props":1188,"children":1189},{},[1190],{"type":49,"value":1191},"24",{"type":43,"tag":224,"props":1193,"children":1194},{},[1195],{"type":49,"value":1196},"Annotations, axis labels",{"type":43,"tag":192,"props":1198,"children":1199},{},[1200,1205,1210],{"type":43,"tag":224,"props":1201,"children":1202},{},[1203],{"type":49,"value":1204},"Caption",{"type":43,"tag":224,"props":1206,"children":1207},{},[1208],{"type":49,"value":1209},"20",{"type":43,"tag":224,"props":1211,"children":1212},{},[1213],{"type":49,"value":1214},"Subtitles, fine print",{"type":43,"tag":693,"props":1216,"children":1218},{"id":1217},"fonts",[1219],{"type":49,"value":1220},"Fonts",{"type":43,"tag":59,"props":1222,"children":1223},{},[1224,1229,1231,1237],{"type":43,"tag":68,"props":1225,"children":1226},{},[1227],{"type":49,"value":1228},"Use monospace fonts for all text.",{"type":49,"value":1230}," Manim's Pango renderer produces broken kerning with proportional fonts at all sizes. See ",{"type":43,"tag":116,"props":1232,"children":1234},{"className":1233},[],[1235],{"type":49,"value":1236},"references\u002Fvisual-design.md",{"type":49,"value":1238}," for full recommendations.",{"type":43,"tag":552,"props":1240,"children":1244},{"className":1241,"code":1242,"language":1243,"meta":560,"style":560},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","MONO = \"Menlo\"  # define once at top of file\n\nText(\"Fourier Series\", font_size=48, font=MONO, weight=BOLD)  # titles\nText(\"n=1: sin(x)\", font_size=20, font=MONO)                  # labels\nMathTex(r\"\\nabla L\")                                            # math (uses LaTeX)\n","python",[1245],{"type":43,"tag":116,"props":1246,"children":1247},{"__ignoreMap":560},[1248,1259,1269,1278,1287],{"type":43,"tag":1249,"props":1250,"children":1253},"span",{"class":1251,"line":1252},"line",1,[1254],{"type":43,"tag":1249,"props":1255,"children":1256},{},[1257],{"type":49,"value":1258},"MONO = \"Menlo\"  # define once at top of file\n",{"type":43,"tag":1249,"props":1260,"children":1262},{"class":1251,"line":1261},2,[1263],{"type":43,"tag":1249,"props":1264,"children":1266},{"emptyLinePlaceholder":1265},true,[1267],{"type":49,"value":1268},"\n",{"type":43,"tag":1249,"props":1270,"children":1272},{"class":1251,"line":1271},3,[1273],{"type":43,"tag":1249,"props":1274,"children":1275},{},[1276],{"type":49,"value":1277},"Text(\"Fourier Series\", font_size=48, font=MONO, weight=BOLD)  # titles\n",{"type":43,"tag":1249,"props":1279,"children":1281},{"class":1251,"line":1280},4,[1282],{"type":43,"tag":1249,"props":1283,"children":1284},{},[1285],{"type":49,"value":1286},"Text(\"n=1: sin(x)\", font_size=20, font=MONO)                  # labels\n",{"type":43,"tag":1249,"props":1288,"children":1290},{"class":1251,"line":1289},5,[1291],{"type":43,"tag":1249,"props":1292,"children":1293},{},[1294],{"type":49,"value":1295},"MathTex(r\"\\nabla L\")                                            # math (uses LaTeX)\n",{"type":43,"tag":59,"props":1297,"children":1298},{},[1299,1301,1307],{"type":49,"value":1300},"Minimum ",{"type":43,"tag":116,"props":1302,"children":1304},{"className":1303},[],[1305],{"type":49,"value":1306},"font_size=18",{"type":49,"value":1308}," for readability.",{"type":43,"tag":693,"props":1310,"children":1312},{"id":1311},"per-scene-variation",[1313],{"type":49,"value":1314},"Per-Scene Variation",{"type":43,"tag":59,"props":1316,"children":1317},{},[1318],{"type":49,"value":1319},"Never use identical config for all scenes. For each scene:",{"type":43,"tag":1321,"props":1322,"children":1323},"ul",{},[1324,1334,1344,1354],{"type":43,"tag":568,"props":1325,"children":1326},{},[1327,1332],{"type":43,"tag":68,"props":1328,"children":1329},{},[1330],{"type":49,"value":1331},"Different dominant color",{"type":49,"value":1333}," from the palette",{"type":43,"tag":568,"props":1335,"children":1336},{},[1337,1342],{"type":43,"tag":68,"props":1338,"children":1339},{},[1340],{"type":49,"value":1341},"Different layout",{"type":49,"value":1343}," — don't always center everything",{"type":43,"tag":568,"props":1345,"children":1346},{},[1347,1352],{"type":43,"tag":68,"props":1348,"children":1349},{},[1350],{"type":49,"value":1351},"Different animation entry",{"type":49,"value":1353}," — vary between Write, FadeIn, GrowFromCenter, Create",{"type":43,"tag":568,"props":1355,"children":1356},{},[1357,1362],{"type":43,"tag":68,"props":1358,"children":1359},{},[1360],{"type":49,"value":1361},"Different visual weight",{"type":49,"value":1363}," — some scenes dense, others sparse",{"type":43,"tag":52,"props":1365,"children":1367},{"id":1366},"workflow",[1368],{"type":49,"value":1369},"Workflow",{"type":43,"tag":693,"props":1371,"children":1373},{"id":1372},"step-1-plan-planmd",[1374],{"type":49,"value":1375},"Step 1: Plan (plan.md)",{"type":43,"tag":59,"props":1377,"children":1378},{},[1379,1381,1386,1388,1393],{"type":49,"value":1380},"Before any code, write ",{"type":43,"tag":116,"props":1382,"children":1384},{"className":1383},[],[1385],{"type":49,"value":583},{"type":49,"value":1387},". See ",{"type":43,"tag":116,"props":1389,"children":1391},{"className":1390},[],[1392],{"type":49,"value":250},{"type":49,"value":1394}," for the comprehensive template.",{"type":43,"tag":693,"props":1396,"children":1398},{"id":1397},"step-2-code-scriptpy",[1399],{"type":49,"value":1400},"Step 2: Code (script.py)",{"type":43,"tag":59,"props":1402,"children":1403},{},[1404],{"type":49,"value":1405},"One class per scene. Every scene is independently renderable.",{"type":43,"tag":552,"props":1407,"children":1409},{"className":1241,"code":1408,"language":1243,"meta":560,"style":560},"from manim import *\n\nBG = \"#1C1C1C\"\nPRIMARY = \"#58C4DD\"\nSECONDARY = \"#83C167\"\nACCENT = \"#FFFF00\"\nMONO = \"Menlo\"\n\nclass Scene1_Introduction(Scene):\n    def construct(self):\n        self.camera.background_color = BG\n        title = Text(\"Why Does This Work?\", font_size=48, color=PRIMARY, weight=BOLD, font=MONO)\n        self.add_subcaption(\"Why does this work?\", duration=2)\n        self.play(Write(title), run_time=1.5)\n        self.wait(1.0)\n        self.play(FadeOut(title), run_time=0.5)\n",[1410],{"type":43,"tag":116,"props":1411,"children":1412},{"__ignoreMap":560},[1413,1421,1428,1436,1444,1452,1461,1470,1478,1487,1496,1505,1514,1523,1532,1541],{"type":43,"tag":1249,"props":1414,"children":1415},{"class":1251,"line":1252},[1416],{"type":43,"tag":1249,"props":1417,"children":1418},{},[1419],{"type":49,"value":1420},"from manim import *\n",{"type":43,"tag":1249,"props":1422,"children":1423},{"class":1251,"line":1261},[1424],{"type":43,"tag":1249,"props":1425,"children":1426},{"emptyLinePlaceholder":1265},[1427],{"type":49,"value":1268},{"type":43,"tag":1249,"props":1429,"children":1430},{"class":1251,"line":1271},[1431],{"type":43,"tag":1249,"props":1432,"children":1433},{},[1434],{"type":49,"value":1435},"BG = \"#1C1C1C\"\n",{"type":43,"tag":1249,"props":1437,"children":1438},{"class":1251,"line":1280},[1439],{"type":43,"tag":1249,"props":1440,"children":1441},{},[1442],{"type":49,"value":1443},"PRIMARY = \"#58C4DD\"\n",{"type":43,"tag":1249,"props":1445,"children":1446},{"class":1251,"line":1289},[1447],{"type":43,"tag":1249,"props":1448,"children":1449},{},[1450],{"type":49,"value":1451},"SECONDARY = \"#83C167\"\n",{"type":43,"tag":1249,"props":1453,"children":1455},{"class":1251,"line":1454},6,[1456],{"type":43,"tag":1249,"props":1457,"children":1458},{},[1459],{"type":49,"value":1460},"ACCENT = \"#FFFF00\"\n",{"type":43,"tag":1249,"props":1462,"children":1464},{"class":1251,"line":1463},7,[1465],{"type":43,"tag":1249,"props":1466,"children":1467},{},[1468],{"type":49,"value":1469},"MONO = \"Menlo\"\n",{"type":43,"tag":1249,"props":1471,"children":1473},{"class":1251,"line":1472},8,[1474],{"type":43,"tag":1249,"props":1475,"children":1476},{"emptyLinePlaceholder":1265},[1477],{"type":49,"value":1268},{"type":43,"tag":1249,"props":1479,"children":1481},{"class":1251,"line":1480},9,[1482],{"type":43,"tag":1249,"props":1483,"children":1484},{},[1485],{"type":49,"value":1486},"class Scene1_Introduction(Scene):\n",{"type":43,"tag":1249,"props":1488,"children":1490},{"class":1251,"line":1489},10,[1491],{"type":43,"tag":1249,"props":1492,"children":1493},{},[1494],{"type":49,"value":1495},"    def construct(self):\n",{"type":43,"tag":1249,"props":1497,"children":1499},{"class":1251,"line":1498},11,[1500],{"type":43,"tag":1249,"props":1501,"children":1502},{},[1503],{"type":49,"value":1504},"        self.camera.background_color = BG\n",{"type":43,"tag":1249,"props":1506,"children":1508},{"class":1251,"line":1507},12,[1509],{"type":43,"tag":1249,"props":1510,"children":1511},{},[1512],{"type":49,"value":1513},"        title = Text(\"Why Does This Work?\", font_size=48, color=PRIMARY, weight=BOLD, font=MONO)\n",{"type":43,"tag":1249,"props":1515,"children":1517},{"class":1251,"line":1516},13,[1518],{"type":43,"tag":1249,"props":1519,"children":1520},{},[1521],{"type":49,"value":1522},"        self.add_subcaption(\"Why does this work?\", duration=2)\n",{"type":43,"tag":1249,"props":1524,"children":1526},{"class":1251,"line":1525},14,[1527],{"type":43,"tag":1249,"props":1528,"children":1529},{},[1530],{"type":49,"value":1531},"        self.play(Write(title), run_time=1.5)\n",{"type":43,"tag":1249,"props":1533,"children":1535},{"class":1251,"line":1534},15,[1536],{"type":43,"tag":1249,"props":1537,"children":1538},{},[1539],{"type":49,"value":1540},"        self.wait(1.0)\n",{"type":43,"tag":1249,"props":1542,"children":1544},{"class":1251,"line":1543},16,[1545],{"type":43,"tag":1249,"props":1546,"children":1547},{},[1548],{"type":49,"value":1549},"        self.play(FadeOut(title), run_time=0.5)\n",{"type":43,"tag":59,"props":1551,"children":1552},{},[1553],{"type":49,"value":1554},"Key patterns:",{"type":43,"tag":1321,"props":1556,"children":1557},{},[1558,1590,1600,1614],{"type":43,"tag":568,"props":1559,"children":1560},{},[1561,1566,1568,1574,1576,1582,1584],{"type":43,"tag":68,"props":1562,"children":1563},{},[1564],{"type":49,"value":1565},"Subtitles",{"type":49,"value":1567}," on every animation: ",{"type":43,"tag":116,"props":1569,"children":1571},{"className":1570},[],[1572],{"type":49,"value":1573},"self.add_subcaption(\"text\", duration=N)",{"type":49,"value":1575}," or ",{"type":43,"tag":116,"props":1577,"children":1579},{"className":1578},[],[1580],{"type":49,"value":1581},"subcaption=\"text\"",{"type":49,"value":1583}," on ",{"type":43,"tag":116,"props":1585,"children":1587},{"className":1586},[],[1588],{"type":49,"value":1589},"self.play()",{"type":43,"tag":568,"props":1591,"children":1592},{},[1593,1598],{"type":43,"tag":68,"props":1594,"children":1595},{},[1596],{"type":49,"value":1597},"Shared color constants",{"type":49,"value":1599}," at file top for cross-scene consistency",{"type":43,"tag":568,"props":1601,"children":1602},{},[1603,1612],{"type":43,"tag":68,"props":1604,"children":1605},{},[1606],{"type":43,"tag":116,"props":1607,"children":1609},{"className":1608},[],[1610],{"type":49,"value":1611},"self.camera.background_color",{"type":49,"value":1613}," set in every scene",{"type":43,"tag":568,"props":1615,"children":1616},{},[1617,1622,1624],{"type":43,"tag":68,"props":1618,"children":1619},{},[1620],{"type":49,"value":1621},"Clean exits",{"type":49,"value":1623}," — FadeOut all mobjects at scene end: ",{"type":43,"tag":116,"props":1625,"children":1627},{"className":1626},[],[1628],{"type":49,"value":1629},"self.play(FadeOut(Group(*self.mobjects)))",{"type":43,"tag":693,"props":1631,"children":1633},{"id":1632},"step-3-render",[1634],{"type":49,"value":1635},"Step 3: Render",{"type":43,"tag":552,"props":1637,"children":1641},{"className":1638,"code":1639,"language":1640,"meta":560,"style":560},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","manim -ql script.py Scene1_Introduction Scene2_CoreConcept  # draft\nmanim -qh script.py Scene1_Introduction Scene2_CoreConcept  # production\n","bash",[1642],{"type":43,"tag":116,"props":1643,"children":1644},{"__ignoreMap":560},[1645,1681],{"type":43,"tag":1249,"props":1646,"children":1647},{"class":1251,"line":1252},[1648,1654,1660,1665,1670,1675],{"type":43,"tag":1249,"props":1649,"children":1651},{"style":1650},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1652],{"type":49,"value":1653},"manim",{"type":43,"tag":1249,"props":1655,"children":1657},{"style":1656},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1658],{"type":49,"value":1659}," -ql",{"type":43,"tag":1249,"props":1661,"children":1662},{"style":1656},[1663],{"type":49,"value":1664}," script.py",{"type":43,"tag":1249,"props":1666,"children":1667},{"style":1656},[1668],{"type":49,"value":1669}," Scene1_Introduction",{"type":43,"tag":1249,"props":1671,"children":1672},{"style":1656},[1673],{"type":49,"value":1674}," Scene2_CoreConcept",{"type":43,"tag":1249,"props":1676,"children":1678},{"style":1677},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1679],{"type":49,"value":1680},"  # draft\n",{"type":43,"tag":1249,"props":1682,"children":1683},{"class":1251,"line":1261},[1684,1688,1693,1697,1701,1705],{"type":43,"tag":1249,"props":1685,"children":1686},{"style":1650},[1687],{"type":49,"value":1653},{"type":43,"tag":1249,"props":1689,"children":1690},{"style":1656},[1691],{"type":49,"value":1692}," -qh",{"type":43,"tag":1249,"props":1694,"children":1695},{"style":1656},[1696],{"type":49,"value":1664},{"type":43,"tag":1249,"props":1698,"children":1699},{"style":1656},[1700],{"type":49,"value":1669},{"type":43,"tag":1249,"props":1702,"children":1703},{"style":1656},[1704],{"type":49,"value":1674},{"type":43,"tag":1249,"props":1706,"children":1707},{"style":1677},[1708],{"type":49,"value":1709},"  # production\n",{"type":43,"tag":693,"props":1711,"children":1713},{"id":1712},"step-4-stitch",[1714],{"type":49,"value":1715},"Step 4: Stitch",{"type":43,"tag":552,"props":1717,"children":1719},{"className":1638,"code":1718,"language":1640,"meta":560,"style":560},"cat > concat.txt \u003C\u003C 'EOF'\nfile 'media\u002Fvideos\u002Fscript\u002F480p15\u002FScene1_Introduction.mp4'\nfile 'media\u002Fvideos\u002Fscript\u002F480p15\u002FScene2_CoreConcept.mp4'\nEOF\nffmpeg -y -f concat -safe 0 -i concat.txt -c copy final.mp4\n",[1720],{"type":43,"tag":116,"props":1721,"children":1722},{"__ignoreMap":560},[1723,1752,1760,1768,1776],{"type":43,"tag":1249,"props":1724,"children":1725},{"class":1251,"line":1252},[1726,1731,1737,1742,1747],{"type":43,"tag":1249,"props":1727,"children":1728},{"style":1650},[1729],{"type":49,"value":1730},"cat",{"type":43,"tag":1249,"props":1732,"children":1734},{"style":1733},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1735],{"type":49,"value":1736}," >",{"type":43,"tag":1249,"props":1738,"children":1739},{"style":1656},[1740],{"type":49,"value":1741}," concat.txt",{"type":43,"tag":1249,"props":1743,"children":1744},{"style":1733},[1745],{"type":49,"value":1746}," \u003C\u003C",{"type":43,"tag":1249,"props":1748,"children":1749},{"style":1733},[1750],{"type":49,"value":1751}," 'EOF'\n",{"type":43,"tag":1249,"props":1753,"children":1754},{"class":1251,"line":1261},[1755],{"type":43,"tag":1249,"props":1756,"children":1757},{"style":1656},[1758],{"type":49,"value":1759},"file 'media\u002Fvideos\u002Fscript\u002F480p15\u002FScene1_Introduction.mp4'\n",{"type":43,"tag":1249,"props":1761,"children":1762},{"class":1251,"line":1271},[1763],{"type":43,"tag":1249,"props":1764,"children":1765},{"style":1656},[1766],{"type":49,"value":1767},"file 'media\u002Fvideos\u002Fscript\u002F480p15\u002FScene2_CoreConcept.mp4'\n",{"type":43,"tag":1249,"props":1769,"children":1770},{"class":1251,"line":1280},[1771],{"type":43,"tag":1249,"props":1772,"children":1773},{"style":1733},[1774],{"type":49,"value":1775},"EOF\n",{"type":43,"tag":1249,"props":1777,"children":1778},{"class":1251,"line":1289},[1779,1783,1788,1793,1798,1803,1809,1814,1818,1823,1828],{"type":43,"tag":1249,"props":1780,"children":1781},{"style":1650},[1782],{"type":49,"value":521},{"type":43,"tag":1249,"props":1784,"children":1785},{"style":1656},[1786],{"type":49,"value":1787}," -y",{"type":43,"tag":1249,"props":1789,"children":1790},{"style":1656},[1791],{"type":49,"value":1792}," -f",{"type":43,"tag":1249,"props":1794,"children":1795},{"style":1656},[1796],{"type":49,"value":1797}," concat",{"type":43,"tag":1249,"props":1799,"children":1800},{"style":1656},[1801],{"type":49,"value":1802}," -safe",{"type":43,"tag":1249,"props":1804,"children":1806},{"style":1805},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1807],{"type":49,"value":1808}," 0",{"type":43,"tag":1249,"props":1810,"children":1811},{"style":1656},[1812],{"type":49,"value":1813}," -i",{"type":43,"tag":1249,"props":1815,"children":1816},{"style":1656},[1817],{"type":49,"value":1741},{"type":43,"tag":1249,"props":1819,"children":1820},{"style":1656},[1821],{"type":49,"value":1822}," -c",{"type":43,"tag":1249,"props":1824,"children":1825},{"style":1656},[1826],{"type":49,"value":1827}," copy",{"type":43,"tag":1249,"props":1829,"children":1830},{"style":1656},[1831],{"type":49,"value":1832}," final.mp4\n",{"type":43,"tag":693,"props":1834,"children":1836},{"id":1835},"step-5-review",[1837],{"type":49,"value":1838},"Step 5: Review",{"type":43,"tag":552,"props":1840,"children":1842},{"className":1638,"code":1841,"language":1640,"meta":560,"style":560},"manim -ql --format=png -s script.py Scene2_CoreConcept  # preview still\n",[1843],{"type":43,"tag":116,"props":1844,"children":1845},{"__ignoreMap":560},[1846],{"type":43,"tag":1249,"props":1847,"children":1848},{"class":1251,"line":1252},[1849,1853,1857,1862,1867,1871,1875],{"type":43,"tag":1249,"props":1850,"children":1851},{"style":1650},[1852],{"type":49,"value":1653},{"type":43,"tag":1249,"props":1854,"children":1855},{"style":1656},[1856],{"type":49,"value":1659},{"type":43,"tag":1249,"props":1858,"children":1859},{"style":1656},[1860],{"type":49,"value":1861}," --format=png",{"type":43,"tag":1249,"props":1863,"children":1864},{"style":1656},[1865],{"type":49,"value":1866}," -s",{"type":43,"tag":1249,"props":1868,"children":1869},{"style":1656},[1870],{"type":49,"value":1664},{"type":43,"tag":1249,"props":1872,"children":1873},{"style":1656},[1874],{"type":49,"value":1674},{"type":43,"tag":1249,"props":1876,"children":1877},{"style":1677},[1878],{"type":49,"value":1879},"  # preview still\n",{"type":43,"tag":52,"props":1881,"children":1883},{"id":1882},"critical-implementation-notes",[1884],{"type":49,"value":1885},"Critical Implementation Notes",{"type":43,"tag":693,"props":1887,"children":1889},{"id":1888},"raw-strings-for-latex",[1890],{"type":49,"value":1891},"Raw Strings for LaTeX",{"type":43,"tag":552,"props":1893,"children":1895},{"className":1241,"code":1894,"language":1243,"meta":560,"style":560},"# WRONG: MathTex(\"\\frac{1}{2}\")\n# RIGHT:\nMathTex(r\"\\frac{1}{2}\")\n",[1896],{"type":43,"tag":116,"props":1897,"children":1898},{"__ignoreMap":560},[1899,1907,1915],{"type":43,"tag":1249,"props":1900,"children":1901},{"class":1251,"line":1252},[1902],{"type":43,"tag":1249,"props":1903,"children":1904},{},[1905],{"type":49,"value":1906},"# WRONG: MathTex(\"\\frac{1}{2}\")\n",{"type":43,"tag":1249,"props":1908,"children":1909},{"class":1251,"line":1261},[1910],{"type":43,"tag":1249,"props":1911,"children":1912},{},[1913],{"type":49,"value":1914},"# RIGHT:\n",{"type":43,"tag":1249,"props":1916,"children":1917},{"class":1251,"line":1271},[1918],{"type":43,"tag":1249,"props":1919,"children":1920},{},[1921],{"type":49,"value":1922},"MathTex(r\"\\frac{1}{2}\")\n",{"type":43,"tag":693,"props":1924,"children":1926},{"id":1925},"buff-05-for-edge-text",[1927],{"type":49,"value":1928},"buff >= 0.5 for Edge Text",{"type":43,"tag":552,"props":1930,"children":1932},{"className":1241,"code":1931,"language":1243,"meta":560,"style":560},"label.to_edge(DOWN, buff=0.5)  # never \u003C 0.5\n",[1933],{"type":43,"tag":116,"props":1934,"children":1935},{"__ignoreMap":560},[1936],{"type":43,"tag":1249,"props":1937,"children":1938},{"class":1251,"line":1252},[1939],{"type":43,"tag":1249,"props":1940,"children":1941},{},[1942],{"type":49,"value":1931},{"type":43,"tag":693,"props":1944,"children":1946},{"id":1945},"fadeout-before-replacing-text",[1947],{"type":49,"value":1948},"FadeOut Before Replacing Text",{"type":43,"tag":552,"props":1950,"children":1952},{"className":1241,"code":1951,"language":1243,"meta":560,"style":560},"self.play(ReplacementTransform(note1, note2))  # not Write(note2) on top\n",[1953],{"type":43,"tag":116,"props":1954,"children":1955},{"__ignoreMap":560},[1956],{"type":43,"tag":1249,"props":1957,"children":1958},{"class":1251,"line":1252},[1959],{"type":43,"tag":1249,"props":1960,"children":1961},{},[1962],{"type":49,"value":1951},{"type":43,"tag":693,"props":1964,"children":1966},{"id":1965},"never-animate-non-added-mobjects",[1967],{"type":49,"value":1968},"Never Animate Non-Added Mobjects",{"type":43,"tag":552,"props":1970,"children":1972},{"className":1241,"code":1971,"language":1243,"meta":560,"style":560},"self.play(Create(circle))  # must add first\nself.play(circle.animate.set_color(RED))  # then animate\n",[1973],{"type":43,"tag":116,"props":1974,"children":1975},{"__ignoreMap":560},[1976,1984],{"type":43,"tag":1249,"props":1977,"children":1978},{"class":1251,"line":1252},[1979],{"type":43,"tag":1249,"props":1980,"children":1981},{},[1982],{"type":49,"value":1983},"self.play(Create(circle))  # must add first\n",{"type":43,"tag":1249,"props":1985,"children":1986},{"class":1251,"line":1261},[1987],{"type":43,"tag":1249,"props":1988,"children":1989},{},[1990],{"type":49,"value":1991},"self.play(circle.animate.set_color(RED))  # then animate\n",{"type":43,"tag":52,"props":1993,"children":1995},{"id":1994},"performance-targets",[1996],{"type":49,"value":1997},"Performance Targets",{"type":43,"tag":184,"props":1999,"children":2000},{},[2001,2027],{"type":43,"tag":188,"props":2002,"children":2003},{},[2004],{"type":43,"tag":192,"props":2005,"children":2006},{},[2007,2012,2017,2022],{"type":43,"tag":196,"props":2008,"children":2009},{},[2010],{"type":49,"value":2011},"Quality",{"type":43,"tag":196,"props":2013,"children":2014},{},[2015],{"type":49,"value":2016},"Resolution",{"type":43,"tag":196,"props":2018,"children":2019},{},[2020],{"type":49,"value":2021},"FPS",{"type":43,"tag":196,"props":2023,"children":2024},{},[2025],{"type":49,"value":2026},"Speed",{"type":43,"tag":217,"props":2028,"children":2029},{},[2030,2059,2087],{"type":43,"tag":192,"props":2031,"children":2032},{},[2033,2044,2049,2054],{"type":43,"tag":224,"props":2034,"children":2035},{},[2036,2042],{"type":43,"tag":116,"props":2037,"children":2039},{"className":2038},[],[2040],{"type":49,"value":2041},"-ql",{"type":49,"value":2043}," (draft)",{"type":43,"tag":224,"props":2045,"children":2046},{},[2047],{"type":49,"value":2048},"854x480",{"type":43,"tag":224,"props":2050,"children":2051},{},[2052],{"type":49,"value":2053},"15",{"type":43,"tag":224,"props":2055,"children":2056},{},[2057],{"type":49,"value":2058},"5-15s\u002Fscene",{"type":43,"tag":192,"props":2060,"children":2061},{},[2062,2073,2078,2082],{"type":43,"tag":224,"props":2063,"children":2064},{},[2065,2071],{"type":43,"tag":116,"props":2066,"children":2068},{"className":2067},[],[2069],{"type":49,"value":2070},"-qm",{"type":49,"value":2072}," (medium)",{"type":43,"tag":224,"props":2074,"children":2075},{},[2076],{"type":49,"value":2077},"1280x720",{"type":43,"tag":224,"props":2079,"children":2080},{},[2081],{"type":49,"value":1173},{"type":43,"tag":224,"props":2083,"children":2084},{},[2085],{"type":49,"value":2086},"15-60s\u002Fscene",{"type":43,"tag":192,"props":2088,"children":2089},{},[2090,2100,2105,2110],{"type":43,"tag":224,"props":2091,"children":2092},{},[2093,2098],{"type":43,"tag":116,"props":2094,"children":2096},{"className":2095},[],[2097],{"type":49,"value":626},{"type":49,"value":2099}," (production)",{"type":43,"tag":224,"props":2101,"children":2102},{},[2103],{"type":49,"value":2104},"1920x1080",{"type":43,"tag":224,"props":2106,"children":2107},{},[2108],{"type":49,"value":2109},"60",{"type":43,"tag":224,"props":2111,"children":2112},{},[2113],{"type":49,"value":2114},"30-120s\u002Fscene",{"type":43,"tag":59,"props":2116,"children":2117},{},[2118,2120,2125,2127,2132],{"type":49,"value":2119},"Always iterate at ",{"type":43,"tag":116,"props":2121,"children":2123},{"className":2122},[],[2124],{"type":49,"value":2041},{"type":49,"value":2126},". Only render ",{"type":43,"tag":116,"props":2128,"children":2130},{"className":2129},[],[2131],{"type":49,"value":626},{"type":49,"value":2133}," for final output.",{"type":43,"tag":52,"props":2135,"children":2137},{"id":2136},"references",[2138],{"type":49,"value":2139},"References",{"type":43,"tag":184,"props":2141,"children":2142},{},[2143,2159],{"type":43,"tag":188,"props":2144,"children":2145},{},[2146],{"type":43,"tag":192,"props":2147,"children":2148},{},[2149,2154],{"type":43,"tag":196,"props":2150,"children":2151},{},[2152],{"type":49,"value":2153},"File",{"type":43,"tag":196,"props":2155,"children":2156},{},[2157],{"type":49,"value":2158},"Contents",{"type":43,"tag":217,"props":2160,"children":2161},{},[2162,2187,2203,2219,2235,2251,2267,2283,2299,2316,2333,2350,2367,2384],{"type":43,"tag":192,"props":2163,"children":2164},{},[2165,2174],{"type":43,"tag":224,"props":2166,"children":2167},{},[2168],{"type":43,"tag":116,"props":2169,"children":2171},{"className":2170},[],[2172],{"type":49,"value":2173},"references\u002Fanimations.md",{"type":43,"tag":224,"props":2175,"children":2176},{},[2177,2179,2185],{"type":49,"value":2178},"Core animations, rate functions, composition, ",{"type":43,"tag":116,"props":2180,"children":2182},{"className":2181},[],[2183],{"type":49,"value":2184},".animate",{"type":49,"value":2186}," syntax, timing patterns",{"type":43,"tag":192,"props":2188,"children":2189},{},[2190,2198],{"type":43,"tag":224,"props":2191,"children":2192},{},[2193],{"type":43,"tag":116,"props":2194,"children":2196},{"className":2195},[],[2197],{"type":49,"value":369},{"type":43,"tag":224,"props":2199,"children":2200},{},[2201],{"type":49,"value":2202},"Text, shapes, VGroup\u002FGroup, positioning, styling, custom mobjects",{"type":43,"tag":192,"props":2204,"children":2205},{},[2206,2214],{"type":43,"tag":224,"props":2207,"children":2208},{},[2209],{"type":43,"tag":116,"props":2210,"children":2212},{"className":2211},[],[2213],{"type":49,"value":1236},{"type":43,"tag":224,"props":2215,"children":2216},{},[2217],{"type":49,"value":2218},"12 design principles, opacity layering, layout templates, color palettes",{"type":43,"tag":192,"props":2220,"children":2221},{},[2222,2230],{"type":43,"tag":224,"props":2223,"children":2224},{},[2225],{"type":43,"tag":116,"props":2226,"children":2228},{"className":2227},[],[2229],{"type":49,"value":280},{"type":43,"tag":224,"props":2231,"children":2232},{},[2233],{"type":49,"value":2234},"LaTeX in Manim, TransformMatchingTex, derivation patterns",{"type":43,"tag":192,"props":2236,"children":2237},{},[2238,2246],{"type":43,"tag":224,"props":2239,"children":2240},{},[2241],{"type":43,"tag":116,"props":2242,"children":2244},{"className":2243},[],[2245],{"type":49,"value":310},{"type":43,"tag":224,"props":2247,"children":2248},{},[2249],{"type":49,"value":2250},"Axes, plotting, BarChart, animated data, algorithm visualization",{"type":43,"tag":192,"props":2252,"children":2253},{},[2254,2262],{"type":43,"tag":224,"props":2255,"children":2256},{},[2257],{"type":43,"tag":116,"props":2258,"children":2260},{"className":2259},[],[2261],{"type":49,"value":428},{"type":43,"tag":224,"props":2263,"children":2264},{},[2265],{"type":49,"value":2266},"MovingCameraScene, ThreeDScene, 3D surfaces, camera control",{"type":43,"tag":192,"props":2268,"children":2269},{},[2270,2278],{"type":43,"tag":224,"props":2271,"children":2272},{},[2273],{"type":43,"tag":116,"props":2274,"children":2276},{"className":2275},[],[2277],{"type":49,"value":250},{"type":43,"tag":224,"props":2279,"children":2280},{},[2281],{"type":49,"value":2282},"Narrative arcs, layout templates, scene transitions, planning template",{"type":43,"tag":192,"props":2284,"children":2285},{},[2286,2294],{"type":43,"tag":224,"props":2287,"children":2288},{},[2289],{"type":43,"tag":116,"props":2290,"children":2292},{"className":2291},[],[2293],{"type":49,"value":660},{"type":43,"tag":224,"props":2295,"children":2296},{},[2297],{"type":49,"value":2298},"CLI reference, quality presets, ffmpeg, voiceover workflow, GIF export",{"type":43,"tag":192,"props":2300,"children":2301},{},[2302,2311],{"type":43,"tag":224,"props":2303,"children":2304},{},[2305],{"type":43,"tag":116,"props":2306,"children":2308},{"className":2307},[],[2309],{"type":49,"value":2310},"references\u002Ftroubleshooting.md",{"type":43,"tag":224,"props":2312,"children":2313},{},[2314],{"type":49,"value":2315},"LaTeX errors, animation errors, common mistakes, debugging",{"type":43,"tag":192,"props":2317,"children":2318},{},[2319,2328],{"type":43,"tag":224,"props":2320,"children":2321},{},[2322],{"type":43,"tag":116,"props":2323,"children":2325},{"className":2324},[],[2326],{"type":49,"value":2327},"references\u002Fanimation-design-thinking.md",{"type":43,"tag":224,"props":2329,"children":2330},{},[2331],{"type":49,"value":2332},"When to animate vs show static, decomposition, pacing, narration sync",{"type":43,"tag":192,"props":2334,"children":2335},{},[2336,2345],{"type":43,"tag":224,"props":2337,"children":2338},{},[2339],{"type":43,"tag":116,"props":2340,"children":2342},{"className":2341},[],[2343],{"type":49,"value":2344},"references\u002Fupdaters-and-trackers.md",{"type":43,"tag":224,"props":2346,"children":2347},{},[2348],{"type":49,"value":2349},"ValueTracker, add_updater, always_redraw, time-based updaters, patterns",{"type":43,"tag":192,"props":2351,"children":2352},{},[2353,2362],{"type":43,"tag":224,"props":2354,"children":2355},{},[2356],{"type":43,"tag":116,"props":2357,"children":2359},{"className":2358},[],[2360],{"type":49,"value":2361},"references\u002Fpaper-explainer.md",{"type":43,"tag":224,"props":2363,"children":2364},{},[2365],{"type":49,"value":2366},"Turning research papers into animations — workflow, templates, domain patterns",{"type":43,"tag":192,"props":2368,"children":2369},{},[2370,2379],{"type":43,"tag":224,"props":2371,"children":2372},{},[2373],{"type":43,"tag":116,"props":2374,"children":2376},{"className":2375},[],[2377],{"type":49,"value":2378},"references\u002Fdecorations.md",{"type":43,"tag":224,"props":2380,"children":2381},{},[2382],{"type":49,"value":2383},"SurroundingRectangle, Brace, arrows, DashedLine, Angle, annotation lifecycle",{"type":43,"tag":192,"props":2385,"children":2386},{},[2387,2396],{"type":43,"tag":224,"props":2388,"children":2389},{},[2390],{"type":43,"tag":116,"props":2391,"children":2393},{"className":2392},[],[2394],{"type":49,"value":2395},"references\u002Fproduction-quality.md",{"type":43,"tag":224,"props":2397,"children":2398},{},[2399],{"type":49,"value":2400},"Pre-code, pre-render, post-render checklists, spatial layout, color, tempo",{"type":43,"tag":2402,"props":2403,"children":2404},"hr",{},[],{"type":43,"tag":52,"props":2406,"children":2408},{"id":2407},"creative-divergence-use-only-when-user-requests-experimentalcreativeunique-output",[2409],{"type":49,"value":2410},"Creative Divergence (use only when user requests experimental\u002Fcreative\u002Funique output)",{"type":43,"tag":59,"props":2412,"children":2413},{},[2414],{"type":49,"value":2415},"If the user asks for creative, experimental, or unconventional explanatory approaches, select a strategy and reason through it BEFORE designing the animation.",{"type":43,"tag":1321,"props":2417,"children":2418},{},[2419,2429],{"type":43,"tag":568,"props":2420,"children":2421},{},[2422,2427],{"type":43,"tag":68,"props":2423,"children":2424},{},[2425],{"type":49,"value":2426},"SCAMPER",{"type":49,"value":2428}," — when the user wants a fresh take on a standard explanation",{"type":43,"tag":568,"props":2430,"children":2431},{},[2432,2437],{"type":43,"tag":68,"props":2433,"children":2434},{},[2435],{"type":49,"value":2436},"Assumption Reversal",{"type":49,"value":2438}," — when the user wants to challenge how something is typically taught",{"type":43,"tag":693,"props":2440,"children":2442},{"id":2441},"scamper-transformation",[2443],{"type":49,"value":2444},"SCAMPER Transformation",{"type":43,"tag":59,"props":2446,"children":2447},{},[2448],{"type":49,"value":2449},"Take a standard mathematical\u002Ftechnical visualization and transform it:",{"type":43,"tag":1321,"props":2451,"children":2452},{},[2453,2463,2473,2483,2493],{"type":43,"tag":568,"props":2454,"children":2455},{},[2456,2461],{"type":43,"tag":68,"props":2457,"children":2458},{},[2459],{"type":49,"value":2460},"Substitute",{"type":49,"value":2462},": replace the standard visual metaphor (number line → winding path, matrix → city grid)",{"type":43,"tag":568,"props":2464,"children":2465},{},[2466,2471],{"type":43,"tag":68,"props":2467,"children":2468},{},[2469],{"type":49,"value":2470},"Combine",{"type":49,"value":2472},": merge two explanation approaches (algebraic + geometric simultaneously)",{"type":43,"tag":568,"props":2474,"children":2475},{},[2476,2481],{"type":43,"tag":68,"props":2477,"children":2478},{},[2479],{"type":49,"value":2480},"Reverse",{"type":49,"value":2482},": derive backward — start from the result and deconstruct to axioms",{"type":43,"tag":568,"props":2484,"children":2485},{},[2486,2491],{"type":43,"tag":68,"props":2487,"children":2488},{},[2489],{"type":49,"value":2490},"Modify",{"type":49,"value":2492},": exaggerate a parameter to show why it matters (10x the learning rate, 1000x the sample size)",{"type":43,"tag":568,"props":2494,"children":2495},{},[2496,2501],{"type":43,"tag":68,"props":2497,"children":2498},{},[2499],{"type":49,"value":2500},"Eliminate",{"type":49,"value":2502},": remove all notation — explain purely through animation and spatial relationships",{"type":43,"tag":693,"props":2504,"children":2506},{"id":2505},"assumption-reversal",[2507],{"type":49,"value":2436},{"type":43,"tag":564,"props":2509,"children":2510},{},[2511,2516,2521,2526],{"type":43,"tag":568,"props":2512,"children":2513},{},[2514],{"type":49,"value":2515},"List what's \"standard\" about how this topic is visualized (left-to-right, 2D, discrete steps, formal notation)",{"type":43,"tag":568,"props":2517,"children":2518},{},[2519],{"type":49,"value":2520},"Pick the most fundamental assumption",{"type":43,"tag":568,"props":2522,"children":2523},{},[2524],{"type":49,"value":2525},"Reverse it (right-to-left derivation, 3D embedding of a 2D concept, continuous morphing instead of steps, zero notation)",{"type":43,"tag":568,"props":2527,"children":2528},{},[2529],{"type":49,"value":2530},"Explore what the reversal reveals that the standard approach hides",{"type":43,"tag":2532,"props":2533,"children":2534},"style",{},[2535],{"type":49,"value":2536},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2538,"total":1516},[2539,2556,2569,2579,2590,2609,2616,2629,2646,2662,2686,2697],{"slug":8,"name":8,"fn":2540,"description":2541,"org":2542,"tags":2543,"stars":2553,"repoUrl":2554,"updatedAt":2555},"automate browser interactions","Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site\u002Fapp work.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2544,2547,2550],{"name":2545,"slug":2546,"type":15},"Automation","automation",{"name":2548,"slug":2549,"type":15},"Browser Automation","browser-automation",{"name":2551,"slug":2552,"type":15},"Web Scraping","web-scraping",106789,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fbrowser-use","2026-07-28T05:35:58.143842",{"slug":2557,"name":2557,"fn":2558,"description":2559,"org":2560,"tags":2561,"stars":2553,"repoUrl":2554,"updatedAt":2568},"cloud","use Browser Use Cloud API","Documentation reference for using Browser Use Cloud — the hosted API and SDK for browser automation. Use this skill whenever the user needs help with the Cloud REST API (v2 or v3), browser-use-sdk (Python or TypeScript), X-Browser-Use-API-Key authentication, cloud sessions, browser profiles, profile sync, CDP WebSocket connections, stealth browsers, residential proxies, CAPTCHA handling, webhooks, workspaces, skills marketplace, liveUrl streaming, pricing, or integration patterns (chat UI, subagent, adding browser tools to existing agents). Also trigger for questions about n8n\u002FMake\u002FZapier integration, Playwright\u002F Puppeteer\u002FSelenium on cloud infrastructure, or 1Password vault integration. Do NOT use this for the open-source Python library (Agent, Browser, Tools config) — use the open-source skill instead.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2562,2563,2565],{"name":2548,"slug":2549,"type":15},{"name":2564,"slug":1243,"type":15},"Python",{"name":2566,"slug":2567,"type":15},"REST API","rest-api","2026-04-06T18:06:10.225871",{"slug":2570,"name":2570,"fn":2571,"description":2572,"org":2573,"tags":2574,"stars":2553,"repoUrl":2554,"updatedAt":2578},"open-source","write browser-use Python code","Documentation reference for writing Python code using the browser-use open-source library. Use this skill whenever the user needs help with Agent, Browser, or Tools configuration, is writing code that imports from browser_use, asks about @sandbox deployment, supported LLM models, Actor API, custom tools, lifecycle hooks, MCP server setup, or monitoring\u002Fobservability with Laminar or OpenLIT. Also trigger for questions about browser-use installation, prompting strategies, or sensitive data handling. Do NOT use this for Cloud API\u002FSDK usage or pricing — use the cloud skill instead. Do NOT use this for directly automating a browser via CLI commands — use the browser-use skill instead.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2575,2576,2577],{"name":2545,"slug":2546,"type":15},{"name":2548,"slug":2549,"type":15},{"name":2564,"slug":1243,"type":15},"2026-04-06T18:06:14.102374",{"slug":2580,"name":2580,"fn":2581,"description":2582,"org":2583,"tags":2584,"stars":2553,"repoUrl":2554,"updatedAt":2589},"remote-browser","control a local browser from a sandbox","Controls a local browser from a sandboxed remote machine. Use when the agent is running in a sandbox (no GUI) and needs to navigate websites, interact with web pages, fill forms, take screenshots, or expose local dev servers via tunnels.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2585,2586],{"name":2548,"slug":2549,"type":15},{"name":2587,"slug":2588,"type":15},"Sandboxing","sandboxing","2026-04-06T18:06:12.842351",{"slug":2591,"name":2591,"fn":2592,"description":2593,"org":2594,"tags":2595,"stars":2553,"repoUrl":2554,"updatedAt":2608},"x402","configure x402 payments for Browser Use Cloud","Set up Browser Use Cloud payments with x402 — pay per request from a crypto wallet (USDC on Base mainnet), no signup or API key. Two setups it works out up front — \"just use it\" (set up a wallet so you or Claude Code can run cloud browser tasks paid from the wallet — Claude writes and runs throwaway scripts, nothing touches your codebase) or \"build it in\" (install the SDK and write the key + code into your project). Walks through wallet setup, funding, .env, and a ~$1 test run. Use when the user asks about x402, pay-per-use, USDC payments, or wants Browser Use Cloud without an API key. For the free-tier signup (reverse-CAPTCHA → API key), use `browser-use cloud signup` or the `cloud` skill instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2596,2597,2600,2601,2604,2607],{"name":2545,"slug":2546,"type":15},{"name":2598,"slug":2599,"type":15},"Base","base",{"name":2548,"slug":2549,"type":15},{"name":2602,"slug":2603,"type":15},"Payments","payments",{"name":2605,"slug":2606,"type":15},"Web3","web3",{"name":2591,"slug":2591,"type":15},"2026-06-02T07:51:20.889935",{"slug":4,"name":4,"fn":5,"description":6,"org":2610,"tags":2611,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2612,2613,2614,2615],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":23,"slug":24,"type":15},{"slug":2617,"name":2617,"fn":2618,"description":2619,"org":2620,"tags":2621,"stars":25,"repoUrl":26,"updatedAt":2628},"video-use","edit and process videos via conversation","Edit any video by conversation. Transcribe, cut, color grade, generate overlay animations, burn subtitles — for talking heads, montages, tutorials, travel, interviews. No presets, no menus. Ask questions, confirm the plan, execute, iterate, persist. Production-correctness rules are hard; everything else is artistic freedom.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2622,2623,2624,2627],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":2625,"slug":2626,"type":15},"Transcription","transcription",{"name":23,"slug":24,"type":15},"2026-04-16T12:17:10.522375",{"slug":2630,"name":2630,"fn":2631,"description":2632,"org":2633,"tags":2634,"stars":2643,"repoUrl":2644,"updatedAt":2645},"browser-use-terminal","automate web interactions via CLI","Direct browser control via the Browser Use Terminal CLI. Use when the user wants to automate, scrape, test, or interact with web pages — you drive the browser yourself with Python helpers.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2635,2636,2639,2640],{"name":2548,"slug":2549,"type":15},{"name":2637,"slug":2638,"type":15},"CLI","cli",{"name":2564,"slug":1243,"type":15},{"name":2641,"slug":2642,"type":15},"Web Development","web-development",607,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fterminal","2026-06-12T08:15:38.34797",{"slug":2647,"name":2647,"fn":2648,"description":2649,"org":2650,"tags":2651,"stars":2659,"repoUrl":2660,"updatedAt":2661},"cdp","drive Chrome via DevTools Protocol","Drive Chrome via the DevTools Protocol from JavaScript. Run JS snippets through the `browser-harness-js` CLI — it auto-spawns a long-lived bun HTTP server holding a fully-typed CDP `Session`, and every call (`browser-harness-js 'await session.Page.navigate(...)'`) executes against the same persistent connection. Session, active target, and globals survive across calls. Use when the user wants to automate, script, or inspect a Chrome browser via CDP — single tab or multi-tab, attach to existing Chrome or to a new one launched with --remote-debugging-port.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2652,2653,2656],{"name":2548,"slug":2549,"type":15},{"name":2654,"slug":2655,"type":15},"JavaScript","javascript",{"name":2657,"slug":2658,"type":15},"Testing","testing",473,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fbrowser-harness-js","2026-04-21T04:55:40.331082",{"slug":2663,"name":2663,"fn":2664,"description":2665,"org":2666,"tags":2667,"stars":2683,"repoUrl":2684,"updatedAt":2685},"agents-sdk","build AI agents on Cloudflare Workers","Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2668,2671,2674,2677,2680],{"name":2669,"slug":2670,"type":15},"Agents","agents",{"name":2672,"slug":2673,"type":15},"AI Infrastructure","ai-infrastructure",{"name":2675,"slug":2676,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":2678,"slug":2679,"type":15},"SDK","sdk",{"name":2681,"slug":2682,"type":15},"Serverless","serverless",255,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fbrowsercode","2026-04-27T05:34:19.800431",{"slug":2687,"name":2687,"fn":2688,"description":2689,"org":2690,"tags":2691,"stars":2683,"repoUrl":2684,"updatedAt":2696},"browser-execute","execute browser automation tasks","Use ONLY when calling the `browser_execute` tool or driving a real browser via the Chrome DevTools Protocol. Required reading before the first `browser_execute` call in a session. Covers the three connection methods (local Chrome with remote debugging, isolated debug-port profile, Browser Use cloud), the in-process `session` \u002F `console` snippet model, attaching to a page target, common CDP commands, the per-project `.bcode\u002Fagent-workspace\u002F` for reusable scripts, and screenshot auto-attachment.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2692,2693],{"name":2548,"slug":2549,"type":15},{"name":2694,"slug":2695,"type":15},"Debugging","debugging","2026-07-31T05:55:46.960752",{"slug":2698,"name":2698,"fn":2699,"description":2700,"org":2701,"tags":2702,"stars":2683,"repoUrl":2684,"updatedAt":2713},"cloudflare","manage Cloudflare platform resources","Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), networking (Tunnel, Spectrum), security (WAF, DDoS), and infrastructure-as-code (Terraform, Pulumi). Use for any Cloudflare development task.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2703,2704,2706,2709,2712],{"name":2672,"slug":2673,"type":15},{"name":2705,"slug":2698,"type":15},"Cloudflare",{"name":2707,"slug":2708,"type":15},"Database","database",{"name":2710,"slug":2711,"type":15},"Security","security",{"name":2681,"slug":2682,"type":15},"2026-04-27T05:34:21.032189",{"items":2715,"total":1261},[2716,2723],{"slug":4,"name":4,"fn":5,"description":6,"org":2717,"tags":2718,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2719,2720,2721,2722],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":23,"slug":24,"type":15},{"slug":2617,"name":2617,"fn":2618,"description":2619,"org":2724,"tags":2725,"stars":25,"repoUrl":26,"updatedAt":2628},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2726,2727,2728,2729],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":2625,"slug":2626,"type":15},{"name":23,"slug":24,"type":15}]