用途
该技能通过 yt-dlp 搜索 YouTube 并以 Markdown 或 JSON 形式返回结构化结果,字段包括标题、频道、播放量、时长、上传日期和链接。适合在对话中快速查找视频、比较候选内容,或在选定视频后进一步获取字幕或音频。
主要能力
- 关键词搜索,默认返回 10 条结果,可调整数量。
- 筛选与排序:
--months N:仅保留最近 N 个月(隐含--full)。--sort:按 relevance、views 或 date 排序,date 隐含--full。--min-views:最低播放量。--min-duration/--max-duration:时长上下限(秒)。--channel:按频道名不区分大小写子串匹配。
--json:输出干净 JSON,可管道给 jq。--full:逐条访问视频页,补充上传日期、点赞、评论、标签和描述。- 获取单条视频详情:
yt-dlp "<url>" --dump-json --no-download --no-warnings。 - 字幕:先
yt-dlp --list-subs "<url>"检查;有字幕时用yt-dlp --skip-download --write-subs --write-auto-subs --sub-langs en -P "<dir>" -o "%(id)s.%(ext)s" "<url>"下载 .vtt。 - 仅下载音频:
yt-dlp -x --audio-format m4a -P "<dir>" -o "%(id)s.%(ext)s" --print after_move:filepath "<url>",将打印的路径交给转写技能。 - 长视频可按时间段下载:
--download-sections "*10:00-25:00"。
使用方式
前置条件:yt-dlp 在 PATH 中。可用 brew install yt-dlp(Homebrew 同时安装 Deno),或 python3 -m pip install -U "yt-dlp[default]"。搜索和元数据可独立使用;下载还需 ffmpeg(用于 -x)以及 JavaScript 运行时(如 Deno)以应对 YouTube 的挑战验证。若下载遇到 challenge 或 “n function” 错误,可参考 EJS 文档。
执行搜索:
uv run "${CLAUDE_SKILL_DIR}/scripts/yt_search.py" "<query>" -n 10 [options]
--full 运行最多可等待 300 秒。若输出 “No results”,可用更宽松的筛选重试一次。需要单条视频更多信息时,运行上面的 --dump-json 命令并取所需字段。若用户要的是视频内容而非链接,则转入字幕或音频获取流程。
模式说明
快速模式只请求一次搜索结果页,几秒内完成,但结果页不含上传日期(Date 列显示 ?)。完整模式逐条访问视频(每条约 3-5 秒,并会多取约 3 倍数量以应对筛选),是按日期筛选或排序的唯一方式。仅在时效性确实重要时使用 --months;对于讲座、教程、基础知识等常青内容,经典视频往往是多年前的。
使用建议
--min-duration 600可过滤 Shorts、片段和宣传片;--min-duration 1800只保留长视频、访谈和播客。- 播放量衡量的是人气而非质量,也应考察频道;会议、大学和作者官方频道通常噪声较少。
"<person> <topic>"会返回该人物的相关视频及其本人内容;要只看其上传,加上--channel "<exact channel name>"。
适用场景与限制
适用于视频检索、候选比较、元数据查看、字幕获取和音频提取后转写。搜索与元数据不依赖 ffmpeg;下载功能需要 ffmpeg 和 JavaScript 运行时。下载和使用内容时须遵守 YouTube 服务条款与版权规定。工具不提供质量判断或内容摘要,转写依赖外部转写技能;对已下载文件的裁剪、分割或重编码需使用 ffmpeg 相关技能。