Every cut is a new file. The source stays as it was.
A CLAUDE.md ruleset and an edit map for editing your own talks, demos and screen recordings with Claude Code. Source footage is read-only, an asset with no licence on record stays out of the render, and a render counts as done after it is measured against your delivery spec.
Early 0.1: the rules, the map and the base hooks. The gates that enforce them are planned.
Clone it from GitHubThe problem
Out of the box, Claude Code edits video like a script that has never been burned. It will:
- re-encode or overwrite the only copy of the source file
- drop in a “royalty-free” track nobody checked
- call a render done because ffmpeg exited 0
- put an unchecked number in a subtitle
- start a paid generation call without saying what it costs
The loop
Every piece of work runs the same six steps. The column on the left is what each step reads and what it writes.
1. Ingest. ffprobe reports duration, resolution, fps and audio for each source file, and the numbers go under Source footage. Whisper transcribes speech when the cut depends on what is said.
2. Select. The moments, with timestamps, from the transcript and the brief. You see the list before anything is cut.
3. Cut. An edit decision list, in and out points per clip. Each cut writes a new file to work/. If an output path would equal a source path, Claude stops.
4. Compose. Captions, titles, music and overlays, with ffmpeg filters or Remotion. Only assets with a row in EDIT_MAP.md → Assets: source, licence, attribution, date checked.
5. Render. Encoded to a row in EDIT_MAP.md → Delivery: resolution, fps, codec, loudness, safe zone.
6. QC. Frame samples at the start, the end and each cut. ffprobe against the Delivery row. Integrated loudness and true peak. A licence row for every asset and a source for every number on screen. The source files still match what was recorded at ingest.
Paid generation waits. Before a paid call for generated video, voice or images, Claude shows the tool, the model, what it will generate and the estimated cost, and waits for your yes. Approval for one call is not approval for the next.
It stops at renders/. The kit doesn’t upload, post or schedule. You publish, or Claude Marketing Kit’s approval gate does.
Limits
The gates aren’t built yet. Hooks for source footage, licences, render checks and paid calls are planned for 0.1. Until they land, those rules are CLAUDE.md instructions, not enforced checks. Four hooks run today: session start, a prompt reminder, branch protection and a block on destructive shell commands. Read them.
No skills yet. The long-video-to-shorts and talk-to-reel flows land next.
macOS first, no GPU. It uses ffmpeg, Whisper and, for composed titles, Remotion.
Not for you if you want a timeline editor, effects templates or posts that go out without you.
Start here
From your project folder. MIT licence.
npx @tansuasici/claude-video-kit init
Then start a Claude Code session and fill in EDIT_MAP.md with Claude: project, source footage, style, delivery, assets.
From a clone:
git clone https://github.com/tansuasici/claude-video-kit ~/claude-video-kit
bash ~/claude-video-kit/install.sh "$PWD"
As a Claude Code plugin. Inside Claude Code:
/plugin marketplace add tansuasici/claude-plugins
/plugin install video-kit@tansuasici
Today it brings the hooks; skills land next. The CLAUDE.md rules don’t load and nothing is added to your repo. To get the rules and the map in your repo, use npx or the clone.