Topic in, narrated Manim video out.

An Agent Skill that interviews you about the content, writes a beat-by-beat storyboard, narrates it, renders it with Manim, and QA-checks every beat β€” then keeps doing it in the same visual style for the whole series.

uvx manim-math-video-studio --platform claude

One agent at a time. Replace claude with codex, copilot, or pi. Needs Python 3.10+ and uv; installs the shared Manim environment. Other installers.

Animated frames from the episode: the probability of a shared birthday rising through 23 people at 50.7 percent
β€œWhy 23 people are enough for a shared birthday” β€” 2Β½ minutes, demo v0.4.0 (2026-11-03), from a prompt to a rendered, subtitled episode. Watch the full 1080p video.

Why it is not just a prompt

Interview first

It asks about the content β€” central question, audience, crux, visual approach, takeaway β€” before writing a single line of scene code. A theme is not a brief.

Narration drives the clock

Each beat gets a measured TTS duration, and the animation follows it. Nothing is ever cut off mid-sentence, and subtitles stay in sync.

Built for series

A series registry keeps template, palette, typography, and narration identity stable, so episode 12 still looks like episode 1.

Verified, not vibes

JSON-schema validation for the brief and storyboard, an environment check, contact-sheet QA, and a self-test.

Any subject

History, science, technology, literature, philosophy, art, tutorials β€” mathematics is one supported domain, not the whole product.

Portable skill

One skill tree, four frontmatter variants: Claude Code, Codex, GitHub Copilot, and Pi. Same workflow, same references, same scripts.

The pipeline

  1. Interview β€” content, audience, crux, visuals, takeaway β†’ brief.json
  2. Lock β€” quality, voice, language, template (the only four parameters that need deciding up front)
  3. Storyboard β€” beats, timings, graph specs, captions β†’ storyboard.json
  4. Narrate β€” edge-tts, Piper, or your own command β†’ audio + per-beat timings + SRT/VTT
  5. Render & QA β€” Manim, then a contact sheet per beat so you can review without scrubbing

Voice providers

Edge-tts is the free default. Cartesia and ElevenLabs are native providers when their API keys are available. Voice choice is explicit: generate samples, check access and language, then keep the same voice across the series.

edge-tts

Free default with word boundaries for captions, broad language coverage, and curated voices. No key required.

Cartesia

Native adapter with WAV output, speed/volume control, and live voice listing. Needs CARTESIA_API_KEY; check the access and language columns before choosing.

ElevenLabs

Native adapter with multilingual models and voice settings. Needs ELEVENLABS_API_KEY; library voices require a paid plan, so prefer an owned voice.

Voice, language, sample, and pronunciation guide

Install one agent at a time

AgentInstallInvoke
Claude Codeuvx manim-math-video-studio --platform claude/manim-math-video
Codexuvx manim-math-video-studio --platform codex$manim-math-video
GitHub Copilotuvx manim-math-video-studio --platform copilot/manim-math-video
Piuvx manim-math-video-studio --platform pi/skill:manim-math-video

The package installs the skill and the shared environment. Prefer pipx or a checkout? See the install guide.

Get it