Assistant editor for Premiere Pro and DaVinci Resolve: logs, transcribes, rough cuts, subtitles, QC
Runs on your machine from its package; the steps are below.

Not assessed yet.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Distributed as an MCP bundle (`https://github.com/koptsev63/premiere-claude-bridge/releases/download/v0.3.0/premiere-claude-bridge-0.3.0.mcpb`) — download it and import the bundle in your MCP client.
premiere-claude-bridge is a free, open-source MCP server that lets Claude Code or Codex do the assistant editor's work inside your own project. You ask in plain language. It logs the footage, transcribes the speech, lays out a rough cut on your timeline and checks the result before you ship it.

Open Claude Code (the Code tab of the Claude desktop app works) and send it this:
Install premiere-claude-bridge from github.com/koptsev63/premiere-claude-bridge following its README, and take me to the green "Connected" label in Premiere.
Claude clones the repo, sets everything up and tells you when to restart Premiere. Then:
On DaVinci Resolve Studio there is no panel. Set Preferences → System → General → External scripting using to Local, restart Resolve, and ask Claude to set the project up for Resolve.
You need Premiere Pro 2024 or newer, or DaVinci Resolve Studio, and a Claude or Codex subscription. Tested on macOS. Windows has install steps but nobody has confirmed them yet. Prefer to do it by hand? See Manual install.
Sort the footage
Build the cut
Sound and subtitles
Check before delivery
Follow your hands. Move the cuts, retype a caption, save the project. It reads your saved .prproj and works from your version from then on.
It has no taste. Decisions stay with you; it takes the logging, sorting and checking.
"Все установилось по твоей инструкции без проблем, единственный затык, который случился - это настройка первого коннекта."
"Я пока попробовал использовать помощника только для базовой организации файлов на таймлайне, типа расставить в хронологическом порядке дубли, срезать пустые фазы и т.д. С этим он справился отлично, все вполне интуитивно."
Andrey, film editor, October 2026
In English: "Everything installed by your instruction with no problems. The only snag was setting up the first connection." And: "So far I have used the assistant only for basic organisation of files on the timeline, like putting takes in chronological order and cutting the empty phases. It handled that very well, it is all quite intuitive."
The snag he hit is now step 2 above.
You: "Open Premiere. Import all .MTS from ~/Desktop/Footage/.
Create a 1080p25 sequence called 'Rough'. Place clips
00118 (1-6s), 00149 (4-9s), 00130 (1-5s) on V1 in order.
Add markers at every emotional beat per Murch's hierarchy."
Claude: ✓ Imported 108 clips into bin '01_Source_MTS'
✓ Created Rough — 1920x1080, 25fps, 3 V / 6 A tracks
✓ Placed 3 clips on V1, total 14 sec
✓ Marked 5 emotional beats: HOOK @0s, COMEDY @5s,
PIT @8s, BREATH @11s, PAYOFF @13s
→ Real output from this exact prompt. See examples/grave-stakes-teaser/cutlist_v3.json for the full 12-clip cutlist that built the case-study teaser.
There are about fifteen Premiere MCP servers on GitHub now, and several for Resolve. The big ones are good at something this project is not, so here is the honest split (checked October 2026).
Where the others are ahead
pr_eval_jsx.What this project does that their READMEs do not mention
| Your edits come back | Reads the saved .prproj and conforms every later render to what you changed by hand |
| Gates that refuse | Colour, loudness and delivery checks raise an error instead of shipping a bad file |
| Work before the timeline | Auto-log of raw footage, offline transcript, dead-air removal, two rough-cut variants, subtitles |
| An editing method | Walter Murch's Rule of Six as decision rules in skills/film-editing/SKILL.md |
| One brain, two editors | The same cut list goes to Premiere or Resolve |
| Small surface | Ten tools and one escape hatch, so the model does not need a tool search to find its way |
If you need an agent that can reach every button in Premiere, pick one of the big servers. If you want an assistant editor for documentary material that checks its own output and follows your manual changes, this one is for you.
I'm a film director (festival shorts, currently developing two features in screenplay labs — Doukhobors in TFL Next, Grave Stakes in Cinéfondation). I monkey with Adobe Premiere all the time, and I burn 4-6 hours per teaser on the same boring assistant-editor work: watching all the dailies, writing notes in Excel, dragging selects to a timeline, trimming, re-timing.
I tried Adobe's own AI tools. Their official Creative Cloud connector advertises "Premiere capabilities" but the actual surface is four cloud video tools that have nothing to do with the desktop app. The Adobe docs themselves say: for trim by timestamp, use Adobe Premiere. So I made the thing that actually does that.
The non-obvious bit: I didn't want a chatbot that randomly clicks buttons. I wanted one that thinks like an editor. So the core of this repo is skills/film-editing/SKILL.md — Walter Murch's In the Blink of an Eye compressed into machine-actionable decision rules. Every cut my AI assistant proposes ranks Emotion > Story > Rhythm > Eye-trace > 2D > 3D, and I can override per shot.
It worked on my actual Grave Stakes teaser. I wanted other directors and editors to have the same thing without re-implementing the bridge from scratch.
The bridge gives Claude full programmatic control of Premiere. With the watch skill bundled, the previous "stop-frames only" limitation is largely closed. What remains:
Position it as: senior assistant editor + automation, not director's editor.
You pick one agent and one NLE — the bridge connects them:
pip install opencv-python-headless)You drive it by talking in plain language — no commands to memorize. The terminal is only for the one-time install.
git clone https://github.com/koptsev63/premiere-claude-bridge.git
cd premiere-claude-bridge
cd mcp-server && npm install && cd ..
Add to your ~/.claude.json (Claude Code) or your client's MCP config:
{
"mcpServers": {
"premiere": {
"command": "node",
"args": ["/absolute/path/to/premiere-claude-bridge/mcp-server/server.js"]
}
}
}
macOS:
defaults write com.adobe.CSXS.11 PlayerDebugMode 1
defaults write com.adobe.CSXS.12 PlayerDebugMode 1
ln -sf "$(pwd)/cep-extension" \
~/Library/Application\ Support/Adobe/CEP/extensions/com.koptsev.claude-bridge
Windows (PowerShell admin):
New-ItemProperty -Path "HKCU:\Software\Adobe\CSXS.11" -Name PlayerDebugMode -Value 1 -PropertyType String -Force
New-ItemProperty -Path "HKCU:\Software\Adobe\CSXS.12" -Name PlayerDebugMode -Value 1 -PropertyType String -Force
mklink /D "$env:APPDATA\Adobe\CEP\extensions\com.koptsev.claude-bridge" "$(Get-Location)\cep-extension"
Restart Premiere → Window → Extensions → Claude Bridge → green "Connected to Claude".
pr_status to check the bridge." A reply with your Premiere version and project name means everything is wired up.pip install -U pillow opencv-python-headless openai-whisper
brew install yt-dlp ffmpeg # macOS
# Linux: sudo apt install ffmpeg && pip install yt-dlp
openai-whisper is the offline transcription backend for /watch — no API key needed, works on Hungarian/Russian/etc. far better than the cloud whisper-1.
→ Detailed install + troubleshooting: docs/install.md
| Tool | What it does |
|---|---|
pr_status | Bridge health check + Premiere version + active project info |
pr_get_project_info | List all bins + project items (with nodeId for reference) |
pr_get_active_sequence | Sequence dimensions, fps, track count |
pr_list_timeline | Full track-by-track clip dump (in/out, start/end, duration) |
pr_get_selected | Currently selected clips on timeline |
pr_get_playhead / pr_set_playhead | CTI control |
pr_add_marker | Place marker at given time with name + comment |
pr_export_ame | Queue export to Adobe Media Encoder with .epr preset |
pr_eval_jsx | Escape hatch — run any ExtendScript code |
→ Full tool reference + ExtendScript recipes: docs/tools.md
The MCP server owns one WebSocket port (9876) and the panel connects to
whichever server instance got there first. With two or three Claude Code
windows open there are two or three servers, and every one but the winner
answers panel not connected while Premiere is perfectly fine.
mcp-server/pk.js does not use that port. It attaches to
the panel's own Chromium debug endpoint (port 8088, declared in
cep-extension/.debug and already enabled by the PlayerDebugMode install
step) and calls evalScript the same way the panel does. Any number of
sessions can use it at once.
node mcp-server/pk.js info # version, project, active sequence
node mcp-server/pk.js eval 'app.project.name' # one ExtendScript expression
node mcp-server/pk.js file build_sequence.jsx # a whole script
echo 'app.version' | node mcp-server/pk.js eval -
Node 22+ needs no packages for it; older Node uses the ws that npm install
already put in mcp-server/. Premiere must be running with the Claude Bridge
panel open. The result is the string evalScript returns, so have your script
return JSON.stringify(...). Tell your agent: "if pr_status says the panel
is not connected, use node mcp-server/pk.js".
The Resolve side has the same kind of hatch, plus eyes on the timeline:
python -m core.adapters.resolve_run exec script.py runs your Python with
resolve, project, timeline and mp preloaded, and still / grab
return composited timeline frames as PNG.
A render is not a delivery. The editor has to be able to open the work, disagree with it, and move a cut — so the loop closes back on the machine:
cutlist → sequences in the editor's own project → he edits and saves →
core.prproj reads his version → renders + grade conform to it →
core.colorgate passes it or sends it back
| Module | What it is for |
|---|---|
core/prproj.py | Reads a saved .prproj: sequences, caption cues, picture cuts. Razor halves are stitched back together against the cut list; untouched lines resolve from the sidecar by order, never by overlap (transcript time and cut time are different clocks) |
core/colorgate.py | Two-sided colour gate. Upper: clipping, oversaturation, skin Cr and saturation against the base. Lower: mean CIE ΔE, so a look nobody can see fails too. assert_ok() raises instead of shipping |
core/qc.py | Geometry and residual-shake gate on the rendered file, plus delivery integrity: decodes clean, promised size and rate, has sound |
core/loudness.py | Levels the shots against each other, then one static gain and a true-peak limiter to the delivery target. Gate: integrated LUFS, true peak, spread between shots |
core/screen_comp.py | Screen replacement: a clip composited into a phone, monitor or TV in the plate, riding an ECC camera track, with colour-exact Rec.709 I/O. Gate: the plate outside the screen must come back unchanged |
core/adapters/resolve_run.py | Resolve from a shell: timeline dump, composited frames as PNG (still, grab), and exec for your own script |
core/ | The rest of the pipeline: cutlist IR, adapters, subtitles, ducking, denoise, highlights, beats |
# does this grade burn the picture — or is it invisible?
python -m core.colorgate base.mov graded.mp4 --frames 8 --upto 60
# what did the human actually approve in there?
python -m core.prproj "reel.prproj" --srt subs.srt
# even out the takes, hit -14 LUFS / -1 dBTP, and prove it (exit 1 = do not ship)
python -m core.loudness master.mov deliver.mp4 --shots 0,5.6,11.2
# put a clip inside the TV in the shot
python -m core.screen_comp plate.mp4 content.mp4 out.mp4 --config screen.json
film-editing/Walter Murch's editing operating system as Claude decision rules:
Plus tooling:
tools/analyze_clips.py — folder → HTML contact sheet (motion + audio + horizon + strips)tools/horizon_detect.py — sky-ground segmentation + Hough fallback for tilt detectionwatch/ (vendored from bradautomates/claude-video, MIT)Lets Claude actually watch a clip. Extracts 30-100 frames + transcript via three Whisper backends:
local (openai-whisper, no key, offline, free) — recommendedwhisper-large-v3 (cloud, fastest, ~$0.0002/min)whisper-1 (cloud, slowest, ~$0.006/min)See skills/watch/ATTRIBUTION.md for credit and skills/film-editing/SKILL.md §XIV for integrated workflow.

