# yt-dlp-whisper-shorts > Download YouTube audio with yt-dlp, transcribe with Whisper to create timestamped subtitles (SRT), then analyze the transcript to recommend 15–60s Shorts-ready highlight segments with timecodes, hook text, clear reasons, and editing/narration suggestions. Use when a user provides a YouTube link and asks for transcription/subtitles, highlight extraction, or Shorts clip recommendations. - Author: Jong Hyun Park - Repository: jonhpark7966/my-skills - Version: 20260118175114 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/jonhpark7966/my-skills - Web: https://mule.run/skillshub/@@jonhpark7966/my-skills~yt-dlp-whisper-shorts:20260118175114 --- --- name: yt-dlp-whisper-shorts description: Download YouTube audio with yt-dlp, transcribe with Whisper to create timestamped subtitles (SRT), then analyze the transcript to recommend 15–60s Shorts-ready highlight segments with timecodes, hook text, clear reasons, and editing/narration suggestions. Use when a user provides a YouTube link and asks for transcription/subtitles, highlight extraction, or Shorts clip recommendations. --- # yt-dlp + Whisper → Shorts Highlights Use `scripts/yt_to_shorts.py` to automate: (1) audio download, (2) Whisper transcription, (3) highlight picking from the SRT. ## Quick start Run end-to-end (download → transcribe → suggest): `python3 scripts/yt_to_shorts.py "" --language ko --min-sec 15 --max-sec 60 --count 3` Use an existing subtitle file (skip download/transcribe): `python3 scripts/yt_to_shorts.py "" --no-download --no-transcribe --srt-file ""` ## Workflow (agent) 1. Confirm: - The YouTube URL - Target language (use `--language ko` for Korean, or omit to auto-detect) - Desired Shorts length (default 15–60s) and number of picks (default 3) 2. Run `scripts/yt_to_shorts.py` and read the generated `highlights.md`. 3. Sanity-check each pick in the SRT: - Start should hook within 1–2s; if it starts slow, shift the in-point earlier to a stronger line. - Avoid section transitions (“다음으로…”) mid-clip; trim before the transition or add a 1-line narration bridge. 4. Respond with 3 candidates: - Exact start/end timecodes, duration - Clear selection reasons (hook, payoff, usefulness, emotion, proof shot) - Concrete edit plan (opening text, jump cuts, overlays/B-roll, optional narration) ## Outputs Default output structure: - `./yt_shorts//.mp3` (when downloaded) - `./yt_shorts//.srt` (when transcribed) - `./yt_shorts//highlights.md` - `./yt_shorts//highlights.json` ## Notes - Requires `yt-dlp` and `whisper` in `PATH`. - Downloading from YouTube requires network access; in restricted environments this may require user approval. - If yt-dlp warns about missing JS runtime (EJS), add an appropriate runtime or pass extra args via `--yt-dlp-args`. - For additional heuristics/templates, see `references/shorts-selection.md`.