2D platformer in the browser
A side-scrolling jump-and-run in the style of the classics, with art and sound you are allowed to ship.
A recipe for a command that turns a script into a vertical video with voiceover, word-timed captions and stock footage, and keeps a record of every license. For Claude Code, Cursor, Codex or Copilot, with exact versions and the traps two test builds ran into.
New to kits? Read how to use a kit.
Your agent reads the brief, builds with these parts and checks its own work before you ship. Click a part to see why it was picked.
The plan your agent follows, a step at a time, with a check that must pass before the next step. It also holds the stack with exact versions, the licenses and the known traps.
The first message you paste into your agent. It points the agent at AGENTS.md and tells it to stop after step 1 and report.
The MCP servers the brief lists, set up for Claude Code. The kit builder writes the same setup for Cursor, Codex or Copilot.
The license record of every third-party file. The brief tells the agent to add a row for every file it brings in.
The kit works with any of these. Pick yours in the kit builder and the setup files change to match.
MoviePy 2 renamed most of its API, and models still write version 1 code from memory.
By Upstash · In 1,266 of 29,413 sampled repos · v4.3.0 on npm · Agent can use it through MCP
If the agent needs another voice, footage source or API, it asks AgentGid for one that fits your license constraints.
By AgentGid · Agent can use it through MCP
One Python version has to satisfy every package below.
Nothing to install
Each video starts as a short JSON script: a hook, three to five beats with search words for footage, and a closing line. Start here: no key, no extra cost. Add a model API when you want the pipeline to run without you.
Nothing to install
4 other candidates ruled out.
Reads the script. Licenses differ sharply here: several free voices forbid commercial use. Apache-2.0 weights, so commercial use is allowed. English, Spanish, French, Hindi, Italian, Japanese, Portuguese and Mandarin; no Russian.
Apache-2.0 · Commercial use OK · No credit needed · Free · Installs from a package registry
5 other candidates also fit, 13 ruled out.
Word-by-word captions need a start and end time for every word of the finished narration. Returns word timestamps and does not need a system FFmpeg.
In 18 of 1,546 Python agent projects (1.2%) · #16 of 28 in model sdks · v1.2.1 (pypi registry) · MIT · Installs from a package registry
3 other candidates also fit.
Cuts footage to the narration, crops to vertical, draws captions and mixes audio. Python all the way through, and it brings its own FFmpeg binary.
MIT · Commercial use OK · Credit not stated · Free · Installs from a package registry
1 other candidate also fits, 3 ruled out.
MoviePy draws caption text with Pillow.
In 230 of 1,546 Python agent projects (14.9%) · #2 of 80 in files, images and media · v12.3.0, July 1, 2026 · MIT-CMU · Installs from a package registry
The pictures under the voice. The agent searches by the keywords in each script beat. Free key, video search endpoint, 100 requests a minute.
Pixabay Content License · Commercial use OK · Credit when you use its API · Free · Agent can fetch it through an API
Asks for a credit in products that call its API while running.
Do not scrape its website. Use its API, one request at a time, and download only the files you use.
2 other candidates also fit, 11 ruled out.
A quiet bed under the voice. Cleared for monetized YouTube videos, but there is no API: you download tracks by hand in YouTube Studio.
YouTube Audio Library standard license / Creative Commons (per track) · Commercial use with conditions · Credit depends on the item · Free · You download it by hand
Commercial use comes with conditions: read its rules.
Credit depends on the item: record each one.
3 other candidates also fit, 26 ruled out.
MoviePy 2 draws captions from a font file on disk, at one fixed weight. Open licenses that allow embedding in video, and single files with direct links. Keep the license file next to the font.
SIL OFL 1.1 (most), Apache-2.0 (some), Ubuntu Font License 1.0 · Commercial use OK · No credit needed · Free · 151 KB · static file · Agent can fetch it through an API
6 other candidates also fit, 1 ruled out.
.env, python -m pipeline make --script scripts/example.json writes out/example/final.mp4. Without a key it stops with a message that names the missing key, and --footage saved still writes the video from the saved example response.out/example/credits.json lists every clip with its source, page URL, author and license, plus the voice package, the voice model and the font.python -m pipeline make --dry-run works with no network and no keys: placeholder clips, a generated tone track in place of speech, and word timings spread from the script. It writes to out/example-dry/, never over a real video.python -m pytest..env, .env.example lists them, .env is in .gitignore, and no log line or error message contains a key.Runs the pipeline at set times.
In 42 of 1,546 Python agent projects (2.7%) · #1 of 10 in jobs, queues and workflows · v3.11.3, June 28, 2026 · MIT · Installs from a package registry
1 other candidate also fits.
--trim-silence) and whether the voice is loud enough..env.A Python command line tool: give it a script file and it writes final.mp4 (1080x1920, narrated, captioned, cut to stock footage) plus a credits file.
AGENTS.md: the plan, with a check after every stepfirst-prompt.txt, install.txt, .mcp.jsonCREDITS.md, CLAUDE.md, kit.json.env, python -m pipeline make --script scripts/example.json writes out/example/final.mp4. Without a key it stops with a message that names the missing key, and --footage saved still writes the video from the saved example response.out/example/credits.json lists every clip with its source, page URL, author and license, plus the voice package, the voice model and the font.python -m pipeline make --dry-run works with no network and no keys: placeholder clips, a generated tone track in place of speech, and word timings spread from the script. It writes to out/example-dry/, never over a real video.python -m pytest..env, .env.example lists them, .env is in .gitignore, and no log line or error message contains a key.Left to you, because no check can do it: Listen to one finished video before anything is published: a check can measure loudness, not whether the voice reads well. Decide then whether the pauses between sentences are too long (--trim-silence) and whether the voice is loud enough. Create the Pixabay account and put the key into .env.
Defaults for commercial use, free parts and Claude Code. Change them.
One Python version has to satisfy every package below.
Nothing to install
Each video starts as a short JSON script: a hook, three to five beats with search words for footage, and a closing line. Start here: no key, no extra cost. Add a model API when you want the pipeline to run without you.
Nothing to install
4 other candidates ruled out: see why.
Reads the script. Licenses differ sharply here: several free voices forbid commercial use. Apache-2.0 weights, so commercial use is allowed. English, Spanish, French, Hindi, Italian, Japanese, Portuguese and Mandarin; no Russian.
Apache-2.0 · Commercial use OK · No credit needed · Free · Installs from a package registry
Also fits: Chatterbox, Piper, Amazon Polly, Google Cloud Text-to-Speech and 1 more. Ruled out: 13, see why.
Word-by-word captions need a start and end time for every word of the finished narration. Returns word timestamps and does not need a system FFmpeg.
In 18 of 1,546 Python agent projects (1.2%) · #16 of 28 in model sdks · v1.2.1 (pypi registry) · MIT · Installs from a package registry
Also fits: AssemblyAI, Groq Speech-to-Text (Whisper), Whisper.
MoviePy draws caption text with Pillow.
In 230 of 1,546 Python agent projects (14.9%) · #2 of 80 in files, images and media · v12.3.0, July 1, 2026 · MIT-CMU · Installs from a package registry
Installed along with them: Requests 2.34.2, python-dotenv 1.2.4, pytest 9.1.1, SoundFile 0.14.0, PyAV below 19, NumPy below 2.5.
The pictures under the voice. The agent searches by the keywords in each script beat. Free key, video search endpoint, 100 requests a minute.
Pixabay Content License · Commercial use OK · Credit when you use its API · Free · Agent can fetch it through an API
Asks for a credit in products that call its API while running.
Do not scrape its website. Use its API, one request at a time, and download only the files you use.
Also fits: Coverr, NASA Image and Video Library. Ruled out: 11, see why.
A quiet bed under the voice. Cleared for monetized YouTube videos, but there is no API: you download tracks by hand in YouTube Studio.
YouTube Audio Library standard license / Creative Commons (per track) · Commercial use with conditions · Credit depends on the item · Free · You download it by hand
Commercial use comes with conditions: read its rules.
Credit depends on the item: record each one.
Also fits: Free Music Archive, ccMixter, Mixkit. Ruled out: 26, see why.
MoviePy 2 draws captions from a font file on disk, at one fixed weight. Open licenses that allow embedding in video, and single files with direct links. Keep the license file next to the font.
SIL OFL 1.1 (most), Apache-2.0 (some), Ubuntu Font License 1.0 · Commercial use OK · No credit needed · Free · 151 KB · static file · Agent can fetch it through an API
Also fits: Fontsource, Fira Code, Hack, Bunny Fonts and 2 more. Ruled out: 1, see why.
Runs the pipeline at set times.
In 42 of 1,546 Python agent projects (2.7%) · #1 of 10 in jobs, queues and workflows · v3.11.3, June 28, 2026 · MIT · Installs from a package registry
Also fits: schedule.
MoviePy 2 renamed most of its API, and models still write version 1 code from memory.
By Upstash · In 1,266 of 29,413 sampled repos · v4.3.0 on npm · Agent can use it through MCP
If the agent needs another voice, footage source or API, it asks AgentGid for one that fits your license constraints.
By AgentGid · Agent can use it through MCP
| Source | Used for | Terms | License page |
|---|---|---|---|
| Kokoro-82M | Voiceover | Apache-2.0 | Apache-2.0read Oct 10, 2026 |
| MoviePy | Video assembly | MIT | MITread Oct 10, 2026 |
| Pixabay | Stock footage | Commercial use OK; Credit when you use its API; Can ship inside your build, with conditions | Pixabay Content Licenseread Oct 10, 2026 |
| Google FontsPoppins | Caption font | Commercial use OK; No credit needed; Can ship inside your build, with conditions | SIL OFL 1.1 (most), Apache-2.0 (some), Ubuntu Font License 1.0read Oct 10, 2026 |
License terms as the sources state them, read on the dates shown. The kit's CREDITS.md starts with these rows and the brief tells the agent to add one for every file it brings in. This is a record, not legal advice.
The agent works one step at a time and does not start a step until the previous one meets its "Done when" lines. The full instructions, with code, are in AGENTS.md.
python -m pipeline --help lists the commands and python -m pytest runs.narration.wav holds the whole script, and the per-beat durations plus the pauses add up to its length.random module is enough) finds every shot between 90 and 180 frames long.final.mp4 exists and ffprobe reports 1080x1920, 30 fps, one H.264 video stream and one AAC audio stream, as long as the narration.python -m pipeline check out/example prints a pass for every line.What test builds and the official docs showed going wrong with these parts. Each one is in the brief, so the agent reads it before it gets there.
moviepy.editor. Import from moviepy; set_* methods became with_*; resize, crop and subclip became resized, cropped and subclipped; effects are classes passed to with_effects([...]), which takes a list. MoviePy docs, checked by running 2.2.1margin of half the font size protects you if the pin is ever lifted. The 12 px at the sides keep the stroke of the first and last letter whole. measured with Pillow 11.1.0 and 11.3.0, Oct 12, 2026ValueError: Invalid font; leaving font out does not fail, it quietly uses Pillow's default font. MoviePy docs and test buildwrite_videofile puts MP3 audio into an .mp4 unless you pass audio_codec='aac'. checked by running 2.2.1, Oct 12, 2026TypeError: open() got an unexpected keyword argument 'metadata_errors' at the first transcribe. The Stack pins av below 19. PyAV changelog and second test buildCompositeVideoClip(..., use_bgclip=True) takes its length from the captions, not from the background: without with_duration the video stops when the last caption does. checked by running 2.2.1, Oct 12, 2026av.open that PyAV 19 removed, and there is no newer faster-whisper yet. SourceThe recipe was given to a fresh coding agent in a clean sandbox, twice. The agent got only the kit files. It had to build the project and write down everything in the brief that was wrong, missing or unclear.
Only the dry run could be run. The caption renderer cut off the bottom of every caption, and the linked font came out as hairlines.
The voice model and speech recognition ran for real for the first time. A dependency released nine days earlier broke the transcription call, and four-word captions were wider than the frame.
Result of the last build. A 30-second narrated video with word-timed captions, rendered from a real voice model. 81 of 81 words were recognised. Its findings went back into the recipe, which is now at v0.3. That version has not been built again as a whole.
Checked again on Oct 19, 2026. AgentGid checks every recipe each week, without a model: 7 pinned packages all still exist on their registries; the pip lines resolve together; 25 links in the brief: all open (1 refused automated requests, which some sites do). npm lines are checked pin by pin, not installed.
Put them in an empty project folder, open your coding agent there and paste the first prompt (Claude Code first asks you to approve the MCP servers in .mcp.json). These are the files for Claude Code with the default answers; the kit builder writes them for Cursor, Codex, Copilot or another agent, and for other choices. Full guide: how to use a kit.
| File | What it is | Size |
|---|---|---|
AGENTS.md | The brief: what to build, stack and versions, licenses, plan with checks, known traps | 325 lines |
CREDITS.md | The license record of every third-party file | 28 lines |
first-prompt.txt | Your first message to the agent | 8 lines |
install.txt | Install commands with exact versions | 8 lines |
CLAUDE.md | One line that imports AGENTS.md for Claude Code | 1 lines |
.mcp.json | The MCP servers the brief lists, for Claude Code | 15 lines |
kit.json | The kit as data: parts, versions, checks | 326 lines |
Read AGENTS.md from top to bottom before you do anything else. The kit files it lists are already in this folder. Then do step 1 of the plan and stop. Report back with: 1. the commands you ran, 2. what each "Done when" check showed (a screenshot or the output), 3. anything in AGENTS.md that turned out to be wrong, missing or out of date. Do not start step 2 until I reply.
Read AGENTS.md from top to bottom before you do anything else. The kit files it lists are already in this folder. Then work through the plan in order. After each step, run its "Done when" checks yourself and write one line in PROGRESS.md: the step, what you checked, and the result. You may install the packages and download the files that AGENTS.md lists without asking. Stop and ask me only for what its "Before you start" section says needs a person. When a check fails, fix the cause and run it again. If it still fails after two real fixes, stop and tell me what you tried. Keep a list in PROGRESS.md of anything in AGENTS.md that turned out to be wrong, missing or out of date. When every line of the Definition of done is true, stop and show me how to run it.
# system packages (use your OS package manager) ffmpeg python3.12 -m venv .venv && source .venv/bin/activate # with uv: uv venv --python 3.12 .venv && source .venv/bin/activate, then write "uv pip install" below python --version # must print 3.12.x # no NVIDIA GPU: run the next line first (CPU-only PyTorch, about 2 GB less to download). With an NVIDIA GPU, skip it. pip install torch --index-url https://download.pytorch.org/whl/cpu pip install kokoro==0.9.4 faster-whisper==1.2.1 moviepy==2.2.1 "pillow>=10.4,<11.2" requests==2.34.2 python-dotenv==1.2.4 pytest==9.1.1 soundfile==0.14.0 "av<19" "numpy<2.5"
A local model costs nothing per video but needs a few GB of disk. A hosted voice sounds more polished and is paid by the character.
Local model (this page) Hosted voice
File only (this page) Upload to YouTube
Some licenses allow YouTube but not ad revenue. This filters voice, footage and music.
No (this page) Yes
Fonts must cover the script, and voices and speech models must know the language.
English (this page) Russian
Other versions were not test-built as a whole: the kit says which parts differ from the tested one.
Agents connected to the AgentGid MCP server get the same kit without this page: list_recipes(), then plan_project({"recipe": "short-video", "answers": {"agent": "cursor"}, "files": true}). Every brief also tells the agent to ask AgentGid before it adds a part that is not listed.
Recipe short-video v0.3. Data snapshot Oct 12, 2026: versions, licenses and prices change, so check the linked pages before you ship.
A side-scrolling jump-and-run in the style of the classics, with art and sound you are allowed to ship.
A product, object or small set that visitors can rotate and explore, lit and textured with CC0 assets.
A tool that turns a recording into a clean transcript, subtitle files and, if you want, short notes. The speech model runs on your own machine.
Your own PDF toolbox that runs on your machine: files never go to an online converter, and every result is checked against the original.
A Telegram bot that follows the RSS feeds you give it and sends a short digest at the time you choose, to you, a group or a channel.
A small, tested MCP server that lets Claude Code, Cursor, Codex and other agents search and use your own API or data, with typed tools and safe errors.
A Next.js app where people sign up, pay for a plan with Stripe and get email, with the parts every SaaS needs tested before you write your own features.
And what to use when there is no recipe for your project yet.