Skip to content

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 GitHub

The 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.

in source/talk.movout EDIT_MAP.md

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.

in transcriptout a list for you

2. Select. The moments, with timestamps, from the transcript and the brief. You see the list before anything is cut.

in source/talk.movout work/

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.

in work/out work/

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.

in work/out renders/

5. Render. Encoded to a row in EDIT_MAP.md → Delivery: resolution, fps, codec, loudness, safe zone.

in renders/out EDIT_MAP.md

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.

in tool, model, costout your yes

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.

in renders/out you

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

in this repoout your project

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"

in claude-pluginsout Claude Code

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.