{
  "markdown": "# TubeScout 🔭\n\n**Turn YouTube into a research engine for your AI agent.** An MCP server (no API key) plus a skill pack that make Claude Code, Codex, and OpenCode search YouTube like a database, read transcripts at scale, and mine videos for evidence — claims, numbers, demand signals — instead of vibes.\n\nIdea-engine tools scan Reddit and forums. YouTube is where founders show *receipts* — revenue dashboards, playbooks, real numbers on camera — and nothing mines it. TubeScout does.\n\n## Quickstart (60 seconds)\n\n**Claude Code**\n\n```bash\nclaude mcp add --scope user tubescout -- npx -y tubescout\n```\n\n**Codex**\n\n```bash\ncodex mcp add tubescout -- npx -y tubescout\n```\n\n**OpenCode** — add to `~/.config/opencode/opencode.json` under `\"mcp\"`:\n\n```json\n\"tubescout\": { \"type\": \"local\", \"command\": [\"npx\", \"-y\", \"tubescout\"], \"enabled\": true }\n```\n\nThat's it — no API key, no config. Then ask your agent things like:\n\n> *\"Find the 5 most-viewed videos about n8n from the last month and summarize what people are struggling with.\"*\n\n**Easiest all-in-one (Claude Code): install as a plugin** — MCP server + all 6 skills in two commands:\n\n```\n/plugin marketplace add not0lucky/tubescout\n/plugin install tubescout@tubescout\n```\n\n**Or install the skill pack manually** (works for Claude Code, Codex, and OpenCode):\n\n```bash\ngit clone https://github.com/not0lucky/tubescout && cd tubescout\n./scripts/install-skills.sh   # installs into ~/.claude/skills, ~/.codex/skills, ~/.config/opencode/skills\n```\n\n## Tools\n\n| Tool | What it does |\n|---|---|\n| `search_videos` | Search with filters (upload window, duration, sort by views/date) |\n| `get_video` | Full metadata + engagement (`likesPer1kViews` resonance signal) |\n| `get_transcript` | Plain-text transcript via a resilient 3-strategy fallback chain |\n| `get_transcripts` | Batch transcripts (up to 10 videos), per-video error tolerant |\n| `get_channel_videos` | Channel positioning + recent uploads with view counts |\n| `get_search_suggestions` | YouTube autocomplete = real search demand for keyword research |\n\n## Skills (the research methods)\n\n| Skill | Use it to |\n|---|---|\n| `/yt-breakdown <urls>` | Skeptic's analysis of videos: extract every claim and number, stress-test for incentives, survivorship bias, verifiability |\n| `/yt-idea-mine <niche>` | Mine a niche for product ideas backed by demand signals + pains real builders describe on camera |\n| `/yt-validate <idea>` | Go/no-go verdict: demand, saturation, what competitors' numbers actually show |\n| `/yt-channel-intel <channel>` | Read a channel's strategy: cadence, outliers, what performs vs what they publish |\n| `/yt-playbook <tutorial url>` | Turn a tutorial into executable steps — exact commands, settings, and the gotchas said in passing — adapted to your stack |\n| `/yt-gap <niche>` | Find demand-vs-supply gaps: heavily searched topics served by weak, old, or misfit videos — for content plans or product angles |\n\nAll skills are **context-aware**: they read the conversation for what you're building, your stack, and videos already analyzed, and tailor verdicts to your actual leverage instead of giving generic advice.\n\nSee [a real `/yt-breakdown` run](examples/breakdown-3-videos.md) on three \"how I make $X/month\" videos — including what survived the skeptic pass and what didn't.\n\n## How it works (honestly)\n\nThere's no magic here, and that's the point:\n\n- **youtubei.js** talks to YouTube's internal InnerTube API — the same one the site uses. No key, no quota.\n- Transcripts are YouTube's own captions, fetched through a **fallback chain**: the ANDROID-client timedtext track → the InnerTube transcript endpoint (known to 400 intermittently — retried with backoff) → local `yt-dlp` if you have it. Each response tells you which `source` served it.\n- All analysis happens in *your* agent. The server ships data; the skills ship method.\n\n## Limitations\n\n- **Run it locally.** YouTube aggressively rate-limits datacenter IPs — this is a local stdio server by design, not a hosted service.\n- YouTube changes internals without notice; when it breaks, update (`npx` always pulls latest) and file an issue with the failing video ID.\n- Videos with captions disabled can't be transcribed (rare; the error says so explicitly).\n- Caption scraping lives in YouTube ToS gray area — fine for local research tooling, don't build a hosted paid product on it.\n\n## Development\n\n```bash\nnpm install && npm run build\nnpm test          # unit tests (offline)\nnpm run test:live # live smoke tests against real videos — run before publishing\nnpm run inspect   # MCP Inspector against the built server\n```\n\nMIT — see [LICENSE](LICENSE).\n\n---\n\nBuilt by [Anir](https://github.com/not0lucky) — I automate things. More at [agramprojects.com](https://agramprojects.com).\n",
  "bytes": 4769,
  "sha": "661586f51a2025bc011e1f385746df547af4bda7884de184a43dbe338a195861",
  "repo_slug": "not0lucky/tubescout",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_not0lucky_tubescout_cfe70844/readme"
}