关于 youtube-tools
基于 yt-dlp 的本地 YouTube 工具技能,可下载媒体并获取字幕文本和视频元数据。适用于视频研究与媒体处理流程,无需 API 密钥。
主要功能
- 01下载视频和播放列表
- 02提取音频
- 03获取字幕文本与字幕
- 04读取视频元数据
- 05从 URL 文件批量处理
适用场景
- 01将课程播放列表保存到本地
- 02准备字幕文本以供摘要
- 03收集视频研究所需的元数据
MCP 相关
该技能未说明 MCP 集成。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ casper-studios/ casper-marketplace --skill youtube-tools安装后在 Claude Code 中输入/youtube-tools确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/yt-dlp-guide.mdscripts/download_video.pyget_transcript.pyget_video_info.py详细介绍
YouTube 工具(yt-dlp)
概述
使用 yt-dlp 免费在本地执行 YouTube 操作。无需 API 密钥,也无需按视频付费。安装后可离线使用。
何时使用此工具,何时使用 Apify
┌─────────────────────────────────────────────────────────────────┐
│ DECISION: YouTube Tools (yt-dlp) vs Apify │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Use youtube-tools (FREE) when: │
│ ├── Downloading videos to local storage │
│ ├── Extracting transcripts/subtitles │
│ ├── Getting video metadata (title, duration, views, etc.) │
│ ├── Bulk downloading playlists or channels │
│ ├── Converting to audio-only (MP3) │
│ └── You want zero API costs │
│ │
│ Use apify-scrapers when: │
│ ├── Scraping YouTube SEARCH results │
│ ├── Getting comments at scale │
│ ├── Channel analytics and statistics │
│ ├── Trending video discovery │
│ └── You need cloud-based processing │
│ │
└─────────────────────────────────────────────────────────────────┘
快速决策树
What do you need?
│
├── Download video(s)
│ ├── Single video → scripts/download_video.py URL
│ ├── Multiple videos → scripts/download_video.py --urls-file list.txt
│ ├── Playlist → scripts/download_video.py "playlist_url"
│ ├── Audio only → scripts/download_video.py URL --audio-only
│ └── Specific quality → scripts/download_video.py URL --quality 720p
│
├── Get transcript/subtitles
│ ├── Auto-generated captions → scripts/get_transcript.py URL
│ ├── Manual subtitles → scripts/get_transcript.py URL --manual-only
│ ├── Specific language → scripts/get_transcript.py URL --lang es
│ └── All available → scripts/get_transcript.py URL --all-langs
│
├── Get video metadata
│ ├── Single video → scripts/get_video_info.py URL
│ ├── Multiple videos → scripts/get_video_info.py --urls-file list.txt
│ └── Playlist info → scripts/get_video_info.py "playlist_url"
│
└── Advanced
├── Age-restricted → scripts/download_video.py URL --cookies-from-browser chrome
├── Private videos → Requires authentication (see references/yt-dlp-guide.md)
└── Live streams → scripts/download_video.py URL --live-from-start
环境设置
# Install yt-dlp (required)
pip install yt-dlp
# Optional: Install ffmpeg for format conversion
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt install ffmpeg
# Windows
winget install ffmpeg
无需 API 密钥! 完全免费。
常见用法
下载单个视频
python scripts/download_video.py "https://www.youtube.com/watch?v=VIDEO_ID"
以指定画质下载
python scripts/download_video.py "https://youtu.be/VIDEO_ID" --quality 1080p
仅下载音频(MP3)
python scripts/download_video.py "https://youtube.com/watch?v=VIDEO_ID" --audio-only
下载整个播放列表
python scripts/download_video.py "https://youtube.com/playlist?list=PLAYLIST_ID" --output-dir ./videos
从文件批量下载
# Create urls.txt with one URL per line
python scripts/download_video.py --urls-file urls.txt --output-dir ./downloads
获取文字稿
python scripts/get_transcript.py "https://youtube.com/watch?v=VIDEO_ID"
获取指定语言的文字稿
python scripts/get_transcript.py "https://youtu.be/VIDEO_ID" --lang es
获取视频元数据
python scripts/get_video_info.py "https://youtube.com/watch?v=VIDEO_ID"
获取多个视频的元数据
python scripts/get_video_info.py --urls-file videos.txt --output metadata.json
输出位置
默认情况下,所有输出都保存到 .tmp/youtube/:
- 视频:
.tmp/youtube/videos/ - 音频:
.tmp/youtube/audio/ - 文字稿:
.tmp/youtube/transcripts/ - 元数据:
.tmp/youtube/metadata/
费用
免费——无需 API 密钥,无需按视频付费,也无需订阅。
安全说明
安全设计
- URL 验证:仅接受 YouTube URL(youtube.com、youtu.be)
- 文件名清理:移除危险字符
- 输出限制:仅写入
.tmp/目录 - 无 Shell 注入:使用带参数列表的 subprocess,而非字符串拼接
- 不存储凭据:仅在明确请求时使用 Cookie
版权警告
- 仅下载您有权访问的内容
- 遵守 YouTube 服务条款
- 不要重新分发受版权保护的内容
- 仅用于个人或教育用途
速率限制
- yt-dlp 内置速率限制
- 批量下载时,使用
--sleep-interval 5以避免限流 - 请求过多时,YouTube 可能会暂时封锁 IP
故障排除
问题:“视频无法播放”
原因: 视频设为私密、受年龄限制或受地区限制
解决方案: 对于受年龄限制的内容,使用 --cookies-from-browser chrome
问题:“无法提取视频数据”
原因: YouTube 更改了页面结构
解决方案: 更新 yt-dlp:pip install -U yt-dlp
问题:找不到字幕
原因: 视频没有字幕(自动生成或手动添加)
解决方案: 先使用 --list-subs 查看可用字幕
问题:下载速度慢
原因: YouTube 限速或网络问题
解决方案: 尝试使用 --concurrent-fragments 4 加快下载
问题:格式转换失败
原因: 未安装 ffmpeg
解决方案: 安装 ffmpeg(参见“环境设置”)
集成模式
下载 + 转录 + 总结
# 1. Download video
python scripts/download_video.py "URL" --output-dir .tmp/video
# 2. Get transcript
python scripts/get_transcript.py "URL" --output .tmp/transcript.txt
# 3. Use content-generation to summarize
# (transcript file is now ready for summarization)
批量研究工作流
# 1. Get metadata for research videos
python scripts/get_video_info.py --urls-file research_videos.txt --output .tmp/metadata.json
# 2. Download transcripts for text analysis
python scripts/get_transcript.py --urls-file research_videos.txt --output-dir .tmp/transcripts
# 3. Use parallel-research to analyze content
课程内容下载
# Download entire playlist as course modules
python scripts/download_video.py "PLAYLIST_URL" --output-dir .tmp/course --quality 720p
# Get all transcripts for notes
python scripts/get_transcript.py "PLAYLIST_URL" --output-dir .tmp/course/transcripts
资源
- references/yt-dlp-guide.md - 包含所有选项的 yt-dlp 完整参考
- yt-dlp 文档:https://github.com/yt-dlp/yt-dlp#readme
评论
支持 Markdown