From 304b639b4db1db2374bd59cba4dc958d43f3d4f6 Mon Sep 17 00:00:00 2001 From: bradautomates Date: Mon, 29 Jun 2026 23:16:17 +1000 Subject: [PATCH] Add frame dedup and Whisper auto-chunking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Frame extraction now runs a perceptual dedup pass (default on, --no-dedup to disable) that drops near-identical frames before the budget cap, so the budget goes to distinct content instead of held slides/static recordings. The Frames report line notes how many near-duplicates were dropped. Whisper transcription splits audio over the 25 MB upload cap into evenly sized chunks, transcribes each, shifts segment timestamps back into source time, and tolerates partial failures (only fails if every chunk fails) — length alone no longer fails transcription. token-burner is exempt from the long-video sparse-scan warning since it keeps every scene-change frame. README/SKILL.md updated. Adds test_dedup.py and test_whisper.py. Co-Authored-By: Claude Opus 4.8 (1M context) --- README.md | 52 +++++++--- skills/watch/SKILL.md | 3 +- skills/watch/scripts/frames.py | 162 ++++++++++++++++++++++++++--- skills/watch/scripts/watch.py | 21 +++- skills/watch/scripts/whisper.py | 177 ++++++++++++++++++++++++++++++-- tests/test_dedup.py | 162 +++++++++++++++++++++++++++++ tests/test_watch.py | 16 +++ tests/test_whisper.py | 157 ++++++++++++++++++++++++++++ 8 files changed, 707 insertions(+), 43 deletions(-) create mode 100644 tests/test_dedup.py create mode 100644 tests/test_whisper.py diff --git a/README.md b/README.md index 39e6389..3211137 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ With Claude Video `/watch` you can paste a URL or a local path, ask a question, ## Why this exists -I built this because I'm constantly using video to keep up with content. If I see a YouTube video that's blowing up, I want to know how the creator structured the hook — what's on screen in the first 3 seconds, what they said, why it worked. That used to mean watching it myself with a notepad. Now I just paste the URL and ask. +I run a [YouTube channel](https://www.youtube.com/@bradbonanno) and a business, [Solaris Automation](https://www.solarisautomation.io/), so I'm constantly using video to keep up with content. If I see a YouTube video that's blowing up, I want to know how the creator structured the hook — what's on screen in the first 3 seconds, what they said, why it worked. That used to mean watching it myself with a notepad. Now I just paste the URL and ask. The other half is summarization. Most YouTube videos don't deserve 20 minutes of my attention. I hand the URL to Claude, it pulls the transcript, and tells me what actually happened. If the visual matters, frames come along too. If it's a podcast or a talking head, transcript is enough. @@ -44,12 +44,20 @@ Claude is great at reading and synthesizing — but until now, video was the one **Summarize a video.** `/watch https://youtu.be/ summarize this` does the obvious thing — pulls the structure, the key moments, what was actually said and shown. Faster than watching at 2x. +**Cut the hype out of an update video.** `/watch https://youtu.be/ what's actually new — skip the hype` Strip a "game-changer" feature drop down to the few things that matter, so you get the substance without ten minutes of intro and overselling. + +**Jump to the one answer in a long tutorial.** `/watch https://youtu.be/<2hr-tutorial> how do they set up the webhook?` Instead of scrubbing an hour of video for a 30-second answer — or matching a vague transcript and watching anyway — Claude finds the moment and tells you what's on screen there. + +**Read a screen-share recording the transcript can't.** `/watch standup.mp4 what was on the shared screen when they decided?` When a meeting transcript collapses into "if you look here" and "make it look like this," the words stop carrying the meaning — the frames recover what was actually being shown. + +**Turn a playlist into notes.** `/watch https://youtu.be/