Give it a subject — "how does an espresso machine make a shot", "why a city grew past its own border" — and get back a one-to-two-minute narrated video with captions, where every fact on screen comes from a source it can show you.
Chat with it in Claude Code or Codex. It isn't a text-to-video model painting frames. It works the way a small explainer studio does: it researches the topic (or reads your slides), writes a script, voices it, designs each shot around what that line is saying, builds the drawings the topic needs when its library doesn't have them, renders the film, and checks the result before handing it over.
What you get, and what to expect:
- 🔎 Sourced, not invented. Every date and figure in the narration is pinned to a quote from a page it fetched. Where sources disagree, it picks the defensible reading and says so in the brief. If it can't source a number, the film says it qualitatively instead.
- 🎬 Designed shot by shot. It picks from a library of 194 hand-built shot designs: cutaway plates, compare panels, routes, timelines, phone demos, data stages. When a film needs something the library doesn't have (a coffee puck in section, a scale's load cell, a city's growth drawn to scale), it builds that object or shot for the film, then checks it reads with the caption covered.
- 🗣️ Narrated and captioned in any language. A free neural voice by default (edge-tts), word-synced captions burned onto the frame's own background, Chinese included. It can voice an English deck in Chinese, or the other way round.
- 🧪 Checked before you see it. Text inside the frame, captions not colliding with content, audio in sync, no text jittering as the camera moves, no placeholder copy left on screen. The checks run on the rendered frames, not on the plan.
- 📐 Any canvas. 16:9, vertical 9:16, square 1:1 and more. Each shot recomposes for the frame instead of being cropped.
Honest limits: it runs locally and makes a file (MP4 plus SRT, copied to your Desktop). No cloud, no share links. A polished five-shot film takes real agent time: our test films took one to two hours each, most of it planning, building and checking; a full render itself takes a couple of minutes.
Example films · What's different · Two tiers · How it works · Quick start · Troubleshooting
Stills from four films made from a one-line topic, in Chinese. Each drawing below was built by the film itself, not picked from stock.
Most "AI video" tools fall into one of two camps. Some are generative models: impressive motion, but they can't keep a fact straight or put a label in the right place. Others are template slideshows: your text over stock footage. topic-to-video sits elsewhere. Every frame is drawn as code: real type, real diagrams, real data. So it can be exact, and it can be checked.
- The visual says the thing. Each shot is chosen and built for what its line of narration claims. Hide the caption and the picture should still carry the idea. Built objects are tested against exactly that before rendering.
- Facts carry receipts. The brief keeps each figure next to the quote it came from, so you can audit a film line by line.
- Real places, real credits. When a topic needs a real photo or map, it fetches a license-clean image from Wikimedia Commons and credits it on screen.
- It notices its own mistakes. Its checks measure the rendered video. One example: a check reads every frame for text that steps a pixel at a time during a slow camera move, a flaw no screenshot shows.
- You stay in charge of taste. It shows you a render early, you say what to change, and it re-renders only the shots that changed (and the cut into the next one).
- Brief. It asks a few questions (what the video is for, language, length, vertical or wide, which visual tier), then researches the topic or reads your deck. Facts go into a sourced brief.
- Plan. A script, one beat per idea, and a design direction for the whole film: type, colour, how shots cut.
- Build. For each beat it picks a shot from the library, or builds the object or shot the beat needs in the film's own workshop.
- Voice. It narrates each beat and times captions and on-screen reveals to the spoken words.
- Render and check. It renders the film and runs the frame, caption, audio and motion checks, then copies the MP4 and SRT to your Desktop.
Every film is made by one of two renderers. They're built for different jobs. The skill suggests one from what the video is for, and you choose.
| Cinematic tier (Remotion) | Page tier (HTML) | |
|---|---|---|
| What a shot is | A hand-built animated shot from a library of 194 designs (cutaways, compare panels, routes, phone demos, data stages), plus objects the film builds for itself | A designed page per beat (flows, timelines, comparisons, tables, charts, code, equations), laid out for that content |
| Motion | Camera pushes and pans, depth and 3D-style staging, cuts planned across the whole film | Each point appears on the word that names it, timed to the voice |
| One look for the film | A design direction (type, colour, motif) carried through every shot | A theme and page styles; editorial and print looks suit it well |
| Editing | Re-renders the shot you changed and the cut into the next one | Re-renders just the page you changed; a quick preview mode too |
| Needs | Node.js (npm install once) and a bit more memory |
Chrome only |
| Best for | Product launches, promos, stories, how-a-mechanism-works films, anything where motion carries the explanation | Teaching, how-tos, research briefings, narrating a deck, anything with dense tables, figures or step-by-step text |
Pitches and overviews can go either way: evidence-heavy ones suit pages, story-led ones suit the cinematic tier. If you just want your own slides narrated as they are, there's a third option that shows each slide full-frame with gentle motion and needs only ffmpeg.
Prefer a marketplace? topic-to-video is also on ClawHub, which installs straight into OpenClaw. Follow the install steps on that page, then come back for the tools below; they apply however you install.
You need Python 3.9+, ffmpeg, and Google Chrome (used headless to draw frames). Add Node.js for the cinematic tier, and LibreOffice if you'll feed it .pptx files.
| OS | ffmpeg | LibreOffice (for .pptx input) |
|---|---|---|
| macOS | brew install ffmpeg |
brew install --cask libreoffice |
| Linux | sudo apt install ffmpeg |
sudo apt install libreoffice |
Then install the skill and its Python packages:
# Claude Code
git clone --depth 1 https://github.com/addsumtech/topic-to-video.git ~/.claude/skills/topic-to-video
# Codex
git clone --depth 1 https://github.com/addsumtech/topic-to-video.git ~/.agents/skills/topic-to-video
python3 -m pip install pillow pymupdf python-pptx edge-ttsFor the cinematic tier, run this once:
cd ~/.claude/skills/topic-to-video/remotion && npm installOr install the skill alone with npx skills: npx skills add addsumtech/topic-to-video. You still need the tools above.
On Claude Code you can also install it as a plugin, managed by Claude Code's plugin system:
/plugin marketplace add addsumtech/topic-to-video
/plugin install topic-to-video@topic-to-video
Remove any copy in ~/.claude/skills/ first, or you'll see the skill twice. For the cinematic tier, run npm install once inside the installed skill's remotion/ folder (python3 scripts/doctor.py, run from the skill folder, tells you if it's missing). To update later: /plugin marketplace update topic-to-video.
Start a chat and describe the video:
Make a 90-second video explaining how an espresso machine pulls a shot.
做一个讲解视频:深圳是怎么从边境小镇变成超大城市的,竖屏,中文配音。
Turn slides/q3-review.pptx into a narrated video with a Chinese voice-over.
It interviews you briefly, shows you the plan, renders, and tells you where the file landed. You don't have to say "skill". Asking for a video about a topic or from slides is enough.
- Explainers and teaching: how something works, why something happens, one idea per beat.
- Product launches and demos: a concept product, an app flow on a phone, a feature walkthrough.
- Places and history: a city, an era, a timeline, with real credited photos where they help.
- Your existing deck, narrated: a talk or report turned into a video, in its own language or another.
- Pairs with slide-maker: make the deck there, narrate it here.
- Something missing? Run
python3 scripts/doctor.pyfrom the skill folder. It lists each tool, what it's for, and the exact install command. - No voice / edge-tts fails: edge-tts needs a network connection. Offline on macOS, it falls back to the system
sayvoice. - Cinematic tier not offered: run
npm installinremotion/(see Step 1). - Can't find the video: it's copied to your Desktop (or Downloads if the Desktop isn't writable), named after the film's title.





