关于 tubedata
tubedata 是用于获取 YouTube 公开数据 JSON 的本地桥接工具,适合需要搜索结果、视频或频道详情及转录文本的应用与工作流。它将请求转发至 HasData 托管的 MCP 服务,并支持命令行和 stdio MCP 接入。
主要功能
- 01搜索视频、频道和 Shorts
- 02获取视频详情与定时转录文本
- 03读取频道页面及各标签页
- 04筛选并分页浏览搜索结果
- 05命令行与 stdio MCP 模式
适用场景
- 01查找某个主题的 YouTube 视频
- 02查看视频详情和转录文本
- 03检查频道内容与订阅者数量
MCP 相关
通过本地 MCP 服务向客户端提供 YouTube 搜索、视频、频道和转录文本工具,并将调用转发至 HasData 托管的 MCP 服务。也支持命令行调用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| gl | string | 否 | 要将搜索范围限制到的国家/地区的两字母国家代码。请提供一个精确的已记录值(共支持 245 个),例如 `ac`、`af`。 |
| hl | string | 否 | 要用于搜索的两位语言代码。请提供一个准确的文档所列值(共允许 159 个),例如 `af`、`ak`。 |
| tab | enum | 否 | 要抓取的频道标签页。每个标签页返回不同结构的内容: - `featured`(默认)— 频道主页(频道预告片 + 精选行) - `videos` — 已上传的长视频 - `shorts` — Shorts 信息流 - `streams` — 过去和即将开始的直播 - `playlists` — 创建和保存的播放列表 - `posts` / `community` — 社区帖子 - `podcasts` — 播客节目 - `releases` — 音乐发行内容 - `about` — 频道说明、链接、统计数据 - `store` — 频道周边商品featured | videos | shorts | streams | playlists | posts | community | podcasts | releases | about | store |
| channelId | string | 是 | YouTube 频道标识符,可以是规范频道 ID(`UC…`,24 个字符)或以 `@` 开头的公开句柄(例如 `@PewDiePie`)。也接受旧版 `/c/<custom>` 和 `/user/<name>` URL 路径。 |
| deviceType | enum | 否 | 请求所用的设备类型。desktop | mobile |
| paginationToken | string | 否 | 上一次响应中返回的令牌,用于获取下一页结果。 |
详细介绍
tubedata
tubedata 是一个小型本地桥接程序,连接托管的 HasData YouTube MCP 服务,并以 JSON 格式返回 YouTube 数据。 向它提供搜索查询,它会返回拆分为视频、频道、Shorts、货架和 广告的结果页;提供一个视频 ID,它会获取该视频的 完整详情或带时间戳的字幕稿;提供一个频道 ID 或句柄,它会逐个标签页获取该频道页面。
该桥接程序不保存任何 YouTube 数据。它会在本地提供上游服务的工具列表, 内容与从实时端点捕获的完全一致,并将每次 工具调用转发到上游,原样返回结果。 捕获的接口只包含只读的 YouTube 公开数据: 其中没有上传、发布评论、发送消息或付款工具。
工具
hasdata_youtube_search_getYoutubeSearchResults— 搜索 YouTube。必需参数:q。可选筛选项 包括gl、hl、deviceType、sp、sortBy、date、videoType、length、filters__和paginationToken。返回视频、频道和 Shorts 结果、货架、广告以及结果总数。hasdata_youtube_video_getYoutubeVideo— 按 11 个字符的 ID 获取一个视频。必需参数:v。 可选参数:gl、hl、deviceType。返回标题、观看次数和点赞数、 时长、频道、说明、字幕轨道、音乐匹配项以及相关内容栏。hasdata_youtube_channel_getYoutubeChannel— 按 ID(UC...)或句柄(@name) 获取一个频道。必需参数:channelId。可选参数:tab、gl、hl、deviceType、paginationToken。返回频道 身份、订阅者数量以及所请求标签页的内容。hasdata_youtube_transcript_getYoutubeTranscript— 获取视频的带时间戳字幕稿。必需参数:v。 可选参数:languageCode、type(自动生成的轨道使用asr)。返回字幕稿片段以及视频上所有可用的轨道。
配置
HASDATA_YOUTUBE_MCP_URL(可选)— 覆盖 上游端点。默认值为https://mcp.hasdata.com/mcp?apis=youtube。(此覆盖入口是本次重建自行标注的还原内容。)HASDATA_API_KEY(可选)— 设置后,每个 上游请求都会携带x-api-key: <key>标头,使用调用者自己的 HasData API 密钥。未设置时, 不会发送密钥标头。(标头名称和环境变量名称已由原始注册记录确定;从此环境 变量转发密钥属于标注的还原内容 — 原始接口是在未提供密钥的情况下捕获的。)
转发机制
首次调用工具时,客户端会与上游建立可流式传输的
HTTP 会话:发送 JSON-RPC
initialize 请求(protocolVersion 2025-03-26,
clientInfo 名称为 tubedata),随后发送
notifications/initialized 通知,再发送携带调用者参数原样内容的
tools/call 请求。上游在 initialize
响应中返回 Mcp-Session-Id 标头时,该值会随
此会话之后的每个请求一起发送,并在进程运行期间重复使用。
回复可能是普通 JSON,也可能是服务器发送事件;两种格式都会读取。
成功的上游结果会原样传递,包括上游设置的任何
isError 标志。
失败情况 — JSON-RPC 错误、非 2xx 状态、无法读取的响应或
无法完成的请求 — 都会作为 isError 结果返回,文本以
tubedata error: 开头(此错误呈现方式是本次重建自行标注的还原内容)。
CLI
每个工具也可以作为子命令使用,接受一个 JSON 参数字符串:
npx @reneturcios/tubedata hasdata_youtube_search_getYoutubeSearchResults '{"q":"lofi beats"}'
npx @reneturcios/tubedata hasdata_youtube_video_getYoutubeVideo '{"v":"dQw4w9WgXcQ"}'
npx @reneturcios/tubedata hasdata_youtube_channel_getYoutubeChannel '{"channelId":"@PewDiePie"}'
npx @reneturcios/tubedata hasdata_youtube_transcript_getYoutubeTranscript '{"v":"dQw4w9WgXcQ","languageCode":"en"}'
npx @reneturcios/tubedata --version
退出代码:成功时为 0,结果为 isError 时为 1,
用法错误时为 2。
MCP 服务端
npx -y @reneturcios/tubedata mcp
MCP 客户端配置:
{
"mcpServers": {
"tubedata": {
"command": "npx",
"args": ["-y", "@reneturcios/tubedata", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/tubedata
docker run --rm ghcr.io/cloudcorprecords/tubedata --version
容器的默认命令是 mcp,因此第一种形式是 stdio MCP 服务端;其他参数会照常传递给 CLI。
开发
npm install
npm run build
npm test
npm run dev
测试套件完全通过桩接 JSON-RPC 上游运行 — 不会进行实时网络调用。
许可证
MIT — 参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。