mcpField
A
advanced-video-downloader

advanced-video-downloader

github.com/jst-well-dan创意与媒体1086 次安装31 周前更新
代码仓库

关于 advanced-video-downloader

advanced-video-downloader 技能结合 yt-dlp 与 SiliconFlow API,为需要保存或处理视频音频的用户提供下载和转录流程。支持多平台、批量或播放列表下载、质量选择,以及将音视频转为 Markdown。

主要功能

  1. 01从 1000 多个平台下载视频
  2. 02批量下载视频和播放列表
  3. 03提取 MP3 或 M4A 音频
  4. 04选择视频分辨率
  5. 05使用 SiliconFlow 转录为 Markdown

适用场景

  1. 01保存网络视频供离线观看
  2. 02批量下载播放列表或多个链接
  3. 03仅提取视频音频用于收听
  4. 04将视频或音频内容转成文字

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jst-well-dan/skill-box --skill advanced-video-downloader

安装后在 Claude Code 中输入/advanced-video-downloader确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.env.example
docs/
README.md
references/
quality_formats.md
supported_platforms.md
scripts/
transcribe_siliconflow.py

详细介绍

高级视频下载器

概述

此技能提供全面的视频下载和转录功能,支持 YouTube、Bilibili、TikTok、Twitter、Instagram 等 1000 多个平台。它结合了:

  • yt-dlp:强大的视频下载工具
  • SiliconFlow API:免费的 AI 视频转录服务,可将视频转换为 Markdown

何时使用此技能

当用户:

  • 明确要求下载视频(“download this video”“下载视频”)
  • 提供任何平台的视频 URL
  • 提到要保存视频以供离线观看
  • 想从视频中提取音频
  • 需要下载多个视频或播放列表
  • 询问视频画质选项
  • 请求转录视频(“转录视频”“提取字幕”“视频转文字”)
  • 想将视频/音频转换为文本或 Markdown
  • 要求在一个工作流中下载并转录视频

请启用此技能。

核心功能

1. 下载单个视频

从任何受支持的平台下载单个视频,并自动选择画质。

使用示例:

User: "Download this YouTube video: https://youtube.com/watch?v=abc123"
User: "下载这个B站视频: https://bilibili.com/video/BV1xxx"
2. 批量下载和播放列表下载

一次下载多个视频或整个播放列表。

使用示例:

User: "Download all videos from this playlist"
User: "Download these 3 videos: [URL1], [URL2], [URL3]"
3. 提取音频

仅从视频中提取音频,并保存为 MP3 或 M4A。

使用示例:

User: "Download only the audio from this video"
User: "Convert this video to MP3"
4. 选择画质

选择特定的视频画质(4K、1080p、720p 等)。

使用示例:

User: "Download in 4K quality"
User: "Get the 720p version to save space"
5. 视频/音频转录

使用 SiliconFlow 的免费 AI 转录 API,将视频或音频文件转换为 Markdown 文本。

使用示例:

User: "Transcribe this video to text" / "转录这个视频"
User: "Download and transcribe this YouTube video"
User: "将这个音频转成文字"
User: "Extract transcript from this MP4 file"

支持的格式:

  • 音频:MP3、WAV、M4A、FLAC、AAC、OGG、OPUS、WMA
  • 视频:MP4、AVI、MOV、MKV、FLV、WMV、WEBM、M4V

响应模式

当用户请求下载视频时:

第 1 步:识别平台和 URL
# Extract video URL(s) from user message
# Identify platform: YouTube, Bilibili, TikTok, etc.
第 2 步:检查工具是否可用
# Check if yt-dlp is installed
yt-dlp --version
第 3 步:选择合适的 yt-dlp 命令

根据平台和需求:

  • YouTube、Twitter、Instagram、TikTok:基本命令即可
  • Bilibili:大多数视频使用基本命令即可
  • 选择画质:使用带有高度筛选条件的 -f
  • 仅提取音频:使用 -x --audio-format mp3
  • 播放列表:使用播放列表专用的输出模板
第 4 步:执行下载

使用 yt-dlp 并设置适当的选项:

# Basic download (best quality MP4)
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" --merge-output-format mp4 -o "%(title)s.%(ext)s" "VIDEO_URL"

# Specific quality (1080p)
yt-dlp -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" --merge-output-format mp4 -o "%(title)s.%(ext)s" "VIDEO_URL"

# Audio only (MP3)
yt-dlp -x --audio-format mp3 -o "%(title)s.%(ext)s" "VIDEO_URL"

# With cookies file (for protected content)
yt-dlp --cookies cookies.txt -o "%(title)s.%(ext)s" "VIDEO_URL"

# Playlist download
yt-dlp -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" "PLAYLIST_URL"
第 5 步:报告结果

下载完成后,报告:

  • ✅ 视频标题和时长
  • ✅ 文件大小和格式
  • ✅ 保存位置
  • ✅ 下载速度和耗时
  • ⚠️ 任何警告或画质限制

输出示例:

✅ Downloaded: "Video Title Here"
   Duration: 15:30
   Quality: 1080p MP4
   Size: 234 MB
   Location: ./Video Title Here.mp4
   Time: 45 seconds at 5.2 MB/s

转录响应模式

当用户请求转录视频/音频时:

第 1 步:检查前置条件
# Verify SiliconFlow API key is available
echo $SILICONFLOW_API_KEY
# Or user must provide via --api-key parameter

API 密钥设置:

第 2 步:验证文件

确保文件存在且格式受支持(音频或视频)。

第 3 步:执行转录

使用捆绑脚本 scripts/transcribe_siliconflow.py:

# Basic transcription
python scripts/transcribe_siliconflow.py --file video.mp4 --api-key sk-xxx

