Skip to content

What is ffmpeg-skill? Video editing with a coding agent: setup, 42 tools and example requests

You write a plain request like "Take these two parts of the interview and make an exactly 60-second vertical Reel"; with ffmpeg-skill, Claude Code, Cursor or Codex first measures the file, then cuts, crops and adjusts captions and audio with the right tools out of 42 ready-made ones, and finally checks the output against the platform rules and reports duration, resolution and a visual contact sheet. There is no cloud and no API key, and it never overwrites the source file; FFmpeg and Python must be installed on your computer. The tools can also be connected as an MCP server. Free (MIT); a new project: first release September 3, 2026, largely a single developer.

What it does
Lets a coding agent edit video with the FFmpeg on your computer
Free
Yes, MIT; no account or API key
Where
Claude Code, Cursor, Codex; Claude Desktop via MCP
Requires
FFmpeg 5.0+ (6.1+ recommended), Python 3.9+
Tools
42 tools; 12 by default over MCP
Data
Files stay on your computer, nothing is uploaded
Version
2.17.3 (October 28, 2026)

What does ffmpeg-skill do? Which problem does it solve?

FFmpeg is a program that can do anything with video and audio, but its commands are hard to memorize. A coding agent "knows" FFmpeg but often guesses: it assumes the frame rate, picks a codec the container can't carry, re-encodes a file that only needed cutting, and says "done" without opening the result. That is the problem the README describes. ffmpeg-skill gives the agent 42 ready-made tools that measure, have clear limits and check their own results: the agent first measures the file, then runs the right tool, and finally measures and checks the output.

Who it helps: content teams and agencies producing Reels, TikTok, Shorts or podcasts; anyone who wants to split an interview, training or meeting recording into short clips; people who already use Claude Code, Cursor or Codex and want their video work done in the same place. It is not a video editing program (timeline, drag and drop): you write a request and the agent runs the tools.

The skill does not decide what to cut, which scene is interesting or what the captions say; those are decisions for the agent or for you. The README draws this line explicitly: the skill is the "hands", the "brain" that decides is elsewhere.

How does ffmpeg-skill work? Measure, plan, run, check

Measureprobe.py reads duration, frame rate, resolution, color and audio streams from the actual file.
PlanEvery tool shows the FFmpeg command it would run with --dry-run and writes nothing.
RunCuts without re-encoding (lossless) when possible; never touches the source file.
Checkcheck.py returns PASS/WARN/FAIL against the platform rules; look.py produces a contact sheet.
The agent itself reviews the contact sheet visually; the skill does not recognize faces or objects.
  • Protects your source: no tool overwrites its input; the output is a new file. An existing output file is only replaced with --overwrite.
  • No free-form shell commands: every operation is a Python script with typed options; it does not accept FFmpeg filter strings or raw arguments from outside.
  • Tells you what your machine can do: npx ffmpeg-skill doctor lists which components (libx264, libass, loudnorm…) your installed FFmpeg has and which tools can't be used.
  • Fixed report format: when the job is done it says Done:, otherwise Failed:; anything left incomplete goes in the note.

Which tools does ffmpeg-skill include? The 42 tools by group

GroupToolsWhat they do (README)
Analysis and inspection3probe (duration, frame rate, resolution, HDR, audio streams), scenes (scene changes, audio peaks, highlight suggestions, music beats), look (contact sheet, single frame, side-by-side comparison)
Editing24cut, join (joining with transitions), silence (silence removal), fit (fitting to a duration and aspect ratio), crop, cropdetect, stabilize, denoise, deinterlace, straighten, redact (blurring), broll, speedramp, freeze, loop, reverse, pad, insert (clip from an image), background, sequence, waveform (audio waveform video), metadata (chapter markers), grid, sphere (360 video)
Audio3audio (audio cleanup, compressor, ducking under music), sync (aligning two recordings by audio), loudness (EBU R128, −14 LUFS default)
Visuals4caption (SRT/ASS captions, platform safe area), overlay (logo, watermark, picture-in-picture, green screen), graphics (lower third, title card, progress bar), color (HDR → SDR, LUT, color correction)
Delivery4export (YouTube, Reels, TikTok, Shorts, LinkedIn, X, ProRes, GIF presets), check (PASS/WARN/FAIL against platform rules), proxy (small preview copy), report (single-file HTML delivery report)
Workflow management4render (the whole edit from one project.json), batch (the same recipe for every file in a folder), multicam (syncing several cameras by audio and cutting between them), verify

