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 密钥,也无需配置。然后你可以让你的代理问这类问题:
“找到上个月关于 n8n 的 5 个观看量最高的视频,并总结人们在哪些方面有困惑。”
最省事的一体化方案(Claude Code):以插件方式安装 — MCP 服务器 + 全部 6 个技能,只需两条命令:
/plugin marketplace add not0lucky/tubescout
/plugin install tubescout@tubescout或者手动安装技能包(适用于 Claude 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
工具
工具 | 功能 |
| 使用筛选器搜索(上传时间窗口、时长、按观看量/日期排序) |
| 完整元数据 + 互动数据( |
| 通过稳健的三策略回退链获取纯文本转录文本 |
| 批量获取转录文本(最多 10 个视频),单个视频出错不影响其他 |
| 频道定位 + 近期上传视频及其观看量 |
| YouTube 自动补全 = 真实的搜索需求,用于关键词研究 |
技能(研究方法)
技能 | 用途 |
| 对视频进行怀疑论式分析:提取每一条主张和数字,对动机、幸存者偏差、可验证性进行压力测试 |
| 挖掘细分领域的产品创意,以需求信号 + 真实构建者在镜头前描述的痛点为支撑 |
| Go/No-Go 判定:需求、饱和程度、竞争对手的数据实际说明了什么 |
| 解读频道策略:发布节奏、异常值、什么内容表现好 vs 他们实际发布的内容 |
| 把教程转化为可执行的步骤——确切的命令、设置,以及顺带提到的那些坑——并根据你的技术栈调整 |
| 发现需求 vs 供给的缺口:搜索量很高的主题,目前只有薄弱、过时或不匹配的视频来承接——用于内容计划或产品角度 |
所有技能都是上下文感知的:它们会读取对话,了解你在构建什么、你的技术栈,以及已经分析过的视频,并根据你真正的优势来定制判断,而不是给出泛泛的建议。
查看 一次真实的 /yt-breakdown 运行,它分析三支“我是如何每月赚 $X”的视频——包括哪些内容经得起怀疑论者的审视,哪些经不起。
工作原理(说实话)
这里没有任何魔法,而这正是关键:
youtubei.js 与 YouTube 内部的 InnerTube API 通信——就是网站本身在用的那个。无需密钥,也没有配额。
转录文本来自 YouTube 自己的字幕,通过一条回退链获取:ANDROID-client 的 timedtext 轨道 → InnerTube 转录端点(已知会间歇性返回 400——会退避重试)→ 如果你本地有
yt-dlp,就用它。每个响应都会告诉你数据由哪个source提供。所有分析都发生在你的代理中。服务器提供数据;技能提供方法。
限制
在本地运行。 YouTube 对数据中心 IP 限流非常严格——这本来就是一个本地 stdio 服务器,不是托管服务。
YouTube 会在不通知的情况下更改内部机制;如果损坏,请更新(
npx总是拉取最新版)并用出问题的视频 ID 提交 issue。关闭了字幕的视频无法转录(很少见;错误信息会明确说明)。
抓取字幕处于 YouTube ToS 的灰色地带——用于本地研究工具没问题,但不要基于它构建托管的付费产品。
开发
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