mcpField
Y
youtube-tools

youtube-tools

github.com/casper-studios创意与媒体15294 次安装8 周前更新
代码仓库

关于 youtube-tools

基于 yt-dlp 的本地 YouTube 工具技能,可下载媒体并获取字幕文本和视频元数据。适用于视频研究与媒体处理流程,无需 API 密钥。

主要功能

  1. 01下载视频和播放列表
  2. 02提取音频
  3. 03获取字幕文本与字幕
  4. 04读取视频元数据
  5. 05从 URL 文件批量处理

适用场景

  1. 01将课程播放列表保存到本地
  2. 02准备字幕文本以供摘要
  3. 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.md
scripts/
download_video.py
get_transcript.py
get_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

资源

评论

支持 Markdown