bradautomates / claude-video The open-source project this card is about — code, README and download files live here. ★ ~15kMIT licencePythonThird-party View on GitHub ↗
On this page
First, so there's no confusion: this isn't "better than Claude watching video". There is no built-in video watching to be better than. Video simply isn't on the list of file types Claude accepts. Anthropic's supported formats — for the API, the Files API, the code sandbox and claude.ai uploads alike — are documents and images only: JPEG, PNG, GIF, WebP. An animated GIF does get through, and the docs are blunt about what happens next: "Animations are unsupported, and only the first frame is used." This skill exists because that gap exists, and it closes it by handing Claude the two things it can read.

So why did it feel like it worked?

Almost everyone reading this has a memory of Claude answering a question about a video, which makes the paragraph above hard to believe. Here's what was actually going on in each case.

1
You pasted a link, and Claude read the page — not the video

A video URL arrives wrapped in text: a title, a description, chapter names, tags, often a full subtitle track, sometimes a comment section. Claude can read every bit of that. On a well-documented video the answer that comes back is close to indistinguishable from having watched it — which is exactly why the illusion holds. Ask about something only visible on screen and it falls apart immediately.

2
You uploaded a file, and it was quietly refused

Video formats aren't accepted, so nothing about the picture was ever analysed. What Claude still had was your filename and whatever you wrote in the message — “here's the recording of the checkout bug” is a lot to work from. A confident answer built on that is the hardest kind to catch, because nothing looks like it failed.

3
You're thinking of a different assistant

Some AI tools genuinely do take video as an input. Claude doesn't, and never has. When the chat windows all look the same, remembering which one did what a month ago is a coin flip.

None of this is Claude being dishonest. It answered from what it actually had. The trouble is that reading about a video and watching one produce answers that sound identical — right up to the moment you need something that was only ever on screen. That's the gap this skill closes, and knowing it exists is most of the value of this page.
This one is not ours. Willow was vetted by a Wix platform team. This was written by one person on the internet who owes you nothing — which is fine, and also exactly why the data section below is worth two minutes of your time.

How it works

Understanding this is what tells you when to trust the answer it gives you.

Step one
Captions first

It checks whether the video already has subtitles. If it does, that's your transcript — free, instant, and no audio goes anywhere.

Step two
Frames out

It pulls still images at the scene changes, tags each with its timestamp, then discards the near-identical ones so you don't pay twice for the same held slide.

Step three
Claude reads

Claude opens the frames as ordinary images alongside the transcript, and answers from both together.

Why this matters more than it sounds. Half of what's useful in a video isn't spoken — it's the on-screen text, the product UI, the chart, the cut. A transcript alone misses all of it. Because /watch hands over frames as well as words, you can ask about things nobody said out loud.

Check it runs where you work

Thirty seconds well spent, because one of these rows is you. I tested the Cowork case myself rather than trusting the documentation.

Short answer: this belongs in Claude Code. Everywhere else is either a compromise or a no.
Claude CodeFully works

The route the project is built for. It runs on your own machine, with your own network and your own installed tools, so nothing sits in the way of it.

Skip the rest of this list and go to the install.
Cursor, Codex, Copilot and ~50 othersFully works

The same skill installs into most other coding agents, because they all read the same skill format.

One npx line, in the install section below.
½
Cowork, inside the Claude desktop appLocal files only

The project never mentions Cowork, so I checked it myself. Cowork runs its commands on a Linux sandbox whose network is locked to an approved list — so a pasted YouTube link fails, and the transcription step can't run either. What does work: ffmpeg is already installed there, so a video file in a folder you've connected can still be turned into frames.

Frames from local files, yes. Links and transcripts, no.
?
claude.ai in the browserProbably works

The project documents this as supported, and there's no terminal setup involved — that sandbox brings its own tools. I couldn't verify what its network is allowed to reach, so I won't promise you links will resolve.

Worth a try. Upload the skill file, switch on code execution.
Ordinary chat in the Claude desktop appDoesn't work

Outside Cowork, the desktop app has nowhere to run the helper programs this depends on.

Use Claude Code instead, or Cowork for local files.

Checked on 11 August 2026. Sandboxes change — if the Cowork one opens up later, links will start working there too.

Installing it, start to finish

Do this once and never again. Twenty minutes at the outside, and most of that is waiting for downloads. Work top to bottom; when you reach the two columns, pick your operating system and ignore the other one.

Step zero — get yourself into Claude CodeDo this first

