YouTube 数据 Skill
通过 UnifAPI MCP 读取 YouTube 公开数据:用于频道研究的 youtube/... 操作、响应结构与覆盖限制。绝不上传。
Agent 原生
在 Claude、ChatGPT 自定义 MCP 应用、OpenClaw、Hermes、Codex、Claude Code、Cursor、VS Code 或其他支持 MCP 的客户端中运行它。无需专门的 GUI 流程,也无需单独的 LLM API 密钥。
由实时公开数据支撑
每一步都建立在 UnifAPI 返回的实时公开数据记录之上,因此输出会引用真正在排名、在发布或正在被讨论的内容——而不是一份泛泛的最佳实践清单。
可组合且开源
Skills 相互交叉引用,并存放在一个公开的、MIT 风格的仓库中。在 GitHub 上阅读完整的 SKILL.md、fork 它,或原样在你的 Agent 中运行它。
把它粘贴进 Codex 或 Claude Code
这段提示词有意可自由编辑。替换其中的用户名、市场、预算与活动目标,然后让 Agent 在需要实时公开数据时调用 UnifAPI MCP。
Using the YouTube Data Skill, research who owns the topic "AI coding tools": search videos and channels, read their subscriber and view counts, and pull related videos for demand. Return a cited brief on the strongest channels. Read-only.
由 SKILL.md 渲染出的完整 skill
通过 UnifAPI 读取公开 YouTube 数据的确定性读取路径。这是一个
Data Skill:它本身不运行营销任务——它点明具体的 youtube/... 操作、响应形态
和真实的覆盖限制,让任何频道优先或内容优先的工作流(创作者核查、竞品反响、
内容需求)都从一份已知的配方读取,而不必每次都重新摸索这个面。
只读——眼睛,而非双手。它调研公开 YouTube 数据并返回带引证的记录;它绝不 上传、评论或订阅,且 UnifAPI 绝不持有 YouTube 凭据。
用 unifapi skill 获取实时证据
通过共享的 unifapi skill 连接一次(OAuth MCP),然后调用下面的操作。
频道以 {channel_id} 为键,视频以 {video_id} 为键——先把一个 handle 或
URL 解析为频道 id(见坑点)。保留任何 billing 元数据,以便输出能陈述记录成本。
响应契约
单实体端点在 data 中返回对象:
{
"request_id": "unif_...",
"data": {},
"billing": { "records_charged": 1, "balance_remaining": 99 }
}
列表端点在 data 中返回数组,外加 pagination:
{
"request_id": "unif_...",
"data": [],
"pagination": { "has_more": false, "next_cursor": null },
"billing": { "records_charged": 1 }
}
当 pagination.has_more 为真时,把 pagination.next_cursor 作为下一次请求的
cursor 传入。报告成本时始终保留 billing。
核心操作
| 需求 | 操作 |
|---|---|
| 搜索视频 | youtube/search (?q=..., 可选 sort_by/upload_date/duration/region/language) |
| 搜索频道 / 播放列表 | youtube/search/channels · youtube/search/playlists (?q=...) |
| 热门 | youtube/trending (可选 type = now/music/gaming/movies) |
| 话题标签视频 | youtube/hashtags/{tag}/videos |
| 解析 handle/URL → id | youtube/resolve/channel-id (?url=...) |
| 频道主页 | youtube/channels/{channel_id} |
| 频道视频 / shorts | youtube/channels/{channel_id}/videos · .../shorts |
| 频道播放列表 | youtube/channels/{channel_id}/playlists |
| 频道社区帖子 | youtube/channels/{channel_id}/community |
| 在频道内搜索 | youtube/channels/{channel_id}/search (?q=...) |
| 视频元数据 | youtube/videos/{video_id} |
| 相关视频 | youtube/videos/{video_id}/related |
| 视频评论 | youtube/videos/{video_id}/comments (可选 sort_by = top/newest) |
| 视频字幕 / 文字稿 | youtube/videos/{video_id}/captions |
| 播放列表主页 / 视频 | youtube/playlists/{playlist_id} · .../videos |
需要这里未列出的字段?在调用前用 unifapi skill 的 get_operation 读取确切的
schema——但要从这张表里挑操作,别盲目摸索。
工作流
确定性的配方。挑选与任务匹配的那一个;每个都点明了究竟该调用什么。
- **框定查询。**调用
youtube/search?q=...看谁占据某个话题,或youtube/trending看现在什么正在飙升。 - **解析一个频道。**调用
youtube/resolve/channel-id?url=...取得channel_id,然后用youtube/channels/{channel_id}取subscriber_count、video_count和view_count。 - **读取一个频道的产出。**调用
youtube/channels/{channel_id}/videos(以及.../shorts);每个视频的view_count就是需求信号。通过next_cursor翻页。youtube/channels/{channel_id}/playlists映射目录是如何组织的;youtube/channels/{channel_id}/community读取视频之外的公告与互动;youtube/channels/{channel_id}/search?q=...在不扫描整个目录的情况下找出某位 创作者对一个话题的覆盖。 - **读取一个视频及其周边。**调用
youtube/videos/{video_id}取元数据(现在包括like_count、category、published_at、has_captions),然后用youtube/videos/{video_id}/related映射相邻需求和竞争内容。 - **读取受众与文字稿。**调用
youtube/videos/{video_id}/comments(sort_bytop/newest)看受众怎么说——原始评论文本、点赞和回复数;任何情绪或 FAQ 归组都由你来计算,API 只返回文本。调用youtube/videos/{video_id}/captions取字幕轨(每种语言一个 timed-text url)以阅读或分析文字稿。 - **遍历一个播放列表或话题标签。**调用
youtube/playlists/{playlist_id}再.../videos按顺序摄入一个精选系列;youtube/hashtags/{tag}/videos跨创作者 追踪一场活动或趋势。 - **衡量话题需求。**在某个话题的搜索和相关结果上聚合
view_count;title、description和keywords显示该话题是如何被框定的。 - **凡事引证。**每个数字都回溯到它来自的视频或频道;报告
billing.records_charged(在没有 billing 元数据时给出估算)。
形态说明
YouTubeChannel—— 以{channel_id}为键。subscriber_count、video_count、view_count、handle、keywords、links、country、created_at。is_verified不由上游填充,始终为false——别报告你读不到的 认证状态。YouTubeVideo—— 以{video_id}为键。view_count、like_count(尽力而为;当创作者隐藏它时为0)、category、channel_id、author、duration_seconds、keywords、published_at、has_captions、is_live、is_private。YouTubeVideoPreview—— 搜索/相关/列表行:增加published_time。category是形态的一部分,但在列表行上为空(只有YouTubeVideo详情携带它)。YouTubeComment——text、author、author_channel_id、like_count、reply_count、published_time、is_verified、is_creator。仅文本——没有 情绪字段。YouTubeCaptions——video_id、tracks[](language_code、timed-texturl、is_translatable)、translation_languages[]。单对象,按一条记录计费。 轨道 url 是有时限的。YouTubePlaylist/YouTubePlaylistPreview—— 播放列表title、channel_id、author、video_count(详情增加view_count、last_updated; 预览增加first_video_id)。YouTubeChannelPreview—— 搜索频道行:title、handle、description、subscriber_count、video_count。YouTubeCommunityPost——text、author、vote_count、reply_count、attachment_type、image_url。
坑点
- Resolve 只解析到频道 id。
youtube/resolve/channel-id?url=...把一个 handle 或 URL 解析为一个{channel_id}——在任何youtube/channels/{channel_id}/...调用之前调用它。没有视频 id 或播放列表 id 的解析器;自行传入一个已知的{video_id}/{playlist_id}(自己从 URL 里解析它)。 - 评论是原始文本。
youtube/videos/{video_id}/comments返回评论文本加上 点赞/回复数——没有情绪,没有 FAQ 归组。这些要你自己从文本计算;别声称 API 不 返回的情绪字段。 - **
like_count是尽力而为的。**当创作者隐藏点赞时YouTubeVideo.like_count为0——把0当作"隐藏或没有",而非权威值。 is_verified对频道始终为false(上游不暴露它)——别报告频道认证。- **字幕可能为空。**一个禁用了字幕的视频返回
tracks: [];在承诺文字稿之前先 检查。轨道 url 是有时限的。 - 话题标签接受带或不带前导
#的标签(youtube/hashtags/lofi/videos)。 - 余额过低会悄无声息地截断列表页:检查
billing.truncated_due_to_balance——为真 时该页是不完整的。
输出
返回调用方工作流所需的记录,每条都引证到其视频或频道,外加一行成本说明
(records_charged)。当本技能被直接使用时,默认是一份紧凑的需求简报:
**{Channel}** — {subscribers} subscribers, {videos} videos, {totalViews} views. Top videos for {topic}: {title} ({views} views). Related/competitors: {channels}. Evidence: {URLs}. Records: ~{N}.
相关 skills
- kol-pricing、creator-shortlist、audience-fit-check(Influencer Marketing)—— 在本读取路径之上给 YouTube 频道估价并核查。
- competitor-profiling(Competitive Intelligence)、content-opportunity-brief(Content Strategy)—— 优先读取 YouTube 的反响与内容需求工作。
- unifapi —— 共享的数据技能:连接 MCP 并用
get_operation查找确切的 schema。
源码:GitHub 上的 youtube/SKILL.md——可在那里提交 PR 来改进它。
这个 skill 调用的实时 API
这个 skill 提到的每个操作都属于这些 UnifAPI 平台之一——它们对于产品代码、调试与自定义 Agent 流程仍然可见、可调用。
- 针对每个常见频道/视频读取任务的具体 `youtube/...` 操作
- 面向频道与视频的响应契约与结构说明(播放量计数)
- 确定性配方:解析频道、读取需求、查找相关内容
- 平台注意事项(无评论列表、view_count 信号、游标分页)