| name | video-intel-search |
| description | 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.
|
Video Intel Search
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.
What This Skill Does
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.
Portability
This skill is safe to install globally via a user-level
~/.claude/settings.json entry. From any CWD, it resolves the corpus via:
- Plugin-repo
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.
Prerequisites
- Corpus must exist. This skill does not build one - run
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/.
- Python dependencies:
pip install video-intel[vector] (installs lancedb,
voyageai) for hybrid search; the base install covers concept search.
Important: Some Commands Call Gemini
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.
How to Use
Do not grep / Grep / rg the output_dir directory directly when
verifying a paraphrase. The speaker's vocabulary almost never matches a
paraphrase verbatim, so keyword search returns false negatives. Always
start with search --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.
Find videos about a topic (start here)
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" search "skills standard"
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" search "150-line skill limit" --vector
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" search "context window" --vector --channel natebjones
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.
Synthesize a cross-creator brief
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" nugget "LightRAG vs OpenBrain architectural tension"
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" nugget "context engineering" --since 90d
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" nugget "graph RAG" --channel engineerprompt
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
Check corpus status
python "${CLAUDE_SKILL_DIR}/../../scripts/video_intel.py" status
When to Use This Skill vs video-intel (curate)
| 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.
Evaluate Search Quality
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.