Video Editing
How to Edit Video With Claude Code: 3 Setups, Step by Step
Three setups for editing video with Claude Code, from install to export. Every ffmpeg command below is one we ran, with what it printed.
Key takeaways
- Install Claude Code with Anthropic's one-line installer, then install ffmpeg. Claude Code needs a paid Claude plan; the free plan does not include it.
- Setup A (a folder of clips plus ffmpeg) is the fastest start. Ask for one ffmpeg command per step and an ffprobe check after each one.
- Setup B (Remotion) suits designed video; Setup C (an editor over MCP) suits real footage you will keep editing by hand.
- Write a CLAUDE.md of house rules. Each rejected edit becomes a rule; one creator reports about forty.
- Make the agent prove the edit with frames, ebur128 and ffprobe. In our test run, the frames showed a problem the numbers missed.
1How do you edit video with Claude Code?
Install Claude Code and ffmpeg, put your clips in a folder, and describe the edit in plain language; Claude Code writes and runs the commands. That is Setup A, and it covers most cutting, reframing and loudness work. Our overview of whether Claude can edit videos explains the three routes and their costs; this guide is the hands-on version.
Our rule of thumb: start with A. Use B when the job is a designed animation, and C when the result must stay editable by a person.
2What do you need before editing video with Claude Code?
A paid Claude plan, Claude Code, and ffmpeg. Whisper is optional, for transcripts. Anthropic's setup docs say Claude Code requires a Pro, Max, Team, Enterprise or Console account and that the free plan does not include it. They list macOS 13.0+, Windows 10 1809+, Ubuntu 20.04+ and 4 GB+ of RAM as requirements (checked October 2026). The install commands from the same page:
# macOS, Linux, WSL curl -fsSL https://claude.ai/install.sh | bash # Windows PowerShell irm https://claude.ai/install.ps1 | iex # or with a package manager brew install --cask claude-code winget install Anthropic.ClaudeCode claude --version
A working install prints a version number. Run claude once to log in through your browser. On native Windows, the docs recommend Git for Windows; without it, Claude Code runs commands through PowerShell.
ffmpeg is next. The ffmpeg download page says the project ships source code and links to ready-built packages; the latest stable release is 9.0.2 (checked October 2026). The simplest installs are Homebrew on a Mac and the Gyan.FFmpeg WinGet package on Windows:
# macOS brew install ffmpeg # Windows winget install Gyan.FFmpeg ffmpeg -version
Builds differ. The Homebrew build we tested has no libass, so it lacks the subtitles filter that burns in captions. Asked to burn in an SRT file, ffmpeg 9.0.2 there prints “No option name near 'x.srt'” and “Error parsing filterchain”; that error is the build, not the command.
3How do you edit a folder of clips with Claude Code and ffmpeg?
Open Claude Code in the folder, give it one precise prompt, and have it run one ffmpeg command per step with a check after each. To test this, we generated two 6-second, 1920x1080 test clips with ffmpeg's testsrc2 source, each with a tone, two seconds of silence in the middle, and the tone again. Then we wrote the prompt we would give Claude Code and ran every command it should produce, on ffmpeg 9.0.2. The prompt:
In ./clips there are take1.mp4 and take2.mp4. Make one vertical 1080x1920 video from them: - remove every silence longer than 0.5 s, keeping 0.15 s either side - join the takes in order - normalize to -14 LUFS integrated, -1 dBTP, with two-pass loudnorm Use one ffmpeg command per step. Write intermediate files to ./work and never overwrite anything in ./clips. After each step, run ffprobe and tell me the duration and streams. At the end, measure loudness with ebur128 and save four frames to ./frames so I can check the crop.
“One ffmpeg command per step” keeps Claude away from giant filter graphs, where it is weakest, and the ffprobe checks make it report facts rather than success. The -14 LUFS target is our example, not a platform rule; check yours with our loudness checker.
Step 1: inspect and find the silences
ffprobe -v error -show_entries format=duration:stream=codec_type,codec_name,width,height,r_frame_rate,sample_rate -of compact clips/take1.mp4 ffmpeg -hide_banner -i clips/take1.mp4 -af silencedetect=noise=-35dB:d=0.5 -f null - # silence_start: 1.999875 # silence_end: 4.000146 | silence_duration: 2.000271
The silence sits from 2.0 s to 4.0 s, as generated. With 0.15 s of padding, the keep ranges for each take are 0 to 2.15 s and 3.85 to 6 s.
Step 2: cut and join
ffmpeg -i clips/take1.mp4 -ss 0 -to 2.15 -c:v libx264 -crf 18 -c:a aac work/take1_a.mp4 ffmpeg -i clips/take1.mp4 -ss 3.85 -to 6 -c:v libx264 -crf 18 -c:a aac work/take1_b.mp4 # same two commands for take2 # work/list.txt file 'take1_a.mp4' file 'take1_b.mp4' file 'take2_a.mp4' file 'take2_b.mp4' ffmpeg -f concat -safe 0 -i work/list.txt -c copy work/joined.mp4
The cuts re-encode on purpose; section 8 shows what a stream copy did instead. The joined file came out at 8.67 s of video, because 2.15 s at 30 fps rounds to whole frames.
Step 3: reframe to vertical and normalize loudness
ffmpeg -i work/joined.mp4 -vf "scale=-2:1920,crop=1080:1920" -c:v libx264 -crf 18 -c:a copy work/vertical.mp4 # pass 1: measure ffmpeg -i work/vertical.mp4 -af loudnorm=I=-14:TP=-1:LRA=11:print_format=json -f null - # "input_i" : "-30.10", "input_tp" : "-24.42", "input_lra" : "0.50", # "input_thresh" : "-40.10", "target_offset" : "-0.07" # pass 2: apply the measured values ffmpeg -i work/vertical.mp4 -af "loudnorm=I=-14:TP=-1:LRA=11:measured_I=-30.10:measured_TP=-24.42:measured_LRA=0.50:measured_thresh=-40.10:offset=-0.07:linear=true" -ar 48000 -c:v copy -c:a aac -b:a 192k final.mp4
Scale to 1920 tall, crop the middle 1080 pixels: no stretching. Two-pass loudnorm measures first, then applies a linear gain.
Step 4: prove it
ffprobe -v error -show_entries stream=codec_type,width,height:format=duration -of compact final.mp4 ffmpeg -nostats -i final.mp4 -af ebur128=peak=true -f null - ffmpeg -ss 2.5 -i final.mp4 -frames:v 1 -vf scale=360:-2 frames/check_2.5.png
Our results: the final file is 1080x1920, H.264 and AAC at 48 kHz, 8.7 s long (down from 12 s of source). ebur128 measured -14.0 LUFS integrated (up from -30.1) and a true peak of -8.4 dBFS, and a second silencedetect pass found no silences left. Those numbers are from our run; your footage will differ.
To check Claude's commands without a model in the loop, our free ffmpeg command generator builds the same recipes with each flag explained.
4How do you set up Remotion with Claude Code?
Create a Remotion project, add Remotion's agent skills, start the preview, and run Claude Code in the project folder. Remotion makes videos from React code, and its coding agents guide names Claude Code and Codex and lists Node.js as the other prerequisite (checked October 2026). The commands from that guide, which we did not run for this post:
npx create-video --yes --blank --no-tailwind my-video cd my-video npx remotion skills add npm run dev # in a second terminal cd my-video claude
The preview runs in your browser, so you watch each change as Claude Code makes it, then render to MP4. Use it for anything designed rather than shot: animated titles, charts, explainers, styled captions.
Check the licence before client work: Remotion's pricing page says it is free for individuals and companies of up to 3 people, and a Company License is required for companies of 4 or more (checked October 2026). The other catch: every later change is a code change.
5How do you connect Claude Code to a video editor over MCP?
Add the editor's MCP server to Claude Code with one claude mcp add command, then ask Claude to edit the open project. MCP is the protocol that lets an app offer tools to an agent. Anthropic's MCP docs give the general form for a local server; the -- separates Claude Code's own options from the command that starts the server, and --scope user makes it available in every project:
# the general shape, from Anthropic's MCP docs claude mcp add [options] <name> -- <command> [args...] # check what is connected claude mcp list
The editor decides what Claude can do: each tool it exposes is one kind of edit. Our overview covers the main options, including DaVinci Resolve Studio 21.1.
Example: Linkeddit Studio
Disclosure: we make Linkeddit Studio, a desktop video editor for Mac and Windows, so it is the example we know best. If Claude Code is installed, it already runs in Studio's Agent panel with Studio's tools attached, so there is nothing to configure. To use Claude Code from your own terminal instead, Studio's Connect agent screen shows a single command to run once, with the paths for your install filled in. Its shape:
claude mcp add linkeddit-studio --scope user --env ELECTRON_RUN_AS_NODE=1 --env "STUDIO_DATA_DIR=<your data folder>" -- "<the app>" "<the MCP shim>"
The same screen has setup for Codex, Claude Desktop, Cursor and other MCP apps. Keep the app open while the agent works. A prompt such as “tighten the pauses in the interview, add captions, and show me the first 30 seconds” runs through the editor's tools: it reads the project, cuts by words in the transcript, renders up to 8 frames to look at, and measures loudness in LUFS. A batch of edits is one undo step, and named checkpoints let you return to an earlier version.
6How do you give Claude Code house rules for video edits?
Put them in a CLAUDE.md file in the project folder, and add a rule every time you reject an edit. Anthropic's memory docs describe CLAUDE.md as instructions Claude reads at the start of every session, suggest adding to it when Claude makes the same mistake a second time, and recommend keeping each file under 200 lines (checked October 2026).
The best example we found is a creator on r/ClaudeAI who open-sourced the Claude Code skill they use for their own short videos. Their first dozen versions, they write, were technically correct but looked machine-made. Their fix, in our paraphrase of the post: each rejected cut gave them one written rule naming the failure it prevents, and the skill has grown to roughly forty of those house rules.
Their examples are specific and testable: “Never continuously scale a screenshot.” And one about audio that no level check catches: a sound effect “can play, not clip, and still be inaudible, because its loud moment falls outside the window you played.”
Our starter file for Setup A, to grow from:
# Video rules (CLAUDE.md in the project folder) - Never overwrite files in ./clips. Write to ./work, final files to ./out. - One ffmpeg operation per command. Name the filter you mean. - Cut with re-encoding, not -c copy, unless I ask for a lossless cut. - Keep 0.15 s of padding around every silence cut. Never cut laughter. - After any visual change, save frames and tell me which to look at.
7How do you make sure Claude Code's edit actually looks and sounds right?
Make it produce evidence: still frames for the picture, loudness numbers for the sound, and ffprobe output for duration and streams. Claude Code reads files and command output; it does not watch the video. If a check does not exist, the agent does not know.
In our own run, the numbers were all fine: right size, right duration, -14.0 LUFS. The saved frames told a different story. The center crop kept only about the middle third of the scaled 16:9 frame (1,080 of 3,414 pixels). On an interview with the speaker left of center, that crops them out, and no ffprobe field would say so. That is why the prompt asked for frames, and why you should open them.
Our advice for any setup: you should be able to see each edit, and so should the agent.
8What goes wrong when you edit video with Claude Code?
Invented flags, cuts that are not where you asked, and edits that pass every number but look wrong. The ones we hit in our test run, plus the one everyone reports:
- Invented flags in filter graphs. Practitioners report that models handle simple transcodes but invent flags in long
-filter_complexchains, as our overview covers. Our fix is the prompt rule from Setup A: one operation per command, with the filter named (silencedetect,loudnorm,crop), so a bad flag fails on its own line instead of hiding in a graph. - Stream-copy cuts that are not cuts. We repeated Step 2 with
-c copy. Our clips have one keyframe, at 0 s, so the 2.15 s piece cut from 3.85 s still carried all 180 video packets of the clip (the re-encoded piece had 64). The joined result ran 8.75 s of video and 8.79 s of audio instead of 8.67 s. Re-encode unless you know where the keyframes are. - Crops that lose the subject. Covered in section 7: a center crop is a guess about where the speaker is.
- Silence cuts that eat speech. A threshold that is too high treats quiet words, breaths and laughter as silence. Test the threshold on your own audio first with the silence detector, and keep padding around every cut.
- Windows quoting. Without Git for Windows, Claude Code runs commands in PowerShell, and filter strings full of commas, colons and quotes break first. Ask for paths without spaces.
Our test before trusting any setup: one short real clip, one concrete edit, and a check you can see. If it passes that, give it the interview.
Edit with your own Claude Code, on a real timeline
Frequently asked questions
Can Claude Code edit video?+
Yes, through tools on your computer. Claude Code can run ffmpeg on a folder of clips, write a Remotion project that renders to MP4, or drive a video editor that exposes its timeline over MCP. It cannot watch video directly, so each setup needs a way to show it frames and loudness numbers.
Which Claude plan do I need for Claude Code?+
Anthropic's setup docs say Claude Code requires a Pro, Max, Team, Enterprise or Console account, and that the free Claude plan does not include it. Check claude.com/pricing for current prices in your region.
Does Claude Code work on Windows for video editing?+
Yes. Anthropic's setup docs list Windows 10 1809 and later. Claude Code can run commands through PowerShell, or through Git Bash when Git for Windows is installed. The two quote ffmpeg filter strings differently, so tell Claude which shell you use.
How do I stop Claude Code from overwriting my footage?+
Say so in the prompt and in a CLAUDE.md file in the project folder: originals in one folder that is never written to, intermediate files in another. Anthropic describes CLAUDE.md as instructions Claude reads at the start of every session.
Can Claude Code make vertical videos from landscape footage?+
Yes, with a scale and crop step. A center crop keeps only the middle of the frame, so look at the saved frames before you publish; if the speaker sits off center, ask for a crop offset.