mcpField
Y
YouTube MCP Server

YouTube MCP Server

已认证精选远程服务
hasdata.com数据与分析7今天更新

关于 YouTube MCP Server

YouTube MCP Server 是面向 MCP 客户端的托管只读服务,供 YouTube 研究使用。它支持搜索、获取视频和频道数据及带时间戳的字幕,无需 YouTube API 密钥。

主要功能

  1. 01按筛选条件搜索 YouTube
  2. 02获取视频元数据和相关视频
  3. 03读取频道数据与标签页
  4. 04获取带时间戳的字幕

适用场景

  1. 01按主题、日期或时长查找视频
  2. 02比较频道上传内容与统计数据
  3. 03查看视频字幕并梳理其观点

MCP 相关

通过可流式传输的 HTTP 向 MCP 客户端提供四种只读 YouTube 工具。需要 HasData API 密钥;仅支持 stdio 的客户端可使用配套启动器。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.hasdata.com/mcp?apis=youtube
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://mcp.hasdata.com/mcp?apis=youtube需要授权
安装包
npm@hasdata/youtube-mcp1.0.9
pypihasdata-youtube-mcp1.0.9

工具

4
参数类型必填说明
channelIdstring是YouTube 频道标识符,可以是规范频道 ID(`UC…`,24 个字符)或以 `@` 开头的公开句柄(例如 `@PewDiePie`)。也接受旧版 `/c/<custom>` 和 `/user/<name>` URL 路径。
tabenum否要抓取的频道标签页。每个标签页返回不同结构的内容: - `featured`(默认)— 频道主页(频道预告片 + 精选行) - `videos` — 已上传的长视频 - `shorts` — Shorts 信息流 - `streams` — 过去和即将开始的直播 - `playlists` — 创建和保存的播放列表 - `posts` / `community` — 社区帖子 - `podcasts` — 播客节目 - `releases` — 音乐发行内容 - `about` — 频道说明、链接、统计数据 - `store` — 频道周边商品featured | videos | shorts | streams | playlists | posts | community | podcasts | releases | about | store
glstring否要将搜索范围限制到的国家/地区的两字母国家代码。请提供一个精确的已记录值(共支持 245 个),例如 `ac`、`af`。
hlstring否要用于搜索的两位语言代码。请提供一个准确的文档所列值(共允许 159 个),例如 `af`、`ak`。
deviceTypeenum否请求所用的设备类型。desktop | mobile
paginationTokenstring否上一次响应中返回的令牌,用于获取下一页结果。

详细介绍

YouTube MCP Server

一个托管的 Model Context Protocol(MCP)服务,为 Claude、Cursor、Windsurf 和其他任何 MCP 客户端提供四种只读 YouTube 工具。搜索 YouTube、读取视频和频道数据,以及提取字幕,无需 Google Cloud 项目或 YouTube Data API 密钥。

每月 1,000 个免费额度,无需绑定银行卡,可调用 YouTube 100 次。

https://mcp.hasdata.com/mcp?apis=youtube

Glama score tool contract MCP Tools

目录

所需条件

一个支持带自定义标头的可流式 HTTP 的 MCP 客户端。一个从控制面板获取的 HasData API 密钥,创建密钥免费。无需其他条件。这是一个远程服务,因此最简单的接入方式是使用 URL 和标头,无需运行容器,整个流程也不需要 Google 账号。仅支持 stdio 的客户端可以改用 @hasdata/youtube-mcp(npm)或 hasdata-youtube-mcp(PyPI)启动器。

快速开始

所有客户端使用相同的服务器 URL。我们会在 Claude Code 和 Claude Desktop 中手动运行。其他代码块则遵循各客户端为远程服务规定的格式。

字段值
URLhttps://mcp.hasdata.com/mcp?apis=youtube
传输方式HTTP,可流式传输
认证标头x-api-key: HASDATA_API_KEY

