claude-video: Give Claude the Ability to Watch Any Video
claude-video: Give Claude the Ability to Watch Any Video 🎬
What is it? claude-video is an open-source
/watchskill that gives Claude (or any coding agent supporting the Agent Skills standard) the ability to watch a video. Paste a YouTube URL, TikTok link, or local file path, ask a question, and Claude fetches captions, extracts frames, transcribes audio, and answers grounded in what's actually on screen — not just the title or description.
Why it's trending: claude-video hit 8,600+ GitHub stars because it solves a fundamental limitation of AI coding agents. Claude can read code, browse the web, and run scripts, but it can't watch a video. When you paste a YouTube link, it has to guess from the title or pull a bare transcript missing 90% of what's on screen. This tool bridges that gap — it gives Claude actual vision over video content, scene by scene, frame by frame. Built by bradautomates, MIT licensed, and compatible with Claude Code, Codex, Cursor, Gemini CLI, and 50+ other AI coding agents.
How It Works
The workflow is a straightforward pipeline from video URL to grounded answer:
- You paste a video URL and a question. Anything
yt-dlpsupports — YouTube, Loom, TikTok, X, Instagram, Vimeo, plus hundreds more — or a local file (.mp4,.mov,.mkv,.webm). yt-dlpchecks captions first. Attranscriptdetail level, captioned URLs return without downloading video. Otherwise, it downloads only what's needed.ffmpegextracts frames at the chosen detail level. Three modes:efficient(fast keyframes, ~0.5s),balanced(scene-change detection, default), andtoken-burner(uncapped scene-candidate frames).- Transcript comes from captions or Whisper. Native captions (auto-generated or manual) are free and instant. When none exist, the script extracts a mono 16 kHz audio clip and sends it to Whisper — Groq's
whisper-large-v3(preferred, cheaper) or OpenAI'swhisper-1. - Frame deduplication drops near-identical frames via a 16×16 grayscale thumbnail comparison, so your token budget is spent on distinct content.
- Claude
Reads every frame and the timestamped transcript in parallel, answering based on what's actually visible and audible.
The key insight: Claude sees the frames as images and reads the transcript with timestamps. It's not guessing — it's analyzing what's on screen.
Prerequisites
- Python 3.10+ (for the
watch.pyscript) - ffmpeg and yt-dlp (installed automatically on macOS via
brew; Linux/Windows get exact instructions) - Claude Code (recommended) or any Agent Skills-compatible host (Codex, Cursor, Gemini CLI, Copilot, etc.)
- Optional: Groq API key (free tier available) for Whisper transcription when videos lack captions
Installation
Claude Code (Recommended)
Claude Code has a built-in plugin marketplace for instant install:
# Add the plugin marketplace source
/plugin marketplace add bradautomates/claude-video
# Install the /watch skill
/plugin install watch@claude-video
Update later with /plugin update watch@claude-video.
Codex, Cursor, Gemini CLI, and 50+ Other Hosts
The Agent Skills CLI installs the skill into whatever agents it detects on your system:
npx skills add bradautomates/claude-video -g
The -g flag installs globally. Drop it to scope to the current project. For specific agents:
npx skills add bradautomates/claude-video -a codex -a cursor
First Run Setup
On the first /watch call, the setup script checks for dependencies:
- macOS — auto-runs
brew install ffmpeg yt-dlp - Linux — prints exact
apt/dnf/pipxcommands - Windows — prints
winget/pipcommands - API key — scaffolds
~/.config/watch/.envwith commented placeholders forGROQ_API_KEY(preferred) andOPENAI_API_KEY
Manual Install (Developer)
git clone https://github.com/bradautomates/claude-video.git
ln -s "$(pwd)/claude-video/skills/watch" ~/.claude/skills/watch
Quick Start
Basic Usage
The simplest use case — paste a URL and ask a question:
/watch https://youtu.be/dQw4w9WgXcQ what happens at the 30 second mark?
Claude fetches captions, extracts frames around the 30-second mark, and answers based on what's actually on screen.
Local Files
/watch ~/Movies/screen-recording.mov when does the UI break?
This works with .mp4, .mov, .mkv, and .webm files.
Focused Mode (Best for Long Videos)
For long videos, use --start and --end to zoom in on a specific section. This gives you a much denser frame budget:
/watch https://youtu.be/abc --start 2:15 --end 2:45
/watch video.mp4 --start 50 --end 60
Detail Modes
The --detail flag controls the frame extraction strategy, balancing speed, token cost, and coverage:
| Mode | Engine | Frame cap | Use case |
|---|---|---|---|
transcript |
None (captions only) | 0 | Quick summaries, text-heavy content |
efficient |
Keyframes (fast) | 50 | Fast scan, short clips |
balanced |
Scene-change | 100 | Default — good coverage |
token-burner |
Scene-change (uncapped) | Unlimited | Deep analysis, long videos |
# Fast scan — just keyframes
/watch https://youtu.be/abc --detail efficient
# Deep analysis — every scene-change frame
/watch https://youtu.be/abc --detail token-burner
Frame Budget by Video Length
The auto-fps logic adjusts frame budgets to avoid blowing your context:
- ≤30s — ~30 frames (dense, every key moment)
- 30s–1min — ~40 frames
- 1–3min — ~60 frames
- 3–10min — ~80 frames
- >10min — 100 frames (capped) — use
--start/--endfor focused analysis
Advanced Options
Custom Timestamps
Target specific moments with --timestamps:
/watch https://youtu.be/abc --timestamps 0:15,1:30,2:45
Claude reads the transcript first, then grabs frames at each exact timestamp.
Higher Resolution for On-Screen Text
When the video contains slides, terminal output, or code:
/watch https://youtu.be/abc --resolution 1024
This bumps frame width to 1024px for better text readability.
Disable Whisper
If you only want frames without transcription:
/watch https://youtu.be/abc --no-whisper
What People Actually Use It For
Analyze content structure — paste a viral video and ask Claude to break down the hook, the structure, and the key moments. Great for ad creative, competitor launches, and podcast intros.
Debug from screen recordings — someone sends you a screen recording of a bug. /watch bug-repro.mov what's going wrong? Claude watches the recording and finds the frame where the issue appears.
Summarize long content — /watch https://youtu.be/long-talk summarize this pulls the structure, key moments, and what was actually said and shown, faster than watching at 2x.
Cut through marketing hype — /watch https://youtu.be/launch-video what's actually new — skip the hype strips a feature drop down to the real substance.
Build searchable notes from playlists — run /watch across a course or channel, file per-video summaries, and create a searchable knowledge base without re-watching hours of content.
Architecture
The architecture is intentionally modular. Each component — download, frame extraction, transcription, deduplication — is a separate Python script in skills/watch/scripts/:
watch.py— entry point, orchestrates the full pipelinedownload.py—yt-dlpwrapper for video downloading and caption fetchingframes.py—ffmpegwrapper with auto-fps logic and three extraction modestranscribe.py— VTT parsing, deduplication, and Whisper orchestrationwhisper.py— Groq / OpenAI clients (pure Python stdlib, no heavy dependencies)config.py— shared configuration via~/.config/watch/.envsetup.py— preflight checks and first-run dependency installer
The pipeline is simple: download → extract frames → transcribe → deduplicate → feed to Claude. Each stage can run independently, making it easy to debug or customize.
Limitations
- Long videos with capped modes — past ~10 minutes, frame coverage thins out. Use
--start/--endfor focused analysis or--detail token-burnerfor uncapped coverage. - Token cost — image tokens add up fast. At 512px width, each frame is ~197 tokens (per Anthropic's pricing). A 100-frame analysis costs ~19.7k tokens in images alone.
- Whisper API key needed — videos without captions require a Groq or OpenAI API key for transcription. Native captions cover most public YouTube videos for free.
- Network dependency — the tool downloads video/audio content on each run. Offline use requires pre-downloaded local files.
Resources
- GitHub: https://github.com/bradautomates/claude-video
- Agent Skills Standard: https://agentskills.io
- Install:
npx skills add bradautomates/claude-video -g - License: MIT
- Author: bradautomates
Comparison with Alternatives
- Browser DevTools — let you inspect network requests but offer no video frame extraction or multimodal analysis. claude-video automates the entire pipeline from URL to answer.
- Manual transcript reading — reading a transcript alone misses 90% of visual context (UI changes, body language, code on screen). claude-video combines frames + transcript for full multimodal analysis.
- Video summarization tools — existing tools generate summaries from transcripts only, missing visual content. claude-video gives Claude actual vision over every frame.
- Custom scripting — you could script
yt-dlp+ffmpeg+ Whisper manually, but claude-video packages it into one/watchcommand with auto-fps, dedup, and multi-mode frame extraction built-in.