How to Give Claude Code the Ability to Watch a Video
TL;DR
claude-video adds a /watch command to Claude Code: paste a URL or a local file, and the agent pulls the subtitles, extracts frames at the moments that matter, and answers based on what it saw and heard. Works with YouTube, Loom, TikTok, X, Instagram, and anything yt-dlp can download. Free as long as the video has subtitles. Without subtitles, a Whisper API key becomes necessary for transcription.
The problem: an agent that reads a title, not a video
Without this tool, an agent handed a YouTube link guesses from the title, or pulls an auto-generated transcript that misses everything happening on screen: a chart, an error message, an edit cut. It answers "based on the title," not "based on what happens in the video."
How it works
Three steps, in this order:
- Subtitles first.
yt-dlppulls the source's native subtitles, manual or auto-generated, without downloading the video. Free, near-instant. - Frames only when needed.
ffmpegextracts frames at scene changes rather than fixed intervals, to avoid paying for the same slide twelve times over in tokens. A deduplication pass compares each frame against the last one kept and drops near-duplicates before they reach Claude. - Transcription as a fallback. If the video has no subtitles, the tool extracts the audio and sends it to Whisper, Groq's version first (cheaper, faster), then OpenAI's as a fallback.
Claude then reads each frame like a regular image, with a timestamp, and answers based on that content instead of a generic description.
/watch https://youtu.be/<video> what changed, skip the pitch
What this actually gets you
- Analyzing a competitor's launch: opening hook, edit structure, what's shown on screen rather than said out loud.
- Debugging from a screen recording: the agent finds the exact frame where the bug shows up, without you scrubbing through the video frame by frame.
- Summarizing a 49-minute talk in seconds, with precise timestamps instead of a vague summary.
- Skipping the fluff in a product video: ask directly what changed, without the first ten minutes of setup.
What it actually costs
The advertised zero holds for videos with subtitles, the majority of public content: yt-dlp pulls them for free, without downloading the video. A video without subtitles changes the math: the tool falls back to Whisper, which needs a paid API key (Groq or OpenAI). Free is the general rule, not a universal guarantee.
How to install it
/plugin marketplace add bradautomates/claude-video
/plugin install watch@claude-video
yt-dlp and ffmpeg install automatically on first run on macOS through Homebrew; on Linux and Windows, the tool prints the exact commands to run.
The limits
On a long video, the number of frames has a cap: a video over 10 minutes is limited to 100 frames by default, giving a broad sweep rather than dense coverage. For a specific moment, specifying a time range ("between 2:30 and 3:00") gives a much denser answer than a pass over the whole video. The uncapped mode exists for full coverage, but costs more tokens on a video with frequent cuts.