This is the part nobody explains. Claude Code isn't an app you click — there's no icon for it. It's a program that runs inside a terminal window, and the commands further down this page only work once you're in it. If you already use Claude Code daily, skip to the next step.

  1. Open a terminal window On a Mac: press + Space, type “Terminal”, press Enter. On Windows: press the Windows key, type “PowerShell”, press Enter. Either way you get a plain window with a blinking text prompt. Nothing here is dangerous — it's just a place to type instructions instead of clicking them.
  2. Try starting Claude
    claude

    ✓ Claude greets you and the prompt changes — you're in. This is where every / command on this page goes. Type exit to leave.

    ✗ “command not found” → Claude Code isn't installed yet. Do step 3.

  3. Install Claude Code — only if step 2 failed You'll need Node.js on the machine first (nodejs.org, take the version it recommends). Then:
    npm install -g @anthropic-ai/claude-code

    ⚠ Don't put sudo in front of it. It appears to work and then causes permission problems later that are genuinely annoying to unpick.

    On a Mac you can skip Node.js entirely and use the direct installer instead:
    curl -fsSL https://claude.ai/install.sh | bash
  4. Log in, then check it's healthy Run claude again — the first time, it opens your browser to sign in. Then, back at the terminal prompt:
    claude doctor

    ✓ A short report saying everything's in order.

    Note: Claude Code needs a paid plan — Pro, Max, Team or Enterprise. It isn't on the free tier.

Now the two helper programs

The skill leans on two small free tools: one fetches the video, the other slices it into stills. They're called yt-dlp and ffmpeg. You install them once and forget they exist. Everything in the columns below is installing those two and checking they landed.

On a MacTerminal
  1. Check whether you have Homebrew Homebrew is what Macs use to install this kind of program. Nothing below works without it, and this is the step people skip.
    brew --version

    ✓ Prints a version number → jump to step 3.

    ✗ “command not found” → do step 2 first.

  2. Install Homebrew — only if that failed
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    It asks for your Mac password. Nothing appears on screen as you type it — that's normal, keep going. Takes a few minutes.

    ⚠ When it finishes it prints two more commands for you to run. Run them. Skip that and brew vanishes next time you open Terminal.

  3. Install both programs
    brew install ffmpeg yt-dlp
    Two to five minutes. ffmpeg is a big one, so let it run.
  4. Confirm they landed
    ffmpeg -version
    yt-dlp --version

    ✓ Each prints a version number. Setup done.

  5. Python is already there Nothing to install. The first time something runs it you may get a prompt to install Xcode Command Line Tools — expected, click through it and carry on.
On WindowsPowerShell
  1. Check whether you have winget winget is Windows' own installer, built into Windows 11.
    winget --version

    ✓ Prints a version number → go to step 2.

    ✗ Not found → install “App Installer” from the Microsoft Store, then close and reopen PowerShell.

  2. Install the three programs Windows doesn't ship with Python, so it goes in here too.
    winget install Gyan.FFmpeg
    winget install yt-dlp.yt-dlp
    winget install Python.Python.3.12
    One at a time. If it asks you to accept terms, press Y then Enter.
  3. Close PowerShell, then open it again

    ⚠ Don't skip this. Windows only notices newly installed commands in a fresh window, and skipping it is the single most common reason people conclude the install failed.

  4. Confirm they landed
    ffmpeg -version
    yt-dlp --version
    python --version

    ✓ Each prints a version number. Setup done.

  5. Still not found? Reopen PowerShell once more, then restart the computer if it persists. Windows occasionally needs the restart to notice a new program's location.

Then add the skill itself

Start Claude Code by typing claude in your terminal, then type these at the Claude prompt — not at the plain terminal prompt you were just using. Getting those two confused is the most common snag on this whole page.

# first, in your terminal, start Claude Code:
$ claude

# then, at the Claude prompt that appears:
> /plugin marketplace add bradautomates/claude-video
> /plugin install watch@claude-video

# months from now, to pick up fixes:
> /plugin update watch@claude-video

# on Cursor, Codex, Copilot and the rest — plain terminal, needs Node.js:
$ npx skills add bradautomates/claude-video -g

Your first run

Still at the Claude prompt. This downloads the video, pulls the frames, grabs the captions and answers. If it works, you're finished.

> /watch https://youtu.be/dQw4w9WgXcQ what happens at the 30 second mark?
The skill checks its own setup. On that first run it looks for everything above and tells you plainly what's missing, so none of this has to be perfect in advance. The columns just save you the round trip.
Rather not touch a terminal at all? Use claude.ai in the browser instead. Download the watch.skill file from the project's latest release, then add it under Settings › Capabilities › Skills, and switch on Code execution and file creation in the same area first — without that, the skill has nothing to run. No terminal, no Homebrew, no Claude Code. Get the release file ↗

If something goes wrong

Five failures account for almost all of them, and not one is a problem with the skill.

What you seeWhat to do
claude: command not foundClaude Code isn't installed. Step zero, item 3.
brew: command not foundHomebrew isn't installed, or it is but didn't finish. Mac step 2 — including the two extra commands it prints at the end.
ffmpeg not found on Windows, right after installing itYou're in the old window. Close PowerShell, open it again, check again. Restart the machine if it persists.
/watch isn't recognisedThe two plugin lines were typed at the plain terminal prompt instead of the Claude prompt. Run claude first, then type them.
It answers, but vaguely, on a long videoCoverage is spread thin across the whole thing. Re-run on the part you care about with --start and --end.
It can't read the text on screenFrames are small by default. Add --resolution 1024.

