How to Edit Video With Claude
Claude cannot open or render a video file by itself. It has no decoder, no audio path and no renderer, and a Claude conversation does not accept video formats as uploads. What it can do is reason about an edit — read a transcript you paste, decide which sentences belong in the cut, and write you a timestamped cut list or an ffmpeg command. And when it is given tools that hold the footage, it can perform the edit end to end and hand you a finished MP4.
There are three levels, and most of the confusion online comes from answering for one of them while the reader meant another. This page covers all three: Claude with no tools, Claude with a shell, and Claude with a video editing MCP server connected. Setup steps and honest limits for each. If you want the positioning argument rather than the instructions, that is the Claude video editor page.
Give Claude a Real Video Editor
Free Valmera account, 50 credits, no card. One paste and one sign-in to connect it to Claude.
Create a free account →Where the Video File Actually Is
The difference between the three levels is not how clever the model is. It is one structural fact: whether anything in the system can decode your footage, and whether the model can see what came out. Follow the file.
Read the bottom row. At level 1 the model is reasoning about a video it has never encountered. At level 2 the file is genuinely being decoded, but by a program the model is issuing commands to and cannot watch. Only at level 3 does the same system both perform the edit and show the model what the edit produced — which is why it is the only level where a wrong result gets fixed without you noticing it first.
| Claude alone | Claude Code + ffmpeg | Claude + Valmera (MCP) | |
|---|---|---|---|
| Read a transcript you paste | ✓ | ✓ | ✓ |
| Open the video file itself | ✗ | Yes — via a shell it controls | ✓ |
| Hear the audio / measure silences | ✗ | Yes — if ffmpeg and an ASR model are installed | ✓ |
| Get word-level timings | Only what you paste | From a local transcription model | ✓ |
| See frames of the footage | Only stills you paste | Yes — extracted stills it re-reads | ✓ |
| Perform the cut | ✗ | Yes — as ffmpeg commands | ✓ |
| Look at the render it just made | ✗ | Only if it extracts stills again | ✓ |
| Hand you a finished MP4 | ✗ | Yes — on your own machine | ✓ |
| Works in the Claude app (no terminal) | ✓ | ✗ | ✓ |
Level 1 — Claude With No Tools at All
This is the level almost every blog post about "editing video with Claude" is actually describing, and it is more useful than its reputation. Claude is good at the part of editing that is reading: working out what an hour of talk is arguing, which sentences carry it, which are repetition, and what order the surviving pieces should go in. That is editorial judgement, and it is the expensive half of a rough cut.
What it can genuinely do with nothing but the chat window:
- Turn a pasted transcript into a keep list. Ask for the ranges to retain rather than the ones to delete — a keep list is what an editor actually builds, and it is far harder for a model to produce a self-contradicting one.
- Write a shot list or a script before you shoot, including B-roll you will need to cover the joins.
- Find the moment you half-remember. Paste the transcript and describe it. This is a search problem, and it is the thing Claude is unambiguously better at than scrubbing.
- Write the ffmpeg command. Trim, concatenate, normalise loudness, burn in a subtitle file, re-encode for a platform. It knows the flags.
- Restructure a transcript into a stringout order — which answer opens, which is the payoff, what gets dropped.
The prompt shape that works is a keep list with reasons, because the reasons are checkable and a bare list of numbers is not:
YOU Here is a timestamped transcript of a 22-minute talk.
Give me a KEEP list for a 6-minute cut: ranges to
retain, in order, one line of reasoning each. Do not
invent timestamps that are not in the transcript.
Flag anywhere a keep starts or ends mid-sentence.
CLAUDE KEEP 00:14 – 00:48 the claim, stated cleanly
KEEP 02:31 – 03:52 the only concrete example
KEEP 05:10 – 05:26 ⚠ starts mid-sentence ("...and that
is why") — extend back to 05:04
KEEP 11:02 – 13:40 the objection and the answer
KEEP 20:55 – 21:30 the close
DROP 03:52 – 05:10 restates 02:31 in weaker terms
...The limits at level 1, specifically
- It cannot execute any of it. The output is a document. Something else has to make the cuts.
- It is only as precise as the timestamps you pasted. A transcript timed per sentence yields cuts timed per sentence, and cuts that do not land on word boundaries clip syllables. This is the single biggest reason level-1 cut lists sound wrong when someone applies them.
- Timecode arithmetic is a weak point. Sums of durations, frame-to-second conversions and running totals are exactly the kind of thing a language model gets confidently wrong. Check them, or use a timecode calculator.
- It cannot hear the delivery. A transcript does not record the pause before the good line, the take where the laugh lands, or the moment the audio clips. Two identical sentences on the page can be a usable take and an unusable one.
- It cannot see anything. Framing, whether someone walked out of shot, whether the screen share was on — all invisible.
Level 1 produces a plan. Treat it as one, and it is a good one. Ask it for a finished video and you will get a confident description of a video that does not exist.
Level 2 — Giving Claude the File
The obvious next move is to upload the video to the conversation. It does not work, and the reason is more basic than model capability: the upload is refused by file type. Checked on 5 August 2026 against Anthropic's own documentation, this is what a Claude conversation accepts.
| Kind | Accepted | Notes |
|---|---|---|
| Documents | PDF, DOCX, CSV, TXT, HTML, ODT, RTF, EPUB, JSON, XLSX | XLSX requires code execution enabled |
| Images | JPEG, PNG, GIF, WebP | Up to 8000 × 8000 pixels |
| Video | None | MP4, MOV, MKV and WebM are not on the list |
| Audio | None | No WAV, MP3 or M4A |
| Size | 500 MB per file, up to 20 files per chat | PDFs are additionally capped at 1000 pages |
The developer platform is the same answer by a different route. The Files API takes uploads up to 500 MB, but a file is only usable through a content block, and the block types are document (PDF and plain text), image (JPEG, PNG, GIF, WebP) and container_upload (datasets for the code execution sandbox). There is no video block. If a page tells you to drag an MP4 into Claude, it was written from imagination.
What you can put in the conversation instead
Everything useful about a video that is not the video. Export a transcript from any transcription tool and paste it as .txt. Export an SRT and rename it .txt — it is text with timings, which is exactly the form Claude works best in. Screenshot the frames you want an opinion on and upload those as PNG; image analysis is native and good. This is a real workflow, and it is level 1 with better inputs rather than a new level.
Claude Code: the level that does decode the file
Claude Code is different in one decisive way — it runs on your machine with a shell. It can call ffprobe to read the container, run a locally installed transcription model to get timings, write and execute ffmpeg commands, and leave an output file on your disk. That is a genuine edit, performed by Claude, on real footage. People do build pipelines this way and they work.
It can also partly see. Claude Code reads images, so it can extract stills from the source or from its own render and look at them:
ffmpeg -ss 62 -i out.mp4 -frames:v 1 /tmp/check_62.png ffmpeg -ss 310 -i out.mp4 -frames:v 1 /tmp/check_310.png # then read both back as images
That closes the loop by hand, at three moments it happened to choose, on a render it has to produce in full first. It is the right instinct and the wrong ergonomics.
The limits at level 2, specifically
- The model is outside the preview loop. A human editor cuts, plays, adjusts, plays. Claude Code cuts, renders, and waits for you to describe what is wrong. Every iteration that you do not personally review is blind.
- ffmpeg is destructive. It writes and overwrites real files. There is no version history and no restore — an undo is whatever copy you remembered to keep. Handing an autonomous agent the only copy of a shoot is a bad idea at this level in a way it is not at level 3.
- You are assembling the toolchain. ffmpeg, a transcription model, and whatever does scene detection all have to be installed, versioned and working. The agent will confidently write a command for a filter your build does not have.
- Paths and long jobs are where it actually breaks. Assumptions about file locations, and a forty-minute render inside a session, are the two failure modes people report most.
- It needs a terminal. None of this exists in the Claude app on your phone.
None of that makes the ffmpeg route wrong — for deterministic, repeatable conversions it is excellent, and it is free. It makes it the wrong shape for editorial work, where the whole job is looking at the result and reacting. The comparison in full is a page of its own.
Level 3 — Connect a Video Editor Over MCP
The Model Context Protocol is an open standard for handing a model a real toolset. For video it resolves the problem exactly: the server holds the footage and does the pixels, the model decides what to call. Nothing about the file has to fit through the conversation, which is why a three-hour recording is no harder than a three-minute one.
Valmera publishes its complete editing toolset this way — 108 tools, 97 editing and 11 session — over streamable HTTP with OAuth 2.1, dynamic client registration and PKCE. It is the same registry Valmera's own in-house agent uses, served verbatim rather than re-declared as a subset, so there is no second tool list that can drift out of step.
The setup, exactly
In the Claude app: Settings → Connectors → Add custom connector, paste the endpoint, sign in with your Valmera account, press Allow. There is no client id, no secret and no token to copy — Claude discovers the authorization server from the endpoint and registers itself.
https://entrepreneur-bot-backend.onrender.com/mcpIn Claude Code, run the same OAuth flow or attach a bearer token minted from your account:
claude mcp add --transport http valmera \ https://entrepreneur-bot-backend.onrender.com/mcp \ --header "Authorization: Bearer vlm_mcp_..."
Both paths reach the identical registry. Configs for Cursor, VS Code, Cline, Windsurf, Zed, Continue, Goose and the stdio-only clients that need the mcp-remote bridge are on the setup page, each marked with what was verified and when.
Getting the footage in — the part with a real catch
Worth knowing before you try it. upload_start hands back a presigned URL that the client has to push the bytes to itself. Claude Code can do that — it has a shell and curl — so from Claude Code you can point at a local file and it will genuinely upload it. The Claude app cannot: it has no access to your filesystem. From the app there are two routes that do work, and both are one sentence:
- Paste a link.
fetch_urlpulls the media in server-side — a direct file link from Drive, Dropbox or a CDN, or a page link from YouTube, TikTok, Vimeo or SoundCloud. - Upload it in the studio first, then tell Claude to open that project. It calls
list_projectsandopen_projectand picks up the finished index.
A real conversation
What one turn looks like once it is connected. Every tool named is real and documented on the tool reference; arguments are abbreviated and the numbers are one illustrative run, not a benchmark.
YOU Open my "Q3 recap" project. Cut the dead air and the
ums, karaoke captions, chill music under my voice,
make it a Reel.
CLAUDE list_projects() → 4 projects
open_project(id=312) 19m04s · indexed
find_silences(min_len=0.35) 84 pauses, 3m12s total
get_words(0, 1140) word-level timings
cut_silences() 19m04s → 15m52s
remove_filler_words() 61 removed → 15m31s
add_captions(preset="karaoke") timed against the KEPT
transcript, not the raw one
list_music_library(mood="chill") candidate tracks
add_music(duck=true) fitted to 15m31s
set_frame("9:16", mode="crop")
auto_reframe() crop aimed at the speaker
render_preview() → v4
look_at(output_times=[0.4, 62, 310, 900])
← here Claude reads its own frames, and finds this:
set_caption_style(position="middle")
render_preview() → v5
CLAUDE "Cut 3m12s of pauses and 61 filler words — 19m04s down
to 15m31s. Captions were sitting over your chin once
the crop went vertical, so I moved them up. Music
ducks under speech. Preview is v5 — want it looser?"
YOU Looser cuts, and lose the music under the first 20 seconds.
CLAUDE ... (works from the edit it already has, not from scratch)
YOU Good. Export it.
CLAUDE export_final() job queued
wait_for_job(...) rendered from the ORIGINAL
download_url() → https://...mp4Three things in that trace are the point. The order was not in the request: get_words runs before any cut because no Valmera tool accepts a timestamp the model invented; captions come after the cuts, because a caption timed against the raw recording drifts by the length of everything removed before it; music is fitted last because its length is a function of an edit that did not exist when you typed. Claude derived that sequence.
Then look_at. Claude rendered, looked at real frames of what it produced, found a caption over a chin that nothing in the transcript or the timeline could have predicted, fixed it, and rendered again — before it said anything to you. That is the loop level 2 cannot close.
And the reply itself is checked. Every agent reply is verified server-side against the edit decisions actually recorded, so "3m12s of pauses, 19m04s down to 15m31s" is a read of the edit decision list rather than a sentence the model composed. A model reporting on its own work has an obvious failure mode; this is the fence around it.
How to Edit a Video With Claude (MCP Setup)
- 1Create a free Valmera accountSign up at valmera.io with email or Google. It is free, needs no card, and comes with 50 one-time credits — enough for several real agent turns on your own footage.
- 2Add the connector in ClaudeIn the Claude app open Settings → Connectors → Add custom connector and paste https://entrepreneur-bot-backend.onrender.com/mcp. There is nothing else to fill in: no client id, no secret, no token. In Claude Code, run `claude mcp add --transport http valmera https://entrepreneur-bot-backend.onrender.com/mcp` or attach a bearer token minted from your account.
- 3Sign in and press AllowClaude discovers the authorization server from the endpoint, registers itself via dynamic client registration, and opens a Valmera sign-in and consent page. Sign in, review what you are granting, press Allow. Claude now has 108 tools — 97 editing, 11 session.
- 4Get the footage into a projectFrom Claude Code, point at a local file and it uploads the bytes itself. From the Claude app, paste a link (Drive, Dropbox, a CDN, YouTube, TikTok, Vimeo) and it fetches server-side, or upload in the Valmera studio first and tell Claude to open that project. Uploads can be up to 14 GB or 3 hours, in MP4, MOV, MKV or WebM. Indexing runs once — word-level transcript with speaker labels, silences, shot boundaries and labeled frame tiles — and every later edit reuses it.
- 5Describe the outcome, not the stepsOne sentence: "cut the dead air and the ums, add karaoke captions, put chill music under my voice, and make it a Reel". Claude sequences the dependent operations itself — timings from tools rather than guesses, captions after cuts, music fitted to the finished length.
- 6Judge the preview, then exportClaude renders a preview, looks at frames from it, and fixes what it finds before replying. Correct in plain English — "looser cuts", "bigger captions", "different track" — and each correction works from the edit it already has. When it is right, ask it to export: the final render comes from your ORIGINAL file at source quality, and Claude returns a download link.
Connecting takes about two minutes and is done once. Indexing a long upload takes a while and shows progress; every request after it reads the index and is fast.
Five Things That Trip People Up at Level 3
- You cannot edit the same project from the studio and from Claude at once. It is refused in both directions rather than silently interleaved, because two agents writing one EDL corrupts it. Every MCP call writes an activity row, so the studio shows the outside model editing live.
- Renders and exports return a job id, not a result. Claude calls
wait_for_joband waits. This is deliberate: the alternative is a fabricated completion, and a model that reports "done" on a render that has not started is worse than one that waits. - Previews are not the deliverable. They render from a smaller proxy because they have to be fast. The export replays the decision list against your original file, so export quality does not depend on how many turns it took to get there.
- A tool with an unconfigured backing service is hidden, not broken. It disappears from the registry rather than being exposed and failing when Claude calls it, so a live session can list slightly fewer than 108 tools.
- Ask for one deliverable at a time. Ten Shorts from one recording is ten directed requests, not one batch. This is a genuine strength of the automated clippers and a genuine weakness here.
The errors worth recognising during setup — an expired consent, a stale connector, a client that needs the bridge — are collected on the connect Claude guide.
What Still Cannot Be Done, at Any Level
Connecting an editor replaces the model's limits with the editor's. Here are Valmera's, so you can find out now rather than three turns in. Claude will be told the same thing by the tool — out-of-scope requests are refused rather than faked.
- No text-to-video. Valmera edits footage you have. It can splice in short generated clips and stills, but there is no whole-video generation from a prompt. That is a different category.
- No subtitle files. Captions are burned into the picture. No SRT or VTT import or export, and no chapter metadata.
- No multi-cam. The EDL addresses one main video, not a bin of angles, so a three-camera shoot has to be one cut file before it arrives. A traditional NLE — Premiere, DaVinci Resolve, Final Cut — still wins on angle sync, node-based colour, keyframed compositing and motion tracking.
- No true crossfade or dissolve, and no per-cut transition choice. One transition style applies across a video; hard cuts otherwise.
- No audio restoration. No denoise or "studio sound", no per-speaker leveling, no separating music out of an already-baked track, no AI music generation. Loudness mastering, ducking and per-layer gain are there; repair is not.
- No custom font uploads (12 families are bundled), no motion-tracked overlays or stickers, and no native mobile app — mobile browsers work.
- No team surface. No seats, collaboration, share links, brand kits, or direct publishing to YouTube or TikTok. Export is a file you download and post yourself.
- English is the best-tested transcription path. Other languages work; that one is the one with the most road behind it.
Free-plan exports carry a small Valmera mark and every export closes with a brief end card; paid exports carry no watermark at all, and previews are never marked on any plan. The export documentation has the detail.
Which Level You Actually Want
If the job is thinking — what should this video argue, which take is the honest one, what order do the pieces go in — level 1 is enough and costs nothing. Paste the transcript and ask for a keep list.
If the job is a deterministic conversion — re-encode a folder, normalise loudness, burn in a subtitle file you already have — level 2 is excellent and also free. Claude Code writes better ffmpeg than most people do, and for a repeatable transform the fact that it cannot watch the result matters much less, because the result is predictable from the command.
If the job is editorial and the result has to be looked at — cuts that need to feel right, captions that must not sit on a face, a crop that has to follow whoever is speaking — you need the level where the same system performs the edit and sees what it produced. That is what MCP buys, and it is the only one of the three where being wrong gets caught before you are the one who catches it. If your working environment is already a chat window, an editor your assistant can call is a different product from one you have to leave the conversation to open. We keep an honest comparison of every video editing MCP server, including where another one is the better answer, and a library of prompts that work once you are connected.
Frequently Asked Questions
Connect Claude to a Real Editor
50 free credits, no card required. Two minutes to connect, then ask Claude to cut your first video.
Create a free account →