tubescout
TubeScout 🔭
Превратите YouTube в поисковый движок для вашего AI-агента. MCP-сервер (без API-ключа) плюс набор навыков, которые позволяют Claude Code, Codex и OpenCode искать по YouTube как по базе данных, читать транскрипты в масштабе и добывать из видео доказательства — утверждения, цифры, сигналы спроса — вместо расплывчатых впечатлений.
Инструменты для генерации идей сканируют Reddit и форумы. YouTube — это мессто, где основатели показывают подтверждения: дашборды выручки, плейбуки, реальные цифры на камеру — и никто это не добывает. TubeScout — добывает.
Быстрый старт (60 секунд)
Claude Code
claude mcp add --scope user tubescout -- npx -y tubescoutCodex
codex mcp add tubescout -- npx -y tubescoutOpenCode — добавьте в ~/.config/opencode/opencode.json в раздел "mcp":
"tubescout": { "type": "local", "command": ["npx", "-y", "tubescout"], "enabled": true }Вот и всё — ни API-ключа, ни настройки. Затем спрашивайте своего агента, например:
«Найди 5 самых просматриваемых видео об n8n за последний месяц и резюмируй, с чем люди испытывают трудности.»
Самый простой вариант «всё в одном» (Claude Code): установка в качестве плагина — MCP-сервер + все 6 навыков двумя командами:
/plugin marketplace add not0lucky/tubescout
/plugin install tubescout@tubescoutИли установите набор навыков вручную (работает для Cl aide Code, Codex и OpenCode):
git clone https://github.com/not0lucky/tubescout && cd tubescout
./scripts/install-skills.sh # installs into ~/.claude/skills, ~/.codex/skills, ~/.config/opencode/skillsRelated MCP server: youtube-mcp
Инструменты
Инструмент | Что делает |
| Поиск с фильтрами (период загрзки, длительность, сортировка по просмотрам/дате) |
| Полные метаданные + вовлечённость (сигнал резонанса |
| Транскрипт в виде простоого тексста через отказоустойчивую цепочку из 3 стратений |
| Пакетные транскрипты (до 10 видео), устойчивость к ошибкам по каждому видео |
| Позиционирование канала + свежие видео с числом просмотров |
| Автодополнение YouTube = реаль`ный поисковый спрос для исследования ключевых слов |
Навыки (методы исследования)
Skill | Use it to |
| Скептичесский разбор видео: извлечь каждое утверждение и цифру, проверить на стимулы, предвзятость выжившего, проверяемость |
| Добывать из ниши идеи для продуктов на основе сигналов спроса + болей, которые реальные разработчики описывают на камеру |
| Вердикт go/no-go: спрос, цифры конкуренто в и что на самом деле означает «сделать это» |
| Считывать стратегию канала: ритм, выбросы, что работает по сравнению с тем, что они публикуют |
| Превращать туториал в выполнимые шаги — точные команды, настройки и подводные камни, упомянутые вскользь, — адаптированные под ваш стек |
| Находить разрывы между спросом и предложением: активно искомые темы, которые обслуживаются слабыми, старыми или неподходящими видео, — для контент-планов или продуктовых ракурсов |
Все навыки учитывают контекст: они читают диалог, чтобы понять, что вы строите, ваш стек и уже проанализированные видео, и адаптируют вердикты под ваши реальные преимущества, а не дают общие советы.
Смотрите реальный запуск /yt-breakdown на трёх видео из серии «как я зарабатываю $X в месяц» — включая то, что пережило скептическую проверку, а что нет.
Как это работает (честно)
Здесь нет магии, и в этом вся суть:
youtubei.js общается с внутренним InnerTube API от YouTube — тем же, что использует сайт. Без ключа и квот.
Транскрипты — это собственные субтитры YouTube, получаемые через цепочку отката: дорожка timedtext в ANDROID-клиенте → конечная точка транскриптов InnerTube (известная периодическими ошибками 400 — повтор с задержкой) → локальный
yt-dlp, если он у вас есть. Каждый ответ сообщает, какойsourceего выдал.Весь анализ происходит в вашем агенте. Сервер поставляет данные; навыки поставляют метод.
Ограничения
Запускайте локально. YouTube агрессивно ограничивает по частоте IP-адреса дата-центров — это локальный stdio-сервер по замыслу, а не размещённый сервис.
YouTube меняет внутренности без предупреждения; если что-то ломается — обновитесь (
npxвсегда подтягивает последнюю версию) и создайте issue с ID неработающего видео.Видео с отключёнными субтитрами невозможно транскрибировать (редкий случай; об этом явно говорит ошибка).
Сбор субтитров находится в серой зоне условий использования YouTube — нормально для локального исследовательского инструментария, но не стройте на этом размещённый платный продукт.
Разработка
npm install && npm run build
npm test # unit tests (offline)
npm run test:live # live smoke tests against real videos — run before publishing
npm run inspect # MCP Inspector against the built serverMIT — см. LICENSE.
Создано Anir — я автоматизирую всё. Ещё на agramprojects.com.
Available Tools
6 toolsget_channel_videosScan a channelA
Channel metadata (name, subscribers, description) plus its recent uploads with views — enough to read a channel's strategy, cadence, and what performs.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | Channel ID (UC…), @handle, or channel URL | |
| maxVideos | No | How many recent videos to return (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries behavioral disclosure. It conveys a read-style operation through words like 'metadata' and 'read a channel's strategy', and it lists the returned content. It does not address ordering, pagination, error behavior, or whether missing channels are handled gracefully, but for a read-only channel-scan tool the gaps are moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that packs the output contents and the intended analytic value without filler. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of explaining return values, and it names the major components: channel metadata and recent uploads with views. It omits precise object shape and ordering, but the schema covers maxVideos limits and the tool's purpose is complete enough for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers both parameters thoroughly: 'channel' accepts ID/@handle/URL and 'maxVideos' has a range and default. The description adds only the general concept of 'recent uploads', so it does not materially enrich the parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (a channel) and the returned data: channel metadata (name, subscribers, description) plus recent uploads with views. It is immediately distinguishable from sibling tools like get_video, search_videos, or transcript tools because it is channel-scoped and returns channel-level analytics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a use case: reading a channel's strategy, cadence, and performance. However, it does not explicitly state when to use this tool over siblings, nor does it mention exclusions or when another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_search_suggestionsGet YouTube search suggestionsA
YouTube's autocomplete for a seed term — a direct read on real search demand. Use for keyword research: seed a niche term, get what people actually type. Chain suggestions of suggestions to map a topic space.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Seed term, e.g. 'stamp identifier' or 'n8n' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It clearly states this is a 'direct read' on live YouTube search demand, implying no side effects, and describes the iterative chaining behavior. It does not cover rate limits or error cases, but for a simple read-only autocomplete tool, the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences each carry distinct value: definition, primary use case, and an advanced chaining pattern. The most identifying trait, 'YouTube's autocomplete', is front-loaded. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description conveys enough for an agent to invoke it correctly: the input is a seed term and the result is what users actually type. It could be more explicit about the return format or any authentication/network expectations, but those are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter is already documented with a description and examples. The tool description adds keyword-research context but no new syntax, formatting, or constraints beyond the schema. This matches the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific verb and resource: 'YouTube's autocomplete for a seed term'. This clearly differentiates it from siblings like search_videos or get_transcript, since autocomplete suggestions are a distinct data product. The phrasing 'direct read on real search demand' reinforces the exact purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent when to use the tool: for keyword research, seed a niche term, and chain suggestions to map a topic space. It does not mention when not to use it or name specific sibling alternatives, but the given context is clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transcriptGet video transcriptA
Fetch a video's transcript as clean plain text. Resilient: tries InnerTube, then the timedtext caption track, then local yt-dlp if installed. Long transcripts are chunked — check totalChars and call again with offsetChars to continue.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | Video ID or any YouTube URL | |
| language | No | Preferred caption language code (default 'en') | |
| maxChars | No | Chunk size (default 60000) | |
| offsetChars | No | Character offset to resume a chunked transcript |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It explicitly reveals the resilience strategy ('tries InnerTube, then the timedtext caption track, then local yt-dlp') and the chunking behavior ('check totalChars and call again with offsetChars'). It does not cover failure modes or exact output structure, but the most important behavioral traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: core purpose, resilience strategy, and pagination behavior. The most important information is front-loaded, and there is no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description sufficiently outlines the chunking contract and fallback approach, allowing an agent to invoke the tool and continue pagination. It falls short of fully describing the return payload shape and does not reference sibling 'get_transcripts', but overall the essential calling context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter already has a description. The tool description adds a little value by connecting offsetChars to the chunking workflow and introducing totalChars as a response field, but it does not substantially enrich parameter understanding beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Fetch a video's transcript as clean plain text', giving a specific verb, resource, and output format. It clearly identifies the tool's core function, but it does not explicitly distinguish itself from the sibling 'get_transcripts', leaving some ambiguity about whether that sibling should be used for different transcript-related needs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description explains the fallback chain for fetching but does not mention sibling tools like 'get_transcripts' or state conditions under which this tool is preferred. The agent is left to infer usage from the tool name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transcriptsGet transcripts for multiple videosA
Batch transcript fetch (max 10 videos, 3 at a time). Per-video failures don't kill the batch — failed entries carry an error field. Each transcript is truncated to fit; use get_transcript with offsetChars for full text of long ones.
| Name | Required | Description | Default |
|---|---|---|---|
| videos | Yes | Video IDs or URLs | |
| language | No | Preferred caption language code (default 'en') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so excellently. It discloses the batch size, concurrency limit, partial-failure behavior (failed entries carry an error field), and truncation behavior. This gives the agent a reliable model of what the tool will do.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no filler. The core batch behavior is front-loaded, and each clause adds useful operational or fallback information. It is exemplary in economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately tells the agent what to expect: success, per-item errors, and truncation. It also points to get_transcript for the full-text use case, covering the main follow-up path. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add meaningful new meaning to the 'videos' or 'language' parameters beyond what the schema already provides; it merely repeats the max-item constraint. It earns the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Batch transcript fetch') and resource ('transcripts for multiple videos'), and explicitly contrasts with the singular get_transcript tool. It also conveys key constraints (max 10 videos, 3 at a time) that distinguish it as a batch operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when fetching multiple transcripts in a batch. It also names get_transcript as the alternative for full text of long transcripts, giving the agent a clear routing condition. It does not explicitly state exclusions or compare with other sibling tools, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_videoGet video intelA
Full metadata + engagement for one video: title, channel, publish date, views, likes, likesPer1kViews (resonance signal, typical range 10-50), category, keywords, description, hasCaptions.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | Video ID or any YouTube URL (watch, youtu.be, shorts) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It is transparent about the returned data and even interprets likesPer1kViews as a resonance signal with a typical range. However, it does not mention error cases, missing fields, authorization, or rate limits — gaps that matter for a tool with no annotation safety signals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one front-loaded sentence: it leads with the tool's purpose, then provides a compact field list and an interpretive note on the resonance signal. Every element earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description is largely complete: it names all return fields and even explains the meaning of a computed metric. It could be fuller by noting behavior when data is missing (e.g., no captions, unavailable likes), but the current level is solid.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single parameter at 100% coverage ('Video ID or any YouTube URL'), so the description adds no additional parameter-level meaning. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'Full metadata + engagement for one video' and enumerates the exact fields returned. This clearly distinguishes it from sibling tools like search_videos or get_transcript, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: this is the tool for a single video's full metadata and engagement, not for searching, channel listing, or transcripts. It does not explicitly name alternatives or exclusions, but the one-video scope plus field list makes the intended use unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_videosSearch YouTube videosA
Search YouTube for videos (no API key). Returns id, title, channel, published, views, duration, snippet per hit. Use filters to narrow: uploadDate for recency, sortBy view_count to find what performs.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| sortBy | No | Result ordering (default relevance) | |
| duration | No | short <4min, medium 4-20min, long >20min | |
| maxResults | No | Max hits to return (default 15) | |
| uploadDate | No | Only videos uploaded within this window |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and discloses meaningful traits: 'no API key' signals authentication requirements, and the explicit 'Returns id, title, channel, published, views, duration, snippet per hit' describes the response shape. It does not mention rate limits, pagination, or error behavior, but the disclosed return fields and filter effects are substantial for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: action and authentication, return shape, then filter guidance. Front-loaded with the core verb and resource. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter search tool with no output schema and no annotations, the description is fairly complete: purpose, auth trait, per-hit return fields, and filter guidance. It does not explicitly describe the overall response container (e.g., array vs. object) or pagination, but the field list and parameter schema fill most gaps an agent would need to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes beyond the schema by mapping two parameters to concrete use cases ('uploadDate for recency, sortBy view_count to find what performs'), adding semantic meaning to the enum choices. It does not describe maxResults or duration, but those are already clear from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search YouTube for videos') and immediately differentiates from sibling tools by the action of searching. The added '(no API key)' and field-list detail confirm it is the general search tool, not get_video or get_channel_videos. Even without naming siblings, the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to use filters ('uploadDate for recency, sortBy view_count to find what performs'), which is actionable usage guidance. It does not explicitly contrast with sibling tools or state when not to use this tool, but the search-vs-single-item distinction is strongly implied by the title and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.1- First observed
get_channel_videos - First observed
get_search_suggestions - First observed
get_transcript - First observed
get_transcripts - First observed
get_video - First observed
search_videos
TDQS
Scored across 6 tools
Each tool serves a clearly distinct purpose: search, video metadata, single transcript, batch transcript, channel details, and search suggestions. There is no functional overlap that would confuse an agent.
All tools follow a consistent action_noun pattern (search_videos, get_video, get_transcript, get_transcripts, get_channel_videos, get_search_suggestions). The pluralization for batch operations is intuitive and predictable.
Six tools is a well-scoped size for a YouTube research server. Each tool adds a distinct capability without redundancy or bloat.
The surface covers the core YouTube research workflow: search, video details, transcripts, channel overview, and keyword discovery. Minor gaps like full channel video listing or comments are absent but not critical for the stated purpose.
Maintenance
Related MCP Connectors
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
YouTube data for AI agents: channels, videos, transcripts, comments, search. Video research.
YouTube transcripts, search, channels, playlists and bulk transcript jobs for AI agents. 14 tools.
YouTube search, whole channels, video stats, comments and full transcripts with timestamps.
Related MCP Servers
- AlicenseCqualityBmaintenanceEnables AI agents to search, analyze, and extract insights from YouTube videos including transcripts, visual frames, and benchmarks without requiring API keys. Supports semantic search across playlists, sentiment analysis, and visual content indexing with automatic fallback chains for reliable access.41360 npm34MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to fetch transcripts, metadata, and download videos/audio from YouTube without API keys.33MIT
- AlicenseAqualityDmaintenanceEnables AI agents to search, watch, summarize, clip, and extract transcripts from YouTube videos, all without needing an API key or leaving the chat.99 npm54Apache 2.0
- AlicenseNot gradedqualityBmaintenanceProvides AI agents with token-optimized access to YouTube data, including video details, transcripts, channel statistics, trending videos, and search.1,076 npmMIT