#92 by GitHub stars

bradautomates/claude-video

Watch a video (URL or local path). Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls the transcript from captions (or local WhisperX / cloud Whisper fallback), and hands the result to the agent so it can answer questions about what's in the video. With a Gemini API key, Google's

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/watch/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

03ceb42f7fa2 → 03ceb42f7fa2

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 03ceb42f7fa2

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 03ceb42f7fa2c4439aca01752118044baabffb8f

git clone --filter=blob:none --no-checkout https://github.com/bradautomates/claude-video.git .hotskills/bradautomates-claude-video && git -C .hotskills/bradautomates-claude-video checkout --detach 03ceb42f7fa2c4439aca01752118044baabffb8f # Copy each selected skill directory from .hotskills/bradautomates-claude-video into .claude/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/bradautomates/claude-video.git .hotskills/bradautomates-claude-video && git -C .hotskills/bradautomates-claude-video checkout --detach 03ceb42f7fa2c4439aca01752118044baabffb8f # Copy each selected skill directory from .hotskills/bradautomates-claude-video into .agents/skills/<skill-name>/
20.1kGitHub stars
423stars in 7 days
1skill in this repository
0commits in 30 days

Heat

6.9
  • Star growth, last 7 daysAhead of 92% of tracked repositories
  • Star growth, last 24 hoursAhead of 96% of tracked repositories
  • Rank movement, last 7 daysAhead of 88% of tracked repositories
  • Commits, last 30 daysAhead of 0% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Aug 2, 2026Nov 7, 202620,051

Individual skills in this repository

How it works

watch

When your agent uses it

Watch a video (URL or local path). Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls the transcript from captions (or local WhisperX / cloud Whisper fallback), and hands the result to the agent so it can answer questions about what's in the video. With a Gemini API key, Google's agentic video model watches the full video instead.

What it loads into context

Frontmatter

107 tokens

Always available to the agent

SKILL.md

3,917 tokens

When the skill is activated

Reference documents

0 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Resolve the skill and interpreter
  2. First run and setup
  3. Watch and answer
  4. Sampling and transcript cues
  5. Transcription and failure handling
  6. Security and runtime access

Scripts executed separately

  • scripts/build-skill.sh
  • scripts/config.py
  • scripts/download.py
  • scripts/frames.py
  • scripts/gemini.py
  • scripts/local_whisperx.py
  • scripts/runtime.py
  • scripts/setup.py
  • scripts/transcribe.py
  • scripts/watch.py
  • scripts/whisper.py

Files

  • ../../.claude-plugin/marketplace.jsonasset608 bytes
  • ../../.claude-plugin/plugin.jsonasset590 bytes
  • ../../hooks/hooks.jsonasset283 bytes
  • ../../hooks/hooks.jsonasset283 bytes
  • .gitattributesasset274 bytes
  • .skillignoreasset168 bytes
  • SKILL.mdcore17,164 bytes
  • SKILL.mdcore17,164 bytes
  • SKILL.mdcore17,164 bytes
  • SKILL.mdcore17,164 bytes
  • SKILL.mdcore17,164 bytes
  • SKILL.mdcore17,164 bytes
  • SKILL.mdcore17,164 bytes
  • SKILL.mdcore17,164 bytes
  • SKILL.mdcore17,164 bytes
  • SKILL.mdcore17,164 bytes
  • scripts/build-skill.shruns1,391 bytes
  • scripts/config.pyruns7,258 bytes
  • scripts/download.pyruns10,822 bytes
  • scripts/frames.pyruns29,083 bytes
  • scripts/gemini.pyruns8,261 bytes
  • scripts/local_whisperx.pyruns7,099 bytes
  • scripts/runtime.pyruns1,377 bytes
  • scripts/setup.pyruns15,685 bytes
  • scripts/transcribe.pyruns4,435 bytes
  • scripts/watch.pyruns21,139 bytes
  • scripts/whisper.pyruns15,980 bytes
Read SKILL.md

# /watch

Run the bundled Python script. With the **gemini** engine (a `GEMINI_API_KEY` is configured) Google's video model watches the video and the report carries its timestamped answer for you to relay. With the **local** engine the script produces timestamped frames and a transcript; view the frames and answer from that evidence. Native captions come first; the chosen local or cloud backend is only a fallback. Transcript-only evidence cannot establish visual facts.

## Resolve the skill and interpreter

`SKILL_DIR` is the absolute directory containing this SKILL.md; `scripts/` sits beside it.

Commands below use `python3` for macOS/Linux. On Windows, verify a working Python 3.10+ with `python --version` or `py -3 --version` and use that interpreter. `python3` is not always a Store alias; inspect the actual result. In PowerShell use `$SKILL_DIR` rather than Bash variable syntax, for example:

