←Back/Product/Claude Code/FFmpeg
AdvancedProduct

Automate Short-Form Video Editing with Claude Code, FFmpeg, and Whisper

Adapt Brooke Lacey’s Claude Code workflow to edit phone footage with FFmpeg, Whisper, and Python. Use a TSV cut list to review timing, then render a vertical video with captions and graphics.

Automate Short-Form Video Editing with Claude Code, FFmpeg, and Whisper

Okay, my dude, I'm ready to show the audience the magic.

Before you start

What you need

  • A single, continuous raw video file from a phone.
  • A folder of brand assets or app screenshots for overlays.

What you’ll make

A rendered, 15-60 second vertical video with tight jump cuts, one-word-at-a-time captions, and graphics placed in the frame. The process also generates a TSV (Tab-Separated Values) file that defines the entire edit.

Tools used

The workflow

Follow the sequence once, then adapt the prompts, checks, and handoffs to your own setup.

5 steps

Step 01

Record and Transfer Footage

Film a continuous take on your phone. Don't worry about mistakes; you can repeat lines and even say 'cut that out' as a cue. Transfer the single video file to the computer where you will run the workflow.

When filming, intentionally leave empty space in the frame, like a blank wall next to you. This creates a usable area for inserting graphics later.

Step 02

Initiate the Editing Chain

With Claude Code, FFmpeg, Whisper, and Python installed and available, ask Claude Code to analyze a short local clip. The example prompt below is an adaptation, not Brooke’s original script. Her demo used a prepared editing setup.

Example prompt
Using FFmpeg, Whisper, and Python, analyze the video at `[path/to/your/video.mov]`. Your goal is to create a 15-second vertical ad. First, identify all speech, use word-level timing to find precise cut points, and track my face to determine shot composition.

The guest used a simple command to trigger a pre-built script. For a new setup, a detailed, multi-step prompt is necessary to guide the process.

Step 03

Generate and Review the Cut List

The system will produce a TSV (Tab-Separated Values) file where each row defines a cut with a start time, end time, and shot size (e.g., 'wide', 'mid', 'close'). This file is the entire edit plan.

Example prompt
From your analysis, generate a TSV file of the best cuts for the target duration. Each row should contain a start time, end time, a shot size, and a label. Prioritize takes with the best cadence and exclude segments where I said 'cut that out'.

This TSV file is your primary point of control. Before rendering, open this file in a text editor to check the timestamps. Adjusting a number here is much faster than re-editing a video project.

Step 04

Add Graphics and Captions

Instruct Claude to add visual overlays and captions, specifying their appearance and timing.

Example prompt
Now, add overlays. Take a screenshot of my app from the simulator and place it on the empty wall to my right, sized to fit the space in each cut. Also, generate one-word-at-a-time captions in white text with a black outline for the entire clip.

Specificity is key. The system was told to measure the empty space in each cut to size the graphic correctly, a more robust instruction than just 'put it on the right'.

Step 05

Render the Final Video

With the edit plan finalized in the TSV and graphic instructions provided, command Claude to assemble and render the final video file.

Example prompt
Using the TSV cut list and the instructions for graphics and captions, render the final video using FFmpeg. Ensure the final output is a 15-second vertical video at 30 FPS with zero audio/video offset.

After rendering, watch the entire file to check word boundaries, caption placement, graphic placement, and audio/video sync. Brooke described additional formats; test each export rather than assuming it works.

What good looks like

  • The final video has clean audio and is synced correctly.
  • Jump cuts are timed precisely to word boundaries, creating a natural cadence.
  • Captions and graphics appear at the specified moments.
  • The generated TSV file accurately reflects the cuts made in the final video.

Build your next product with ChatPRD

Turn an idea into a PRD, user stories, and a plan.

Try ChatPRD free

Runbook notes

How to recover when the loop fails and where human judgment helps.

If it goes sideways

Jump cuts are awkward, clipping words or leaving unnatural pauses.
Manually edit the start and end timestamps in the generated TSV cut list file and re-run the final rendering step. If the issue persists, refine the prompt that instructs the system on how to use silence detection and word timing.
Inserted graphics obscure the speaker's face or are poorly positioned.
Adjust the prompt to give more specific placement instructions, such as referencing a quadrant of the screen or defining margins from the edge of the frame or the speaker.

Human checkpoints

Let routine work keep moving.

  1. Before rendering the final video, review the generated TSV cut list. This text file is the most efficient place to correct timing and pacing errors by editing the timestamps directly.

Start shipping better products.

Join 250,000+ product managers who use ChatPRD to write better docs, align teams faster, and build products users love.

Free to start · 14-day Pro trial · SOC 2 Type II