Product7 min readJuly 25, 2026

The Highlight Reel That Edits Itself — Meet the 5am Video Edit DSL

One command turns an hour of talking video into a tight highlight reel: Gemini reads the transcript, writes a tiny edit script you can actually read, and a deterministic FFmpeg engine cuts the video. Tweak three lines, re-render, done.

5

5AM Team

The Highlight Reel That Edits Itself — Meet the 5am Video Edit DSL

The Highlight Reel That Edits Itself

You recorded the webinar. The interview. The conference talk. Sixty minutes of footage, of which maybe three deserve to be a teaser — and you know exactly where those three minutes are, because you sat through the other fifty-seven finding them, scrubbing a timeline with one hand and taking timestamps with the other.

Today that's one command:

5am media highlight talk.mp4 --brief "a 60-second teaser" --target-duration 60 --output teaser.mp4

The CLI transcribes the video, has Gemini pick the moments worth keeping, and renders the cut locally with FFmpeg — transitions, titles, color, loudness and all.

The interesting part isn't the AI. It's what's in the middle.

Most "AI video editing" is a black box: footage in, mystery out, and if you don't like the result you re-roll the dice. We built this differently. Between the AI and the render sits a small, human-readable edit script — a .vedl file — and it's the actual product of the AI step:

source "talk.mp4"
cut 01:12 01:48.5   # the origin story — sets up everything that follows
cut 04:03 04:41     # the key insight, stated in one clean take
cut 12:10 12:22     # the call to action
transition xfade 0.5
text "The Origin Story" atsrc 01:12 for 3 pos=bottom size=56
grade exposure=0.3 saturation=1.15
normalize target=-16
fade in 0.5
fade out 1

That's the whole language. Cuts with the editor's reasoning preserved as comments. A crossfade. A title anchored to the source moment it belongs to (the engine remaps it into the final timeline, even across removed footage). A gentle grade, broadcast loudness, fades.

Which means the loop you actually want finally exists: run the AI once, then read the edit. Disagree with a cut? Change two numbers. Want the title three seconds later? Move it. Then:

5am media edit render teaser.vedl --output teaser2.mp4

No second AI call. No re-roll. The script is the edit, and the render is deterministic — same script, same output, every time.

The AI never touches a timestamp

Language models are good editors and terrible clocks — ask one for "the best moment at 14:32" and you'll get a confident answer about footage that ends at twelve minutes. So we made hallucinated timestamps structurally impossible.

The pipeline transcribes your video first (5am media transcribe — timestamped, speaker-labeled segments, also exportable as .srt/.vtt). When Gemini plans the edit, it's only allowed to answer in transcript segment numbers — "keep segments 14 through 19" — under a strict response schema. The CLI turns those indexes back into times using the transcript it produced itself. Every cut lands on a real sentence boundary from your actual footage, by construction.

And because models are still models, a repair layer straightens out whatever else comes back weird — overlapping ranges get merged, over-long edits get trimmed toward your target, malformed ops get fixed or dropped — deterministically, with every repair reported.

It brings the whole toolbox with it

The DSL isn't just cuts. It picks up the pieces the CLI already does well:

  • Layers — timed text titles and image overlays (a logo in the corner, a lower third).
  • Colorgrade with exposure, brightness, contrast, saturation, gamma, plus per-band grade hsl (warm up the reds without touching the sky).
  • Sound — this is the good one. music "bed.mp3" style=podcast puts a music bed under your edit using the same broadcast-style pipeline as 5am media mix: both tracks are measured, the bed is staged under the voice, ducked under every word, with the EQ pocket carved in the speech band. normalize lands the output at −16 LUFS with a true-peak limiter. Your highlight reel comes out sounding mixed, not assembled.
  • Structureprepend/append an intro or outro clip, delete ranges instead of keeping them, fades at the edges.

Want clips instead of a reel? That's Clip Maker

This pipeline has grown a sibling since we shipped it: Clip Maker, a web app that runs the same transcript-driven engine but produces N standalone short clips — Shorts/Reels-shaped, subtitles burned in, an AI title on each — instead of one composed reel. Same local-first design (the browser drives your machine through the CLI, so the source never uploads), same editable .vedl behind every clip, plus in-browser transcript editing. The full story is in its own post; the terminal twin is 5am media clips.

Finish it in the browser, if you want

A terminal render is the fast path, but sometimes you want to nudge a cut by a few frames on a real timeline. One more command:

5am media edit export teaser.vedl --new-album "Edit sources" --project-name "Launch teaser"

The referenced media is uploaded to your library and the edit opens as a project in the 5AM Video Studio — same cuts, same crossfades, same titles, ready for hand-polish in the browser. (The web editor doesn't speak ducking or per-band color yet; those stay CLI-render features, carried along on the project so nothing is lost.)

Practical details

  • Local render. Cutting, grading, mixing, and encoding all happen on your machine via FFmpeg — your footage never uploads for the AI step. Only the extracted audio goes to Gemini, once, for the transcript.
  • Composable. transcribeedit generateedit render are separate commands; highlight is just the one-shot wrapper, and it always leaves the transcript, the .vedl, and the raw model response next to the output — your edit is never trapped inside a one-shot. Transcriptions are cached locally, so re-running on the same file skips straight to the editing.
  • Bring a brief. --brief "focus on the pricing discussion" steers the edit; --target-duration and --max-segments bound it.
  • JSON out, like every 5am command — the chosen segments, the model's reasoning, every repair, every warning. Pipe it to jq, wire it into a pipeline.
  • Transcription and edit generation use your Gemini API key; rendering a hand-written .vedl needs no account at all. Unauthenticated renders carry a small "Powered by 5AM" watermark — 5am login (free) removes it.

Get it

If you have the CLI, you already have it — 5am update and go. Otherwise:

curl -fsSL https://cli.5am.app/cli/latest/install.sh | sh
5am media highlight your-talk.mp4 --output reel.mp4

Full reference — every op, every flag — in the CLI docs. Point it at the longest, most rambling recording you have and read the .vedl it writes back. It's a strange feeling, the first time an AI shows its work.

Get the CLI →

Tags

#cli#video-editing#ai#highlights#dsl#ffmpeg#transcription#workflow

Related posts

Creativity never sleeps.

Turn the 5 a.m. idea into shipped work. Store it, make it, sell it — in one place.

Start creating free

5 GB free · No card required