Skip to main content

yt-dlp-download

YouTube 视频下载专家。使用 yt-dlp 下载视频和字幕,支持 480p/1080p、英文自动字幕(json3/srt)、单/批量下载、并行加速、PO token 生成。当用户说"下载视频"、"下这个视频"、"yt-dlp"、"youtube"、"批量下载"、"字幕"、"1080p"、"480p"时触发。使用前必须检查 CLAUDE.md 的 Web Intelligence 部分,优先使用 wigolo 工具进行搜索和查询。

Aller à l'installation

Informations de source

Dépôt
ID-VerNe/skill-forge
Dernière activité de la source
21 août 2026 à 05:26
Langue détectée de SKILL.md
chinois
Étoiles
12
Forks
2

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
2 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
yt-dlp-download
description
YouTube 视频下载专家。使用 yt-dlp 下载视频和字幕,支持 480p/1080p、英文自动字幕(json3/srt)、单/批量下载、并行加速、PO token 生成。当用户说"下载视频"、"下这个视频"、"yt-dlp"、"youtube"、"批量下载"、"字幕"、"1080p"、"480p"时触发。使用前必须检查 CLAUDE.md 的 Web Intelligence 部分,优先使用 wigolo 工具进行搜索和查询。
# YouTube 视频下载 (yt-dlp) ## 环境依赖 | 依赖 | 用途 | 检查命令 | |------|------|----------| | yt-dlp (nightly) | 核心下载工具 | `yt-dlp --version` | | Node.js >= 22 | EJS challenge solver、BgUtils PO token server | `node --version` | | ffmpeg | mp4 合并/转换 | `ffmpeg -version` | | bgutil-ytdlp-pot-provider | PO token 生成(自动字幕必须) | `pip show bgutil-ytdlp-pot-provider` | | BgUtils server | 常驻 PO token 生成服务 | 见 `references/po-token-server.md` | ## 关键参数速查 ### 格式选择 ``` 分辨率 格式参数 480p bv*[height<=480][ext=mp4]+ba[ext=m4a]/b[height<=480]/b 1080p bv*[height<=1080][ext=mp4]+ba[ext=m4a]/bv*[height<=1080]+ba/b[height<=1080]/b ``` ### 字幕 ``` # 英文自动字幕(json3) --write-auto-subs --sub-langs en --sub-format json3 # 英文自动字幕(srt) --write-auto-subs --sub-langs en --sub-format srt # 多语言字幕(如英文+中文) --write-auto-subs --sub-langs en,zh-Hans ``` ### 其他常用 ``` # 只下载字幕(不下载视频) --skip-download --write-auto-subs --sub-langs en --sub-format json3 # 合并输出为 mp4 --merge-output-format mp4 # 批量下载(从文件读取 URL) -a batch_urls.txt # 并行下载多个视频 # 每个视频启动一个独立的 yt-dlp 进程 ``` ## 完整工作流 ### 1. 单视频下载 ```bash cd C:/Users/VerNe/Downloads/Videos yt-dlp --js-runtimes node --cookies cookies.txt \ -f "bv*[height<=480][ext=mp4]+ba[ext=m4a]/b[height<=480]/b" \ --merge-output-format mp4 \ --write-auto-subs --sub-langs en --sub-format json3 \ -o "%(title)s.%(ext)s" \ "https://www.youtube.com/watch?v=VIDEO_ID" ``` ### 2. 批量并行下载 ```bash # 1. 创建 URL 列表文件 # (每行一个 URL, 去掉 &t= 等额外参数) # 2. 逐个启动后台进程(每个间隔 1-2 秒,避免限流) while IFS= read -r url; do id=$(echo "$url" | sed -E 's/.*v=([A-Za-z0-9_-]+).*/\1/') yt-dlp --js-runtimes node --cookies cookies.txt \ -f "bv*[height<=1080][ext=mp4]+ba[ext=m4a]/b" \ --merge-output-format mp4 \ --write-auto-subs --sub-langs en --sub-format json3 \ -o "%(title)s.%(ext)s" "$url" > "dl_$id.log" 2>&1 & sleep 2 done < batch_urls.txt ``` ### 3. 补齐字幕(视频已下载,只补字幕) ```bash yt-dlp --js-runtimes node --cookies cookies.txt \ --skip-download \ --write-auto-subs --sub-langs en --sub-format json3 \ -o "%(title)s.%(ext)s" \ "https://www.youtube.com/watch?v=VIDEO_ID" ``` ## 常见问题与排查 ### PO token 缺失(自动字幕下不了) **症状**: `There are missing subtitles languages because a PO token was not provided` **原因**: cookies.txt 是静态导出,不含 PO token。PO token 是浏览器运行时 JS 生成的动态令牌。 **解决**: 安装 bgutil-ytdlp-pot-provider 插件 + 启动 BgUtils server。 操作步骤: 1. `pip install bgutil-ytdlp-pot-provider` (已完成) 2. 启动 BgUtils server: `cd ~/bgutil-ytdlp-pot-provider/server && node build/main.js` (需常驻) 3. 验证: `yt-dlp -v --skip-download --write-auto-subs --sub-langs en --sub-format json3 "URL"` 日志中出现 `[pot:bgutil:http] Generating a gvs PO Token` 即为成功 **注意**: BgUtils server 必须常驻运行,重启/关机后需重新启动。 ### EJS n-challenge 失败 **症状**: `n challenge solving failed: Some formats may be missing` **原因**: yt-dlp 2026+ 版本需要 JavaScript runtime 解决 YouTube 的 n 参数。 **解决**: 本地有 Node.js 22+ 时,加 `--js-runtimes node` 参数。 ### 速度慢/限流 **症状**: 下载速度降到 KB/s 级别,或报 `HTTP Error 403: Forbidden` **原因**: YouTube 对单 IP 有速率限制,多连接并行或短时间内大量请求会触发。 **应对**: - 单视频慢: 加 `--concurrent-fragments 4` 加速分片并行 - 多视频并行: 每个进程间隔 1-2 秒启动,避免同时触发限流 - 被限流 403: 等 1-2 小时冷却后再试,或换 cookies ### Edge cookies 读取失败 **症状**: `Could not copy Chrome cookie database` 或 `Failed to decrypt with DPAPI` **原因**: - Edge 开着: SQLite 数据库被进程锁住 - Edge 关着: Windows DPAPI 无法解密 cookie **解决**: 更可靠的方式是走 BgUtils PO token server,不需要读浏览器 cookie。 ### cookies.txt 失效 **症状**: `Sign in to confirm you're not a bot` **原因**: YouTube 定期轮换 cookie,旧的会失效。 **解决**: 在浏览器中重新登录 YouTube,用 "Get cookies.txt LOCALLY" 扩展导出新的 cookies.txt。 ## 输出目录 所有下载文件均在 `C:\Users\VerNe\Downloads\Videos\`。 ## 输出文件命名 - 视频: `%(title)s.%(ext)s` → `视频标题.mp4` - 字幕: `%(title)s.%(ext)s` → `视频标题.en.json3` / `视频标题.en.srt`
Voir sur GitHub