```powershell
python "$SKILL_DIR/scripts/setup.py" --json
```
View the complete source on GitHub

Skills included

  • watch

Repository facts

License
MIT
Created
Apr 24, 2026
Last pushed
Sep 25, 2026
Forks
2,101
Open issues
57
Project activity
Active

Rank over the last 12 weeks

Now #92 · best #92 · up 2 in 30 days

  1. #95 on Oct 24
  2. #96 on Oct 25
  3. #94 from Oct 28 to Oct 29
  4. #96 from Oct 30 to Oct 31
  5. #93 from Nov 1 to Nov 3
  6. #92 since Nov 4
33 earlier periods
  1. #100 on Aug 2
  2. #96 from Aug 7 to Aug 8
  3. #95 from Aug 9 to Aug 11
  4. #94 on Aug 12
  5. #95 from Aug 13 to Aug 15
  6. #94 on Aug 16
  7. #95 from Aug 17 to Aug 20
  8. #94 on Aug 21
  9. #93 on Aug 22
  10. #94 from Aug 23 to Aug 24
  11. #95 from Aug 25 to Aug 29
  12. #94 on Aug 30
  13. #93 on Aug 31
  14. #94 on Sep 1
  15. #93 on Sep 2
  16. #94 on Sep 3
  17. #93 on Sep 4
  18. #94 on Sep 5
  19. #92 on Sep 6
  20. #93 from Sep 7 to Sep 13
  21. #94 from Sep 14 to Sep 19
  22. #95 from Sep 20 to Sep 23
  23. #96 from Sep 24 to Sep 27
  24. #97 on Sep 28
  25. #96 from Sep 29 to Oct 2
  26. #95 from Oct 3 to Oct 4
  27. #94 on Oct 5
  28. #93 on Oct 6
  29. #94 from Oct 7 to Oct 11
  30. #93 from Oct 12 to Oct 18
  31. #94 on Oct 19
  32. #93 from Oct 20 to Oct 21
  33. #94 from Oct 22 to Oct 23

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 2, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 10 notes
  • hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/watch/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/watch/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/watch/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/watch/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/watch/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/watch/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/watch/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/watch/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/watch/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 115 signals by file

.claude-plugin/marketplace.json

  • Network accessline 16
    "source": "./",       "category": "productivity",       "homepage": "https://github.com/bradautomates/claude-video"
  • Network accessline 17
    "category": "productivity",       "homepage": "https://github.com/bradautomates/claude-video"     }
  • Network accessline 18
    "homepage": "https://github.com/bradautomates/claude-video"

.claude-plugin/plugin.json

  • Network accessline 6
    "name": "Bradley Bonanno"   },   "homepage": "https://github.com/bradautomates/claude-video",
  • Network accessline 7
    },   "homepage": "https://github.com/bradautomates/claude-video",   "repository": "https://github.com/bradautomates/claude-video",
  • Network accessline 8
    "homepage": "https://github.com/bradautomates/claude-video",
  • Network accessline 9
    "repository": "https://github.com/bradautomates/claude-video",

skills/watch/SKILL.md

  • Broad permissionsline 1
    Bash, Read, AskUserQuestion
  • Access to secretsline 12
    [Credential-related source omitted]
  • Network accessline 40
    - `gemini` (recommended) — Google's Gemini model watches the whole video, including audio, and answers directly. Needs a free key from https://aistudio.google.com/apikey. YouTube URLs are sent to Google; local or downloaded videos are uploa
  • Network accessline 49
    Exit 3 means the key is missing; the command has created `~/.config/watch/.env` for it. Point the user to https://aistudio.google.com/apikey for a free key and let them choose how to add it:
  • Access to secretsline 51
    [Credential-related source omitted]
  • Access to secretsline 52
    [Credential-related source omitted]
  • Access to secretsline 102
    [Credential-related source omitted]
  • Access to secretsline 121
    [Credential-related source omitted]

skills/watch/scripts/build-skill.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

skills/watch/scripts/config.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 12
    [Credential-related source omitted]
  • Access to secretsline 96
    [Credential-related source omitted]
  • Access to secretsline 97
    [Credential-related source omitted]
  • Access to secretsline 101
    [Credential-related source omitted]
  • Access to secretsline 103
    [Credential-related source omitted]
  • Access to secretsline 114
    [Credential-related source omitted]
  • Access to secretsline 116
    [Credential-related source omitted]
  • Access to secretsline 117
    [Credential-related source omitted]
  • Access to secretsline 127
    [Credential-related source omitted]
  • Access to secretsline 135
    [Credential-related source omitted]
  • Access to secretsline 152
    [Credential-related source omitted]

