The person brings an episode (video or audio; a podcast, an interview, a talk or a live session), the show's branding, who the guests are, and how many clips for which platforms. You deliver that many promo clips of 30–60 s: the best moments with a hook up front, the speaker framed for the platform, captions, the guest's name, the show's bug and a card that sends viewers to the episode. Local and nearly free; the paid part is speaker-labelled transcription when several voices must be told apart. Record the picks, the bites' source times and the brand answers where you keep the job's notes.
Steps
- Transcribe and find the speakers (
guide-select-highlights-from-long-footage): route B, diarized (elevenlabs-speech-to-text, mapped to names withpython-read-word-timingsturns), when the clip is an exchange; route A (whisper-cli-transcribe-with-word-times) for one voice. Watch the video too (python-contact-sheet): who is on camera when, the reactions worth showing. - Pick the moments: per clip a hook a cold viewer gets, then whole sentences on one
idea, ending on a payoff (
guide-select-highlights-from-long-footage, Process). Gate: the person approves the moments as text. - Cut the bites: every edge in a natural pause (
python-find-speech-pauses,snap), each checked by its own transcript (ffmpeg-cut-audio-window), and each levelled with one fixed gain (ffmpeg-normalize-loudness, Tips and traps). - Frame the speaker (
ffmpeg-crop-to-vertical): a 9:16 window on whoever speaks, switching on the diarized turns, never mid-word; a webcam bubble or a small inset is cropped inside its true edge, measured on a full-size frame. Audio only: an audiogram, the guests' photo or the show art with the bite's own waveform scrolling past a playhead (hn4a-compositor-audio-waveform). - Brand (
guide-capture-a-brand): the show's fonts, colours and logo. - Graphics, one spec per clip (
guide-add-titles-and-motion-graphics):- karaoke captions, the keyword on the accent pill (
guide-caption-a-video, 9:16); - the show's bug top left and the episode or event tag top right ("LIVE · CITY · DATE" in a thin outlined box);
- the guest's name strap the first time they speak (
hn4a-compositor-chyron); - stickers on the key phrases: the phrase in heavy caps on an accent slab, tilted a
few degrees, slamming in on its word (
hn4a-compositor-in-scene-titles); - a designed title card between moments: the big question on the brand colour, a
small line under it (
hn4a-compositor-motion-graphics); - an end card with the episode's name and where to listen.
Gate: the live spec (
hn4a-compositor, Live spec, then render) on the first clip; a yes on the look before building the rest.
- karaoke captions, the keyword on the accent pill (
- Sound: an optional bed under the cards (
elevenlabs-generate-music, or the show's own theme), ducked about 12 dB under the voices; pre-mix bites and bed into one track and limit it (ffmpeg-normalize-loudness, Tips and traps); loudness to −14 LUFS for social. - Render, check, deliver per the core skill: frame count, a 2 fps contact sheet, the first seconds listened to.
Choices this workflow makes
- The moment is the clip: no generated picture, nothing that changes what anyone said.
- Diarized when it's an exchange, so framing and name straps follow the voice.
- Fixed gain per bite, a limiter on the mix: per-clip loudness pumps short bites.
- The bug and the tag on every clip, so a clip seen alone says whose show it is.
Dead ends
- loudnorm on 2 s bites: pumped at each clip's start and end, heard as distortion.
- The compositor mixing bites and bed as separate tracks: the sum peaked at +2.5 dBFS. Pre-mix and limit.
- A bubble cropped from an estimate showed the top of the source's own webcam circle; it was 13 px off. Measure the circle on a full-size frame and crop inside it.
- A bite that sounded clipped: it started mid-breath. Bites start in silence and end in their pause.
- A bubble showing a loading spinner: the source's webcam reloaded after a click; the bubble pops in only once the face is back.
Worked example
A 30 s 16:9 promo for a podcast-planning app, built from its host's 6-minute screen-recorded demo (1920×1058 at 28.28 fps, a 170 px webcam circle bottom left). Nine scenes cut on 2 s bars of a 120 BPM bed; four bites of 1.7–2.9 s of the host, each with its bubble cut so the mouth lines up.
| Round | Note (paraphrased) | Fix |
|---|---|---|
| 1 | the logo sits right of centre | one lockup, measured centred (488 / 486 px margins) |
| 1 | the host's audio sounds clipped at the start and end | one fixed gain per bite, edges in pauses, the bed ducked 12 dB, pre-mixed and limited |
| 2 | the webcam circle's edge shows in the bubble; one line is a weird thing to focus on; the feed beat should say more | bubbles re-cropped inside the measured circle; the line replaced by one showing the product at work, played in step with the click it describes |
Spend: a few transcription credits; everything else local.


