Fetch, clean, and search YouTube transcripts — captions-first (rate-limit resistant) with optional Whisper fallback and an MCP server
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"yttranscript-mcp","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# yttranscript-mcp Fetch, clean, **semantically search**, and ask questions about YouTube transcripts — **captions-first** (fast, light, rate‑limit resistant) with an optional local **Whisper** fallback, an **MCP server**, a CLI, and an async Python library. No YouTube Data API key required. **Everything runs locally.** Built for feeding transcripts to LLMs: the `clean` format strips rolling auto‑caption duplication, HTML entities, markup, and timestamps so you spend the fewest tokens possible. ### What makes it special - **Search *inside* videos.** Ask a natural-language question; get the exact timestamped moments with deep-link URLs (`https://youtu.be/ID?t=123`). Hybrid **BM25 + local embeddings**, fused with Reciprocal Rank Fusion and diversified with MMR — exa-quality retrieval, **fully local, zero new dependencies** (it works with no model at all and gets better when you add one). - **Ask questions (local RAG).** `ytt ask ID "question"` retrieves the relevant passages and, if a local LLM is running, writes a grounded answer that cites timestamps. No LLM? You still get the cited passages. - **Cross-video corpus search.** Index a library of videos once (`ytt index …`), then `ytt find "query"` searches across all of them — exa for your own YouTube collection, in a single SQLite file. - **Beats `yt-dlp` for transcripts, audio-free.** List every caption language (`ytt langs`), **machine-translate captions into any language** (`--translate`), and dump rich metadata + chapters (`ytt info`) — all from the lightweight captions path, no video download. ### vs. the tools you already use | | **yttranscript-mcp** | `yt-dlp` | exa | |---|---|---|---| | Captions / subtitles | ✅ captions-first, multi-client anti-throttle | ✅ (downloads via page scrape) | ❌ | | List caption languages | ✅ `ytt langs` | ✅ `--list-subs` | ❌ | | Translate captions | ✅ `--translate es` | ✅ | ❌ | | Metadata + chapters (no download) | ✅ `ytt info` | ⚠️ `--dump-json` (heavier) | ❌ | | Semantic s…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.