Every tool shares common options: --dry-run (show the plan), --json (structured result with the output's measurements), --fast (preview quality), --progress, --timeout (stops a stuck FFmpeg, default 1,800 s) and --overwrite. Audio files (WAV, FLAC, MP3, M4A, OGG, Opus) are handled with the same commands; visual tools reject an audio file with "no video stream" instead of inventing an image.

MP4Video input and output (MOV, MKV too)WAVAudio (FLAC, MP3, M4A, Opus too)PNGContact sheet and framesJSONStructured result and project.jsonHTMLDelivery report

How to install ffmpeg-skill: Claude Code, Cursor, Codex and MCP

First, FFmpeg must be installed on your computer (the skill does not bring FFmpeg with it); then you install the skill into your agent. Setup is done once; the copy does not update itself.

Operating systemFFmpeg install command (README)
macOSbrew install ffmpeg-full (the skill finds ffmpeg-full in the same Homebrew on its own; if there is no ffmpeg on your PATH at all, or you want every program to use it, put it at the front of PATH). The plain ffmpeg package lacks the subtitles, drawtext and zscale filters
Ubuntu / Debiansudo apt install ffmpeg
Windowswinget install Gyan.FFmpeg
Install the skill (pinned version) → ~/.claude/skills/ffmpeg-skill› npx ffmpeg-skill@2.17.3
Check whether FFmpeg has the required components› npx ffmpeg-skill@2.17.3 doctor

The README writes the command without a version (npx ffmpeg-skill); adding @2.17.3 is npm's way of pinning a version. To install only into the current project use --project (→ ./.claude/skills/ffmpeg-skill); for another folder, --dir <folder>.

  • FFmpeg: 5.0 or later; 6.1+ recommended (5.x has been considered outdated since 2.14.0, and version 3.0 will require 6.1).
  • Python: 3.9 or later, standard library only (installs no extra packages); 3.10+ recommended.
  • Node: 16+ only for the npx install.
  • What runs during setup: the npx package carries no extra dependencies and no install script (postinstall); the installer copies the SKILL.md, scripts/, templates/, references/, docs/ and mcp/ folders into the target folder.

How to use ffmpeg-skill: what you write and what you get

After setup you talk to your agent as usual; the skill kicks in on its own when you mention a video or audio file. The examples below come from the README; the outputs are described as far as the README describes them.

Example 1: A 60-second Reel from an interview"Take 0:45–3:10 and 5:00–6:30 from interview.mp4 and make it exactly 60 seconds for Reels."The example from the README; the agent replies in the user's language.

What you get: according to the README, the agent measures (probe.py), cuts the two ranges (cut.py --segments 0:45-3:10,5:00-6:30), fits the result to 60 seconds and 9:16 by cropping (fit.py --duration 60 --aspect 9:16 --fit crop), exports with the Reels preset (export.py --preset reels), checks it against the Reels rules (check.py --platform reels) and produces a contact sheet (look.py). The report ends with a line like "final.mp4: 59.98 s, 1080×1920, 30 fps, AAC stereo", along with the image it reviewed.

Example 2: TikTok delivery in one command (cues.txt = caption text)› python3 ~/.claude/skills/ffmpeg-skill/scripts/render.py talk.mp4 --template tiktok --cues cues.txt

What you get: the TikTok template crops the file to 9:16, places the captions word by word above TikTok's description bar and clear of the like column, brings the audio to −14 LUFS, exports with the TikTok preset and checks the file it wrote with check.py --platform tiktok. --template all produces every platform from the same edit and lists what was produced in a _pack.md table; --dry-run shows the plan without writing anything. Templates: tiktok, reels, shorts, youtube, x, linkedin, facebook, podcast.

Example 3: Getting a podcast episode ready to publish"Cut the long silences in episode12.wav, bring the audio to podcast level and save it as m4a. Then check it against the podcast rules."

What you get: based on the audio tools in the README, the agent removes the silences (silence.py), brings the audio to the podcast target (loudness.py … -I -16 --tp -1.5 -o … .m4a) and reports LUFS, true peak, chapter markers and channel count with check.py --platform podcast. Because an audio file has no visual step, the report says "Look: not needed".

Before a long job, say "show me the plan first, don't run it": every tool lists only the commands it would run with --dry-run. For edits with three or more steps, the README recommends a single project.json with render.py (re-encoding at every step costs quality).

Which programs does ffmpeg-skill work in? Requests in Turkish

Claude CodeYesDefault install target (~/.claude/skills); plugin marketplace as well.
CursorYesInstalled with --cursor; the MCP server connects too.
CodexYesInstalled under ~/.agents/skills with --codex.
Claude Desktop and other MCP clientsYesWith the MCP settings in the README; the tools are reached over MCP.
WindowsPartlyTests run on Windows too with every change, but the real-device video set has not been run on Windows yet (the maker's note, issue #143).
Requests and reports in TurkishYesThe maker's 1.13.0 evaluation includes Turkish requests, and the agent reported back in the user's language (the maker's own measurement). Tool names and options are in English.
Captions or filler-word removal from Turkish speechUnclearDone with an optional local speech recognition engine; Turkish accuracy is not documented. If you supply the caption text yourself, it is burned in exactly as written.

What does ffmpeg-skill do to my files? Does it connect to the internet?

Reads

The video, audio and image files the agent gives it; FFmpeg's component list (doctor).

Writes

New files next to the input (or wherever you specify with -o). It does not overwrite the input; an existing output is not replaced without --overwrite.

Internet

No cloud service and no API key. The only exception: the optional local speech recognition engines (Parakeet, whisper) download their model file on first run; audio is not uploaded.

The skill does not bring FFmpeg with it; a vulnerability in your installed FFmpeg stays in your version until you update it. doctor warns about known high-severity vulnerabilities; keep FFmpeg up to date.

Is ffmpeg-skill free?

Yes. It is MIT-licensed and free; it requires no account, subscription or API key. It can be used for commercial work too (MIT asks you to keep the license notice). The developer accepts optional support through GitHub Sponsors. The only money goes to the agent you use (a Claude Code, Cursor or Codex subscription): because the skill does the processing on your computer, it adds no extra cost.

This license summary is not legal advice. Usage rights for the videos, music and fonts you process apply separately.

Common problems and fixes

What happensWhat to do (README)
The caption tool doesn't work on macOSHomebrew's plain ffmpeg package has no subtitles filter: install brew install ffmpeg-full (the skill finds it on its own; if there is no ffmpeg on your PATH at all, put it at the front of PATH); doctor --json reports "usable" per tool.
"python3: command not found" on WindowsThe python.org installer names it python or py; in commands you run by hand, write python instead of python3 (the installer and doctor handle this themselves).
No silence foundThe default threshold is −35 dBFS; raise it with silence.py --threshold -25 or shorten the --min-silence value.
Timeout on a one-hour recordingThe default 1,800 s is meant to catch a hang; use --timeout 0 (unlimited), a larger value, or --fast for a preview.
The subject left the frame when cropping from 16:9 to 9:16Cropping is centered by default and 70% of the width is lost; shift toward the subject with --crop-x/--crop-y, or use a blurred fill with --fit pad --pad-fill blur.
The new version didn't arriveA copy installed with npx does not update itself; rerun the install command with the new version. If you installed it as a plugin, use claude plugin update.

What it can't do (README FAQ): no face or object tracking; a moving logo or burned-in captions that change position are not removed (only a fixed, known rectangle is blurred); GPU encoding only with VideoToolbox on Apple Silicon.

How to uninstall ffmpeg-skill

Remove from the selected targets (e.g. add --codex for Codex)› npx ffmpeg-skill@2.17.3 --uninstall

If you installed it as a plugin, remove it from the Installed tab of the /plugin panel in Claude Code. FFmpeg and Python are separate programs and are not removed along with the skill.

Frequently asked questions

What is ffmpeg-skill?

A free skill that lets a coding agent such as Claude Code, Cursor or Codex edit video and audio with the FFmpeg on your computer. With 42 ready-made tools it cuts, joins, crops, adds captions and adjusts audio, then checks the output and reports back.

How do I install ffmpeg-skill in Claude Code?

Install FFmpeg first, then run npx ffmpeg-skill in the terminal; the skill is copied to the ~/.claude/skills/ffmpeg-skill folder. npx ffmpeg-skill doctor shows whether your installed FFmpeg has the required components.

Does it work in Codex and Cursor?

Yes. Install it with --cursor for Cursor, --codex for Codex, or --all for all three at once.

Is ffmpeg-skill free?

Yes, it is MIT-licensed and free; it requires no account, cloud service or API key. Only the agent you use has its own cost.

Are my videos uploaded anywhere?

No. Processing is done with the FFmpeg on your computer. The optional local speech recognition engines download a model file on first use, but audio is not uploaded.

Do I need to install FFmpeg separately?

Yes. The skill does not bring FFmpeg with it; you need FFmpeg 5.0 or later (6.1 or later recommended) and Python 3.9 or later. On macOS, captions require the ffmpeg-full package.

Can it be used as an MCP server?

Yes. mcp/server.py in the skill folder connects to Claude Desktop or Cursor once added to the MCP settings file; by default 12 core tools are listed.

Related guides

Sources

Not clear in the official sources: Accuracy of automatic captions from Turkish speech and Turkish filler-word removal (not documented; you can supply the caption text yourself) · testing with real-device videos on Windows (the maker has not run it yet) · long-term maintenance (a new project, largely by a single developer). Each is covered in the relevant section.