The first commit of Clipper landed as one 2,090-line drop, and it already did the whole job end to end.
What the first version did
- Download an episode with yt-dlp.
- Transcribe it with faster-whisper on the local RTX 3090, with word-level timestamps.
- Pick candidate moments by sending the transcript to Claude with a brief about what makes a clip work.
- Render each pick as a 9:16 vertical with karaoke-style captions burned in by ffmpeg, cropped around the detected face.
- Review the batch in a tiny local web page: play, approve, reject.
- Upload approved clips to YouTube through the Data API.
The review page was 115 lines. It would be replaced within two days, but on day one it was enough to look at every clip and say yes or no.
The first batch
The same day, the pipeline ran against nine source episodes and produced 63 candidate clips. Thirteen were approved. The rest were rejected for reasons that became the next week of work: last words clipped off, on-screen text cropped out of the frame, the camera flipping between two faces mid-sentence.
That first contact with real footage is what makes this project’s history read the way it does. Almost every later change to the renderer cites a specific clip number that looked wrong.