Claude Video: Watch Any Video From Claude Code
Claude Video is an open-source `/watch` skill that gives Claude the ability to watch any video and answer questions about it. You paste a YouTube link, a TikTok, a Loom, or a local file and a question; it downloads the video with yt-dlp, pulls a timestamped transcript, extracts frames with ffmpeg, and lets Claude Read each frame as an image so the answer is grounded in what was actually on screen and in the audio.
Reach for Claude Video if you live inside Claude Code (or Codex/Cursor) and keep running into videos you'd rather not scrub through — it genuinely hands the agent frames plus a transcript to reason over, not just a title guess. Skip it if you're not on a multimodal agent host, or you only ever need a plain transcript, where yt-dlp's own caption pull or Whisper alone is less setup.
The problem it solves
An agent can read a webpage, run a script, or browse a repo, but out of the box it can't watch a video. Paste a YouTube link and it either guesses from the title or pulls a transcript that misses everything on screen — the UI that breaks, the slide, the frame where the bug appears. Claude Video exists to close that gap: it turns a URL or a local file into frames and a timestamped transcript the agent can actually see and read.
What is it?
Claude Video is a Claude video understanding skill, written in Python (MIT-licensed), invoked as `/watch <video> <question>`. It chains three tools: yt-dlp downloads the source (any yt-dlp URL — YouTube, Loom, TikTok, X, Instagram, Vimeo — or a local .mp4/.mov/.mkv/.webm), ffmpeg extracts frames, and a transcript comes from free native captions first, falling back to Whisper only when a video has none. The script prints frame paths with timestamps and the transcript, then Claude Reads each JPEG as an image.
Why it's getting attention
Giving an agent a browser or a shell is common now; giving it eyes on video is rarer, and this fills that slot with almost no setup. It installs across Claude Code, Codex, Cursor, Copilot, Gemini CLI, and 50+ Agent Skills hosts from one skill folder, and captions cover most public videos for free — so the common case costs no API key. That low friction, plus a README that publishes measured numbers rather than claims, is why it has picked up over 7,400 stars.
Key features
- ✓Downloads via yt-dlp — any yt-dlp-supported URL (YouTube, TikTok, Loom, X, Vimeo) or a local .mp4/.mov/.mkv/.webm file
- ✓Four detail modes trading tokens for fidelity: `transcript` (no frames), `efficient` (keyframes, cap 50), `balanced` (scene-change, cap 100), `token-burner` (scene-change, uncapped)
- ✓Frame dedup that drops near-identical frames — a 16×16 grayscale mean-absolute-difference pass so a slide held for 90 seconds doesn't cost a dozen image tokens
- ✓Transcript from free native captions first; Whisper (Groq `whisper-large-v3` or OpenAI `whisper-1`) only kicks in when a video has no caption track
- ✓Duration-aware frame budget with `--start`/`--end` focused mode for denser per-second coverage, capped at 2 fps
- ✓One self-contained skill folder that installs across Claude Code, Codex, Cursor, Copilot, Gemini CLI, 50+ hosts, and claude.ai web
Best use cases
- •Break down someone else's content — ask what hook a viral video opened with, or how an ad creative is structured
- •Diagnose a bug from a screen recording a teammate sent you, finding the frame where the UI breaks
- •Summarize a long talk or launch video faster than watching it at 2x, or strip an update down to what's actually new
- •Turn a playlist or course into per-video notes so hours of footage become a searchable set of summaries
How to install / try
In Claude Code, add the marketplace and install the plugin: `/plugin marketplace add bradautomates/claude-video` then `/plugin install watch@claude-video`. For Codex, Cursor, Copilot, Gemini CLI and 50+ other hosts, run `npx skills add bradautomates/claude-video -g` (`-g` installs globally; drop it for the current project only). For claude.ai web, download `watch.skill` from the latest release and add it under Settings → Capabilities → Skills. On the first run it checks for yt-dlp and ffmpeg — auto-installing via brew on macOS, or printing the exact apt/dnf/winget commands on Linux and Windows.
How to use
Call `/watch` with a video and a question: `/watch https://youtu.be/dQw4w9WgXcQ what happens at the 30 second mark?` or `/watch ~/Movies/screen-recording.mp4 when does the UI break?`. Narrow to a section with `--start`/`--end` (e.g. `--start 2:15 --end 2:45`) for a denser, cheaper pass. Tune the run with `--detail transcript|efficient|balanced|token-burner`, `--resolution 1024` to read on-screen text, `--max-frames N` for a tighter budget, `--whisper groq|openai`, or `--no-whisper` for frames only.
Strengths
- ✓Captions-first design means most public videos cost nothing extra — no API key until a video genuinely lacks a caption track
- ✓The detail dial gives real control over token spend, from a transcript-only pass with zero frames up to uncapped token-burner
- ✓Frame dedup keeps you from paying image tokens for static footage like held slides or paused screen recordings
- ✓Same skill folder runs across Claude Code, Codex, Cursor and other hosts, so you're not locked to one agent
- ✓The README documents measured numbers from a real 49-minute run instead of vague claims, so you can predict cost before running
Limitations & risks
- △It needs a multimodal agent host that can Read image frames — this is a Claude Code / Codex / Cursor skill, not a standalone app or API you call on its own
- △It depends on yt-dlp and ffmpeg; macOS auto-installs them via brew, but on Linux and Windows you run the printed commands yourself
- △Long videos degrade in the capped modes — past roughly 10 minutes coverage thins and you get a 'sparse scan' warning; token-burner fixes it but costs more image tokens
- △Frames dominate token cost since every frame is an image, so a careless full pass over a 30-minute video can burn a lot of context budget
- △Caption-less sources (many local files, TikToks, some Vimeos) fall back to Whisper, which needs a Groq or OpenAI key and costs money per minute
Alternatives
Who should try it — and who should skip
Developers and creators who already work inside Claude Code (or Codex, Cursor, Copilot, Gemini CLI) and regularly need to pull information out of videos — competitor content, bug repros, long talks. If you're on a multimodal agent host and captions cover your sources, it's near-zero-cost to add. If you don't use an agent host, or you need a polished GUI app, this isn't that.
Frequently asked questions
Claude Video is an open-source Python skill invoked as `/watch` that lets Claude watch any video. It downloads the video with yt-dlp, extracts frames with ffmpeg, pulls a timestamped transcript, and hands the frames and transcript to Claude so it answers grounded in what's on screen and in the audio.
Not for most videos. It pulls free native captions first, which cover the majority of public videos. A Groq or OpenAI Whisper key is only needed when a video has no caption track — typically local files, TikToks, some Vimeos, and the occasional caption-less YouTube upload.
Any URL yt-dlp supports (YouTube, Loom, TikTok, X, Instagram, Vimeo, and more) plus local .mp4/.mov/.mkv/.webm files. It installs in Claude Code as a plugin, in claude.ai web as a .skill file, and across Codex, Cursor, Copilot, Gemini CLI and 50+ hosts via `npx skills add`.
Frames drive the cost since each is an image. It caps frames by duration, dedups near-identical frames with a grayscale difference pass, and offers detail modes from transcript-only up to uncapped. For a specific moment, `--start`/`--end` gives a dense, cheaper window instead of a sparse pass over the whole video.