yt-search-download by joeseesun/yt-search-download
npx skills add https://github.com/joeseesun/yt-search-download --skill yt-search-download基于 YouTube Data API v3 进行高级搜索,配合 yt-dlp 下载。
YouTube API Key :
echo $YT_BROWSE_API_KEY
如果为空:Google Cloud Console → 启用 YouTube Data API v3 → 创建 API Key → 写入 ~/.zshrc:
export YT_BROWSE_API_KEY=your_key
2. yt-dlp (下载用):
brew install yt-dlp # macOS
pip install yt-dlp # 或 pip 安装
脚本路径:~/.claude/skills/yt-search-download/scripts/yt_search.py
python3 scripts/yt_search.py search "关键词" -n 20
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 参数 | 说明 |
|---|---|
-n 20 | 最多返回条数(默认 20) |
-o date | 按时间排序(默认 relevance) |
-o viewCount | 按播放量排序(API 级,准确) |
--sort-by views | 本地二次排序(按播放量降序) |
--sort-by duration-asc | 本地排序:时长从短到长 |
--sort-by duration-desc | 本地排序:时长从长到短 |
--min-duration 30m | 过滤:最短时长(支持 30m、1h、1h30m、纯数字=分钟) |
--max-duration 1h | 过滤:最长时长 |
--after 2024-01-01 | 发布时间起 |
--before 2024-12-31 | 发布时间止 |
-c @handle | 限定频道 |
-d | 显示简介 |
--json | JSON 格式输出 |
# 频道最新视频(按时间倒序)
python3 scripts/yt_search.py channel @channelHandle -n 10
# 频道内关键词搜索
python3 scripts/yt_search.py channel @channelHandle -q "关键词"
# 频道内按播放量排序
python3 scripts/yt_search.py channel @channelHandle -o viewCount
# 只看长视频(超过 1 小时)
python3 scripts/yt_search.py channel @channelHandle --min-duration 1h
# 只看短视频(30 分钟内),按时长升序
python3 scripts/yt_search.py channel @channelHandle --max-duration 30m --sort-by duration-asc
频道格式支持:@handle、https://youtube.com/@handle、频道 ID(UCxxxx)
# 最佳画质下载到 ~/Downloads
python3 scripts/yt_search.py download "VIDEO_URL"
# 指定画质
python3 scripts/yt_search.py download "VIDEO_URL" -q 1080p
# 指定目录
python3 scripts/yt_search.py download "VIDEO_URL" --dir ~/Desktop
# 仅下载音频(MP3)
python3 scripts/yt_search.py download "VIDEO_URL" --audio-only
python3 scripts/yt_search.py info "VIDEO_URL"
脚本已输出 Markdown 表格,AI 必须将每行的【译】___ 替换为实际中文翻译后再呈现给用户。
最终呈现效果:
---|---|---|---|---
1 | Rick Beato: Greatest Guitarists...里克·贝阿托:史上最伟大的吉他手 | 2026-03-01 | 2h33m | 302.2K
2 | State of AI in 2026: LLMs, Coding...2026年AI现状:大模型、编程、Scaling法则 | 2026-01-31 | 4h25m | 741.7K
🔴 强制规范 :
【译】___ 替换为简洁中文译文(放在链接后同一单元格)【译】___ 原样输出给用户找某频道最新视频并下载:
channel @handle -n 10 → 浏览结果download "URL" → 保存到 ~/Downloads搜索 + 按播放量筛选:
search "关键词" -o viewCount -n 20提取播客音频:
search "播客名" -o date -n 5download "URL" --audio-only标准流程 :下载字幕转为 SRT,同时生成保留时间戳的 TXT(供 AI 总结用,时间戳有助于定位内容)。
# Step 1:下载字幕并转为 SRT(英文优先,无则用自动字幕)
yt-dlp --cookies-from-browser chrome \
--write-auto-sub --write-sub \
--sub-lang en,zh-Hans \
--convert-subs srt \
--skip-download \
-o "~/Downloads/%(title)s.%(ext)s" \
"VIDEO_URL"
# 输出:~/Downloads/视频标题.en.srt 或 .zh-Hans.srt
# Step 2:从 SRT 生成 TXT(保留时间戳,仅去除序号和空行,供 AI 总结使用)
python3 -c "
import re, sys
srt = open(sys.argv[1]).read()
# 去除序号行(纯数字行),保留时间戳和字幕文本
txt = re.sub(r'^\d+\s*\n', '', srt, flags=re.MULTILINE)
txt = re.sub(r'\n{3,}', '\n\n', txt).strip()
txt_path = sys.argv[1].replace('.srt', '.txt')
open(txt_path, 'w').write(txt)
print(f'已保存:{txt_path}')
" ~/Downloads/视频标题.en.srt
# 输出:~/Downloads/视频标题.en.txt(格式:时间戳 + 字幕文本)
TXT 格式示例(保留时间戳,便于 AI 总结时引用具体时间点):
00:00:01,000 --> 00:00:04,000
Welcome to the Lex Fridman podcast.
00:00:05,000 --> 00:00:09,000
Today we're talking about the greatest guitarists of all time.
其他场景 :
# 仅中文字幕(SRT + TXT)
yt-dlp --cookies-from-browser chrome --write-auto-sub --write-sub \
--sub-lang zh-Hans --convert-subs srt --skip-download \
-o "~/Downloads/%(title)s.%(ext)s" "VIDEO_URL"
# 字幕 + 视频一起下载
yt-dlp --cookies-from-browser chrome --write-auto-sub --write-sub \
--sub-lang en --convert-subs srt \
-o "~/Downloads/%(title)s.%(ext)s" "VIDEO_URL"
规范 :下载字幕时始终加
--convert-subs srt,下载完成后始终执行 Step 2 生成 TXT ,让用户同时拿到.srt(带时间轴)和.txt(纯文本)两个文件。
# 列出可用格式
yt-dlp --cookies-from-browser chrome -F "VIDEO_URL"
# 下载整个播放列表
yt-dlp --cookies-from-browser chrome -o "~/Downloads/%(playlist_title)s/%(title)s.%(ext)s" "PLAYLIST_URL"
每周安装数
573
仓库
GitHub 星标数
91
首次出现
2026年3月6日
安全审计
已安装于
codex557
opencode556
gemini-cli554
kimi-cli554
cursor554
github-copilot554
基于 YouTube Data API v3 进行高级搜索,配合 yt-dlp 下载。
YouTube API Key :
echo $YT_BROWSE_API_KEY
如果为空:Google Cloud Console → 启用 YouTube Data API v3 → 创建 API Key → 写入 ~/.zshrc:
export YT_BROWSE_API_KEY=your_key
2. yt-dlp (下载用):
brew install yt-dlp # macOS
pip install yt-dlp # 或 pip 安装
脚本路径:~/.claude/skills/yt-search-download/scripts/yt_search.py
python3 scripts/yt_search.py search "关键词" -n 20
| 参数 | 说明 |
|---|---|
-n 20 | 最多返回条数(默认 20) |
-o date | 按时间排序(默认 relevance) |
-o viewCount | 按播放量排序(API 级,准确) |
--sort-by views | 本地二次排序(按播放量降序) |
--sort-by duration-asc | 本地排序:时长从短到长 |
--sort-by duration-desc | 本地排序:时长从长到短 |
--min-duration 30m | 过滤:最短时长(支持 、、、纯数字=分钟) |
# 频道最新视频(按时间倒序)
python3 scripts/yt_search.py channel @channelHandle -n 10
# 频道内关键词搜索
python3 scripts/yt_search.py channel @channelHandle -q "关键词"
# 频道内按播放量排序
python3 scripts/yt_search.py channel @channelHandle -o viewCount
# 只看长视频(超过 1 小时)
python3 scripts/yt_search.py channel @channelHandle --min-duration 1h
# 只看短视频(30 分钟内),按时长升序
python3 scripts/yt_search.py channel @channelHandle --max-duration 30m --sort-by duration-asc
频道格式支持:@handle、https://youtube.com/@handle、频道 ID(UCxxxx)
# 最佳画质下载到 ~/Downloads
python3 scripts/yt_search.py download "VIDEO_URL"
# 指定画质
python3 scripts/yt_search.py download "VIDEO_URL" -q 1080p
# 指定目录
python3 scripts/yt_search.py download "VIDEO_URL" --dir ~/Desktop
# 仅下载音频(MP3)
python3 scripts/yt_search.py download "VIDEO_URL" --audio-only
python3 scripts/yt_search.py info "VIDEO_URL"
脚本已输出 Markdown 表格,AI 必须将每行的【译】___ 替换为实际中文翻译后再呈现给用户。
最终呈现效果:
---|---|---|---|---
1 | Rick Beato: Greatest Guitarists...里克·贝阿托:史上最伟大的吉他手 | 2026-03-01 | 2h33m | 302.2K
2 | State of AI in 2026: LLMs, Coding...2026年AI现状:大模型、编程、Scaling法则 | 2026-01-31 | 4h25m | 741.7K
🔴 强制规范 :
【译】___ 替换为简洁中文译文(放在链接后同一单元格)【译】___ 原样输出给用户找某频道最新视频并下载:
channel @handle -n 10 → 浏览结果download "URL" → 保存到 ~/Downloads搜索 + 按播放量筛选:
search "关键词" -o viewCount -n 20提取播客音频:
search "播客名" -o date -n 5download "URL" --audio-only标准流程 :下载字幕转为 SRT,同时生成保留时间戳的 TXT(供 AI 总结用,时间戳有助于定位内容)。
# Step 1:下载字幕并转为 SRT(英文优先,无则用自动字幕)
yt-dlp --cookies-from-browser chrome \
--write-auto-sub --write-sub \
--sub-lang en,zh-Hans \
--convert-subs srt \
--skip-download \
-o "~/Downloads/%(title)s.%(ext)s" \
"VIDEO_URL"
# 输出:~/Downloads/视频标题.en.srt 或 .zh-Hans.srt
# Step 2:从 SRT 生成 TXT(保留时间戳,仅去除序号和空行,供 AI 总结使用)
python3 -c "
import re, sys
srt = open(sys.argv[1]).read()
# 去除序号行(纯数字行),保留时间戳和字幕文本
txt = re.sub(r'^\d+\s*\n', '', srt, flags=re.MULTILINE)
txt = re.sub(r'\n{3,}', '\n\n', txt).strip()
txt_path = sys.argv[1].replace('.srt', '.txt')
open(txt_path, 'w').write(txt)
print(f'已保存:{txt_path}')
" ~/Downloads/视频标题.en.srt
# 输出:~/Downloads/视频标题.en.txt(格式:时间戳 + 字幕文本)
TXT 格式示例(保留时间戳,便于 AI 总结时引用具体时间点):
00:00:01,000 --> 00:00:04,000
Welcome to the Lex Fridman podcast.
00:00:05,000 --> 00:00:09,000
Today we're talking about the greatest guitarists of all time.
其他场景 :
# 仅中文字幕(SRT + TXT)
yt-dlp --cookies-from-browser chrome --write-auto-sub --write-sub \
--sub-lang zh-Hans --convert-subs srt --skip-download \
-o "~/Downloads/%(title)s.%(ext)s" "VIDEO_URL"
# 字幕 + 视频一起下载
yt-dlp --cookies-from-browser chrome --write-auto-sub --write-sub \
--sub-lang en --convert-subs srt \
-o "~/Downloads/%(title)s.%(ext)s" "VIDEO_URL"
规范 :下载字幕时始终加
--convert-subs srt,下载完成后始终执行 Step 2 生成 TXT ,让用户同时拿到.srt(带时间轴)和.txt(纯文本)两个文件。
# 列出可用格式
yt-dlp --cookies-from-browser chrome -F "VIDEO_URL"
# 下载整个播放列表
yt-dlp --cookies-from-browser chrome -o "~/Downloads/%(playlist_title)s/%(title)s.%(ext)s" "PLAYLIST_URL"
Weekly Installs
573
Repository
GitHub Stars
91
First Seen
Mar 6, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
codex557
opencode556
gemini-cli554
kimi-cli554
cursor554
github-copilot554
Google Sheets 费用追踪器创建指南 - 使用 Google Workspace CLI 自动化记账
6,000 周安装
OpenAPI 转 TypeScript 工具 - 自动生成 API 接口与类型守卫
563 周安装
数据库模式设计器 - 内置最佳实践,自动生成生产级SQL/NoSQL数据库架构
564 周安装
Rust Unsafe代码检查器 - 安全使用Unsafe Rust的完整指南与最佳实践
564 周安装
.NET并发编程模式指南:async/await、Channels、Akka.NET选择决策树
565 周安装
韩语语法检查器 - 基于国立国语院标准的拼写、空格、语法、标点错误检测与纠正
565 周安装
技能安全扫描器 - 检测Claude技能安全漏洞,防范提示注入与恶意代码
565 周安装
30m1h1h30m--max-duration 1h | 过滤:最长时长 |
--after 2024-01-01 | 发布时间起 |
--before 2024-12-31 | 发布时间止 |
-c @handle | 限定频道 |
-d | 显示简介 |
--json | JSON 格式输出 |