ASK THE VIDEO · SKIP THE FILLERTHE USEFUL PART · 03:36 → 12:54PRICING FOUND · $1/$6 PER 1M

/watch
Ask a video.
Skip the parts you don't need.

Blind judges: 18/18 for this fork, 17/18 for the original, at 23–83% fewer tokens. Ask a video a question and /watch retrieves only the sections, spoken details, and screenshots that answer it, instead of making the AI read everything. Ten videos blind-judged so far; this fork has never scored below the original. Risk-free by construction: on any problem it silently runs the original method instead. A grateful fork of Brad Bonanno's claude-video.

# Claude Code /plugin marketplace add abe238/claude-video-plus
/plugin install watch@claude-video-plus COPIED
# Codex · Cursor · Copilot · Gemini CLI · 50+ hosts npx skills add abe238/claude-video-plus -g COPIED
18/18 vs 17/18blind-judged answer quality, this fork vs the original, keys frozen before any run
23–42% lesstokens on the same videos at the same frame budget, default mode
up to 83% lessevidence mode: ask a question, receive only what answers it
5 surfacesinjection-hardened: description, title, uploader, chapters, transcript

Current status: the latest release is stable. No API key, ever; audio never leaves your machine by accident; short videos route to the original method automatically; and every number on this page links to raw, published data. Per-release detail lives in the changelog.

★ Star it on GitHub Download watch.skill
What it does

It reads less video before answering.

On a 38-minute test video, the original method sent the AI 100 screenshots plus the full transcript: 50,941 tokens. Evidence mode read the question first, chose the sections that answer it, and kept a receipt for every choice: 11,505 tokens, same answer.

$ watch.py "$URL" --detail evidence --question "what's actually new, skip the hype?"
Question type: specific  // summaries still keep the full transcript
Useful section  [00:12–03:36] GPT-5.6 announcement
Useful section  [34:02–38:16] GPT-5.6 compared with Fable
Numbers found   [23:05–23:25] API pricing $5/$30 · $2.50/$15 · $1/$6 + screenshot of the table
Screen checked   [06:50] speaker says "you can see" → save that screenshot
Material sent to AI: 11,505 tokens instead of 50,941 77% less

It keeps complete ideas

It selects whole relevant sections, not random sentences. That helps when the speaker explains something without using the exact words in your question.

It looks for hard facts

Prices, benchmark scores, and specifications are kept even when they appear somewhere unexpected. It also saves the matching screenshot when the important numbers are shown on screen.

It checks what is on screen

The AI is told to read tables and pages instead of relying only on speech. In our test, that helped catch a pricing statement that contradicted the presenter's own list.

It has a safe backup

If there are no captions or the smarter search fails, /watch switches back to the original method instead of returning an incomplete result.

The receipts

Blind-judged against the original it forks.

Nine fresh videos: a TED talk, Karpathy's hour on LLMs, screencasts, shorts, and two music-video stress tests. Answer keys were written from the videos and hash-committed before any pipeline ran, the reports were anonymized, and the judges were blind. The comparison target is the untouched upstream repo at its pinned control commit.

Blind-judged resultOriginalThis fork
Answer quality, five substantive videos (max 18)17/1818/18
96-minute podcast, four questions8/88/8, at 42% fewer tokens
Tokens, default mode, equal frame budget100%58–77% (23–42% less)
Tokens, evidence mode (videos over 9 min)no such mode12–61% (39–88% less)
Worst uncovered stretch on the podcast11m 08s6m 26s

The original's dropped point tells the whole story. Asked which repo the video covered, its caption-only pipeline returned a garbled name ("maltbot"). This fork read the author's description, a surface the original never touches, and returned the exact name. The losses are published too: on music videos this fork can cost 7% more (nothing to retrieve, and the description adds bulk), and the one retrieval miss this benchmark surfaced was root-caused, fixed, re-judged 4/4 the same day, and kept as a regression test.

The sealed self-benchmark came first. Before the head-to-head, a one-time sealed run (five unseen videos, ten pre-frozen questions, three blind judges, cryptographic receipt) compared evidence mode against the full-timeline path: same answer quality (8.83 vs 8.80), 56% less material on average, about 14 seconds faster. Development spread ran 60–88% savings on targeted questions.
Read every benchmark, wins and losses The sealed run's raw data
Beyond the token count

Four things it does that the original does not.

