用途
youtube-data 是一个用于从 YouTube Data API v3 检索数据的技能。它的核心原则是“仅做数据检索”——只负责抓取并返回结构化数据,不生成文字内容或视觉素材。
适用时机包括:
- 在 YouTube 上搜索符合查询或条件的视频
- 获取某个视频或频道的详细统计数据
- 抓取视频字幕/说明文字用于分析
- 读取和分析视频评论
- 查找与特定视频相关的视频
- 按地区发现热门视频
- 提取带时间过滤、搜索和分段功能的增强字幕
前提条件
- YOUTUBE_API_KEY —— 在环境变量或 ~/.claude/.env 中设置,可从 Google Cloud Console 获取
- 推荐使用 uv,或使用 Python 3.10+ 并安装依赖
使用 uv(推荐,零配置):依赖通过 PEP 723 内联声明,首次运行时自动安装,只需使用 uv run。
使用 pip(备选):
pip install -r ${CLAUDE_SKILL_DIR}/requirements.txt
主要能力与使用方式
脚本 scripts/youtube_api.py 是一个自包含的 YouTube Data API 脚本,包含 8 个子命令。
快速开始示例:
- 搜索视频:
uv run ${CLAUDE_SKILL_DIR}/scripts/youtube_api.py search "python tutorial" --max-results 5 - 获取视频详情:
uv run ${CLAUDE_SKILL_DIR}/scripts/youtube_api.py video "dQw4w9WgXcQ" - 获取字幕:
uv run ${CLAUDE_SKILL_DIR}/scripts/youtube_api.py transcript "dQw4w9WgXcQ" --language en - 获取频道信息:
uv run ${CLAUDE_SKILL_DIR}/scripts/youtube_api.py channel "UC_x5XG1OV2P6uZZ5FSM9Ttw" - 获取评论:
uv run ${CLAUDE_SKILL_DIR}/scripts/youtube_api.py comments "dQw4w9WgXcQ" --max-results 10 --include-replies - 查找相关视频:
uv run ${CLAUDE_SKILL_DIR}/scripts/youtube_api.py related "dQw4w9WgXcQ" --max-results 5 - 获取热门视频:
uv run ${CLAUDE_SKILL_DIR}/scripts/youtube_api.py trending --region US --max-results 10 - 增强多视频字幕:
uv run ${CLAUDE_SKILL_DIR}/scripts/youtube_api.py enhanced-transcript "vid1" "vid2" --format merged --include-metadata --language en
子命令说明:
- search:搜索 YouTube 视频,支持高级过滤
- video:获取视频详细信息
- channel:获取频道详细信息
- comments:获取视频评论
- transcript:获取视频字幕/说明文字
- related:获取与特定视频相关的视频
- trending:按地区获取热门视频
- enhanced-transcript:带过滤功能的高级多视频字幕
search 参数:QUERY(搜索查询字符串);--max-results N(结果数量,默认 10,最大 50);--channel-id ID(按频道过滤);--order ORDER(排序:date、rating、viewCount、relevance、title);--duration DURATION(过滤:short <4 分钟、medium 4-20 分钟、long >20 分钟);--published-after DATE(ISO 日期过滤);--published-before DATE(ISO 日期过滤);--region CODE(ISO 国家代码)。
video 返回:标题、描述、发布日期、频道、标签、观看/点赞/评论数、时长、缩略图。
channel 返回:标题、描述、订阅/视频/观看数、自定义 URL、缩略图。
comments 参数:--max-results N(评论数,默认 20);--order ORDER(排序:relevance 默认或 time);--include-replies(包含回复串);--page-token TOKEN(分页令牌)。
transcript 参数:--language CODE(语言代码,如 en、ko、fr)。返回带时间戳的分段和带时间戳的全文。
related 参数:--max-results N(结果数量,默认 10)。
trending 参数:--region CODE(ISO 国家代码,默认 US);--max-results N(结果数量,默认 5)。
enhanced-transcript 参数:VIDEO_IDS(一个或多个视频 ID,最多 5 个);--language CODE(语言代码);--format FORMAT(输出:raw、timestamped 默认、merged);--start-time SECONDS(从该时间开始过滤);--end-time SECONDS(过滤到该时间);--search QUERY(在字幕文本中搜索);--case-sensitive(区分大小写搜索);--segment-method METHOD(分段:equal 默认、smart);--segment-count N(分段数量,默认 1);--include-metadata(随字幕包含视频详情)。
返回结构
所有子命令都会向 stdout 输出 JSON,结构一致:
{ "success": true, "data": { ... }, "error": null, "metadata": { "timestamp": "2025-01-26T12:00:00", ... } }
失败时 success 为 false,data 为 null,error 包含错误信息。退出码成功为 0,失败为 1。
Python API
可直接从其他技能的脚本中导入:
import sys from pathlib import Path sys.path.insert(0, str(Path("${CLAUDE_SKILL_DIR}/scripts"))) from youtube_api import search_videos, get_video_details, get_video_transcript
可用函数包括:search_videos(query, ...)、get_video_details(video_id)、get_channel_details(channel_id)、get_video_comments(video_id, ...)、get_video_transcript(video_id, ...)、get_related_videos(video_id, ...)、get_trending_videos(region, ...)、get_enhanced_transcript(video_ids, ...)。所有函数返回相同的 {success, data, error, metadata} 字典。
下游技能集成
模式一:CLI 封装(推荐用于智能体)
result=$(uv run ${CLAUDE_SKILL_DIR}/scripts/youtube_api.py search "AI tutorials" --max-results 5) echo "$result" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['data']['items'][0]['title'])"
模式二:Python 导入并设置自定义默认值,示例脚本标注 requires-python >=3.10,依赖包括 google-api-python-client>=2.169.0、youtube-transcript-api>=1.0.3、python-dotenv>=1.1.0,可定义一个 search 并抓取主题热门视频字幕的函数。
环境变量
- YOUTUBE_API_KEY:YouTube Data API v3 密钥,必需,默认无
适用场景与限制
该技能适用于需要对 YouTube 平台进行数据化分析、内容调研、字幕与评论提取,以及为下游技能提供结构化 YouTube 数据的场景。其限制包括:仅做数据检索,不生成文字内容或视觉素材;需要有效的 API 密钥;受 YouTube Data API 每日配额约束(默认 10,000 单位),配额超限会返回 HttpError 403 quotaExceeded,需等待配额重置或申请提升;增强字幕最多支持 5 个视频 ID;部分视频可能未启用字幕或需更换语言代码。脚本会对限流请求自动重试(3 次,指数退避)。
故障排查
- “uv: command not found”:安装 uv,例如 curl -LsSf https://astral.sh/uv/install.sh | sh 或 brew install uv
- “Required packages not installed”:使用 uv run 而非 python3 以自动安装依赖,或手动执行 pip install -r ${CLAUDE_SKILL_DIR}/requirements.txt
- “YOUTUBE_API_KEY environment variable not set”:在 shell、~/.claude/.env 或本地 .env 中设置 YOUTUBE_API_KEY
- “HttpError 403: quotaExceeded”:等待配额重置或申请配额提升
- “No transcript available”:视频可能未启用字幕,尝试不同的 --language 代码,其他语言可能有自动生成字幕
参考资料:references/youtube-data-api.md,包含 YouTube Data API v3 的端点、配额和响应结构。