video-research
Skill23 starsChanged 40 days agoMITView on GitHub
Use video-research MCP tools for evidence-aware video/document analysis, cited research, academic discovery, and knowledge queries when that server is connected.
6 other projects use a version of this.
Adopted by
Most recently taken up by
- itsryanarmani/skillstheir own version, first seen Nov 8, 2026
- pooriaarab/skillstheir own version, first seen Nov 7, 2026
- ethanfoell/skillstheir own version, first seen Oct 20, 2026
- malinskibeniamin/skillstheir own version, first seen Oct 17, 2026
- unbias38/my-claude-skillstheir own version, first seen Jul 6, 2026
- GGGODLIN/claude-skillstheir own version, first seen May 17, 2026
Other versions6 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 6
- malinskibeniamin/skills★ 4same name
- unbias38/my-claude-skills★ 2same name
- itsryanarmani/skills★ 1same name
- pooriaarab/skills★ 1same name
- ethanfoell/skills★ 0same name
- GGGODLIN/claude-skills★ 0same name
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 repository30 other files it gives its agents.
- AGENTS.mdAGENTS.md
- src/AGENTS.mdAGENTS.md
- tests/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- av-eventsSkill
- creative-concept-designSkill
- educational-explainerSkill
- ffmpeg-productionSkill
- footage-editSkill
- gemini-visualizeSkill
- gr-advisorSkill
- hardware-evidence-captureSkill
- image-generationSkill
- mlflow-tracesSkill
- movie-commentarySkill
- plugin-maintenanceSkill
- qwen-image-integrationSkill
- qwen-video-integrationSkill
- research-brief-builderSkill
- research-visualization-blenderSkill
- research-visualization-freecadSkill
- reverse-search-video-frameSkill
- spatial-video-analysisSkill
- tts-productionSkill
- video-explainerSkill
- video-generationSkill
- video-productionSkill
- video-to-skillSkill
- video-translationSkill
- weaviate-setupSkill
The file
We split this skill into the rules it gives an agent
11 rules. 0 are common, 6 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 4 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 44
When local media is available, prefer shared project memory paths:
- Very specific: line 58
Check infra_configure() and the source duration.
- Very specific: line 97
Use to enumerate playlist contents, then pass individual video IDs to video_analyze for analysis.
- Distinctive: line 121
Use when the default VideoResult shape doesn't match what you need:
- Distinctive: line 156
Use for iterative Q&A about one video.
- Distinctive: line 215
Use when you have a specific JSON Schema and need schema-constrained extraction.
- Very specific: line 315
Read-only configuration inspection needs no mutation grant.
- Distinctive: line 321
Run independent calls in parallel within the available worker/provider budget:
- Very specific: line 347
When registered in Claude Code, /gr:recall uses knowledge_search for semantic queries when Weaviate is configured, and falls back to …
- Very specific: line 362
Call video_analyze on each URL with the same instruction
- Distinctive: line 371
All tools return error dicts instead of raising:
“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Video Research MCP — Tool Usage Guide
Discover whether the video-research-mcp server is connected before calling it. Its tools use configured Gemini models, YouTube Data API, Semantic Scholar, optional Weaviate, and deterministic local adapters. Inspect infra_configure() for live models; the default is Gemini 3.8 Flash. Generative tools are instruction-driven: you supply an instruction and receive structured model output. Other tools use their exposed typed contracts. Three tools (video_metadata, video_comments, video_playlist) use the YouTube Data API directly for fast metadata retrieval without Gemini inference.
Core Principle
Tools accept an instruction parameter instead of fixed modes. Write specific, actionable instructions. The more precise your instruction, the better the structured output.
Tool Selection Guide
| I want to... | Use this tool |
| Get video title, stats, duration, tags | video_metadata |
| List videos in a YouTube playlist | video_playlist |
| Analyze a YouTube video | video_analyze |
| Have a multi-turn conversation about a video | video_create_session + video_continue_session |
| Research a topic in depth | research_deep |
| Plan a research strategy | research_plan |
| Assess a claim against supplied source descriptions | research_assess_evidence |
| Launch long-running web-grounded deep research | research_web |
| Poll status of a running deep-research job | research_web_status |
| Ask follow-up questions on a completed deep-research report | research_web_followup |
| Cancel a running deep-research job | research_web_cancel |
| Analyze a URL, file, or text | content_analyze |
| Batch-analyze a folder of documents | content_batch_analyze |
| Extract structured data from content | content_extract |
| Deep research grounded in documents | research_document |
| Search the web for current info | web_search |
| Check or clear the cache | infra_cache |
| Inspect or change model/thinking settings | infra_configure |
| Search papers or authors | research_paper_search, research_author_search |
| Fetch paper metadata, citations, or recommendations | research_paper_details, research_paper_citations, research_paper_recommendations |
| Find past analyses and research | /gr:recall "topic" (semantic search when Weaviate configured) |
| Get AI answer from past work | /gr:recall ask "question" (requires Weaviate + weaviate-agents) |
| Browse knowledge gaps | /gr:recall fuzzy or /gr:recall unknown |
Media Storage Conventions
When local media is available, prefer shared project memory paths:
- Videos:
gr/media/videos/<content_id>.mp4 - Screenshots:
gr/media/screenshots/<content_id>/frame_MMSS.png
Knowledge results may include:
local_filepath: local video/content file pathscreenshot_dir: local screenshot directory path
Complete transcript and screenshots
For a request to preserve a complete video, keep the source package even when its claims are already covered in the destination wiki. Promote only supported new findings or useful strengthening, with source times and existing-page links.
- Check
infra_configure()and the source duration. Usevideo_analyze_windowsto plan contiguous windows with explicit call, token, output, frame and window limits before executing the authorized Gemini route. Preserve every window outcome, including partial or failed results; a successful request is not proof that every spoken word was transcribed. - Retain any supplied captions byte-for-byte and export their complete ordered
text. For exact local media and explicitly associated captions, use
audio_transcribe; its bounded component requires separate selections for longer videos. It does not fetch YouTube captions. Compare Gemini wording against the complete caption population and record omissions or disagreements. Validate inferred times against their requested windows before creating links. Without complete reference coverage, label the transcript inferred or partial. - Capture real source images through
video_frameorvideo_frameswhen local media is available. Retain PNGs, source hashes and actual decoded timestamps. A remote Gemini answer cannot supply original source pixels. If acquisition fails, retain the failure and use authorized browser-player screenshots with observed playback times, explicitly leaving source-frame PTS unknown. - Save transcript exports, screenshots, hashes, source/model identity, coverage and uncertainty in the requested library. Open the dossier and verify the complete transcript readback and rendered image links before reporting delivery.
Tool Reference
Video and YouTube Tools
video_metadata — Get YouTube video metadata (no Gemini cost)
video_metadata(url: str) # YouTube URLReturns {video_id, title, description, channel_title, published_at, tags[], view_count, like_count, comment_count, duration_seconds, duration_display, category, definition, has_captions, default_language}.
Costs 1 YouTube API unit, 0 Gemini units. Use this for quick metadata lookups before deciding whether to run a full video_analyze.
video_playlist — List videos in a playlist
video_playlist(url: str, max_items: int = 20) # Playlist URL with list= paramReturns {playlist_id, items[{video_id, title, position, published_at}], total_items}.
Use to enumerate playlist contents, then pass individual video IDs to video_analyze for analysis.
video_analyze — Analyze any YouTube video
video_analyze(
url: str | None = None, # YouTube URL
file_path: str | None = None, # Local video file
instruction: str = "...", # What to analyze (default: comprehensive analysis)
output_schema: dict | None, # Custom JSON Schema for response shape
thinking_level: str = "high", # low | medium | high for the default model
use_cache: bool = True # Cache results by instruction hash
)Default output (VideoResult + metadata): {title, summary, key_points[], timestamps[{time, description}], topics[], sentiment, source, local_filepath, screenshot_dir}
Writing good instructions:
- BAD: "analyze this video" (too vague, just use the default)
- GOOD: "Extract every CLI command demonstrated, including flags and arguments"
- GOOD: "List all recipes shown with ingredients and cooking times"
- GOOD: "Transcribe this video with timestamps for each speaker change"
- GOOD: "Identify the 3 most controversial claims and rate their evidence strength"
When to use custom output_schema: Use when the default VideoResult shape doesn't match what you need:
{
"type": "object",
"properties": {
"recipes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"ingredients": {"type": "array", "items": {"type": "string"}},
"steps": {"type": "array", "items": {"type": "string"}}
}
}
}
}
}Common instruction patterns:
- Transcript:
instruction="Transcribe with timestamps" - Tutorial extraction:
instruction="Extract commands, tools, and step-by-step workflow" - Comparison prep: Call
video_analyzeon each URL with the same instruction, then synthesize
video_create_session — Start multi-turn video exploration
video_create_session(
url: str | None = None,
file_path: str | None = None,
description: str = "",
download: bool = False
)Returns {session_id, status, video_title, source_type, cache_status, download_status, cache_reason, local_filepath}.
Use for iterative Q&A about one video.
video_continue_session — Follow up within a session
video_continue_session(session_id: str, prompt: str)Returns {response, turn_count}. Maintains conversation history across turns.
Content Tools
content_analyze — Analyze any content (file, URL, or text)
content_analyze(
instruction: str = "...", # What to analyze
file_path: str | None, # Local file (PDF or text)
url: str | None, # URL to fetch and analyze
text: str | None, # Raw text
output_schema: dict | None, # Custom JSON Schema
thinking_level: str = "medium"
)Provide exactly one of file_path, url, or text.
Default output (ContentResult): {title, summary, key_points[], entities[], structure_notes, quality_assessment}
Examples:
- Summarize a webpage:
content_analyze(url="https://...", instruction="Summarize in 3 sentences") - Extract from PDF:
content_analyze(file_path="paper.pdf", instruction="Extract methodology with statistical methods") - Analyze text:
content_analyze(text="...", instruction="List all named entities with types")
content_batch_analyze — Batch-analyze multiple documents
content_batch_analyze(
instruction: str = "...", # What to analyze across documents
directory: str | None, # Directory to scan for content files
file_paths: list[str] | None, # Explicit list of file paths
glob_pattern: str = "*", # Filter within directory
mode: str = "compare", # "compare" (one call) | "individual" (per-file)
output_schema: dict | None, # Custom JSON Schema
thinking_level: str = "high",
max_files: int = 20
)Provide either directory or file_paths (not both). Supports PDF, TXT, MD, HTML, XML, JSON, CSV.
Two modes:
compare: All files sent in one Gemini call for cross-document analysisindividual: Each file analyzed separately with 3 parallel calls
Examples:
- Compare papers:
content_batch_analyze(directory="/papers/", instruction="Compare methodologies") - Batch summarize:
content_batch_analyze(file_paths=["a.pdf", "b.pdf"], mode="individual", instruction="Summarize")
content_extract — Extract structured data with caller-provided schema
content_extract(content: str, schema: dict)Use when you have a specific JSON Schema and need schema-constrained extraction; still check error responses and validate required evidence.
Research Tools
research_deep — Multi-phase deep research
research_deep(
topic: str, # Research question (3-500 chars)
scope: str = "moderate", # quick | moderate | deep | comprehensive
thinking_level: str = "high"
)Runs 3 model-only phases: Scope Definition > Evidence Collection > Synthesis. It retrieves no external sources; proposed CONFIRMED/STRONG INDICATOR tiers become UNKNOWN.
Returns {topic, scope, executive_summary, findings[{claim, evidence_tier, supporting[], contradicting[], reasoning}], open_questions[], methodology_critique}.
Evidence tiers: CONFIRMED, STRONG INDICATOR, INFERENCE, SPECULATION, UNKNOWN.
research_plan — Generate research orchestration blueprint
research_plan(topic: str, scope: str = "moderate", available_agents: int = 10)Returns a phased blueprint with task decomposition and model assignments. Does NOT execute — provides the plan.
research_document — Deep research grounded in source documents
research_document(
instruction: str, # Research question for the documents
file_paths: list[str] | None, # Local PDF/document paths
urls: list[str] | None, # URLs to downloadable documents
scope: str = "moderate", # quick | moderate | deep | comprehensive
thinking_level: str = "high"
)4-phase pipeline: Document Mapping > Evidence Extraction > Cross-Reference > Synthesis. Documents are uploaded via File API for multi-phase reuse. Inspect generated document/page citations against the originals before relying on a claim.
Scope controls depth:
quick: Map + lightweight summary (2 Gemini calls)moderate: Map + evidence + synthesis (3 calls, skip cross-ref for single doc)deep/comprehensive: All 4 phases with full cross-referencing
Examples:
- Analyze a paper:
research_document(file_paths=["paper.pdf"], instruction="Assess methodology") - Compare reports:
research_document(file_paths=["q1.pdf", "q2.pdf"], instruction="Find contradictions", scope="deep")
research_web — Launch Gemini Deep Research Agent (background)
research_web(topic: str, output_format: str = "")Starts a hosted web-grounded research task and returns an interaction_id. Runtime and internal search/token/USD ceilings are provider-managed; retain the launch identity across interruptions.
research_web_status — Poll a Deep Research interaction
research_web_status(interaction_id: str)Returns current status while running and returns full report + sources when completed.
research_web_followup — Ask follow-up questions on completed Deep Research
research_web_followup(interaction_id: str, question: str)Returns a contextual follow-up response tied to the original deep-research interaction.
research_web_cancel — Cancel a running Deep Research task
research_web_cancel(interaction_id: str)Requests cancellation of the existing interaction. Inspect the returned state; cancellation does not reverse prior spend.
research_assess_evidence — Assess a claim against sources
research_assess_evidence(claim: str, sources: list[str], context: str = "")Returns {claim, tier, confidence, supporting[], contradicting[], reasoning} plus proposal metadata. Source access is unobserved and factual_success is false; proposed CONFIRMED/STRONG INDICATOR tiers become UNKNOWN.
Academic Discovery
The Semantic Scholar tools search metadata/abstracts, fetch details, follow citations/references, recommend papers, and search authors. They do not read full papers automatically. Fetch primary full text before making methodology claims; distinguish abstract-only evidence and missing papers. Read current tool schemas for filters, identifier formats, pagination, and limits.
Search Tool (1)
web_search — Google Search via Gemini grounding
web_search(query: str, num_results: int = 5)Returns {query, response, sources[{title, url}]}. Uses Gemini Flash with Google Search.
Infrastructure Tools (2)
infra_cache — Manage analysis cache
infra_cache(action="stats" | "list" | "clear", content_id=None)infra_configure — Runtime config changes
infra_configure(preset=None, model=None, thinking_level=None, temperature=None, auth_token=None)Read-only configuration inspection needs no mutation grant. Configuration changes and cache clearing require INFRA_MUTATIONS_ENABLED and the configured admin token when required. Handle a policy refusal without changing operator policy.
Workflow Patterns
Research a topic end-to-end
research_plan(topic)> orchestration blueprint- Run independent calls in parallel within the available worker/provider budget:
web_search(query)> gather current sources (Gemini Flash)research_deep(topic, scope="deep")> full analysis with evidence tiers (configured analysis model)
research_assess_evidence(claim, sources)> model assessment — call independent claims in parallel within the budget, then inspect decisive primary evidence
Analyze a YouTube video with community context
video_metadata(url)> quick metadata (title, view count, comment count)video_analyze(url, instruction="...")> primary analysis- Background:
comment-analystagent fetches and analyzes YouTube comments - Background:
visualizeragent generates interactive concept map - Workers return owned outputs; the parent merges them into
analysis.mdafter required workers join
Analyze a YouTube playlist
video_playlist(url)> list all videos in the playlist- For each video, call
video_analyze(url)orvideo_metadata(url)as needed - Synthesize results across videos
Analyze a video for a specific use case
video_analyze(url, instruction="Provide a comprehensive analysis")> overviewvideo_analyze(url, instruction="Extract all code examples with context")> deep dive- Or use sessions for iterative exploration:
video_create_session(url)> get session_idvideo_continue_session(session_id, "What libraries are used?")> follow up
Recall & Knowledge Retrieval
When registered in Claude Code, /gr:recall uses knowledge_search for semantic queries
when Weaviate is configured, and falls back to filesystem grep otherwise.
Knowledge states (fuzzy/unknown) and visualization browsing are always filesystem-based.
In Codex, use the exposed knowledge_search and knowledge_ask tools; Claude command aliases are not loaded by the native plugin.
Ingesting data into the knowledge store
Always call knowledge_schema(collection="<name>") before knowledge_ingest. This returns the exact property names and types — never guess field names.
knowledge_schema(collection="ResearchFindings") # discover fields first
knowledge_ingest(collection="ResearchFindings", properties={...}) # then ingestCompare multiple videos (orchestrated by you)
- Call
video_analyzeon each URL with the same instruction - Synthesize the results in your response — you are the comparison engine
Extract structured data from documents
content_analyze(file_path="paper.pdf", instruction="Summarize methodology")> overviewcontent_extract(content=text, schema={...})> precise structured extraction
Error Handling
All tools return error dicts instead of raising:
{"error": "message", "category": "API_QUOTA_EXCEEDED", "hint": "wait a minute", "retryable": true}Always check for "error" key in the response before processing results. The runtime already retries transient Gemini failures. After a retryable result, permit at most one controlled retry for an idempotent call within the authorized budget; retain repeated failure and stop. For background research, retain and poll the existing interaction ID rather than launching a duplicate.
Caching
Results are cached by {content_id}_{tool}_{instruction_hash}_{model_hash}. Different instructions for the same content produce separate cache entries. Use use_cache=False to force fresh analysis.
Thinking Levels
| Level | When to use |
minimal | Only explicitly selected compatible models; rejected by the default Gemini 3.8 Flash |
low | Quick summaries, simple tasks |
medium | Content analysis (default for content tools) |
high | Video analysis, research, complex reasoning (default for video/research) |
Completion and Evidence
Before declaring completion, verify the exact input and requested coverage, non-empty required fields, source/timestamp/page pointers, and the saved artifact. Label model inference, abstract-only evidence, sampled/condensed transcripts, and uncertain speaker identities. A structured schema does not establish truth; inspect primary evidence for decision-critical claims.
For batches, retain successes, failures, refusals, and omissions in the denominator. Write-through Weaviate storage is non-fatal: report persistence separately from analysis, and do not infer storage from tool success. A cached result is evidence from its original generation, not a fresh provider call. Stop at terminal failure or exhausted repair budget with a concrete next cause-finding step.
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.

