ytb-tools
by aliildan
README.md
# š¬ ytb-tools
[](https://www.npmjs.com/package/ytb-tools)
[](LICENSE)
**Search YouTube, pull transcripts, and get AI summaries ā right inside Claude and any other MCP client.**
ytb-tools is a [Model Context Protocol](https://modelcontextprotocol.io) server that turns YouTube into something your AI assistant can actually work with. Ask it to find videos, grab a transcript, or summarize a talk ā it just works.
> ⨠**Zero setup.** No API keys. No Google account. No manual installs. ytb-tools provisions everything it needs on its own.
---
## What you can do
- š **Search YouTube** ā "find me the top React 19 talks" ā ranked results with titles, channels, durations, and views.
- š **Get transcripts** ā full transcripts in the video's language (or any available caption track), saved to a tidy local library.
- š§ **Summarize videos** ā TL;DR, structured notes, or a deep dive ā written by Claude, in the video's own language.
- š¾ **Builds your library** ā every transcript and summary is auto-saved as clean files you can browse, search, and keep.
---
## Quick start
### Any MCP client (Claude Desktop, Cursor, Cline, ā¦)
Add this to your client's MCP config ā that's the whole install:
```json
{
"mcpServers": {
"ytb-tools": {
"command": "npx",
"args": ["-y", "ytb-tools"]
}
}
}
```
Then just ask:
> *"Search YouTube for the best intro to Rust, then summarize the top result."*
### Claude Code (plugin)
Install it as a plugin to get the slash commands. Run these inside Claude Code:
```text
/plugin marketplace add aliildan/ytb-tools
/plugin install ytb-tools@ytb-tools
```
The first command registers this repo as a marketplace; the second installs the plugin (which pulls in the MCP server via `npx` and adds the slash commands). Prefer a menu? Just run `/plugin`.
You then get three commands:
| Command | What it does |
|---|---|
| `/yt-search <query>` | List ranked search results |
| `/yt-transcript <url\|id> [lang]` | Fetch a transcript |
| `/yt-summary <url\|id> [quick\|standard\|detailed]` | Summarize at the depth you want |
`/yt-summary` automatically picks the right model for the job ā **quick ā Haiku**, **standard ā Sonnet**, **detailed ā Opus** ā and writes the summary in the video's language.
#### Updating the plugin
When a new version ships, refresh the marketplace catalog and update:
```text
/plugin marketplace update ytb-tools
/plugin update ytb-tools
```
#### Uninstalling
```text
/plugin uninstall ytb-tools@ytb-tools
```
> **Scripting it?** The same actions work non-interactively from your shell:
> ```bash
> claude plugin marketplace add aliildan/ytb-tools
> claude plugin install ytb-tools@ytb-tools
> ```
---
## Research a whole topic at once
Installed in Claude Code, the **`yt-research`** skill chains everything together. Just ask in plain language:
> *"Research the top 30 YouTube videos on 'rust async' and give me a digest."*
It searches, pulls each transcript, summarizes each (defaulting to quick/Haiku to keep big batches cheap), and produces a **combined digest** ā recurring themes, a ranked "start here" shortlist, and any videos it had to skip. For large runs it **confirms with you first** and processes in batches with progress updates.
## Your library
Everything is saved automatically (default `~/ytb-tools/`):
```
~/ytb-tools/
āāā transcripts/
ā āāā dQw4w9WgXcQ.en.json # timestamped segments
ā āāā dQw4w9WgXcQ.en.txt # plain text
āāā summaries/
āāā dQw4w9WgXcQ.standard.md # Markdown with title, url, model, date
```
Want them somewhere else? Set `YT_OUTPUT_DIR`.
---
## The tools
| Tool | Does |
|---|---|
| `youtube_search` | Search YouTube and return ranked video results |
| `youtube_get_transcript` | Extract a transcript (with language selection), auto-saved |
| `youtube_save_summary` | Save a generated summary to your library |
---
## Configuration
All optional:
| Variable | Purpose | Default |
|---|---|---|
| `YT_OUTPUT_DIR` | Where transcripts & summaries are saved | `~/ytb-tools` |
| `YT_CACHE_DIR` | Cache location | OS cache dir |
| `YT_DLP_PATH` | Use an existing yt-dlp instead of the bundled one | auto |
---
## How it works (the short version)
Search runs entirely in-process via [`youtubei.js`](https://github.com/LuanRT/YouTube.js) ā no key, no quotas. Transcripts are powered by [yt-dlp](https://github.com/yt-dlp/yt-dlp), which ytb-tools **downloads and manages for you automatically** the first time you need it (it reuses the Node runtime that's already running ā no Python, no Deno). Summaries are written by your assistant's own model, so there's no extra API bill.
---
## License
MIT Ā© aliildan
TDQS
A3.7/5.0
Scored across 3 tools
Disambiguation5/5
Each tool targets a unique operation: searching for videos, fetching a transcript, or saving a summary. No overlap in purpose.
Naming Consistency5/5
All tools follow 'youtube_verb_noun' pattern (get_transcript, save_summary, search). The verb is missing in 'search' but is implicit and consistent with the convention.
Tool Count4/5
Three tools is minimal but reasonable for a focused YouTube assistant. It covers core operations without being overwhelming or too sparse.
Completeness4/5
The set covers search, transcript retrieval, and summary storage, forming a coherent workflow. Minor gaps like video metadata or playlist listing are acceptable given the narrow scope.
Maintenance
ActivityInactive
ResponsivenessNo issues