From video-intel
Query a pre-built video corpus (mindmaps, transcripts, concept taxonomy, hybrid search index) produced by the video-intel skill. Use whenever the user wants to: find videos about a topic; look up what a creator said about something; retrieve evidence or quotes from transcripts; browse concepts in the library; synthesize a cross-creator brief ("nugget") grounded in indexed evidence; ask about corpus status (last scan, video counts); summarize a specific video that is already in the corpus; decide if a video is worth watching based on its indexed content. This skill is read-only against an existing corpus - it does not scan, index, or transcribe. Safe to install globally and invoke from any project. Trigger phrases: "find videos about [X]", "search my videos for [X]", "what videos cover [X]", "what did [creator] say about [Y]", "evidence for [claim]", "when did [creator] mention [Z]", "nugget brief on [X]", "consultant brief on [X]", "what do creators say about [X]", "agreements and disagreements on [X]", "synthesize insights across creators", "mental models across creators", "find the nuggets about [X]", "show corpus status", "when was this last scanned", "what concepts are in my library", "what topics recur across channels", "summarize this video", "is this worth watching", "what should I watch", "verify whether [creator] said [paraphrase]", "fact-check this quote against [creator]'s videos", "did [creator] really say [X]", "is this [creator] quote real", "find the source for this [creator] claim", "check the corpus for the quote [paraphrase]", any YouTube URL followed by a question about its content. For scanning new videos, transcribing, generating mindmaps, rebuilding the index, or any write operation on the corpus, use the video-intel skill from the plugin repo instead - those operations require channels configured and API keys the search skill does not need.
How this skill is triggered — by the user, by Claude, or both
Slash command
/video-intel:video-intel-searchThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Read-only query access to the video corpus. Pairs with the `video-intel` curate
Read-only query access to the video corpus. Pairs with the video-intel curate
skill, which builds and maintains the corpus from the plugin repo.
Three commands against the pre-built corpus:
search - find videos and transcript passages by concept, keyword, or
semantic similarity. Two modes: concept (fast, no API calls, returns video
matches) and --vector (hybrid BM25 + vector + RRF, returns transcript
passages with timestamps).
nugget - synthesize a consultant-grade cross-creator brief on a topic.
Retrieves top-K evidence via hybrid search, feeds it through a Gemini-backed
synthesis prompt, returns attributed insights with timestamps.
status - report on corpus freshness (last scan per channel, video
counts, taxonomy size). No API calls.
This skill is safe to install globally via a user-level
~/.claude/settings.json entry. From any CWD, it resolves the corpus via:
config.yaml (if running from the plugin checkout)VIDEO_INTEL_OUTPUT_DIR env var (absolute path to your corpus)~/.video-intel/config.yaml with output_dir: and optional vector_db_dir:See the plugin repo's CLAUDE.md for the full install procedure.
video-intel's
scan / process / index commands from the plugin repo first.VOYAGE_API_KEY - required for --vector search and nugget. Concept
search (default) works without it. Get a free key at
https://dash.voyageai.com/.pip install video-intel[vector] (installs lancedb,
voyageai) for hybrid search; the base install covers concept search.search concept mode: local lookup against taxonomy.json, instant.search --vector: Voyage embedding call + LanceDB hybrid query, ~1-3 seconds.nugget: hybrid search + Gemini synthesis call, 30-90 seconds. Use a
long bash timeout (600000ms / 10 min) and --log-level info for progress.--log-level goes BEFORE the subcommand. python video_intel.py --log-level info nugget "query" works; python video_intel.py nugget "query" --log-level info errors with argparse. Applies to every subcommand.Do not
grep/Grep/rgtheoutput_dirdirectory directly when verifying a paraphrase. The speaker's vocabulary almost never matches a paraphrase verbatim, so keyword search returns false negatives. Always start withsearch --vector, which uses semantic similarity to overcome that vocabulary mismatch. Direct file search is only appropriate when the user has already given you an exact phrase known to appear in transcripts.
# Concept match - fast, no API calls, returns videos + artifact paths
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" search "skills standard"
# Hybrid search - returns full transcript passages with timestamps
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" search "150-line skill limit" --vector
# Filter to a specific channel
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" search "context window" --vector --channel natebjones
# Date-window filter for "last N days" queries
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" search "recent takeaways" --vector --channel natebjones --since 30d
Mode reference:
| User intent | Command | Notes |
|---|---|---|
| "which videos cover X?" (topic only, no creator) | search "X" | Concept match. Fast, no API calls. Video list + paths. |
| "what did they say about Y?" | search "Y" --vector | Hybrid search. Returns transcript passages (up to 3000 chars) with timestamps and speaker turns. |
| "find videos about [creator] [topic]" / "[creator] on [topic]" | search "topic" --vector --channel C | Creator + topic = evidence query. Go to --vector from the start. Concept search returns topic matches ranked by relevance across all creators and usually crowds out the specific creator's videos. |
| "verify [creator] said [paraphrase]" / "fact-check this quote" / "did [creator] really say [X]" | search "<key noun phrase>" --vector --channel C then nugget if multiple chunks help | Paraphrase verification is a semantic question, not a keyword question. The speaker's vocabulary likely differs from the paraphrase - vector match catches it where keyword grep misses. Try 2-3 noun-phrase variants if the first returns nothing. |
| "recent X from [creator]" | search "X" --vector --channel C --since Nd | Pre-filtered date window, no recency bias. |
| "is this [URL] worth watching" | search "<title or topic>" --vector | If indexed, returns evidence; if not, tell the user to run the curate skill to process it. |
| "summarize this video" | search "<video title>" | If indexed, open the mindmap path from the result. If not, route to curate. |
Hybrid results include evidence directly - follow-up transcript reads are
usually unnecessary. Timestamps in result URLs (&t=<seconds>) jump to the
exact moment.
Routing tip: when a query combines a creator name and a topic (e.g. "Simon Scrapes on memory systems"), prefer
--vector --channel <name>from the start. Concept search is fast but returns topic-dominant results that can drown out a specific creator's contribution.
# "What do creators say about X, together?" with attribution and emergent insights
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" nugget "LightRAG vs OpenBrain architectural tension"
# Restrict to recent coverage
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" nugget "context engineering" --since 90d
# Restrict to specific creators
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" nugget "graph RAG" --channel engineerprompt
# Save the briefing to a file
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" nugget "second brain patterns" --output brief.md
Output structure: Query in Focus -> Creators Surveyed -> Consensus -> Divergence -> Noteworthy Nuggets (mental models, metaphors, warnings, workarounds) -> Emergent Synthesis (1+1=3) -> Follow-Up Questions. Every claim cites the creator and timestamp.
Options:
--limit N - max excerpts feeding synthesis (default 15)--channel X - restrict to one creator--since Nd - time-window filter (Nd or YYYY-MM-DD)--min-relevance F - minimum RRF relevance score--no-expand - disable Stage-1 taxonomy query expansion--output PATH - write briefing to file instead of stdout# Report freshness per channel, video counts, taxonomy size
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" status
| User intent | Skill |
|---|---|
| Query existing corpus | video-intel-search (this) |
| Summarize a video already scanned | video-intel-search (look up in corpus) |
| Scan YouTube channels for new videos | video-intel (curate) |
| Transcribe a video or local MP4 | video-intel (curate) |
| Rebuild the index, taxonomy, or run dedupe | video-intel (curate) |
| Prune shorts, remove shorts, delete YouTube Shorts from corpus | video-intel (curate) |
| Process a local MP4 through the full pipeline | video-intel (curate) |
If the user asks "summarize this [URL]" and the video is not in the corpus, this skill's output tells them to switch to the curate skill to process the video first. Do not attempt to scan or transcribe from this skill.
The repo ships a 25-query grounded golden dataset at
tests/evals/golden_dataset.yaml. Run before/after changes that touch retrieval:
pytest tests/evals/ -v -s
See docs/search-internals.md, docs/adr/ADR-0013-hybrid-search-rrf.md, and
docs/adr/ADR-0017-kb-layer-strategy.md for the retrieval design.
npx claudepluginhub dzivkovi/video-intel --plugin video-intelCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.