4,898
stars
+42
401
forks
7
watchers
348
prs
84
issues
160
releases
1
discussions
README
Give your coding agent a video editor.
Claude Code, Cursor, Codex or any MCP client edits your footage with local FFmpeg, then checks its own output.
No cloud · No API keys · Python standard library
Website ·
Quick start ·
Demos ·
Tools ·
MCP ·
npm
bash
npx ffmpeg-skill
caption.py --animate pop --karaoke
fit.py --aspect 9:16 --fit crop
silence.py --threshold -35
loudness.py -I -14 --tp -1
Left half is the input, right half is what the command produced. Every before/after demo, with the exact command under each one → — all of it generated from synthetic footage by python3 demos/build.py, so you can rebuild every frame of it yourself.
ffmpeg-skill is an Agent Skill for Claude Code, Cursor, Codex and any agent that reads SKILL.md. It teaches the agent a fixed workflow (probe → edit losslessly where possible → check → verify) and ships 42 tools that do the actual work with ffmpeg / ffprobe: cut, join, silence removal, fit to duration and aspect, captions and karaoke, overlays and motion graphics, HDR → SDR and LUTs, audio clean-up and typed dynamics, sync with drift correction, multicam, loudness, delivery checks, whole-edit project rendering, batch folders. Every tool is also callable as an MCP tool (tools/list advertises a core 12 by default to keep client context small, with FFMPEG_SKILL_MCP_FULL=1 listing all 42; every tool is reachable by name through tools/call either way), and the whole set is described by a machine-readable contract.
If ffmpeg and python3 are on your PATH, it works: offline, on footage you would rather not upload.
SPEC (Self-Producing Execution Contract): each tool's input_schema — the part of its
contract and MCP tool definition that has to track the CLI flag-for-flag — is never
hand-authored beside the code. It is derived, at run time, from the same argparse parser that
already defines the CLI, and CI fails the build if any of it drifts.
→ full explanation
---
Standalone, and in an ecosystem
Standalone, this is a local FFmpeg engine: probe → edit → verify, npx ffmpeg-skill and nothing else. No API key, no account, no other repo required. Everything above and below this section describes that standalone tool, and none of it changes if you never read the rest of this one.
In kajisho5's wider video-production ecosystem, this repo is the hands: it cuts, measures and exports files, and reports back in structured JSON. It does not decide what to cut, whether a deliverable is approvable, what makes a highlight interesting, or what a caption should say (the user's cue text is burned as written, never rewritten to fit) — those are a brain's job, sitting in front of this engine, not inside it.
| You want to... | Use |
|---|---|
| Cut / join / measure / export a file right now | this repo (ffmpeg-skill), standalone |
| Decide cut points, approve a deliverable, plan a whole edit | video-production-agent / AI-video-production-OS |
| Build a typed editTop issues
#143Real-hands verification: Windows, Cursor and Codex installs on machines that are not the maintainer's, plus three editor reviews3 comments · 2026-09-11#425[from Velisa] Typed keyframes on overlay1 comments · 2026-11-05#424[from Velisa] Growing files and LTC1 comments · 2026-11-05#420[from Velisa] Multitrack audio1 comments · 2026-11-05#357render.py: encode a template render in one pass (roughly 2x faster, one generation)1 comments · 2026-10-24#429batch/render follow-ups deferred from the #428 review0 comments · 2026-11-06#406Create a codex plugin for it!0 comments · 2026-11-05#404Audit C: files in the wrong format are misread or refused with a misleading message0 comments · 2026-11-05
Discussions
Latest release
v3.2.3 v3.2.3 2026-11-07_Automated release: version and notes generated from pull requests merged since 3.2.2._ Added - An alpha-preserving path for grading and compositing. color.py --correct/--lut --keep-alpha grades an alpha clip and keeps its alpha (split off before the grade, merged back unchanged, compared with the source's frame by frame); graphics.py --keep-alpha and overlay.py --keep-alpha draw on the input's alpha and write the element with it; background.py --transparent writes a fully transparent canvas to draw one element on. The line is ProRes 4444 by default (--alpha-codec qtrle|png|vp9), --alpha-mo
News & coverage (4)
xpanera on X: "5. ffmpeg-skill, by kajisho5: 42 local FFmpeg tools and an MCP server for agents. MIT, v2.24.0 (Oct 31). Needs FFmpeg, no API key. Prompt (not run): trim the ...2026-10-31noteI checked my local version of ffmpeg-skill after noticing it had grown to 42 tools2026-10-31noteCan I use it on my Intel Mac? Things I checked before installing AI video tools2026-10-27ivooxGitHub Trending Today #48: reverify, keslr connect, anti-slop, boardui, ffmpeg-skill, chippytea2026-06-08