支持 OAuth 的客户端可以将相同的 URL 添加为连接器,然后登录,无需将密钥放入配置文件。

Claude Code
claude mcp add --transport http youtube "https://mcp.hasdata.com/mcp?apis=youtube" \
  --header "x-api-key: HASDATA_API_KEY"
Claude Desktop

依次选择 Settings、Connectors、Add custom connector,然后粘贴 https://mcp.hasdata.com/mcp?apis=youtube 并登录。

如果选择配置文件方式,Claude Desktop 只会加载本地(stdio)服务,因此需要通过 stdio 启动器连接远程服务。@hasdata/youtube-mcp 包就是这个启动器,它会从环境中读取密钥。将以下内容添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "youtube": {
      "command": "npx",
      "args": ["-y", "@hasdata/youtube-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

想用 Python 而不是 Node?将启动器换成 PyPI 包即可,uvx 会运行它,无需手动安装:

{
  "mcpServers": {
    "youtube": {
      "command": "uvx",
      "args": ["hasdata-youtube-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}
Cursor

适用于所有项目的 ~/.cursor/mcp.json,或仅适用于一个项目的 .cursor/mcp.json:

{
  "mcpServers": {
    "youtube": {
      "url": "https://mcp.hasdata.com/mcp?apis=youtube",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
Windsurf

~/.codeium/windsurf/mcp_config.json。Windsurf 将字段称为 serverUrl,而不是 url:

{
  "mcpServers": {
    "youtube": {
      "serverUrl": "https://mcp.hasdata.com/mcp?apis=youtube",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
Cline
{
  "mcpServers": {
    "youtube": {
      "url": "https://mcp.hasdata.com/mcp?apis=youtube",
      "type": "streamableHttp",
      "headers": { "x-api-key": "HASDATA_API_KEY" },
      "disabled": false
    }
  }
}
VS Code

工作区中的 .vscode/mcp.json:

{
  "servers": {
    "youtube": {
      "type": "http",
      "url": "https://mcp.hasdata.com/mcp?apis=youtube",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
Codex CLI

~/.codex/config.toml:

[mcp_servers.youtube]
url = "https://mcp.hasdata.com/mcp?apis=youtube"

[mcp_servers.youtube.headers]
"x-api-key" = "HASDATA_API_KEY"
Gemini CLI

~/.gemini/settings.json:

{
  "mcpServers": {
    "youtube": {
      "httpUrl": "https://mcp.hasdata.com/mcp?apis=youtube",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

提示词示例

这些是提示词,不是代码。粘贴一条,Agent 就会自行选择工具。每条都注明了所需调用次数,因为在 MCP 中,由模型决定调用几次,每次成功调用都会消耗 10 个积分。

找出过去一个月关于 Model Context Protocol 的观看次数最多的 10 个视频,然后提取排名第一的视频字幕,并列出其中关于工具调用的 3 个论点。

调用两次,消耗 20 个积分。

查看频道 @GoogleDevelopers。列出该频道发布的各个标签页,然后总结最近上传的 5 个视频,并指出重复出现的主题。

调用两次,消耗 20 个积分。读取尚未查看过的标签页需要额外调用一次,因为标签页列表会包含在第一次响应中。

查看这个视频 ID:dQw4w9WgXcQ。获取其统计数据,然后检查相关视频中哪些来自同一频道。

调用一次,消耗 10 个积分。相关视频会一并包含在同一个响应中。

在 YouTube 上搜索“web scraping tutorial”,按上传日期排序,只看时长少于 4 分钟的视频,并列出每个有章节的视频的章节标题。

调用一次,消耗 10 个积分。

提取这个视频的德语字幕(如果有),并告诉我该视频提供哪些语言版本。

调用一次,消耗 10 个积分。

搜索会使用 YouTube 自己的筛选标记,Agent 无需后处理即可按时长、上传日期和内容类型缩小范围。字幕会与可用语言轨道列表一并返回,因此 Agent 可以直接选择一种语言,无需猜测。

每次翻页都需要一次调用。一个先搜索、翻两页、再提取 3 份字幕的研究提示词需要调用 6 次,消耗 60 个积分。相比开放式爬取,免费套餐更适合回答范围明确的问题。

工具

工具返回内容
hasdata_youtube_channel_getYoutubeChannel频道身份信息(标题、描述、头像、横幅、国家/地区、加入日期)、订阅者数和总观看次数、社交链接,以及所请求标签页中的条目(视频……)。每次调用 10 个积分
hasdata_youtube_search_getYoutubeSearchResults按查询词搜索 YouTube,并返回完整结果页,拆分为 videoResults(videoId、标题、观看次数、时长、发布日期、章节、频道信息、扩展信息……)。每次调用 10 个积分
hasdata_youtube_transcript_getYoutubeTranscript根据 11 个字符的 videoId 获取 YouTube 视频的定时转录文本(字幕)。每次调用 10 个积分
hasdata_youtube_video_getYoutubeVideo标题、缩略图、原始及标准化的观看次数和点赞数、lengthSeconds、发布日期、类别、关键词/标签、isFamilySafe / isUnlisted 标记、上传视频的频道……。每次调用 10 个积分

这 4 个工具均为只读。以下示例摘自真实调用,但其中的数字会随着 YouTube 更新而变化。请将它们视为数据结构示例。每个工具名称都链接到对应的端点参考文档,其中包含完整的字段列表。

这些示例展示的是负载,而不是完整响应。tools/call 结果包含一个文本块,该文本本身是一个包含 url、status、text 和 json 的 JSON 对象,抓取的数据位于 json 下。从原始 JSON-RPC 响应中读取时,路径为 result.content[0].text,解析后再访问 .json。聊天客户端会为你解包,而直接与端点通信的代码不会。

获取 YouTube 搜索结果

hasdata_youtube_search_getYoutubeSearchResults

搜索 YouTube 并返回完整结果页,按结果类型拆分。

参数类型必填备注
q字符串是自由文本查询词,必须与用户输入的内容完全一致
sortBy字符串默认为 relevance,也可使用 date、views、rating 和 popularity
date字符串相对于当前时间的上传时间范围
length字符串时长范围,例如 under4
videoType字符串限定为一种内容类型
filters__数组可组合使用的功能标记
sp字符串从搜索 URL 中复制的原始 YouTube sp 令牌。该参数会静默覆盖 sortBy、date、videoType、length 和 filters__,因此传入令牌时请将这些参数留空
paginationToken字符串上一响应中的 pagination.nextPageToken
gl / hl / deviceType字符串两位数的国家/地区代码和语言代码,以及设备

结果页由 videoResults、shortsResults、inlineShortsResults、playlistResults、channelResults 和 shelves 组成;付费推广内容则位于 adsResults 和 sponsoredResults 中。具体出现哪些数据块取决于查询;没有内容可报告的数据块不会出现,而不是返回空值。遍历前请先检查键是否存在。searchInformation 包含总数,pagination.nextPageToken 则是你要作为 paginationToken 传回的值。广告不会混入自然搜索结果数组中,不过有两个广告数据块需要跳过。

{
  "positionOnPage": 1,
  "videoId": "GuTcle5edjk",
  "title": "you need to learn MCP RIGHT NOW!! (Model Context Protocol)",
  "viewsOriginal": "1.6M views",
  "views": 1653824,
  "length": "38:40",
  "publishedDate": "11 months ago",
  "extensions": ["4K"],
  "chapters": [
    { "title": "Intro", "time": "0:00" },
    { "title": "Problem: LLMs Suck at Accessing Code", "time": "0:40" }
  ],
  "channel": { "name": "NetworkChuck", "verified": true }
}

这里有两点值得一提。views 是解析后的整数,与 1.6M views 这样的显示字符串并列,因此无需解析后缀。chapters 也会出现在搜索结果中,而不仅仅出现在视频本身的数据中,不过只有部分视频会包含章节。

搜索端点参考文档列出了该端点接受的所有 sp 和 filters__ 令牌。

获取 YouTube 视频数据

hasdata_youtube_video_getYoutubeVideo

按 ID 获取一个视频。

参数类型必填说明
vstring是v= 后的 11 个字符的视频 ID
gl / hl / deviceTypestring两位国家和语言代码,以及设备

返回 title、thumbnail、channel、publishedDate、lengthSeconds、category、isFamilySafe 和 isUnlisted,以及 relatedVideos、endScreenVideos、keywords、captions、music 和 socialLinks 数组。description 是一个对象,其中 content 保存完整文本,links 数组中的每个链接和话题标签都包含 startIndex、length、text 和 url。text 字段保存作者写下的链接,url 字段保存 YouTube 的重定向包装链接;如果要从简介中提取赞助商或联盟营销的目标网址,这一点很重要。

复制下面的示例之前,请先按工具的字段名称读取解析后的字段。搜索结果和频道结果会将解析后的数字放在 views 中,将显示字符串放在 viewsOriginal 中。此响应则相反:views 中是字符串,extractedViews 中是数字;likes 和 subscribers 也采用相同的相反排列。如果弄错,item.views > 100000 会在这里将字符串作为比较对象,而且不会抛出异常。

{
  "title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
  "views": "1,806,075,152 views",
  "extractedViews": 1806075152,
  "likes": "19M",
  "extractedLikes": 19344370,
  "publishedDate": "Oct 24, 2009",
  "lengthSeconds": 214,
  "category": "Music",
  "channel": { "name": "Rick Astley", "subscribers": "4.53M subscribers", "extractedSubscribers": 4530000 }
}
获取 YouTube 频道数据

hasdata_youtube_channel_getYoutubeChannel

按 ID 或句柄获取一个频道,每次获取一个标签页。

参数类型必填说明
channelIdstring是标准的 UC… ID 或 @handle
tabstring默认值为 featured,还可选 videos、shorts、streams、playlists、posts、community、podcasts、releases、about 和 store。请从此列表中选择值,不要使用响应中的 availableTabs
paginationTokenstring上一个响应中的令牌
gl / hl / deviceTypestring两位国家和语言代码,以及设备

默认标签页会返回 channelInfo、featuredVideo 和 sections。其他标签页会返回各自的数据结构。channelInfo 包含句柄、头像、横幅、简介、频道关键词和频道的 rssUrl,足以让你持续关注频道,而无需轮询。

下面示例中的 availableTabs 数组保存的是显示标签,并非 tab 接受的值。Home、Live、Courses 和 Search 都不对应任何参数值;其余值则需要转换为小写。读取此列表并逐项遍历的 Agent 会在第一项就失败。

{
  "channelInfo": {
    "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
    "name": "Google for Developers",
    "handle": "@GoogleDevelopers",
    "rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UC_x5XG1OV2P6uZZ5FSM9Ttw",
    "isFamilySafe": true,
    "availableTabs": ["Home", "Videos", "Shorts", "Live", "Courses", "Playlists", "Posts", "Search"]
  }
}
获取 YouTube 视频字幕稿

hasdata_youtube_transcript_getYoutubeTranscript

获取视频的带时间戳字幕稿。

参数类型必填说明
vstring是11 个字符的视频 ID
languageCodestring所需字幕轨道的 BCP-47 代码
typestring设置为 asr 以获取自动生成的字幕轨道

在信任语言之前,请检查响应中的 selected。请求视频不包含的 languageCode 既不会失败,也不会返回空结果,而是会静默回退到默认轨道。列表中的每个条目都包含 languageName 和 languageCode;同一种语言可能出现两次,一次是人工制作的字幕,另一次的 type 设置为 asr。

{
  "transcript": [
    { "startMs": 320, "endMs": 18800, "snippet": "[Music]", "startTimeText": "0:00" },
    { "startMs": 18800, "endMs": 21800, "snippet": "We're no strangers to", "startTimeText": "0:18" }
  ],
  "availableTranscripts": [
    { "languageName": "English", "languageCode": "en" },
    { "languageName": "English", "languageCode": "en", "type": "asr", "selected": true },
    { "languageName": "German (Germany)", "languageCode": "de-DE" },
    { "languageName": "Japanese", "languageCode": "ja" }
  ]
}

提示词和资源

该服务提供 2 个提示词,即客户端可以直接提供给用户的现成工作流,无需用户自行编写工具调用。

提示词功能
youtube_search查找与某个主题相关的 YouTube 视频和频道。
youtube_transcript总结 YouTube 视频中的内容。

此外,该服务还公开 10 个资源,每个资源对应一个取值范围为固定列表的参数。读取资源比因调用被拒而学习相关词汇更省力,而且不消耗额度。每个 URI 的格式为 hasdata://youtube/<parameter>。

参数取值数选择内容
tab11要抓取的频道标签页。每个标签页返回不同的内容:- featured(默认)— 频道主页(频道预告片 + 精选内容行) - videos — 上传的长视频 - shorts — Shorts 信息流 - streams — 过去和即将开始的直播 - playlists — 创建和收藏的播放列表 - posts / community — 社区帖子 - podcasts — 播客节目 - releases — 音乐发行内容 - about — 频道简介、链接、统计数据 - store — 频道周边商品
gl245要限制搜索范围的国家/地区的两字母代码。
hl159搜索所用语言的两字母代码。
deviceType2请求的设备类型。
sortBy5结果页的排序方式。relevance(默认)— 最符合查询条件的结果;date — 最新优先;views — 观看次数最多的优先;rating — 评分最高的优先;popularity — 热门/最受欢迎的优先。
date5将结果限制为相对于当前时间在指定时间范围内上传的视频。
videoType5将结果限制为一种 YouTube 内容类型:普通视频、Shorts、频道、播放列表或电影。
length3按视频时长范围筛选:- under4 — 不足 4 分钟 - between420 — 4 至 20 分钟 - plus20 — 超过 20 分钟
filters__11要求结果具备的功能标记。多个取值组合时采用 AND(每个标记都必须满足)。- hd — HD 画质 - k4 — 4K 画质 - hdr — HDR - subtitles — 有字幕/隐藏式字幕 - cc — Creative Commons 许可 - d3 — 3D 视频 - d360 — 360° 视频 - vr180 — VR180 视频 - live — 正在直播 - bought — 已购买/付费内容 - location — 带有地理位置标记
type1设置为 asr,以获取 YouTube 自动生成的(语音识别)字幕轨道。若要在存在 languageCode 对应的人工作者轨道时获取该轨道,请省略此项。

这两类列表均可在无需 API 密钥的情况下获取,因此客户端可以在用户注册前读取它们。

错误和失败路径

工具调用几乎不会让客户端收到 HTTP 错误代码。MCP 层会返回 200,并将失败放在结果中,isError 设为 true,原因以文本形式给出。Agent 读取到的是一条消息,而不是你可能预期的状态行。

错误的密钥会作为工具输出出现,而不是连接失败。 tools/list 接受任何非空密钥并返回全部四个工具,因此客户端会完成握手并显示绿色状态。之后的首次工具调用会返回 isError: true,文本为 HasData API error: 401 Unauthorized。请留意这段字符串,因为流程中此前不会报告这个问题。

缺少密钥是唯一真正的 HTTP 错误。 授权会在任何工具执行前进行,连接本身会以 401 失败。响应中包含 CORS 标头,浏览器客户端可以读取状态,而不是只能收到不透明的网络错误。

不符合工具架构的参数会在触发抓取前被拒绝。 服务会返回 isError: true,文本为 MCP error -32602: Input validation error,并指出有问题的字段。不会抓取任何内容,也不会产生费用。消息会指出字段,但不会列出可接受的值,因此请参阅上方的参数表。

调用成功但没有找到任何内容,是最容易让人困惑的情况。 它会作为普通结果返回,其中 requestMetadata.status 设为 ok,而数据键则直接缺失。正文中没有任何内容会说明结果为空。请检查所需字段,而不是检查是否出错。

平台不接受的标识符会返回 400,且 requestMetadata.status 设为 error。不存在的频道句柄是最常见的触发方式。

包含数据的结果也会带有 requestMetadata.id,联系支持时值得引用该 ID。

定价、免费套餐和限额

每次成功调用 YouTube 工具都会消耗 10 个点数。响应大小不会影响价格。一整页搜索结果和仅含一个视频的页面价格相同。

免费套餐每月提供 1,000 个点数,无需绑定银行卡,可调用 YouTube 工具 100 次。套餐会随计费周期续订,因此低调用量的 Agent 可以无限期使用免费套餐。

付费套餐起价为每月 $59,包含 200,000 个点数,可调用 20,000 次。用量越大,单价越低:入门套餐为每 1,000 次调用 $2.95,Basic 为 $1.19,Growth 各档为 $0.83。最新价格请查看定价页面。

套餐还决定并发数。免费套餐允许同时发起 1 个请求,Startup 为 5 个,Basic 为 15 个,Growth 各档则为 50 到 500 个。在任何无人值守的任务中,都应妥善处理超出限额的情况,因为并行发起大量请求的 Agent 会比你更早触及上限。

返回非 200 的请求不会计费。成功调用但没有找到任何内容,仍会计为一次调用。

工具选择

apis 查询参数决定 Agent 能看到哪些工具。工具越少,用于工具定义的上下文就越少,模型选错工具的机会也越少。

?apis=youtube                    the four tools in this repo
?apis=youtube,google_serp        add Google search
?apis=youtube,tiktok,instagram   a social research bundle

该参数接受 youtube 之类的提供商名称,也接受 google_maps_search 之类的单个 API 名称。拼写错误的名称会被忽略。如果所有名称都无效,请求会以 400 失败,正文会列出无法识别的名称和所有有效值。省略该参数,同一端点会公开全部 57 个 HasData 工具。

对比

与官方 YouTube Data API v3 相比:

YouTube Data API v3本服务
设置Google Cloud 项目和 API 密钥一个密钥和一个 URL
搜索额度根据 Google 的入门指南,每天有“默认配额 100 次 search.list 调用”使用套餐额度,每次调用消耗 10 个额度
获取非本人拥有的视频字幕根据 Google 的参考文档,captions.download“要求用户有权编辑该视频”支持,并提供语言列表
搜索结果中的章节不支持支持
搜索结果中的观看次数和点赞数不提供;另一次 videos.list 调用会以字符串形式返回这些数据同一响应中同时提供显示字符串和整数
费用每日配额内免费超出免费额度后收费,每次调用消耗 10 个额度
写入和私人数据通过 OAuth 上传视频、管理播放列表和评论,并查看自己的分析数据只读,仅限公开数据

最后两行很重要。如果每日配额足以满足你的使用量,而且你查询的是自己拥有的频道,那么官方 API 更便宜,你应该选择它。

大多数其他 YouTube MCP 服务只提供字幕。此服务还可搜索、读取带有互动数据的视频,以及浏览频道标签页,因此 Agent 无需连接第二个服务即可完成整个研究流程。

此服务不提供的功能。 不支持评论、频道管理、上传、分析数据或私人数据。它读取的是未登录访客能够看到的内容。

常见问题

有官方的 YouTube MCP 服务吗?

Google 没有发布此类服务。YouTube 没有官方 MCP 服务。所有此类服务都由第三方开发,基于 YouTube Data API v3 或公开页面构建。此服务由 HasData 维护,读取公开页面,因此无需 Google 凭据。

什么是 YouTube MCP 服务?

这类服务会将 YouTube 数据作为工具提供,供 AI 客户端调用。客户端通过 Model Context Protocol 发送工具调用,服务获取数据并返回结构化 JSON,模型处理返回结果,无需查看 HTML 页面。此服务提供四种工具,并在远程运行。客户端连接到 URL 即可,无需启动本地进程。

我需要 YouTube API 密钥或 Google Cloud 项目吗?

不需要。唯一需要的凭据是你的 HasData 密钥。由于这些工具读取的是 YouTube 公开页面,而不是 YouTube Data API,因此你无需创建 Google Cloud 项目、填写配额申请表或配置 OAuth 同意屏幕。

我需要托管或运行任何东西吗?

不需要。这是一个基于可流式传输 HTTP 的远程 MCP 服务。无需安装任何内容,也无需保持容器运行或重启进程。

数据是实时的还是缓存的?

数据是实时的。每次调用都会在请求时获取页面,并附带自己的 requestMetadata.id。两次相同的调用会分别获取数据,不会重放已存储的副本。观看次数和点赞数等计数会随页面变化而更新。

YouTube 更改版式后会怎样?

你无需做任何处理。我们会跟踪这些变化并保持响应架构稳定,因此字段名称和类型不会改变。没有值的字段不会出现在条目中,而不是以 null 值呈现。读取可选字段时,请设置默认值。

我可以将此服务与其他 HasData API 一起使用吗?

可以。apis 参数接受一个列表;使用 ?apis=youtube,google_serp,Agent 就能获得四种 YouTube 工具以及 Google 搜索工具。移除该参数,即可获得所有工具。

我可以获取任意视频的字幕吗?

仅当视频提供字幕时才可以;你可以先查看 availableTranscripts,了解有哪些字幕可用。

我可以通过 OAuth 登录,而不是粘贴密钥吗?

可以,但需要客户端支持。Claude Desktop 和 Cursor 可以将该端点添加为连接器并登录。无人值守的 Agent 和脚本则使用 x-api-key 标头。

合规与个人数据

HasData 仅访问公开数据。平台条款可能限制自动化访问,您有责任自行确保合规。如果您收集的数据包含个人信息,请确保根据 GDPR、CCPA 或您所在司法管辖区的同等规定,拥有合法处理依据。

HasData 链接

产品页面和请求构建器YouTube Scraper API
服务文档MCP server docs
单个服务中的全部 57 个工具HasData/hasdata-mcp
客户端使用指南MCP clients and integrations
我们抓取的其他所有内容YouTube Scraper API and 54 more
套餐和积分费用Plans and credit costs
密钥和用量HasData dashboard
npm 上的 Node 启动器@hasdata/youtube-mcp
PyPI 上的 Python 启动器hasdata-youtube-mcp

开发

此仓库包含远程服务的配置和文档。无需构建,也无需容器化。

test/ 中的测试会验证工具契约,也就是可能在此处未提交任何更改的情况下发生变化的部分。这些测试会检查 ?apis=youtube 是否恰好返回四个工具、每个工具是否仍声明了必需参数、名称是否保持不变,以及正在使用的密钥是否确实可用。最后一项检查会实际调用工具并消耗 10 个积分,这是为可能因合理原因失败的金丝雀测试付出的代价。

# macOS and Linux
HASDATA_API_KEY=your_key_here npm test

# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test

同一套测试会在每次推送时以及按每周计划在 CI 中运行,因为上游工具列表可能在无人修改此仓库的情况下发生变化。测试失败意味着工具列表发生了变化、密钥停止工作或端点无法访问,断言消息会指出具体原因。

贡献

修正工具表格和响应示例是最有帮助的贡献,因为这些内容最容易过时。请附上您执行的调用和收到的响应。来自 fork 的拉取请求会在不使用密钥的情况下运行测试套件,实时检查则会跳过,不会导致构建失败。

许可证

MIT。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。