Context
The client is a B2B company that records a webinar every week. Fifty minutes of a genuinely good conversation, run by a marketing team of three.
They were not wrong about the content. Every recording had material in it that worked on its own. The problem was what it cost to get that material out - enough time that the cadence broke every time somebody took a week off.
The problem: the editing was never the expensive part
Here is what one recording actually cost them.
A marketer watched the whole thing back and noted timestamps. The editor then spent most of a day pulling four or five clips, cropping them to vertical, fixing the framing so the speaker was not half out of shot, and typing captions.
Then came the part they never counted. Every clip went to four platforms, and each of those uploads was its own small job: a title, a description, hashtags, and a different idea of what a caption is and how long it is allowed to be. Fifteen minutes to half an hour per clip, per platform, done by hand, by someone whose job was supposed to be marketing. Four clips across four platforms is sixteen uploads, and sixteen uploads is most of a second day.
So the real cost of one webinar was a day and a half out of a three-person team’s week. Which meant:
- Clips went out four or five days after the recording, when the discussion had already moved on
- If someone was sick or on holiday, that week simply had no shorts
- Nobody went looking for the fifth or sixth good moment in a recording, because the first four had already cost a day and a half
- Two years of previous recordings, all of them full of usable material, sat untouched because nobody could justify the time
The team’s own diagnosis was “we need a better editor.” I watched the process for a day and the editing was the smallest number on the board.
What I built
A pipeline. You drop the master file in, and finished clips come out the other side ready to review.
Get the words first, with timestamps. The whole thing runs on a transcript with word-level timing. That detail decides whether the pipeline works. Every cut boundary and every caption downstream comes from those timings, which is why clips do not start mid-word or clip the end of a punchline. Most tools in this space get this wrong and it is instantly visible.
Let the model pick moments, not make cuts. The LLM reads the transcript and scores segments against the rules we wrote together with the team: is it a complete thought on its own, is there a hook in the first three seconds, does it build any tension before paying off, does it land between 20 and 70 seconds. It returns a ranked list of candidates with exact word boundaries.
It surfaces 8-15 of them rather than the four or five the team used to find. The recordings did not get better - reading a full 50-minute transcript against a fixed rubric costs the model a few cents, and used to cost a marketer an afternoon. That is the only reason the extra candidates were ever there to find.
FFmpeg does the actual cutting, deterministically, from those timestamps. Same split I use on every AI project: the model owns language and judgement calls, my code owns anything that has to be exactly right.
Cut, reframe, caption. The cut is FFmpeg, deterministic, straight from the word boundaries. The reframe is more work than it sounds: a person and face detector runs over the clip, and the resulting crop path gets smoothed before a single frame is rendered, because a crop that snaps to raw per-frame detections is unwatchable. Done properly, the speaker stays in frame when they move, which a static centre crop never manages.
Webinars are not all talking heads, though. When a segment is a shared screen, cropping to 9:16 throws the slide away, so those get a stacked layout instead - speaker on top, slide below - and any candidate where the slide carries the whole point is flagged in the queue rather than treated as a normal clip.
Captions are burned in from the same word-level transcript, styled to the client’s brand. No second transcription pass, no drift between what is said and what is on screen.
A 50-minute master runs in about 20 minutes end to end, and that only holds because the clips render in parallel on a GPU. Sequentially on a laptop it is an afternoon, and an afternoon is not automation.
Then it stops and asks. Every clip lands in a review queue with its transcript, its score, and the reason the model picked it. A marketer approves, rejects, or nudges the boundaries by a second or two and rewrites a hook if they want. Six to eight of the candidates usually survive. Nothing publishes without a human clicking yes.
Publish once, land four times. After approval, the metadata gets generated per platform from the same source, because a LinkedIn description and a TikTok caption are not the same object. The scheduler spreads the approved clips across YouTube Shorts, TikTok, Instagram Reels and LinkedIn, respecting each platform’s limits and the posting cadence the team wanted.
The decisions that actually mattered
The review gate is obligatory. I get asked to remove it on basically every project like this, and I push back every time. Fully automatic publishing means that the first time the model picks a clip where your CEO says something that sounds terrible without the surrounding context, it reaches four audiences before anyone in the company notices. The gate costs half an hour a week. It is the cheapest insurance in the system.
It also turned out to be where the team got value they did not expect. Seeing 12 ranked candidates with the reasoning attached is a better creative brief than staring at a 50-minute timeline.
Getting permission to publish took longer than building the publisher. This is the part nobody budgets for, so I now start it in week one, before a single frame gets cut.
TikTok’s Content Posting API will only post privately until your app clears an audit. Instagram publishing needs a Professional account wired to a Facebook page, an app review for the publishing permission, and the file sitting at a URL Meta can fetch for itself. Posting to a LinkedIn company page means getting through their partner programme, and the upload is a three-step register-upload-finalise dance rather than one request. YouTube is the friendly one and still bills 1,600 quota units per upload against a default allowance of 10,000 a day.
None of that is hard engineering. All of it is calendar time, review queues and somebody else’s decision - which is exactly why it is the most common reason a project like this slips a month.
Publishing is a queue with retries, not a for loop. This is the boring part that decides whether the thing still works in month three. Tokens expire, APIs go down, rate limits hit, one platform rejects a file another accepted. Every publish is a job that can fail, retry with backoff, and surface in a dashboard when it needs a human.
The result
One 50-minute recording goes from upload to 8-15 captioned, vertical candidates in about 20 minutes, unattended. A marketer picks six to eight of them in half an hour.
Volume went up - 16 to 20 hand-published posts a week became around 30 - but that is not the number the team cares about. A day and a half out of a three-person team’s week became half an hour. And the cadence stopped depending on anyone being in the office: shorts now go out in the same week the webinar was recorded, including the weeks somebody is away.
Then the back catalogue. Two years is roughly a hundred recordings, and the pipeline chewed through them over a few evenings running in parallel. The reviewing was the part that took real time, because the gate does not get cheaper just because the footage is old - they capped it at the top three candidates per recording and worked the queue in short sessions over about six weeks. That turned into months of scheduled content out of footage they had already paid for, which is the best return in the whole project and came out of the cheapest part of it.
What it proves
Automate the production, keep the judgement. The pipeline does everything mechanical: transcribing, scoring, cutting, cropping, captioning, formatting, uploading, scheduling, retrying. What it never does is decide, on its own, that something is good enough to put in front of an audience. That line is where these projects either build trust or lose it in one bad post.
Consistency is the product, not volume. The clip count went up by half. The reason they keep the system is that a webinar recorded on Tuesday is published by Friday whether or not the right person is at their desk - and nothing else they tried ever managed that.
Measure the whole process, not the loud half of it. They thought they had an editing problem. The editing was four hours of a twelve-hour job. If I had built them a faster editor, it would have shaved a morning off a day and a half and changed nothing about the outcome.