关于 video-download
一个命令行 Skill,可将 YouTube、TikTok、Douyin 等平台的视频下载为本地 MP4 文件,并自动处理格式选择、去重及特定平台的重试或浏览器回退。
主要功能
- 01下载视频为 MP4
- 02生成带平台前缀的视频 ID
- 03跳过已存在的文件
- 04使用 TikTok Cookie 重试
- 05Douyin 和 TikTok 浏览器回退
适用场景
- 01将单个视频保存到本地
- 02批量下载多个视频链接
- 03重试失败的 TikTok 或 Douyin 下载
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ arcocodes/ renoise-plugins-official --skill video-download安装后在 Claude Code 中输入/video-download确认已加载。
附带文件scripts/download-fallback.shscripts/download-video.sh
详细介绍
视频下载
从 YouTube、TikTok 等平台下载视频,并保存为本地 MP4 文件。 自动处理格式选择、带平台前缀的去重、TikTok Cookie 回退,以及基于浏览器的抖音/TikTok 回退。
快速开始
# Download any video
bash ${CLAUDE_SKILL_DIR}/scripts/download-video.sh '<URL>'
# Download to a custom directory
bash ${CLAUDE_SKILL_DIR}/scripts/download-video.sh '<URL>' 'path/to/output'
前提条件
yt-dlp --version # Required. Install: brew install yt-dlp (macOS) or pip install yt-dlp
可选(用于抖音/TikTok 回退):
- 全局安装
agent-browser(npm install -g agent-browser) - 安装 Chrome for Testing(
agent-browser install)
用法
单个视频
bash ${CLAUDE_SKILL_DIR}/scripts/download-video.sh '<URL>'
脚本会自动处理所有操作:
- 提取带平台前缀的视频 ID(
yt-dQw4w9WgXcQ、tk-7571284267028729101、vid-aHR0cHM6Ly93d3) - 保存到
resources/references/<video_id>.mp4 - 如果文件已存在则跳过下载(去重)
- TikTok 下载失败时,使用
--cookies-from-browser chrome重试 - 删除因下载中断而残留的零字节文件
批量下载
for URL in '<URL1>' '<URL2>' '<URL3>'; do
bash ${CLAUDE_SKILL_DIR}/scripts/download-video.sh "$URL"
done
脚本输出
| 输出 | 含义 |
|---|---|
ALREADY_EXISTS: <path> | 文件已下载,跳过 |
DOWNLOADED: <path> | 下载成功 |
FAILED: <message> | 下载失败(退出代码 1) |
下载后的操作
下载成功后,用户可能想要:
-
分析视频 — 提取脚本、风格或节奏:
renoise analyze <path> --target video --language <user-language> --json -
添加到素材池 — 用作视频生成的参考素材:
node ${CLAUDE_PLUGIN_ROOT}/skills/renoise-cli/scripts/material-ingest.mjs <path>
下载完成后,向用户推荐这些选项。
抖音/TikTok 回退
当 yt-dlp 无法处理抖音或 TikTok URL 时(常见原因是 403 错误或内容受地区限制),使用这个一步式的浏览器回退方案:
bash ${CLAUDE_SKILL_DIR}/scripts/download-fallback.sh '<douyin-or-tiktok-url>' 'output-dir'
此脚本将完整的 agent-browser + GreenVideo 流程封装为一条命令(打开 → 粘贴 URL → 解析 → 提取视频 URL → 下载 → 关闭)。
手动回退步骤
如果无法使用回退脚本,请按以下步骤操作:
-
打开 GreenVideo:
agent-browser open "https://greenvideo.cc/en/" -
粘贴 URL 并解析:
agent-browser snapshot agent-browser fill <input-ref> "<video-url>" agent-browser click <start-button-ref> -
等待 5 秒,然后提取视频 URL:
agent-browser eval " (function() { const nuxtData = window.__NUXT__; if (!nuxtData) return 'ERROR: No Nuxt data found'; const str = JSON.stringify(nuxtData); const mp4Match = str.match(/https?:[^\\\"]*(?:mp4|video|play|aweme|douyinvod|bilivideo)[^\\\"]{0,500}/g); if (mp4Match && mp4Match.length > 0) return mp4Match[0]; return 'ERROR: No video URL found in Nuxt state'; })() " -
下载并清理:
curl -L -o ~/Downloads/<filename>.mp4 "<extracted-video-url>" agent-browser close
视频 ID 逻辑
| 平台 | 模式 | 示例 ID |
|---|---|---|
| YouTube | watch?v=、shorts/、embed/、youtu.be/ → 11 位 ID | yt-dQw4w9WgXcQ |
| TikTok | URL 中包含 15 位或更多数字的 ID | tk-7571284267028729101 |
| 其他 | URL 的 Base64url 编码,取前 16 个字符 | vid-aHR0cHM6Ly93d3 |
故障排除
| 错误 | 解决方案 |
|---|---|
HTTP Error 403(TikTok/抖音) | 脚本会自动使用 Cookie 重试。如果仍然失败,请使用回退脚本 |
跳过 --max-filesize 限制 | 视频超过 200M 限制。使用 -f 'best[height<=720]' 手动下载 |
is not a valid URL | 确保 URL 用单引号括起来 |
Requested formats are incompatible | yt-dlp 会自动转码,无需处理 |
| GreenVideo 解析失败 | 检查 URL 是否有效且可公开访问 |
| Nuxt 状态中没有视频 URL | 尝试点击下载按钮并检查 <video> 元素 |
| 从 GreenVideo 下载失败(403) | 视频 URL 很快就会过期——提取后立即下载 |
评论
支持 Markdown