peepshow/ how-to/ youtube-to-llm

Reel #H-02 YouTube link → frames + transcript → LLM

peepshow how-to / youtube-to-llm

Summarise a YouTube video with Claude, GPT, or Gemini

Drop a YouTube URL into yt-dlp, hand the resulting `.mp4` to peepshow, get scene frames + a whisper.cpp transcript. Feed both to your LLM — full understanding at a fraction of native-video token cost.

Steps

  1. Install peepshow + yt-dlp + whisper.cpp

    All three are stand-alone CLIs.

    npm install -g peepshow
    brew install yt-dlp whisper-cpp
  2. Download the YouTube clip

    yt-dlp grabs the source `.mp4`. Use `-f` to pick a small format for fast extraction.

    yt-dlp -f 'best[height<=480]' -o 'clip.%(ext)s' https://www.youtube.com/watch?v=...
  3. Run peepshow

    Scene-change frames + whisper.cpp transcript emerge automatically.

    peepshow ./clip.mp4 --emit json > run.json
  4. Feed to your LLM

    Drag the frame folder into Claude / ChatGPT, or pipe the JSON to the API.

    peepshow ./clip.mp4 --sink obsidian   # or --sink notion / --sink slack / etc.

Why it works

YouTube videos are the canonical case for video → LLM. Native video upload to Gemini works but burns tokens proportional to clip length. peepshow's frame-extraction + whisper.cpp transcript bundle stays under a few thousand tokens for most clips — even hour-long lectures.

When it helps

  • Lecture summaries and chapter generation.
  • Tutorial walkthroughs where you need both visuals and dialogue.
  • Compliance / review of long-form content (podcasts, conference talks).

Pitfalls

  • yt-dlp is rate-limited — don't bulk-extract without spacing requests.
  • Some YouTube videos are age-gated / region-locked; yt-dlp will refuse without cookies.
  • Live streams need a separate flow — yt-dlp doesn't tail by default.

Works with these LLMs

Pairs with these sinks