Five words worth knowing

Add any of these to the end of a /watch command. You'll use the first two constantly and can ignore the rest until you need them.

--start 2:15 --end 2:45

Look at one stretch only. Denser coverage of the part that matters, a fraction of the cost, and a noticeably better answer. On anything longer than about ten minutes this is almost always the right move.

--resolution 1024

Makes on-screen text readable. Frames are deliberately small by default. Bump this whenever the point is slides, a dashboard, a terminal, code, or an ad with words on screen. The one you'll reach for most.

--no-whisper

Never sends audio anywhere. You get frames and nothing else. Your default for any internal Wix recording — the next section explains why.

--detail token-burner

Removes the frame limit. Full coverage of something long, at the cost of a much bigger chunk of your session. Reach for it when a focused window genuinely won't do.

--detail transcript

Words only, no pictures. Near-instant and almost free on a captioned video, because nothing gets downloaded. Good for “what was said” when you don't care what was shown.

What it costs you. Frames are images, and images aren't free. A fifty-minute video on default settings works out around 20,000 tokens of frames plus roughly 27,000 for the transcript — not alarming, not nothing. Narrowing with --start and --end is the cheapest habit you can build, and it usually improves the answer as well.

Where your data actually goes

The nuance here is the whole point. It isn't "safe" or "unsafe" — what matters is whether a step leaves Claude for somewhere nobody has vetted.

WhatWhere it goes
The video file itselfStays on your machine. Never uploaded anywhere.
The extracted framesSent to Claude as images — exactly like attaching a screenshot to a chat. The same terms your work already sits under.
Captions, when the video has themRead out of the video, then sent to Claude as text. Same footing as the frames.
The audio — only when there are no captionsSent to a third party, Groq or OpenAI, unless you switch it off. This is the one step that leaves Claude.
The temporary working folderFrames and audio clips land in a temp folder on your own disk. Claude clears it when you're done.
The rule for anything internal. Frames and transcript go to Claude, which is where your work already lives. The audio is the one step that goes somewhere else — so add --no-whisper and it never happens at all. Public video with captions never triggers it anyway. Don't point this at an unlisted internal recording without that flag.

Four things to try it on

Swap in your own link or file path. Everything else is written for you — run the command line first, then paste the question.

Take apart a competitor's adWhat they do in the first three seconds, and why it works
/watch YOUR-LINK --end 0:15 --resolution 1024

“Break down the hook. What happens in the first three seconds, what's on screen versus what's said, and what the strongest single moment is. Then tell me what you'd steal and what you'd avoid.”

Turn a webinar into notesAn hour of video into something you'll actually reread
/watch YOUR-LINK --resolution 1024

“Give me notes: the main argument, the three or four points that carried it, anything shown on screen that wasn't said out loud, and the timestamps I'd want to jump back to.”

Strip the hype from a launch videoWhat was actually announced, minus the adjectives
/watch YOUR-LINK --resolution 1024

“Tell me plainly what is actually new, separating confirmed features from vague claims. Note anything demonstrated on screen but not stated, and flag anything that sounded like a capability but wasn't one.”

Diagnose a bug from a screen recordingFor the recording someone sent you with no description
/watch ~/Desktop/recording.mov --no-whisper --resolution 1024

“Tell me exactly what the person did, step by step, where the behaviour goes wrong, and what the last correct state was before it broke. Quote any error text you can see on screen.”

Note the shape of these. The flags belong on the /watch line, before your question — not buried inside the sentence. Written that way they're instructions; written into the request they're just words.

One thing people get wrong

There's no maximum video length. You'll read that ten minutes is the limit — it isn't. That's guidance about accuracy in the default mode, not a ceiling. What thins out on a long video is coverage, not length: the frame budget spreads across the whole thing, so you get a sparse scan rather than a cut-off one. The fix isn't a shorter video, it's a narrower window — --start and --end, or --detail token-burner when you truly need all of it.

Before you install anything from GitHub

Six questions, about a minute. Most of the answers are on the project's front page.

  1. Who made it? A company, or one person? Neither is disqualifying — you just want to know.
  2. How many people use it? Stars and forks. Popularity isn't safety, but nobody-uses-this is worth noticing.
  3. When was it last touched? A project untouched for two years won't get fixed when it breaks.
  4. What's the licence? MIT and Apache mean you're free to use it. No licence at all means you technically aren't.
  5. What can it reach, and what can it change? Reading your files is one thing. Posting, sending or deleting is another.
  6. Does it run code on your machine? This one does. That's the highest-trust category — fine when you've done the five above, worth pausing on when you haven't.

None of that is a reason to avoid GitHub. It's a reason to spend a minute before, rather than an afternoon after. Check this one for yourself at github.com/bradautomates/claude-video ↗ — and Willow was vetted for you already, so start with The Willow Starter Kit →