/video-download — 视频智能下载
用本机 yt-dlp_macos 按分辨率策略下载带音频视频。用户给 1 个或多个 URL 即执行。
Tooling
| Item | Path / value |
|---|---|
| Binary | /Users/alan.xiong/Documents/tools/yt-dlp/yt-dlp_macos |
| Override | env YTDLP_BIN or script flag --ytdlp |
| Cookie jar(快) | ~/.cache/video-download/cookies.txt → --cookies |
| Cookie 刷新(慢,自动) | 从 Chrome 导出一次写入 jar |
| Merge | 系统 ffmpeg / ffprobe(分离音视频时需要) |
| Helper | scripts/download.py(本 skill 目录下) |
SKILL_DIR="$HOME/.grok/skills/video-download"
When to run
/video-download- 「下载这个抖音 / 视频」「批量下视频」「保存视频」
- 用户粘贴
https://v.douyin.com/...、https://www.douyin.com/video/...等并要求下载
不要用浏览器爬页面替代;不要手写猜 format id;不要让用户手动粘贴 cookie 字符串。
Cookies(必须遵守 — 性能关键)
详见 references/cookies.md。
默认路径(快):
- 使用缓存 jar:
--cookies ~/.cache/video-download/cookies.txt - jar 缺失、超过 24h、或下载失败 → 脚本自动从 Chrome 导出并写入 jar(慢一次)
- 同一批 URL 只准备一次 cookie,不要每个视频都
--cookies-from-browser
禁止默认每次都加 --cookies-from-browser chrome(会反复解密 Chrome cookie 库,极慢)。
拿不到有效 cookie 时(exit code 2 / 输出含 NEED_USER_ACTION:BROWSER_LOGIN):
- 明确提示用户:在 Chrome 打开该视频链接并确保已登录、能播放
- 等用户确认后,用
--refresh-cookies重试(不要让用户导出/粘贴 cookie) - 重试命令示例:
python3 "$SKILL_DIR/scripts/download.py" --refresh-cookies <URL>
Output directory(必须遵守)
- 始终下载到当前执行目录(cwd / 当前项目目录)
- 不要默认写到
~/Downloads、skill 安装目录 - 不要主动传
-o,除非用户明确指定 - 文件名:
%(title).80B [%(id)s].%(ext)s
Resolution policy(必须遵守)
- 有 1080p(短边 ≥1080)→ 优先 1080p
- 否则有 720p(短边 ≥720)→ 选最高码率的 ≥720p
- 最高都不到 720p → 选最高分辨率
- 必须尽量带音频:优先封装好的 mp4;音视频分离则
-f 视频ID+音频ID - 同档:无水印 > 有水印;更高
tbr/体积优先
短边 = min(width, height)。细节见 references/format-policy.md。
Workflow(Agent)
1. 收集 URL
- 提取全部视频 URL;shell cwd = 当前项目/工作区
2. 一键下载(推荐)
python3 "$SKILL_DIR/scripts/download.py" <URL> [URL...]
仅看清晰度 / dry-run / 强制刷新 cookie:
python3 "$SKILL_DIR/scripts/download.py" --list-only <URL>
python3 "$SKILL_DIR/scripts/download.py" --dry-run <URL>
python3 "$SKILL_DIR/scripts/download.py" --refresh-cookies <URL>
3. 用户需打开浏览器时
若脚本退出码为 2 或 stderr 含 NEED_USER_ACTION:BROWSER_LOGIN:
- 把脚本打印的 URL 转给用户,请其在 Chrome 打开并登录播放
- 用户回复「好了 / 已打开 / 重试」后,执行带
--refresh-cookies的下载 - 不要要求用户提供 cookie 文件内容
4. 汇报
对每个 URL 报告:format id、分辨率档位、保存绝对路径与大小、是否走了 cookie 刷新、是否需用户打开浏览器。
Batch
- 多 URL 顺序下载;cookie 在进程内只初始化/刷新一次
- 单个失败继续后续 URL;若最终仍是登录类失败,汇总提示用户打开对应链接
Gotchas
- 首次(或 jar 过期)从 Chrome 导出仍会慢几十秒——属正常;之后应明显变快
- Chrome 未登录抖音 / 未打开过站点 → 导出的 jar 可能无效 → 走 BROWSER_LOGIN 流程
- 水印源
download_addr-*默认不要选 - 缺
ffmpeg时分离流 merge 会失败 - 输出目录 = 进程 cwd,不是 skill 安装目录
- 不要把
~/.cache/video-download/cookies.txt提交进 git 或贴到对话里
Do not
- 不上传、不公开分享 cookies / 登录态
- 不下载用户未提供的链接
- 不默认每次
--cookies-from-browser - 不让用户手动粘贴 cookie
- 不擅自改下载到
~/Downloads