mcpField
V
video-download

video-download

github.com/arcocodes创意与媒体6837 次安装今天更新
代码仓库

关于 video-download

一个命令行 Skill,可将 YouTube、TikTok、Douyin 等平台的视频下载为本地 MP4 文件,并自动处理格式选择、去重及特定平台的重试或浏览器回退。

主要功能

  1. 01下载视频为 MP4
  2. 02生成带平台前缀的视频 ID
  3. 03跳过已存在的文件
  4. 04使用 TikTok Cookie 重试
  5. 05Douyin 和 TikTok 浏览器回退

适用场景

  1. 01将单个视频保存到本地
  2. 02批量下载多个视频链接
  3. 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)

下载后的操作

下载成功后,用户可能想要:

  1. 分析视频 — 提取脚本、风格或节奏:

    renoise analyze <path> --target video --language <user-language> --json
    
  2. 添加到素材池 — 用作视频生成的参考素材:

    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 → 下载 → 关闭)。

手动回退步骤

如果无法使用回退脚本,请按以下步骤操作:

  1. 打开 GreenVideo:

    agent-browser open "https://greenvideo.cc/en/"
    
  2. 粘贴 URL 并解析:

    agent-browser snapshot
    agent-browser fill <input-ref> "<video-url>"
    agent-browser click <start-button-ref>
    
  3. 等待 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';
    })()
    "
    
  4. 下载并清理:

    curl -L -o ~/Downloads/<filename>.mp4 "<extracted-video-url>"
    agent-browser close
    

视频 ID 逻辑

平台模式示例 ID
YouTubewatch?v=、shorts/、embed/、youtu.be/ → 11 位 IDyt-dQw4w9WgXcQ
TikTokURL 中包含 15 位或更多数字的 IDtk-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 incompatibleyt-dlp 会自动转码,无需处理
GreenVideo 解析失败检查 URL 是否有效且可公开访问
Nuxt 状态中没有视频 URL尝试点击下载按钮并检查 <video> 元素
从 GreenVideo 下载失败(403)视频 URL 很快就会过期——提取后立即下载

评论

支持 Markdown