mcp-youtube分析器
一个MCP服务器,允许AI助手分析YouTube视频——获取元数据、提取转录本和捕获帧。
特性
- 获取_视频_信息 --获取视频元数据(标题、频道、持续时间、视图、可用字幕)
- get_transcript --提取带有时间戳的成绩单,并自动回退(字幕→ yt-dlp字幕→ 耳语)
- 提取帧 --以固定间隔或场景变化捕获帧,以base64 JPEG格式返回
- 分析视频 --按时间顺序交错的组合转录+帧
快速开始
先决条件
- Python 3.11+
- 紫外线
从源码安装
git clone https://github.com/TommasoBagassi/mcp-youtube-analyzer.git
cd mcp-youtube-analyzer
uv syncMCP配置
克劳德代码
claude mcp add youtube-analyzer -- uvx mcp-youtube-analyzer或者从本地克隆:
claude mcp add youtube-analyzer -- uv run --directory /path/to/mcp-youtube-analyzer mcp-youtube-analyzer克劳德桌面版
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"youtube-analyzer": {
"command": "uvx",
"args": ["mcp-youtube-analyzer"]
}
}
}或者从本地克隆:
{
"mcpServers": {
"youtube-analyzer": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-youtube-analyzer", "mcp-youtube-analyzer"]
}
}
}工具
获取_视频_信息
无需下载即可获取视频元数据。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
url | string | yes | YouTube视频URL或视频ID |
get_transcript
使用3步回退链提取文字/字幕。
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
url | string | 是 | -- | YouTube视频URL或视频ID |
lang | string | 否 | "en" | 首选语言代码 |
include_timestamps | boolean | 否 | true | 包括 [MM:SS] 时间戳 |
cursor | string | 否 | null | 前一个响应的分页光标 |
返回分页文本(50000个字符块)。使用返回的 next_cursor 值以获取后续页面。
提取帧
将帧提取为base64 JPEG图像。
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
url | string | 是 | -- | YouTube视频URL或视频ID |
interval_seconds | 整数 | 否 | 30 | 捕获之间的秒数(间隔模式) |
method | string | 否 | "interval" | "interval" 或 "scene" 用于场景变化检测 |
max_frames | 整数 | 否 | 20 | 返回的最大帧数 |
max_resolution | 整数 | 否 | 720 | 最大高度(像素) |
quality | 整数 | 否 | 60 | JPEG质量(1-100) |
start_time | 整数 | 否 | null | 分段开始时间(秒) |
end_time | 整数 | 否 | null | 分段结束(秒) |
分析视频
组合转录+帧,按时间顺序交错。使用更严格的默认值来管理输出大小。
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
url | string | 是 | -- | YouTube视频URL或视频ID |
lang | string | 否 | "en" | 首选文字记录语言 |
frame_interval | 整数 | 否 | 60 | 帧捕获之间的秒数 |
max_frames | 整数 | 否 | 10 | 返回的最大帧数 |
quality | 整数 | 否 | 50 | JPEG质量(1-100) |
start_time | 整数 | 否 | null | 分段开始时间(秒) |
end_time | 整数 | 否 | null | 分段结束(秒) |
认证
默认情况下,只能访问公共视频。对于私人或年龄限制的视频,请通过环境变量配置基于cookie的身份验证:
| 变量 | 描述 |
|---|---|
YOUTUBE_COOKIE_SOURCE | 浏览器从(例如。, firefox, chrome) |
YOUTUBE_COOKIES_FILE | Netscape格式cookies.txt文件的路径 |
YOUTUBE_COOKIE_SOURCE 如果两者都设置,则优先。
示例(克劳德代码):
claude mcp add youtube-analyzer -e YOUTUBE_COOKIE_SOURCE=firefox -- uvx mcp-youtube-analyzer示例(克劳德桌面):
{
"mcpServers": {
"youtube-analyzer": {
"command": "uvx",
"args": ["mcp-youtube-analyzer"],
"env": {
"YOUTUBE_COOKIE_SOURCE": "firefox"
}
}
}
}配置
| 变量 | 默认值 | 描述 |
|---|---|---|
YOUTUBE_MAX_DURATION | 10800 (3小时) | 允许的最大视频持续时间(秒) |
WHISPER_MODEL | small | 用于本地转录回退的更快耳语模型名称 |
Whisper(可选)
Whisper转录回退仅在没有字幕或字幕可用时使用。安装方式:
uv sync --extra whisper测试
运行单元测试:
uv run pytest tests/ -v -m "not integration"运行集成测试(需要网络访问,点击真实的YouTube):
uv run pytest tests/ -v --integration许可证
麻省理工学院