skills/watch/scripts/download.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 29
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Access to secretsline 33
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 134
    [Credential-related source omitted]
  • Access to secretsline 135
    [Credential-related source omitted]
  • Access to secretsline 166
    [Credential-related source omitted]
  • Access to secretsline 167
    [Credential-related source omitted]

skills/watch/scripts/frames.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/watch/scripts/gemini.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 20
    API = 'https://generativelanguage.googleapis.com'
  • Network accessline 23
    r'^https?://(?:(?:www\.|m\.|music\.)?youtube\.com/(?:watch\?\S*\bv=|shorts/|live/)|youtu\.be/)\S+$', re.I) _HINTS = {     'auth': 'check GEMINI_API_KEY (create one at https://aistudio.google.com/apikey)',
  • Network accessline 24
    _HINTS = {     'auth': 'check GEMINI_API_KEY (create one at https://aistudio.google.com/apikey)',     'quota': 'the key is rate-limited or out of quota; wait or check its plan',
  • Network accessline 25
    [Credential-related source omitted]
  • Access to secretsline 25
    [Credential-related source omitted]

skills/watch/scripts/local_whisperx.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 66
    [Credential-related source omitted]

skills/watch/scripts/runtime.py

  • Executable scriptline 1
    Executable file

skills/watch/scripts/setup.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 26
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 29
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 55
    [Credential-related source omitted]
  • Network accessline 94
    def _install_macos(missing):     if not _which('brew'):         return False, 'Homebrew is missing. Install it from https://brew.sh, then rerun setup.'
  • Network accessline 95
    if not _which('brew'):         return False, 'Homebrew is missing. Install it from https://brew.sh, then rerun setup.'     _install_step(['brew', 'install', *_brew_pkg(missing)], 'Install media dependencies')
  • Network accessline 96
    return False, 'Homebrew is missing. Install it from https://brew.sh, then rerun setup.'
  • Dangerous shell operationline 104
    hints.append('apt: sudo apt install ffmpeg (or the equivalent package for your distribution)')
  • Network accessline 104
    hints.append('apt: sudo apt install ffmpeg (or the equivalent package for your distribution)')     if 'yt-dlp' in missing:         hints.append('Install pipx, then: pipx install "yt-dlp[default,curl-cffi]"; pipx ensurepath. For YouTube also
  • Network accessline 105
    if 'yt-dlp' in missing:         hints.append('Install pipx, then: pipx install "yt-dlp[default,curl-cffi]"; pipx ensurepath. For YouTube also install Deno: https://deno.com/')     return '\n'.join(hints)
  • Network accessline 106
    hints.append('Install pipx, then: pipx install "yt-dlp[default,curl-cffi]"; pipx ensurepath. For YouTube also install Deno: https://deno.com/')
  • Access to secretsline 158
    [Credential-related source omitted]
  • Access to secretsline 165
    [Credential-related source omitted]
  • Network accessline 203
    if engine == 'gemini':         if not load_gemini_key():             print(f'[setup] Add GEMINI_API_KEY privately to {CONFIG_FILE} (free key: https://aistudio.google.com/apikey), '
  • Network accessline 204
    if not load_gemini_key():             print(f'[setup] Add GEMINI_API_KEY privately to {CONFIG_FILE} (free key: https://aistudio.google.com/apikey), '                   'then rerun --engine gemini. Local videos will be uploaded to Google for
  • Network accessline 205
    [Credential-related source omitted]
  • Access to secretsline 205
    [Credential-related source omitted]
  • Access to secretsline 231
    [Credential-related source omitted]
  • Network accessline 246
    if system == 'Darwin':         if not _which('brew'):             raise SystemExit('WhisperX setup needs uv. Install Homebrew from https://brew.sh, then rerun setup.')
  • Network accessline 247
    if not _which('brew'):             raise SystemExit('WhisperX setup needs uv. Install Homebrew from https://brew.sh, then rerun setup.')         _install_step(['brew', 'install', 'uv'], 'Install uv')
  • Network accessline 248
    raise SystemExit('WhisperX setup needs uv. Install Homebrew from https://brew.sh, then rerun setup.')
  • Network accessline 249
    _install_step(['brew', 'install', 'uv'], 'Install uv')     elif system == 'Windows':         _install_step(['powershell', '-NoProfile', '-ExecutionPolicy', 'ByPass', '-c', 'irm https://astral.sh/uv/install.ps1 | iex'], 'Install uv')
  • Network accessline 250
    elif system == 'Windows':         _install_step(['powershell', '-NoProfile', '-ExecutionPolicy', 'ByPass', '-c', 'irm https://astral.sh/uv/install.ps1 | iex'], 'Install uv')     elif system == 'Linux':
  • Network accessline 251
    _install_step(['powershell', '-NoProfile', '-ExecutionPolicy', 'ByPass', '-c', 'irm https://astral.sh/uv/install.ps1 | iex'], 'Install uv')
  • Network accessline 253
    # Fetch first: a failed curl must not be hidden by a successful empty sh.
  • Network accessline 254
    with tempfile.TemporaryDirectory(prefix='watch-uv-') as temporary:             script = Path(temporary) / 'install.sh'             _install_step(['curl', '-LsSf', 'https://astral.sh/uv/install.sh', '-o', script], 'Download uv installer')
  • Network accessline 255
    script = Path(temporary) / 'install.sh'             _install_step(['curl', '-LsSf', 'https://astral.sh/uv/install.sh', '-o', script], 'Download uv installer')             _install_step(['sh', script], 'Install uv')
  • Network accessline 256
    _install_step(['curl', '-LsSf', 'https://astral.sh/uv/install.sh', '-o', script], 'Download uv installer')
  • Network accessline 257
    _install_step(['sh', script], 'Install uv')     else:         raise SystemExit('Install uv from https://docs.astral.sh/uv/ before retrying WhisperX setup.')
  • Network accessline 258
    else:         raise SystemExit('Install uv from https://docs.astral.sh/uv/ before retrying WhisperX setup.')     installed = _which('uv')
  • Network accessline 259
    raise SystemExit('Install uv from https://docs.astral.sh/uv/ before retrying WhisperX setup.')
  • Network accessline 290
    if platform.system() in ('Linux', 'Windows'):             _install_step([uv, 'pip', 'install', '--python', python, 'torch==2.8.0', 'torchaudio==2.8.0',                            '--index-url', 'https://download.pytorch.org/whl/cpu'], 'Inst
  • Network accessline 291
    _install_step([uv, 'pip', 'install', '--python', python, 'torch==2.8.0', 'torchaudio==2.8.0',                            '--index-url', 'https://download.pytorch.org/whl/cpu'], 'Install CPU PyTorch wheels')         _install_step([uv, 'pip',
  • Network accessline 292
    '--index-url', 'https://download.pytorch.org/whl/cpu'], 'Install CPU PyTorch wheels')

skills/watch/scripts/transcribe.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/watch/scripts/watch.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 25
    [Credential-related source omitted]
  • Access to secretsline 141
    [Credential-related source omitted]
  • Access to secretsline 143
    [Credential-related source omitted]
  • Access to secretsline 159
    [Credential-related source omitted]
  • Access to secretsline 160
    [Credential-related source omitted]
  • Access to secretsline 161
    [Credential-related source omitted]
  • Access to secretsline 162
    [Credential-related source omitted]
  • Access to secretsline 268
    [Credential-related source omitted]
  • Access to secretsline 271
    [Credential-related source omitted]

skills/watch/scripts/whisper.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 26
    [Credential-related source omitted]
  • Network accessline 31
    GROQ_ENDPOINT = "https://api.groq.com/openai/v1/audio/transcriptions"
  • Network accessline 34
    OPENAI_ENDPOINT = "https://api.openai.com/v1/audio/transcriptions"
  • Access to secretsline 177
    [Credential-related source omitted]
  • Access to secretsline 189
    [Credential-related source omitted]
  • Access to secretsline 336
    [Credential-related source omitted]
  • Access to secretsline 339
    [Credential-related source omitted]
  • Access to secretsline 341
    [Credential-related source omitted]
  • Access to secretsline 351
    [Credential-related source omitted]
  • Access to secretsline 357
    [Credential-related source omitted]
  • Access to secretsline 360
    [Credential-related source omitted]
  • Access to secretsline 367
    [Credential-related source omitted]
  • Access to secretsline 368
    [Credential-related source omitted]
  • Access to secretsline 370
    [Credential-related source omitted]
  • Access to secretsline 372
    [Credential-related source omitted]
  • Access to secretsline 375
    [Credential-related source omitted]
  • Access to secretsline 385
    [Credential-related source omitted]

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 3 facts
  • Contacts astral.sh, which SKILL.md, the README and the plugin manifest do not mentionwatch/scripts/setup.py:251High confidence
  • Contacts docs.astral.sh, which SKILL.md, the README and the plugin manifest do not mentionwatch/scripts/setup.py:259High confidence
  • Contacts download.pytorch.org, which SKILL.md, the README and the plugin manifest do not mentionwatch/scripts/setup.py:292High confidence
Signal confidence: 115 facts

and 65 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/watch/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/watch/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/watch/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/watch/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.

Explore alternatives and comparisons

Add this badge to your README

It updates every night and links to this page.

bradautomates/claude-video: #92 on hotskills, 20.1k stars

[![bradautomates/claude-video on hotskills](https://hotskills.dev/badge/bradautomates-claude-video.svg)](https://hotskills.dev/skill/bradautomates-claude-video/)