关于 Video URL Analyzer
Video URL Analyzer 是面向视频分析场景的 MCP 服务,可处理 YouTube、TikTok 和 Instagram 视频及图片帖。它结合 Gemini 分析音视频内容,并提供转录、片段检索、证据提取和教程步骤整理。
主要功能
- 01音视频多模态分析
- 02提取带时间戳的转录
- 03按问题查询视频内容
- 04检索片段并提取画面
- 05从技术视频整理教程步骤
适用场景
- 01为多语言视频生成转录
- 02定位视频中的特定事件
- 03从技术视频提取命令和代码
- 04为后续问答保存视频上下文
MCP 相关
通过 FastMCP over stdio 暴露 18 个工具,供 MCP 客户端分析视频、管理本地上下文并提取画面或片段。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
17收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 视频 URL(YouTube、TikTok、Instagram 或其他)。 |
| model | string | 否 | 要使用的 Gemini 模型。默认为 gemini-2.5-flash。 |
| prompt | string | 否 | 自定义分析提示词。默认为综合分析。 |
详细介绍
视频分析器 MCP 服务
借助 AI 分析任意视频 — YouTube、TikTok 和 Instagram
由 Google Gemini 3.5 Flash、FastMCP 和 yt-dlp 提供支持
功能 · 架构 · 快速开始 · 集成 · 安全 · 阿拉伯语
功能
v1.5.4 提供 18 个 MCP 工具:
| 工具 | 功能 |
|---|---|
analyze_video | 使用自定义提示词全面分析音频和画面。借助 Gemini 的多模态理解能力。 |
get_transcript | 提取带时间戳的转录文本并识别说话者。支持通过自动检测处理 100 多种语言。 |
ask_about_video | 提出任何有关视频内容的问题。 |
prepare_slideshow_assets | 将按顺序排列的幻灯片图片作为 MCP 图片块返回,以便 Claude/客户端 AI 直接查看。 |
find_video_moments | 查找匹配的片段,并以精简、标准或完整的结构化格式输出。 |
analyze_video_segment | 仅分析选定的时间段。 |
prepare_video_context | 分析一次并保存可重复使用的本地上下文,以便后续提问和查找证据。 |
ask_video_context | 默认根据已保存的上下文作答;只有明确选择后才会重新调用 Gemini 分析。 |
list_video_contexts | 列出已保存的本地上下文。 |
delete_video_context | 删除一条已保存的上下文。 |
get_video_frame | 提取本地静态帧;条件允许时使用 YouTube 快速路径。 |
get_video_clip | 提取较短的本地片段,时长上限为 30 秒;条件允许时使用 YouTube 快速路径。 |
get_video_evidence_asset | 选择已保存的证据,并返回帧或片段引用。 |
list_video_sources | 查看本地来源、上下文和资源缓存的元数据。 |
cleanup_video_cache | 试运行或清理受管理的缓存文件;默认采用试运行模式。 |
watch_and_analyze | 从技术视频中提取教程步骤、Shell 命令、代码片段和文件路径。 |
execute_tutorial_steps | 安全地验证并审查提取出的步骤;只有在确认后才会执行。 |
check_analysis_job | 查询 TikTok/Instagram 异步下载的后台任务状态。 |
支持的平台
| 平台 | 方式 | 速度 |
|---|---|---|
| YouTube | 直接使用 Gemini 分析 — 分析时无需下载。条件允许时,使用 yt-dlp -g 流媒体 URL 和 ffmpeg 提取帧或片段,并在必要时回退为下载较小片段。 | 即时 / 本地快速提取 |
| TikTok | tikwm.com API(快速)→ 回退到 yt-dlp,并使用安全的 MP4 H.264/H.265 选择器,在条件允许时避开不受支持的 ByteDance bvc2/bytevc2 流 | 约 8 秒 |
| 通过 curl_cffi 抓取页面(快速)→ 回退到 yt-dlp | 约 10 秒 |
照片 / 幻灯片帖子
| 平台 | 帖子类型 | 处理方式 |
|---|---|---|
| TikTok | 照片模式幻灯片 | 下载所有图片,在可用时提取音乐 / 音频轨道,并发送一个多模态 Gemini 请求。 |
| 轮播 / 单张照片帖子 | 按顺序下载图片幻灯片,并将其作为一个帖子进行分析;混有视频的幻灯片会跳过并附带元数据。 | |
| YouTube | 社区 /post/ 图片附件 | 抓取 ytInitialData,下载图片附件,并通过 Gemini Files API 进行分析。 |
YouTube 视频直接通过 Gemini 原生视频理解功能进行分析——无需下载,无需上传,速度最快。 对于 YouTube 证据素材,
source.mp4并非总是必需:已保存的上下文会保留原始 URL,因此帧 / 剪辑工具稍后可以使用本地流快速路径。
架构
| 组件 | 作用 |
|---|---|
| Gemini 3.5 Flash | 最新的 Gemini Flash 模型——单次处理即可全面理解音频和视觉内容 |
| FastMCP 3.x | 通过 stdio 传输的 MCP 协议框架 |
| yt-dlp + curl_cffi | 使用 Chrome 浏览器模拟绕过反机器人机制并下载视频。TikTok 下载优先选择可在本地解码的 MP4 H.264/H.265 格式,并拒绝 ByteDance bvc2/bytevc2 流。 |
| tikwm.com API | yt-dlp 被 WAF 拦截时的 TikTok 快速路径备用方案 |
| ffmpeg | 本地提取帧 / 剪辑,包括提取 YouTube 流 URL,无需下载完整视频 |
| 后台任务 | 使用异步线程处理 TikTok/Instagram,以避免 Claude Desktop 超时。失败的内部结果会报告为失败任务,而非已完成任务。 |
运行模式
这些是行为模式,而非工具名称:
| 模式 | 行为 |
|---|---|
auto | 默认自适应行为:直接分析 YouTube;TikTok/Instagram 先使用快速 API / 抓取,再回退到 yt-dlp;有已保存的上下文时会复用。 |
api | 由 Gemini 支持的分析或重新分析。分析工具和明确选择 Gemini 的操作会使用此模式。 |
client | MCP 客户端工作流模式:耗时较长的 TikTok/Instagram 分析会返回用于轮询的后台 job_id。 |
local | 已保存上下文、缓存、帧和剪辑操作;除非明确请求,否则不使用 Gemini。 |
快速开始
打包后的运行时位于 src/video_url_analyzer_mcp/server.py;控制台入口点为 video_url_analyzer_mcp:main。选择适合你工作流的安装方式。
选项 A — Windows 一行安装程序(推荐新用户使用)
irm https://raw.githubusercontent.com/u2n4/video-url-analyzer-mcp/main/install.ps1 | iex
安装程序遵循当前 MCP 客户端模式:通过 uvx 从 PyPI 安装 / 运行;如果已设置 GEMINI_API_KEY 环境变量,则使用该变量,否则仅通过隐藏提示输入密钥;并允许用户选择注册服务的位置:
- Claude Code
- Claude Desktop
- Codex CLI
- Cursor
- Windsurf
- VS Code / GitHub Copilot
- Google Antigravity
- Cline
请勿将 API 密钥附加到 PowerShell 命令中。如果跳过输入密钥,安装程序仍会注册服务,你可以稍后设置 GEMINI_API_KEY。如果 GEMINI_API_KEY 已在用户环境变量中设置,安装程序会直接使用该变量,并仅打印类似 AIza...abcd 的掩码形式。
选项 B — uvx(无需安装)
uvx video-url-analyzer-mcp
只要 uv 位于 PATH 中,即可在 Windows / macOS / Linux 上运行。
选项 C — 从代码库检出版本启动 Windows 向导
git clone https://github.com/u2n4/video-url-analyzer-mcp.git
cd video-url-analyzer-mcp
powershell -ExecutionPolicy Bypass -File scripts\install_windows.ps1
该向导会:
- 验证 Python 3.10+ 和(可选的)
uv。 - 将软件包安装为可编辑检出版本,或通过
uv tool install安装。 - 让你将
GEMINI_API_KEY保存为用户环境变量,或保存到被 Git 忽略的.env.keys.local文件中。日志中的密钥会被遮蔽(AIza...abcd),不会完整打印。 - 让你通过
VIDEO_ANALYZER_MODEL选择默认模型。 - 运行离线导入冒烟测试。
- 转交给
scripts/configure_mcp_clients.ps1进行客户端设置。
选项 D — 手动安装(任意操作系统)
git clone https://github.com/u2n4/video-url-analyzer-mcp.git
cd video-url-analyzer-mcp
pip install -e .
python -m video_url_analyzer_mcp
在 Google AI Studio 获取免费密钥,然后在 Shell 环境中设置一次(Windows 上运行 setx GEMINI_API_KEY ...,macOS/Linux 上则设置在 ~/.zshrc 或 ~/.bashrc 中)。仅用于本地开发时,也可以将密钥放在代码库旁边、被 Git 忽略的 .env.keys.local 文件中。
Windows 启动器
start.bat 会加载 .env.keys.local(如果存在),设置安全的默认值(VIDEO_ANALYZER_MODE=auto),然后运行 python -m video_url_analyzer_mcp。对于偏好使用单个可执行文件的 MCP 客户端,可将其用作 command 值。
集成
运行 scripts/configure_mcp_clients.ps1 打开交互式菜单,或从 docs/mcp-config-examples.md 复制以下代码片段。该向导会备份现有客户端配置、验证 JSON/TOML,并且绝不会覆盖无关的 MCP 服务。
客户端配置使用 video-analyzer 作为本地 MCP 服务的条目名称。已发布的软件包仍为 video-url-analyzer-mcp,注册表名称仍为 io.github.u2n4/video-url-analyzer-mcp。
Claude Desktop(%APPDATA%\Claude\claude_desktop_config.json)
{
"mcpServers": {
"video-analyzer": {
"command": "uvx",
"args": ["video-url-analyzer-mcp"]
}
}
}
该向导优先将 API 密钥保留在操作系统环境变量中。如果必须将其嵌入配置,请添加 "env": { "GEMINI_API_KEY": "YOUR_KEY_HERE" }。
Claude Code(CLI)
claude mcp add video-analyzer --transport stdio -- uvx video-url-analyzer-mcp
或者,在代码库中运行 pip install -e . 后:
claude mcp add video-analyzer --transport stdio -- python -m video_url_analyzer_mcp
Codex CLI(~/.codex/config.toml)
[mcp_servers.video-analyzer]
command = "uvx"
args = ["video-url-analyzer-mcp"]
VS Code / GitHub Copilot MCP
工作区注册会写入 .vscode/mcp.json:
{
"inputs": [
{
"type": "promptString",
"id": "video-url-analyzer-gemini-api-key",
"description": "Gemini API key for video-url-analyzer-mcp",
"password": true
}
],
"servers": {
"video-analyzer": {
"type": "stdio",
"command": "uvx",
"args": ["video-url-analyzer-mcp"],
"env": {
"GEMINI_API_KEY": "${input:video-url-analyzer-gemini-api-key}"
}
}
}
}
对于所有客户端,编辑配置后都要重启应用,以便加载新的 MCP 服务。完整代码片段(包括 Cursor、Windsurf、Antigravity(%USERPROFILE%\.gemini\antigravity\mcp_config.json)和 Cline)请参阅 docs/mcp-config-examples.md。
使用示例
# Full video analysis with Gemini 3.5 Flash
analyze_video("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
# Custom analysis prompt
analyze_video("https://www.tiktok.com/@user/video/123",
prompt="List every product shown and estimate prices")
# Multilingual transcript extraction
get_transcript("https://www.instagram.com/reel/ABC123/", lang="ar")
# Ask specific questions about video content
ask_about_video("https://youtu.be/abc",
question="What programming language is used in the tutorial?")
# Analyze once, then ask locally from the saved context
prepare_video_context("https://youtu.be/abc", detail="standard")
ask_video_context("https://youtu.be/abc",
question="What happens near the end?")
# Extract visual evidence without embedding binary data in the tool output
get_video_frame("https://youtu.be/abc", timestamp="00:30")
get_video_clip("https://youtu.be/abc", start="00:20", end="00:28")
# Watch & build — extract tutorial steps
watch_and_analyze("https://www.youtube.com/watch?v=tutorial123")
安全
此服务已针对全面的威胁模型审计进行了安全加固:
| 层 | 防护措施 |
|---|---|
| SSRF | URL 允许列表——仅接受 YouTube、TikTok、Instagram 域名。屏蔽私有 IP、localhost 和 file://。 |
| 命令注入 | 使用 shell=False + shlex.split()。危险命令阻止列表(rm -rf、反向 Shell、eval、管道传给 Shell)。 |
| 路径遍历 | 屏蔽 25 种以上敏感路径模式(.ssh、.aws、.env、系统目录、AppData)。 |
| TLS | 所有下载均进行完整的证书验证。 |
| 浏览器 Cookie | 仅在选择启用 VIDEO_ANALYZER_COOKIES=true 时使用。默认禁用。 |
| 下载大小 | 每个视频的硬性上限为 100 MB。 |
| DoS 防护 | 最多 10 个并发后台任务。1 小时后自动过期。最多存储 200 次分析。 |
| 架构验证 | 执行前验证 Gemini JSON 响应。响应大小上限为 500K 个字符。 |
| 依赖项 | 在 pyproject.toml 中维护运行时依赖项版本范围。 |
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
GEMINI_API_KEY | Google Gemini API 密钥 | 必填 |
ANALYSES_DIR | 已保存分析的目录 | ./analyses |
VIDEO_CONTEXT_DIR | 已保存可重复使用的视频上下文目录 | video_contexts |
VIDEO_SOURCE_DIR | 已下载源媒体缓存目录 | video_sources |
VIDEO_ASSET_DIR | 提取帧/片段的目录 | video_assets |
VIDEO_ANALYZER_COOKIES | 启用浏览器 Cookie 访问(true/false) | false |
VIDEO_DOWNLOAD_TIMEOUT | 覆盖下载和 yt-dlp 超时值,单位为秒 | 现有的各操作默认值 |
VIDEO_FFMPEG_TIMEOUT | 覆盖 ffmpeg 提取超时值,单位为秒 | 现有的各操作默认值 |
VIDEO_GEMINI_TIMEOUT | 可选的 Gemini HTTP 超时,单位为秒 | SDK 默认值 |
VIDEO_IMAGE_DOWNLOAD_CONCURRENCY | TikTok/Instagram/YouTube 图片帖的并行图片下载数 | 6 |
VIDEO_GEMINI_UPLOAD_CONCURRENCY | 已下载媒体和幻灯片图片的并行 Gemini Files 上传数 | 4 |
VIDEO_ANALYZER_MODEL | 同时用于快速和深度模型解析的单一默认模型 ID。单次调用的 model= 和 GEMINI_FAST_MODEL/GEMINI_DEEP_MODEL 优先级仍更高。 | 未设置 |
GEMINI_FAST_MODEL | 紧凑/标准详情模式的覆盖值 | gemini-3.5-flash |
GEMINI_DEEP_MODEL | full 详情模式的覆盖值 | gemini-3.1-pro-preview |
默认快速模型:
gemini-3.5-flash。默认深度模型 (在detail="full"时使用):gemini-3.1-pro-preview。设置VIDEO_ANALYZER_MODEL可同时覆盖两者。模型可用性可能因 Google 账号、地区和 API 层级而异——如果你的 密钥尚未启用最新 ID,请改用gemini-flash-latest。 |VIDEO_ANALYZER_MODE| 行为预设(auto/api/client/local);由start.bat读取 |auto|
故障排除
| 问题 | 解决方案 |
|---|---|
GEMINI_API_KEY not set | 创建 .env 文件,或通过环境变量传入 |
| TikTok 下载失败 | 自动启用 tikwm.com 备用方案。确保已安装 curl_cffi。 |
TikTok bvc2/bytevc2 编解码器 | v1.4 会在存在兼容的 MP4 H.264/H.265 格式时避开这些不受支持的 ByteDance 流。如果没有可用的兼容流,工具会返回结构化的 unsupported_codec 或 no_compatible_format 错误,而不会上传或谎报成功。 |
| Instagram 下载失败 | 安装 pip install curl_cffi 以支持浏览器模拟 |
Windows 上出现 ENOENT | 在 Claude Desktop 配置中使用 start.bat 作为命令 |
| 无法使用目标模拟 | 重新安装:pip install "yt-dlp[curl-cffi]" |
| Claude Desktop 超时 | TikTok/Instagram 会在后台运行——使用 check_analysis_job(job_id) 轮询 |
| 后台任务显示失败 | 当工作线程结果为错误、Gemini 文件处理失败或媒体验证拒绝该源时,这是预期行为。check_analysis_job 不再将这些内部失败报告为已完成。 |
prepare_video_context 重复执行工作 | 它会重复使用缓存的上下文,除非设置 force_refresh=true |
缺少 YouTube source.mp4 | 某些情况下这是预期行为。帧/片段工具可以从已保存的 URL 恢复,并使用 yt-dlp -g + ffmpeg 快速提取。 |
| Gemini 暂时性 503/5xx 错误 | Gemini generate_content 调用会采用指数退避策略,最多重试 3 次。4xx 身份验证/架构/用户错误不会重试。 |
技术栈
| 技术 | 版本 | 用途 |
|---|---|---|
| Google Gemini 3.5 Flash | Latest | 多模态视频分析引擎 |
| FastMCP | 3.3.1+ | MCP 协议框架 |
| yt-dlp | 2026.3.17+ | 视频下载器 |
| curl_cffi | >=0.7.4,<0.15.0 | 浏览器模拟(TLS 指纹),为兼容 yt-dlp 2026.03.17 而固定版本 |
| google-genai | 2.5.0+ | Google 官方 GenAI SDK |
许可证
MIT
阿拉伯语
AI 视频分析服务
使用 Google Gemini 3.5 Flash 分析视频的 MCP 服务——Google 最新的多模态 Gemini Flash 模型。
功能
| 工具 | 描述 |
|---|---|
analyze_video | 全面分析音频和画面,支持自定义指令 |
get_transcript | 提取语音文本并附带时间戳——支持 100 多种语言 |
ask_about_video | 询问有关视频内容的任何问题 |
prepare_video_context | 一次性分析视频并保存可重复使用的本地上下文 |
ask_video_context | 根据已保存的上下文回答,默认不使用 Gemini |
get_video_frame / get_video_clip | 提取图像或片段作为本地证据,并提供通过 yt-dlp + ffmpeg 快速处理 YouTube 的路径 |
watch_and_analyze | 提取技术教程中的步骤、命令和代码 |
execute_tutorial_steps | 安全地审查并执行提取出的步骤 |
支持的平台
| 平台 | 速度 |
|---|---|
| YouTube | 即时——直接分析,无需下载 |
| TikTok | ~8 秒——通过快速的 tikwm.com 接口 |
| ~10 秒——直接从页面提取 |
快速安装(Windows)
克隆仓库,然后运行交互式安装程序:
git clone https://github.com/u2n4/video-url-analyzer-mcp.git
cd video-url-analyzer-mcp
powershell -ExecutionPolicy Bypass -File scripts\install_windows.ps1
无需安装的替代方式:uvx video-url-analyzer-mcp。
安全
服务已采取防护措施:
- SSRF——仅允许白名单中的域名
- 命令注入——阻止危险命令 + 不使用 shell 执行
- 路径遍历——阻止 25 个以上的敏感路径
- 过载保护——最多允许 10 个并发任务
获取 API 密钥
- 访问 Google AI Studio
- 创建免费 API 密钥
- 将密钥放入
.env文件:
GEMINI_API_KEY=مفتاحك_هنا
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。