Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.
Watching videos
You don't have a video input; this skill gives you one. Anything a user hands you — a YouTube link, a TikTok, a lecture, a meeting recording, a screen capture, an .mp4 on disk — goes through the same pipeline: frames (scene-aware, deduplicated), OCR, transcript (captions first, local Whisper offline fallback), all persisted into one index.
Before watching: check the index
watch-skill listIf the video was already analyzed — this session or any earlier one — do NOT watch it again. Ask it directly (see the asking-with-evidence skill):
watch-skill ask <video_id> "<question>"One video
watch-skill watch "<url-or-path>" [--start T --end T] [--max-frames N] [--transcript-only]- Works on any yt-dlp-supported site (1800+), direct media URLs, HLS/DASH
manifests (--duration 60 bounds live streams), and local files.
- Video over ~10 minutes and the user cares about one part → use
--start/--end for dense sampling of that window.
- User only needs what was said →
--transcript-only(fastest, often no
video download at all).
The report prints Indexed: <video_id>, frames with t=MM:SS timestamps, OCR text, and the transcript. Read every frame path listed — in a single message, parallel Read calls — then answer from frames + OCR
- transcript, citing timestamps.
Many videos (playlist, channel, folder)
watch-skill batch "<playlist-url-or-folder>" [--limit N]Everything lands in the same index; one broken video never stops the rest. Afterwards a single watch-skill search "<phrase>" spans the whole batch.
First run on a machine
If any command fails with a dependency error, run watch-skill doctor once — it installs missing ffmpeg/yt-dlp itself. No API key is required for any of this; transcription is local by default and the video file never leaves the machine.