# With custom output path
python scripts/transcribe_siliconflow.py --file audio.mp3 --output transcript.md --api-key sk-xxx

# Using environment variable for API key
python scripts/transcribe_siliconflow.py --file video.mp4
第 4 步:报告转录结果
✅ Transcription complete!
   File: video.mp4
   Output: 2025-01-15-video.md
   Size: 12.5 KB

   Preview:
   --------------------------------------------------
   [First 200 characters of transcription...]
   --------------------------------------------------

组合工作流:下载 + 转录

对于“下载并转录此视频”之类的请求:

# Step 1: Download video
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best" --merge-output-format mp4 -o "%(title)s.%(ext)s" "VIDEO_URL"

# Step 2: Transcribe the downloaded file
python scripts/transcribe_siliconflow.py --file "Downloaded Video Title.mp4" --api-key sk-xxx

平台专用说明

YouTube
  • yt-dlp 完全支持
  • 下载公开视频无需身份验证
  • 支持包括 4K/8K 在内的所有画质
Bilibili
  • yt-dlp 支持
  • 下载高画质视频可能需要登录 Cookie
  • 对于仅限会员观看的内容,使用 --cookies 并指定 cookies.txt
其他平台
  • yt-dlp 可很好地支持大多数平台
  • 完整列表请参阅 references/supported_platforms.md

处理受保护内容的 Cookie

对于需要身份验证的平台(Bilibili 大会员、仅限会员观看的内容等):

方法 1:导出 Cookie 文件(推荐)
# Use browser extension "Get cookies.txt LOCALLY"
# Export cookies.txt, then:
yt-dlp --cookies cookies.txt "VIDEO_URL"
方法 2:手动创建 Cookie 文件
# Create cookies.txt in Netscape format
# Use browser extension "Get cookies.txt LOCALLY"
# Then use with yt-dlp
yt-dlp --cookies cookies.txt "VIDEO_URL"

故障排除

问题:视频质量低于预期

解决方案:

  1. 检查平台是否要求登录才能观看高清内容
  2. 使用 --cookies cookies.txt 进行身份验证
  3. 使用 -f 参数明确指定质量
问题:下载速度非常慢

解决方案:

  1. 检查网络连接
  2. 尝试在一天中的其他时间下载(高峰时段会影响速度)
  3. 使用 --concurrent-fragments 加快下载
问题:“视频不可用”或受地理位置限制

解决方案:

  1. 视频可能受区域限制
  2. 在法律允许的情况下使用代理/VPN
  3. 检查视频是否仍在平台上提供
问题:转录 API 密钥错误

解决方案:

  1. 确认 API 密钥以 sk- 开头
  2. 从以下地址获取免费密钥:https://cloud.siliconflow.cn/account/ak
  3. 设置环境变量:SILICONFLOW_API_KEY=sk-xxx
问题:转录结果为空

解决方案:

  1. 检查音频/视频中是否有清晰的语音
  2. 确认文件格式受支持
  3. 文件可能过短或只包含音乐

常用命令

质量预设
# 4K (2160p)
yt-dlp -f "bestvideo[height<=2160]+bestaudio/best[height<=2160]" --merge-output-format mp4 "VIDEO_URL"

# 1080p (Full HD)
yt-dlp -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" --merge-output-format mp4 "VIDEO_URL"

# 720p (HD)
yt-dlp -f "bestvideo[height<=720]+bestaudio/best[height<=720]" --merge-output-format mp4 "VIDEO_URL"

# 480p (SD)
yt-dlp -f "bestvideo[height<=480]+bestaudio/best[height<=480]" --merge-output-format mp4 "VIDEO_URL"
提取音频
# Extract as MP3
yt-dlp -x --audio-format mp3 -o "%(title)s.%(ext)s" "VIDEO_URL"

# Extract as M4A (better quality)
yt-dlp -x --audio-format m4a -o "%(title)s.%(ext)s" "VIDEO_URL"
批量下载
# Download multiple URLs from file
yt-dlp -a urls.txt

# Download playlist with custom naming
yt-dlp -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" "PLAYLIST_URL"

# Download channel's videos
yt-dlp -o "%(uploader)s/%(title)s.%(ext)s" "CHANNEL_URL"

打包资源

配置
.env.example

环境变量模板。复制为 .env,并添加你的 SiliconFlow API 密钥。

脚本
scripts/transcribe_siliconflow.py

使用 SiliconFlow 免费 API 的 AI 转录脚本。

用法:

python scripts/transcribe_siliconflow.py --file <audio/video> [--api-key <key>] [--output <path>]

参数:

  • --file, -f:输入音频/视频文件(必需)
  • --api-key, -k:SiliconFlow API 密钥(或使用 SILICONFLOW_API_KEY 环境变量)
  • --output, -o:输出 Markdown 文件路径(默认:YYYY-MM-DD-filename.md)
  • --model, -m:要使用的模型(默认:FunAudioLLM/SenseVoiceSmall)
参考资料
references/supported_platforms.md

包含 1000 多个受支持平台的完整列表,以及针对各个平台的说明和要求。

references/quality_formats.md

详细说明视频格式、编解码器和质量选择策略。

获得最佳效果的提示

  1. 如果用户有质量偏好,务必明确指定质量——节省带宽和存储空间
  2. 批量下载可以节省时间——尽可能使用播放列表 URL
  3. 提取音频速度更快——对于播客/音乐内容,建议采用此方式
  4. 下载前检查文件大小——文件过大(>1GB)时提醒用户
  5. 音频清晰时转录效果最佳——为获得更好的效果,可考虑先提取音频

来源

评论

支持 Markdown