See docs/architecture.md. Notable design choices:
mcp-server/pk.js reaches the panel through its debug port instead (direct path).JSON.stringify.wss.clients[0] if the cached panelSocket goes stale after a CEP panel reload.These were all real bugs found during the Grave Stakes case study. See CHANGELOG.md.
/watch skill bundled, local Whisper, horizon detection v2trailer-bridge skill pack — 7 genre-specific recipes (action, drama, comedy, horror, doc, thriller, romance) + LUT presets + auto-renderingcore/: cutlist IR + lossless OTIO round-trip, capability matrix, all three adapters, NLE-neutral review loop, 672 tests green. Resolve adapter verified end-to-end on Resolve Studio 21. Remaining: conform/proxy relink, capability-probe.→ Want to claim one? Open an issue with claim label.
The three editors integrate in fundamentally different ways, so v1.0 is an adapter design, not a copy of the Premiere bridge (epic #6):
skills/film-editing/ (Murch's Rule of Six) and the /watch perception layer reason about footage and cuts, not about Premiere. They don't change.cutlist_*.json in the Grave Stakes example, formalized). OTIO is the industry interchange standard — Resolve reads/writes it natively, FCPXML has OTIO adapters, Premiere goes through this bridge.Net: a decision made once renders into any editor. Raw "AI controls Resolve" is already crowded (several MCP servers exist); the differentiator here is the editing operating system on top, not the driver underneath.
PRs, issues, and skill packs are welcome — see CONTRIBUTING.md for the short guide.
Easiest ways to help:
SKILL.md for a genre you know (music videos, podcasts, sports, weddings)film-editing SKILL.md to your languageLook for good first issue and help wanted labels.
MIT — see LICENSE. The vendored skills/watch/ is also MIT, copyright Bradley Bonanno — see skills/watch/ATTRIBUTION.md.
🟡 Beta v0.3. Tested end-to-end on real festival-bound documentary footage (Grave Stakes, 108 raw .MTS clips, 4.4 GB), then on a second production job start to finish — a vertical announcement reel cut in Premiere, conformed and graded through DaVinci Resolve, with the delivery loop above running on the director's own project file (August 2026). Three outside editors have it so far; the first one installed it on his own in October 2026.
Stuck on install or found a bug? Open an issue or a discussion here. News goes to the Telegram channel @koptsev_AI (in Russian).
Author: Vladimir Koptsev — film director, Barcelona. TG @koptsev_AI · koptsev63@gmail.com