video-ingest
Skill0 starsChanged 2 months agoApache-2.0View on GitHub
Pull metadata + transcript from any YouTube, Instagram, X/Twitter, TikTok, Vimeo, or other yt-dlp-supported video URL so Claude can actually "watch" it. Use when the user pastes a video link and asks "watch this", "what's this video about", "summarize this", "let's talk about this video", or any time a URL points at video content. First tries subtitles (fast, no GPU). Optional `--whisper` fallback transcribes audio locally via faster-whisper.
- Deletes or force-pushes
11 other projects use a version of this.
Adopted by
Most recently taken up by
- Nicegarrry/claude-skillstheir own version, first seen Oct 13, 2026
- joelhooks/joelclawtheir own version, first seen Oct 8, 2026
- putervision/vision-memory-mcptheir own version, first seen Oct 8, 2026
- putervision/state-memory-mcptheir own version, first seen Sep 28, 2026
- putervision/world-model-mcptheir own version, first seen Sep 26, 2026
- putervision/behavior-mcptheir own version, first seen Sep 26, 2026
Used with
Projects with it also use state-memory-mcp, vision-memory-mcp and 4 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
putervisionSkillstate-memory-mcp
Teaches the agent to use the state-memory-mcp MCP server to track workflow state, tasks, decisions, blockers, artifacts, plans, milestones, and their semantic relationships in a persistent graph database.
Also in 7 projects that use this
putervisionSkillvision-memory-mcp
Teaches the agent to use the Visual Memory MCP server to cache webpage and application screenshots, matching layout states and avoiding redundant LLM vision calls.
Also in 7 projects that use this
- +4 more from putervision
Other versions11 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 11
- putervision/state-memory-mcp★ 114same name
- joelhooks/joelclaw★ 65same name
- gavishap/omnia-vault★ 53same name
- putervision/world-model-mcp★ 50same name
- putervision/vision-memory-mcp★ 48same name
- putervision/spc★ 41same name
- putervision/behavior-mcp★ 24same name
- putervision/WebCrypt★ 24same name
- putervision/agent-reasoning-mcp★ 22same name
- andrewcstevens/ClaudeSkills★ 0same name
1 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository17 other files it gives its agents.
- aria-skill-candidatesSkill
- aria-skill-templateSkill
- aria-skill-testSkill
- call-scrubSkill
- cloudflare-dns-deploySkill
- doc-to-pdfSkill
- ffmpeg-audioSkill
- github-repo-deploySkill
- goal-to-planSkill
- headless-claudeSkill
- live-code-watchSkill
- premortemSkill
- screen-describeSkill
- session-cabinetSkill
- skill-manifest-genSkill
- sprint-scaffoldSkill
- surgical-patchSkill
The file
Files
Video Ingest
I cannot watch video. This skill turns a video URL into text I can reason over — title, uploader, duration, description, and the full transcript — so the conversation can actually be about the content of the video.
Steps
- Run the collector. Pass the URL as-is — yt-dlp handles shortened forms, redirects, query strings, and ~1000 sites:
python3 ~/.claude/skills/video-ingest/ingest.py "<url>" - Flags worth knowing:
--brief— metadata + first 800 chars of transcript. Use this first when the user just wants a quick take; re-run without--briefif they want to go deep.--whisper— if the video has no subtitles (common on Instagram reels, some X posts, raw uploads), download the audio and transcribe with local faster-whisper. Slower (CPU, ~1× realtime onbase.en) but works offline. Skip unless needed — most YouTube content has auto-captions.--timestamps— keep[hh:mm:ss]markers in the transcript (subtitles only, ignored on whisper).--lang xx— subtitle language root (defaulten). Use when the source is non-English.--json— machine-readable. Use when piping into another skill or saving structured.--no-cache— bypass the/tmp/video-ingest-cache/cache. Default behavior caches per video-id so re-asking is instant.
- Read the report. Sections in order: TITLE, UPLOADER, DURATION, UPLOADED, VIEWS, URL, DESCRIPTION, TRANSCRIPT. The transcript line shows the source (
subtitlesvswhisper) and total char count so you know how much you're reasoning over. - Then talk about the video. Don't just dump the transcript back at the user — that's what they pasted the link to avoid. Summarize the thesis, pull the 3-5 most load-bearing points, and connect it to whatever context they brought to the conversation (a project, a doctrine memory, a current build). If the user wants verbatim quotes, fetch them from the transcript text in your context.
Supported sources
yt-dlp handles: youtube, youtu.be, youtube shorts, instagram (reels + posts), x.com / twitter, tiktok, vimeo, facebook, reddit (v.redd.it), twitch clips, soundcloud, and ~1000 more. If a site fails, the error message will say so explicitly — don't retry blindly.
Notes
- Subtitle-first by design. Auto-captions on YouTube are good enough for content reasoning even with the occasional homophone. Don't reach for whisper unless subtitles genuinely aren't there.
- Cache lives at
/tmp/video-ingest-cache/<id>.json. Survives until the box reboots. Manually clear withrm -rf /tmp/video-ingest-cacheif a video was re-uploaded and you need a fresh pull. - Whisper model defaults to
base.en(fast, low quality). Override withVIDEO_INGEST_WHISPER_MODEL=small.enormedium.enenv var for better accuracy on hard audio. - For private/auth-walled videos (Instagram private accounts, paid YouTube), yt-dlp can take a
--cookies-from-browserflag, but this skill doesn't expose it. If you need that, extend the script — don't try to work around it in the shell. - Output goes to stdout. Capture into a file with
> /tmp/foo.txtif a transcript is gigantic and you want to grep it instead of loading into context.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

