Free · Local · MCP-driven
Tell an agent what you want. Get an MP4 back. No per-render cost, no API calls, no cloud. Drives from any MCP-compatible agent (Claude Code, Codex, OpenCode, Cursor, Cline), or from the CLI.
What you can make · portrait + landscape
Each component below shipped at 1080×1920 (portrait, for Reels / TikTok / Shorts) and at 1920×1080 (landscape, for YouTube / desktop / TV). Same scene spec, the kit auto-flips the layout based on canvas aspect.
list-revealA title at the top, then 1 to 5 rows revealing on cue. Each row has an icon and a label. The most common shape.


flowA process from A to B to C. Each node appears, an arrow draws between them, the next node appears. Vertical in portrait, horizontal in landscape.


comparisonTwo icons with a configurable divider between them. Old way vs new way. Cyber security vs AI security. Manual vs automated.


hubA central concept with 2 to 4 satellites that connect in via lines. Circular in portrait, elliptical in landscape so satellites use the wider canvas.


Start here
The agent clones the repo, installs deps, wires the MCP into your config, verifies the server boots, and is ready to render videos when you ask.
Set up github.com/alichherawalla/video-overlay-kit as an MCP server in my coding agent. 1. Clone the repo to ~/code/video-overlay-kit (or ask me where to put it if that path is taken). 2. Run `npm install` inside the cloned directory. 3. Add a `video-overlay-kit` entry to my MCP config that runs `node <absolute-cloned-path>/bin/mcp.mjs`. Use the project's .mcp.json if I'm currently inside a git repo, otherwise my global ~/.claude/mcp_settings.json. Preserve any existing MCP servers. 4. Verify the server starts by sending it a tools/list JSON-RPC request over stdio and confirming the tools list_icons, validate_scene, and render_scene come back. 5. Tell me to restart my agent so the new MCP server is picked up. After setup, read the README at the cloned repo so you know how to author scene specs. Default to the Wednesday Solutions light theme and 5-second duration unless I say otherwise.
In plain English. No JSON editing.
"Make me a 5-second overlay titled A runbook for every incident with three rows: drift, prompt injection, exfil attempts."
The agent:
list_icons("alert") to find icons.validate_scene(spec).render_scene(spec, "./out.mp4").You drop the MP4 into your editor. End-to-end loop: 10 to 20 seconds.
Customize the look
The kit ships polished out of the box, with the Wednesday Solutions palette, an ambient bloom behind every scene, and a sunset gradient on every primary text label. Override any of it.
| Tell the agent | What happens |
|---|---|
| "Render it in dark mode" | theme: "dark" |
| "Use a black background" | background: "#000000" |
| "Flat background, no bloom" | bloom: false |
| "Solid colour title, no gradient" | titleGradient: false |
| "Put the team photo behind it" | backgroundImage: { source: "team.jpg" } |
| "Make the accent red instead of lavender" | palette: { accent: "#E74C3C" } |
| "Transparent background, I'll composite it myself" | background: "transparent" |
Why this exists
Most short-form B2B video is a talking head with overlay graphics. Done well, the overlays carry as much of the message as the speaker.
₹500 to ₹2000 per reel. Slow loop. Dependency on a person.
$20 to $25 per month. Fixed style. AI-generated quality varies.
Real time investment. Bespoke control. Not scriptable from your terminal.
Free. Local. Driven from your terminal or Claude Code. The agent writes the spec; you handle the message.
If the kit saves you time or render budget, the easiest way to give back is to sponsor on GitHub. Sponsorships fund new components, better defaults, and bug fixes that ship faster than I can do them in evenings.