---
title: "resolve-edit-kit: letting Claude Code edit video in DaVinci Resolve"
slug: "resolve-edit-kit-letting-claude-code-edit-video-in-davinci-resolve"
language: "en"
date: "2026-10-29T16:28:49.137Z"
updated: "2026-10-29T16:28:49.000Z"
description: "DaVinci Resolve Studio 21.1 added File > Setup AI Assistants. It connects an agent like Claude Code to Resolve's scripting API, so the agent can build timelines…"
canonical: "https://slopoff-claude-code.slopit.io/resolve-edit-kit-letting-claude-code-edit-video-in-davinci-resolve/"
---

DaVinci Resolve Studio 21.1 added **File > Setup AI Assistants**. It connects an agent like Claude Code to Resolve's scripting API, so the agent can build timelines. That doesn't mean it can edit well. [resolve-edit-kit](https://github.com/Simbastack-hq/resolve-edit-kit) covers the rest: a runbook (`SKILL.md`) and a set of scripts that take raw talking-head and screen-recording footage to a finished cut with graphics, music, captions and a 4K export.

It came out of editing a series of real YouTube videos at [SimbaStack](https://simbastack.com/). The latest one shows the whole process on screen: [I think I've solved procrastination](https://youtu.be/3mlRiF-LeMc). What to expect: the result is a normal, decent video, not a great one. For someone who doesn't want to learn an editor, it does most of the work. They still record, choose takes and give notes.

## The pipeline

```
footage -> words_from_whisper -> paper edit (edl_builder) -> tighten -> check_joins -> build_timeline (Resolve)
        -> A/B review -> notes -> duplicate + patch -> graphics (motion/) -> music bed -> render -> limit + QA -> captions
```

The agent is the editor and the person is the talent. In practice:

- **Transcribe with Whisper, not Resolve.** Resolve's transcripts are fine to read, but its word timings ran 0.2–0.4 s late. Cuts placed from them clip words.
- **Paper edit first.** The agent picks word ranges per section in a JSON file, and `edl_builder.py` turns that into a frame-accurate EDL. It prefers later takes, because people warm up.
- **Measure the pace.** `tighten.py` shortens real pauses and levels each section to roughly 195–230 words per minute. One warm-up section ran at 136 wpm against 225 everywhere else, and the creator called it "really slow" without knowing why.
- **Check every join by ear.** `check_joins.py` plays the cut the way Resolve will and transcribes it. Transcribing the whole cut as it plays caught five problems that the per-join pass missed.
- **Give A/B choices, not essays.** When there are two good takes, the agent builds a review timeline (A, one second of black, B) and asks for a one-line answer like `1A 2B 3A`.
- **Never rebuild a timeline the person has watched.** Duplicate it, patch the copy, and check that every other track is unchanged. A rebuild once silently wiped a creator's own trims.

## The Resolve traps

Each of these cost about an hour to find. They're now encoded in `resolve_kit.py`:

- A new project defaults to **24 fps playback**, even on a 29.97 timeline. A correct cut then sounds "crunchy", and the API can't change the setting, so ask the person to set it.
- Call `AppendToTimeline` without `trackIndex` and the audio half lands on the next free track.
- `SetRenderSettings` fails as a whole if one key is refused, and Resolve then reuses the last settings without telling you.
- Stills cap at 150 frames and ignore `endFrame`. Render photos to video clips (`kenburns.py`) instead.
- A re-rendered file with the same name can keep showing cached frames. Render to a new name.
- Python's `round(172.5)` is 172 and JavaScript's `Math.round(172.5)` is 173. Compute placement frames in one language.

## Motion graphics an agent can build

The `motion/` folder holds graphics written as HTML/SVG pages with a `render(t)` function. Headless Chromium renders them to ProRes with alpha, timed to the spoken words. They include overlays, picture-in-picture scenes, and a black-and-white "aside" for the moments when the speaker talks to the agent instead of the audience. The creator came up with that last one, and it worked. One graphic every 15–20 seconds went over well. Wall-to-wall graphics didn't.

## Try it

You need Resolve **Studio** 21.1+, ffmpeg, Python 3, Whisper, and Node 18+ for the graphics. With Claude Code:

```
ln -s "$PWD" ~/.claude/skills/resolve-edit-kit
```

Then, from a folder with your footage:

> The footage for my next video is in ./footage. Edit it with the resolve-edit-kit skill: tighten it, find the hook, give me A/B options where there are two good takes, and add motion graphics where I'm explaining something, but don't overdo it.

Parts of the kit are macOS-only (the Apple Vision cut-outs), and it has been tested with English speech and 29.97 fps footage. Issues and pull requests are welcome, especially Resolve API quirks we haven't hit yet: [github.com/Simbastack-hq/resolve-edit-kit](https://github.com/Simbastack-hq/resolve-edit-kit).
