关于 advanced-video-downloader
advanced-video-downloader 技能结合 yt-dlp 与 SiliconFlow API,为需要保存或处理视频音频的用户提供下载和转录流程。支持多平台、批量或播放列表下载、质量选择,以及将音视频转为 Markdown。
主要功能
- 01从 1000 多个平台下载视频
- 02批量下载视频和播放列表
- 03提取 MP3 或 M4A 音频
- 04选择视频分辨率
- 05使用 SiliconFlow 转录为 Markdown
适用场景
- 01保存网络视频供离线观看
- 02批量下载播放列表或多个链接
- 03仅提取视频音频用于收听
- 04将视频或音频内容转成文字
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jst-well-dan/ skill-box --skill advanced-video-downloader安装后在 Claude Code 中输入/advanced-video-downloader确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.env.exampledocs/README.mdreferences/quality_formats.mdsupported_platforms.mdscripts/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 密钥设置:
- 从以下地址获取免费 API 密钥:https://cloud.siliconflow.cn/account/ak
- 将
.env.example复制为.env,然后添加 API 密钥 - 或设置环境变量:
SILICONFLOW_API_KEY=sk-xxx
第 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"
故障排除
问题:视频质量低于预期
解决方案:
- 检查平台是否要求登录才能观看高清内容
- 使用
--cookies cookies.txt进行身份验证 - 使用
-f参数明确指定质量
问题:下载速度非常慢
解决方案:
- 检查网络连接
- 尝试在一天中的其他时间下载(高峰时段会影响速度)
- 使用
--concurrent-fragments加快下载
问题:“视频不可用”或受地理位置限制
解决方案:
- 视频可能受区域限制
- 在法律允许的情况下使用代理/VPN
- 检查视频是否仍在平台上提供
问题:转录 API 密钥错误
解决方案:
- 确认 API 密钥以
sk-开头 - 从以下地址获取免费密钥:https://cloud.siliconflow.cn/account/ak
- 设置环境变量:
SILICONFLOW_API_KEY=sk-xxx
问题:转录结果为空
解决方案:
- 检查音频/视频中是否有清晰的语音
- 确认文件格式受支持
- 文件可能过短或只包含音乐
常用命令
质量预设
# 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
详细说明视频格式、编解码器和质量选择策略。
获得最佳效果的提示
- 如果用户有质量偏好,务必明确指定质量——节省带宽和存储空间
- 批量下载可以节省时间——尽可能使用播放列表 URL
- 提取音频速度更快——对于播客/音乐内容,建议采用此方式
- 下载前检查文件大小——文件过大(>1GB)时提醒用户
- 音频清晰时转录效果最佳——为获得更好的效果,可考虑先提取音频