Cheaper is the headline, but it is not the only difference. These shipped after the sealed run, so the numbers above do not account for them.

It reads the description, because speech recognition cannot spell

A name the model has never heard comes out of the audio mangled: OmniRoute becomes "Omniroot", strix becomes "stricks". On a video about 13 GitHub repos, the transcript recovered 1 of the 13 names the video was about. The author's description carried all 13, verbatim, and it was already on disk, downloaded and thrown away. Now it is read on every run, for about 600 tokens.

It is bounded, labeled untrusted, and never authoritative for what happens: the video still owns that. The description owns exact spellings, product names, and the author's own links. Answering from the description alone is precisely what a hostile uploader would want, so it is not allowed.

No API key. Your audio never leaves your machine.

It never asks you for a key, and a key on its own does nothing. Transcription exhausts every local option first: a same-name subtitle sidecar, a loopback speech server, YAP on macOS, and the openai-whisper CLI on any platform. All are detected, never installed.

Cloud Whisper exists and is doubly opt-in: it needs both a key and --allow-remote-transcription. Nothing is uploaded by accident, and on Linux there is now a real local model rather than a fall-through to the cloud.

Half the transcript, losslessly

YouTube's auto-captions restate the tail of each line in the next one. Collapsing that overlap cut a 43-minute transcript from 27,814 to 14,766 tokens with every spoken line still present (99.7% recall against an independent reconstruction; the remainder are speaker-change markers, not words).

This lands on plain summaries and the four original detail modes, the paths that ask no question and therefore cannot benefit from evidence mode at all.

Anything the video says is treated as hostile

The description, title, uploader name, chapter titles, and transcript are all written by whoever uploaded the video. Every one of them is neutralized before the model reads it: none can forge the report's trust markers or break out of its code fences to impersonate instructions. Of the six video skills we code-reviewed in July 2026, only one other treats video text as an injection surface at all, and it covers the transcript only.

Don't take our word for it: run the 30-second fixture against any video tool, including ours. The local speech server is held to the same standard: it is refused if it tries to redirect your audio somewhere else.

What is implemented now

Ready to use, verified end to end.

The code includes resilient video fetching, local-first transcription, safe reuse, portable evidence, optional semantic search, and dependency-free visual scoring. It keeps secrets outside agent conversations, marks media-derived content as untrusted evidence, and passes the complete local suite, hosted macOS/Linux matrix, isolated installation lifecycle, and deterministic bundle audit.

see CIdeterministic suite on main, live from CI
5/5hosted macOS/Linux Python jobs passing
83da59fthe exact untouched original version used for comparisons
latestcurrent stable release

Same original every time

The harness refuses a modified checkout, changed executable, mismatched source, unsupported setting, or dirty output directory.

Captions cannot quietly change

Caption files are copied and hashed immediately after each download call, before the original code continues, so a later overwrite cannot rewrite what the test says the AI read.

Secrets stay outside the test

The original runs with an isolated home and configuration. API keys, browser cookies, Git overrides, and unrelated environment variables are not inherited.

Failures leave evidence

Commands, versions, hashes, raw output, exit status, timeouts, and integrity failures are kept in machine-readable receipts.

Inspect the verification evidence
What to know before using it

It is promising, not magic.

Gratitude

Built on someone else's good decisions.

This fork exists because Brad Bonanno built and openly shared claude-video. Its caption-first design, simple installation, and reliable backup behavior made this project possible. The upstream history, MIT license, and authorship are preserved. Brad makes content about building with AI on YouTube, check them out. The media tools are FFmpeg and yt-dlp. Transcription is local-first: a loopback STT server, YAP on macOS, or the openai-whisper CLI anywhere, all run before Groq or OpenAI, which need explicit authorization before any audio leaves your machine. Research credits and links are in the improvement plan.

Other projects whose ideas are being evaluated and credited

No credit here implies that code was copied or that a listed feature shipped. The provenance record documents whether each source inspired a design, contributed an adapted mechanism, was deferred, or was rejected after testing: taeloautomates/claude-video, thedirektor/claude-video, RadoslavSheytanov/claude-video, Tigertycoon/claude-video, manojbadam/claude-video, CJNA/claude-video, sciencemj/claude-video-local, troyshelton/claude-video, jsstn/claude-video, joweiser/claude-video, JoseBallestas/claude-video, danielfrey63/claude-video, and finnvoor/yap.