watch-video
When you want to extract content from a video — YouTube, Loom, Vimeo, Riverside, Zoom recording, local MP4, X/IG video, anything yt-dlp supports. Three depth modes user picks per invocation — transcript (just words, fast/free), visual (transcript + ffmpeg frame extraction + Claude vision pass on key moments), multimodal (Gemini native video ingestion if $GEMINI_API_KEY set, else dense Claude vision). Uses MLX-Whisper local on Mac for transcription, falls back to platform-provided transcripts when available (Loom, Riverside, YouTube auto-subs). Saves to ~/Documents/videos/<source>-<slug>-<date>
npx skills add coreyhaines31/makerskills --skill watch-video --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
# /watch-video — Transcribe and analyze any video at the depth you choose Replaces and broadens the prior `youtube-transcript` skill. YouTube is now one of many sources; depth is user-controlled. ## Step 1 — Parse input Accept: - **YouTube**: full URL, `youtu.be/<id>`, `youtube.com/shorts/<id>`, raw 11-char ID - **Loom**: `loom.com/share/<id>` or `loom.com/embed/<id>` - **Vimeo**: `vimeo.com/<id>` - **Riverside**: download URL or local file - **Zoom**: local `.mp4` from a downloaded recording - **X / IG / TikTok video**: URL — defers to `social-fetch` for metadata, uses yt-dlp for the file - **Local file**: any path to an `.mp4` / `.mov` / `.webm` / `.mkv` Detect source from URL pattern or file extension. If ambiguous, ask. ## Step 2 — Parse depth mode | Invocation | Mode | What you get | |---|---|---| | `/watch-video <url>` | **transcript** (default) | Clean text, metadata, optional chapters | | `/watch-video <url> transcript` | transcript | Same as default | | `/watch-video <url> visual` | visual | Transcript + frames at intervals + Claude vision pass identifying key moments | | `/watch-video <url> multimodal` | multimodal | Native video to Gemini (if `$GEMINI_API_KEY`), else den
- Step 1 — Parse input
- Step 2 — Parse depth mode
- Step 3 — Pull metadata
- Step 4 — Build workdir
- Step 5 — Get the transcript
- Step 6 — If transcript mode: stop here
- Step 7 — If visual mode: extract frames + vision pass
- Frame extraction (ffmpeg)
- Vision pass
- Generate summary
- Step 8 — If multimodal mode
- Backend selection
- Multimodal output
- Step 9 — Optional: capture to second-brain
yt-dlp --print "%(title)s|%(uploader)s|%(duration_string)s|%(upload_date>%Y-%m-%d)s|%(description)s" \
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "<file>"
python3 -c "import mlx_whisper; mlx_whisper.transcribe('<file>', path_or_hf_repo='mlx-community/whisper-large-v3-turbo')" \
yt-dlp -f "bv*[height<=720]+ba/b[height<=720]" -o "<workdir>/video.%(ext)s" "<url>"
YouTube VTT cleanup — de-dup rolling captions, strip tags, paragraph-break on cue gaps >2s
awk '
in_cue { gsub(/<[^>]+>/, "", $0); last = $0 }
END { if (last) print last }
mkdir -p "<workdir>/frames"
ffmpeg -i "<workdir>/video.mp4" -vf "fps=1/15" "<workdir>/frames/frame-%04d.png" -yWhat does the watch-video skill do?
When you want to extract content from a video — YouTube, Loom, Vimeo, Riverside, Zoom recording, local MP4, X/IG video, anything yt-dlp supports. Three depth modes user picks per invocation — transcript (just words, fast/free), visual (transcript + ffmpeg frame extraction + Claude vision pass on key moments), multimodal (Gemini native video ingestion if $GEMINI_API_KEY set, else dense Claude vision). Uses MLX-Whisper local on Mac for transcription, falls back to platform-provided transcripts when available (Loom, Riverside, YouTube auto-subs). Saves to ~/Documents/videos/<source>-<slug>-<date>
How do I install it?
Run `npx skills add coreyhaines31/makerskills --skill watch-video --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From coreyhaines31/makerskills, a repository with 500 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.
