{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"awesome-youtube","slug":"youtube","name":"YouTube","type":"mcp","url":"https://github.com/anaisbetts/mcp-youtube","page_url":"https://unfragile.ai/youtube","categories":["mcp-servers"],"tags":[],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"awesome-youtube__cap_0","uri":"capability://tool.use.integration.youtube.subtitle.extraction.via.yt.dlp.command.execution","name":"youtube subtitle extraction via yt-dlp command execution","description":"Downloads YouTube video subtitles by spawning yt-dlp as a subprocess via spawn-rx, capturing VTT-formatted subtitle files from any public YouTube video URL. The implementation wraps the external yt-dlp binary with reactive stream handling, enabling asynchronous subtitle retrieval without blocking the MCP server. Subtitles are fetched in their raw VTT format before post-processing.","intents":["I want Claude to access YouTube video transcripts without needing to watch the video","I need to extract subtitles from a YouTube URL programmatically for analysis","I want to enable my LLM to summarize YouTube content by reading transcripts"],"best_for":["Claude.ai users wanting to summarize YouTube videos","Developers building MCP servers that need YouTube content access","Teams building LLM-powered video analysis tools"],"limitations":["Requires yt-dlp binary installed and in system PATH — no fallback to alternative subtitle sources","Only works with videos that have publicly available subtitles — fails silently on videos without captions","Subprocess spawning adds ~500-2000ms latency per video depending on network and video metadata fetch time","No built-in retry logic or timeout handling for slow/unreliable network conditions","Cannot extract subtitles from age-restricted or private videos"],"requires":["Node.js 16+ runtime","yt-dlp installed and accessible in system PATH (Python 3.8+ required for yt-dlp itself)","spawn-rx npm package for reactive subprocess management","Network connectivity to YouTube"],"input_types":["YouTube video URL (string, e.g., 'https://www.youtube.com/watch?v=dQw4w9WgXcQ')"],"output_types":["VTT subtitle file content (raw text with timestamps and formatting codes)"],"categories":["tool-use-integration","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-youtube__cap_1","uri":"capability://data.processing.analysis.vtt.subtitle.format.parsing.and.text.extraction","name":"vtt subtitle format parsing and text extraction","description":"Parses raw VTT (WebVTT) subtitle files to remove timestamps, cue identifiers, and formatting metadata, extracting clean readable text for LLM consumption. The processor handles VTT-specific syntax (WEBVTT header, timestamp ranges like '00:00:05.000 --> 00:00:10.000', style blocks) and outputs plain text with line breaks preserved for readability. This enables Claude to work with human-readable transcripts rather than machine-formatted subtitle data.","intents":["I need to convert raw VTT subtitles into clean text that Claude can analyze","I want to remove timestamps and formatting noise from YouTube transcripts","I need subtitle text without metadata for summarization or semantic analysis"],"best_for":["LLM applications requiring clean transcript text for analysis","Developers building video summarization tools","Systems that need to feed subtitle content to language models without noise"],"limitations":["No support for styled subtitles (VTT STYLE blocks are stripped entirely, losing emphasis/formatting intent)","Assumes UTF-8 encoding — may fail on non-standard character encodings","No handling of speaker identification or cue settings (align, position, size) — all metadata discarded","Does not preserve timing information, making it unsuitable for video sync applications","No validation of VTT format — malformed input may produce incomplete output"],"requires":["Raw VTT file content as string input","TypeScript/JavaScript runtime"],"input_types":["VTT subtitle file content (text with WEBVTT format)"],"output_types":["Plain text transcript (newline-separated dialogue without timestamps)"],"categories":["data-processing-analysis","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-youtube__cap_2","uri":"capability://tool.use.integration.mcp.server.integration.with.stdio.transport","name":"mcp server integration with stdio transport","description":"Implements a Model Context Protocol server using StdioServerTransport that communicates with Claude.ai via standard input/output streams. The server exposes YouTube subtitle tools as MCP resources/tools, allowing Claude to invoke subtitle downloading as a native capability. This integration enables seamless tool calling where Claude can request subtitles without explicit API management by the user.","intents":["I want Claude to automatically fetch YouTube subtitles when I ask it to summarize a video","I need to extend Claude's capabilities with YouTube access through the MCP protocol","I want to build a Claude plugin that handles YouTube content without manual API calls"],"best_for":["Claude.ai users installing MCP servers via mcp-installer","Developers building Claude plugins and extensions","Teams integrating YouTube content analysis into Claude workflows"],"limitations":["Stdio transport is synchronous and single-threaded — cannot handle concurrent subtitle requests efficiently","No built-in error recovery or graceful degradation if yt-dlp subprocess fails","MCP protocol overhead adds ~50-100ms per request for serialization/deserialization","Requires Claude.ai to support MCP — not compatible with standard OpenAI API or other LLM providers","No authentication or rate limiting — any Claude instance with access can request unlimited subtitles"],"requires":["Claude.ai with MCP support enabled","mcp-installer or manual MCP server configuration","Node.js 16+ runtime","yt-dlp installed in system PATH"],"input_types":["MCP tool call requests (JSON-RPC formatted)"],"output_types":["MCP tool response (JSON-RPC formatted with subtitle text)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-youtube__cap_3","uri":"capability://data.processing.analysis.youtube.url.validation.and.subtitle.availability.detection","name":"youtube url validation and subtitle availability detection","description":"Validates YouTube URLs and detects whether a video has available subtitles before attempting download, preventing wasted subprocess calls to yt-dlp on videos without captions. The implementation leverages yt-dlp's metadata extraction to check subtitle availability without downloading the full subtitle file, enabling fast pre-flight validation. This reduces latency and improves user experience by failing fast on unsupported videos.","intents":["I want to know if a YouTube video has subtitles before trying to summarize it","I need to validate YouTube URLs before passing them to the subtitle extractor","I want to avoid errors when Claude tries to summarize videos without captions"],"best_for":["LLM applications that need to gracefully handle videos without subtitles","Systems requiring fast URL validation before processing","User-facing tools that need to provide immediate feedback on subtitle availability"],"limitations":["Metadata extraction via yt-dlp adds ~1-3 seconds latency per URL validation","No caching of subtitle availability — each URL is checked independently","Cannot distinguish between 'no subtitles' and 'subtitles temporarily unavailable' states","Requires network access to YouTube to fetch metadata — fails offline","No support for checking subtitle language preferences or auto-generated vs. manual captions"],"requires":["yt-dlp installed and in system PATH","Network connectivity to YouTube","Node.js 16+ runtime"],"input_types":["YouTube video URL (string)"],"output_types":["Boolean or object indicating subtitle availability and language options"],"categories":["data-processing-analysis","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-youtube__cap_4","uri":"capability://data.processing.analysis.subtitle.language.selection.and.multi.language.support","name":"subtitle language selection and multi-language support","description":"Detects available subtitle languages for a YouTube video and allows selection of specific language tracks for download. The implementation queries yt-dlp's language metadata to present options to Claude, enabling multi-language video analysis. When a language is specified, yt-dlp downloads the corresponding subtitle track, supporting both manually-uploaded and auto-generated captions in different languages.","intents":["I want Claude to summarize a video in its original language, not auto-generated English","I need to extract subtitles in a specific language from a multilingual video","I want to analyze video content in multiple languages by requesting different subtitle tracks"],"best_for":["International teams analyzing multilingual video content","Developers building video analysis tools for non-English content","Claude users working with videos in languages other than English"],"limitations":["Language selection is manual — no automatic language detection or preference ordering","Auto-generated subtitles may have lower quality than manual captions, especially for non-English languages","Some videos have limited language options; yt-dlp cannot force generation of unavailable languages","No support for subtitle translation — only downloads existing tracks","Language metadata from yt-dlp may be incomplete or inaccurate for some videos"],"requires":["yt-dlp with language metadata support","YouTube video with multiple subtitle tracks available","Language code specification (e.g., 'en', 'es', 'fr')"],"input_types":["YouTube URL (string)","Language code (string, optional)"],"output_types":["Subtitle text in requested language","List of available languages (metadata)"],"categories":["data-processing-analysis","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":24,"verified":false,"data_access_risk":"moderate","permissions":["Node.js 16+ runtime","yt-dlp installed and accessible in system PATH (Python 3.8+ required for yt-dlp itself)","spawn-rx npm package for reactive subprocess management","Network connectivity to YouTube","Raw VTT file content as string input","TypeScript/JavaScript runtime","Claude.ai with MCP support enabled","mcp-installer or manual MCP server configuration","yt-dlp installed in system PATH","yt-dlp installed and in system PATH"],"failure_modes":["Requires yt-dlp binary installed and in system PATH — no fallback to alternative subtitle sources","Only works with videos that have publicly available subtitles — fails silently on videos without captions","Subprocess spawning adds ~500-2000ms latency per video depending on network and video metadata fetch time","No built-in retry logic or timeout handling for slow/unreliable network conditions","Cannot extract subtitles from age-restricted or private videos","No support for styled subtitles (VTT STYLE blocks are stripped entirely, losing emphasis/formatting intent)","Assumes UTF-8 encoding — may fail on non-standard character encodings","No handling of speaker identification or cue settings (align, position, size) — all metadata discarded","Does not preserve timing information, making it unsuitable for video sync applications","No validation of VTT format — malformed input may produce incomplete output","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.05,"quality":0.2,"ecosystem":0.39999999999999997,"match_graph":0.25,"freshness":0.52,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-06-17T09:51:04.690Z","last_scraped_at":"2026-05-03T14:00:15.503Z","last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=youtube","compare_url":"https://unfragile.ai/compare?artifact=youtube"}},"signature":"yJ1H40CKRNYDcKlXGiK4Es34BPg0Egqb+KYyzhw/JBVRt66rTbKKfTHlnjMbb+01oqV79JAojldAAkKVfvDVBQ==","signedAt":"2026-06-23T08:24:56.594Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/youtube","artifact":"https://unfragile.ai/youtube","verify":"https://unfragile.ai/api/v1/verify?slug=youtube","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}