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
texttitles and imageoverlays (a logo in the corner, a lower third). - Color —
gradewith exposure, brightness, contrast, saturation, gamma, plus per-bandgrade hsl(warm up the reds without touching the sky). - Sound — this is the good one.
music "bed.mp3" style=podcastputs a music bed under your edit using the same broadcast-style pipeline as5am 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.normalizelands the output at −16 LUFS with a true-peak limiter. Your highlight reel comes out sounding mixed, not assembled. - Structure —
prepend/appendan intro or outro clip,deleteranges 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.
transcribe→edit generate→edit renderare separate commands;highlightis 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-durationand--max-segmentsbound 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
.vedlneeds 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.



