Sort the shoot.
Keep the good takes.
Point it at a folder of raw clips. It splits A-roll from B-roll, groups everything by topic, and pulls the flubbed takes, lens-cap clips and near-duplicates into _rejects, judged by the Claude, Codex or Grok CLI you're already signed in to.
curl -fsSL https://raw.githubusercontent.com/neelsatyavolu/videomcp/main/install.sh | bash
Unzip, then double-click Install video-mcp.command. If macOS can't verify the developer, go to System Settings → Privacy & Security and click Open Anyway.
- intro_take2.mp400:00:05:02Desk Lamp Setup/a-roll
- intro_take1.mp400:00:06:04_rejects · restarted line
- coffee_talk.mp400:00:05:25Coffee/a-roll
- grinder_closeup.mp400:00:06:00Coffee/b-roll
- grinder_closeup_2.mp400:00:06:00_rejects · near-duplicate
- lamp_unbox.mp400:00:12:10Desk Lamp Setup/b-roll
- IMG_0412.MOV00:00:04:00_rejects · mostly black
- IMG_0413.MOV00:00:00:15_rejects · too short
How it works
- 01
Look
Every clip is checked on your Mac: speech-to-text, keyframes, on-screen text, and ffmpeg measurements for focus, exposure, shake, clipped audio, silence and black frames.
- 02
Judge
Your signed-in agent CLI sees the transcript, the measurements and a few keyframes, and says keep or reject. Then it names the topics and picks the best of repeated takes.
- 03
File
Clips move into
Topic/a-roll,Topic/b-rollor_rejects, with afootage-report.mdexplaining each call. Files are never overwritten or deleted.
Use it
# see the plan, move nothing
video-mcp sort ~/Footage/shoot --dry-run
# sort (asks before moving)
video-mcp sort ~/Footage/shoot
# put everything from the last run back
video-mcp sort --undo ~/Footage/shoot
- A-roll is a clip with speech over at least 40% of its length. Folders already named
a-rollorb-rollwin. - Rejects: out of focus, bad exposure, shaky, clipped audio, restarts and stumbles, dead air, lens-cap clips, redundant B-roll.
- Agents:
--agent claude|codex|grok; defaults to the first one installed. Runs read-only, with no API keys. - Re-runs only sort clips added since. Analysis is cached in
.footage-sort/.