clipping-single-moment-shorts
A Short is one self-contained moment from a stream, 10 to 35 seconds, told as a story: full-bleed 9:16 jump cuts that reframe onto whoever is funniest, pauses cut out, one big uppercase caption word at a time coloured by speaker, and a colour flash on the punchline. It is the sibling of clipping-streamer-shorts (the ranked countdown) and reuses that skill's downloader, so both skills must be installed side by side; everything new lives in this folder (scripts/, template/), so the agent fills in parameters rather than rewriting the plumbing. Free paths come first everywhere, YouTube's auto-captions or a local Whisper model instead of Diffusion's paid media listen and media transcribe, since credits cost real money and the free plan is a one-time 50.
Before any download, state its size in MB and choose the smallest viable option, never a full video, this is a hard preference, not a courtesy. Channel format decisions live in the channel's own docs (for TheShortlist, C:\Users\DavidOdunjo\Codebase\YouTube\TheShortlistOfficial\docs\decisions.md, and this style's research in styles\single-moment\README.md), read them first and let them win over the house style below when they disagree.
Diffusion Studio docs
Defer to the app's own agent docs for every JSX and tool detail, they are versioned with the install and this skill doesn't repeat them. They live at %LOCALAPPDATA%\DiffusionStudio\app-<version>\resources\docs, the version changes on update, so glob app-*. Read skills/editor.md first, then the reference/jsx pages for whatever is being touched: text.md, styles.md for the caption stroke, fonts.md, timing.md, sequences.md, rect.md, animations.md, audio.md, and the Ids section of module.md. Drive the app from the CLI at %LOCALAPPDATA%\DiffusionStudio\bin\diffusion.cmd when the MCP server is down, both surfaces take the same tools.
Finding the moment
Freshness decides whether a Short can win, a moment another channel has already clipped is worth little, so prefer streams and VODs from the last 24 to 48 hours. Search with yt-dlp --flat-playlist "ytsearch10:<streamer> <topic>" and confirm the uploader from each result's channel_url, since guessed handles are often someone else. Try the most-replayed heatmap first, yt-dlp -j --skip-download <url> | bun ../clipping-streamer-shorts/scripts/peaks.ts, but it often returns nothing for videos under a few weeks old even with hundreds of thousands of views, so the usual path is reading the transcript (next section) for a story with a setup and a punchline. Before cutting, check nobody has clipped it yet: yt-dlp --flat-playlist --print "%(title)s | %(channel)s | %(url)s" "ytsearch20:<streamer> <key phrase>" and look for Shorts of the same moment, and if one exists pick another.
The moment must stand alone with no prior context, 10 to 35 seconds, its first frame already mid-moment and its first caption word the hook, no intro, and it ends right after the punchline word, trimming any word of the next sentence that trails in.
Transcript
YouTube's auto-captions are free, yt-dlp --skip-download --write-auto-subs --sub-langs en --sub-format json3 -o "<project>/_session/%(id)s" <url>, but they get HTTP 429 rate-limited after a handful of requests and retries with sleeps don't clear it for many minutes, so fall back to a local transcript rather than waiting. python scripts/transcribe.py <audio> <project>/_session/<id>.en.json3 runs faster-whisper (base.en, CPU int8, word timestamps, VAD) and writes the same json3 shape, so everything downstream reads it unchanged; install it once with pip install faster-whisper (about 100 MB, plus the model at about 145 MB on first run), and expect about 4 minutes per 14 minutes of audio on David's CPU (no NVIDIA GPU). Download only the audio for it, yt-dlp -f <audio id> -o "<project>/_session/%(id)s.audio.%(ext)s" <url>, after stating its size from -F.
Some videos carry AI-dubbed audio in around 20 languages, their format ids get suffixes (251-19) and a bare 251 fails with "Requested format is not available". Run yt-dlp -F <url> first and take the audio marked original (default), for both the transcript download and the clip download, a generic selector like ba[acodec=opus] may pick a dub.