All demos
Screen recordings // 51 min of footage in, one clip out, minutes later

Media Suite

Cutting clips out of a three-hour stream meant watching it again first. So I built a desktop app that does the watching: you describe what you want in a sentence, it reads the whole transcript, and what comes back is a ranked list you can turn into a captioned vertical clip, an Instagram carousel or a YouTube compilation. Three recordings of it working — one per tab.

A sentence in, a captioned clip out

A 51-minute press conference it has never seen, and one sentence describing what I am after. It reads the whole transcript, hands the moments back ranked and filed under the areas I named, and turns the top one into a 9:16 clip with word-by-word captions.

// this run: sentence in at 0:09, ranked list at 1:24, clip in the editor at 1:57 — an earlier run of the same request took 5:00

  1. 0:00 The footage goes in. The focus areas are mine to name — here story, humour and surprise — and I type what I want: “coming back to Earth: reentry, splashdown, what it felt like”.
  2. 0:11 The AI reads the whole transcript, unattended. The recording runs it at 12×.
  3. 0:17 17 moments come back ranked, each with a score and why it was picked. The top one fits the description 10 out of 10.
  4. 0:25 One click turns it into a vertical clip; the speech is transcribed again, word by word, for the captions.
  5. 0:30 The editor: the crop over the panel shot, captions under the speaker, tabs for fixing text and cutting pauses.
  6. 1:19 What comes out.

And the long version, from the same list

Tick the moments worth keeping, say how long the video should be, and it assembles one: headlines burned in at the top of each scene, the same headlines as chapters in the description, a thumbnail picked from frames where the face is sharp and lit, and titles and tags written to match.

// the render runs at 10× in the cut; about 90 seconds in real time for three and a half minutes of video

  1. 0:00 Seven moments ticked, a target length set.
  2. 0:12 It cuts and renders, burning the headlines in as it goes.
  3. 0:21 What comes back: a title to pick or edit, a description with the chapters and links, tags, and a thumbnail.
  4. 0:43 The finished video, playing.

One recording, four things

// where OpusClip stops at the clip

Cutting the clip is the part everyone does. The reason I kept building was everything after it, which is otherwise a second evening in a different program:

  • Vertical clips. The first tab: 9:16, word-by-word captions, a crop that follows a face through a camera cut, pauses and filler words cut out by clicking the transcript.
  • Instagram carousels. A block of prose becomes tiles — a hook, a mechanism with arrows, a numbered list, a chart drawn from the numbers in the text — in the brandbook, ready to upload.
  • Covers and thumbnails. It goes through the footage for frames where the face is sharp, lit and facing the camera, and builds the cover from one of those.
  • A YouTube compilation. 10 to 15 minutes of the best moments in one video: headlines on screen, chapters in the description, a thumbnail, titles and tags written to match.

What the cuts change

  • Waiting is sped up, and each tab says by how much — the model reading an hour, or ffmpeg rendering. Everything else runs at the speed it ran.
  • The footage is a NASA press conference — public domain, and a stand-in. The tool is built for streams, TV appearances and committee sittings.
  • The interface here is English because this build is white-labelled. The one I use every week is in Polish, because the people using it are.

How it actually works

  • — Everything on screen is one unedited run of the real program. The ranked list is what the model returned for that sentence, and the files at the end of each tab are the ones it wrote.
  • — The speech is transcribed on my machine with faster-whisper, word by word, which is what makes the captions land on the right syllable.
  • — Separating voices is sherpa-onnx; following a face through a cut is YuNet and SFace. None of it leaves the computer.
  • — The language model is asked only where judgement is needed — which moments matter, what to call them, how to cut a text into tiles. One provider layer talks to Claude Code, Codex, Gemini CLI, LM Studio, Ollama or anything OpenAI-compatible, and every answer is checked against a JSON schema.
  • — Rendering is ffmpeg decoding into Pillow and back out through x264.

// Python, PyQt6, faster-whisper, sherpa-onnx, OpenCV, ffmpeg, Pillow. Source is private; happy to walk through it.