视频扫描MCP
用于全面视频分析的MCP(模型上下文协议)服务器——来自1000多个平台的AI驱动转录、视觉帧分析和元数据提取。
特性
- 完整视频分析 --在单个调用中组合转录、帧提取和元数据
- AI视觉分析 --使用GPT-4o、Claude或Gemini描述帧并提取屏幕文本(OCR)
- 音频转录 --基于耳语的转录,带有时间戳和语言检测
- 自动调谐 --根据视频持续时间自动调整帧提取密度、间隔和细节级别
- 智能帧提取 --场景变化检测、间隔采样或组合策略
- 去重 --感知散列在分析之前删除接近重复的帧
- 元数据抽取 --标题、持续时间、章节、标签、浏览次数等,无需完整下载
- 多供应商 --OpenAI、Anthropic和谷歌视觉提供商,具有按请求覆盖功能
- 缓存 --用于下载、帧和结果的持久缓存,以最大限度地降低重复成本
- 1000+平台 --由yt-dlp(YouTube、Vimeo、Twitter/X、TikTok等)提供支持
安装
pip install videoscan-mcp系统相关性
# macOS
brew install ffmpeg yt-dlp
# Ubuntu/Debian
apt install ffmpeg
pip install yt-dlp
# Windows — install ffmpeg from https://ffmpeg.org/download.html, then:
pip install yt-dlp配置
复制 .env.example 到 .env 并填写至少一个API密钥:
# Vision provider (frame analysis)
VISION_PROVIDER=openai # openai | anthropic | google
VISION_MODEL= # optional — defaults: gpt-4o / claude-sonnet-4-20250514 / gemini-2.0-flash
# Transcription provider
TRANSCRIPTION_PROVIDER=openai # openai only for now
TRANSCRIPTION_MODEL=whisper-1
# Concurrency
VISION_CONCURRENCY=5 # max parallel vision API calls
# API keys — only need the key for your chosen provider
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GOOGLE_API_KEY=AIza...
# Cache
CACHE_ENABLED=true
CACHE_DIR=~/.videoscan/cache
CACHE_MAX_SIZE_GB=5
CACHE_DOWNLOAD_TTL=3600 # 1 hour
CACHE_FRAMES_TTL=86400 # 24 hours
CACHE_RESULTS_TTL=604800 # 7 days
# Safety limits (set to 0 for unlimited)
MAX_VIDEO_DURATION=3600 # 60 minutes in seconds
MAX_DOWNLOAD_SIZE=2147483648 # 2 GB in bytes
MAX_ANALYZED_FRAMES=100
DOWNLOAD_TIMEOUT=300
FRAME_ANALYSIS_TIMEOUT=30快速入门--克劳德代码
将VideoScan添加到您的Claude代码中 settings.json (通常在 ~/.claude/settings.json):
{
"mcpServers": {
"videoscan": {
"command": "videoscan",
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}或使用 uvx 无需全局安装:
{
"mcpServers": {
"videoscan": {
"command": "uvx",
"args": ["videoscan-mcp"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}连接后,您可以问Claude以下问题:
- “分析此YouTube视频:https://youtube.com/watch?v=..."
- “转录此视频文件中的音频”
- “这段视频2:30时屏幕上显示的是什么?”
- “从该视频中提取帧并描述您看到的内容”
自动调谐
当 max_frames 和 interval 如果没有明确设置,VideoScan会根据视频持续时间自动调整帧提取参数,以优化成本和覆盖范围:
| 持续时间 | 帧数 | 间隔 | 策略 | 详细信息 |
|---|---|---|---|---|
| \60分钟 | ~20 | 30s | 仅场景 | 简短 |
短视频可以进行密集的帧提取,以获得最大的细节,而长视频则使用较轻的采样来降低成本。您始终可以通过设置来覆盖 max_frames 或 interval 明确地。
工具参考
analyze_video
全流程——转录+AI帧分析+元数据在一次调用中。用途 自动调谐 默认情况下。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
source | string | 必需 | URL或本地文件路径 |
detail | 字符串 | "standard" | 视觉水平: "brief", "standard", "detailed" |
max_frames | int | auto | 要分析的最大帧数--设置为 -1 (默认)用于根据持续时间自动调整 |
threshold | 浮子 | 0.3 | 场景切换灵敏度(0.0–1.0) |
strategy | 字符串 | "combined" | 帧提取: "scene", "interval", "combined" |
interval | int | auto | 帧间秒数--设置为 -1 (默认)用于根据持续时间自动调整 |
skip_frames bool的。 false | 跳过视觉分析(仅转录) | ||
skip_audio bool的。 false | 跳过转录(仅限帧) | ||
language | 字符串 | "auto" | 转录语言或 "auto" |
provider | 字符串 | null | 覆盖视觉提供者 |
force_refresh bool的。 false | 绕过缓存 |
______________________________________________________________________
transcribe
将视频或音频转录为带有时间戳的文本。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
source | string | 必需 | URL或本地文件路径 |
language | 字符串 | "auto" | 首选语言或 "auto" 用于检测 |
______________________________________________________________________
extract_frames
从视频中提取帧并进行AI分析。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
source | string | 必需 | URL或本地文件路径 |
max_frames | int | 30 | 要提取的最大帧数(1-100) |
threshold | 浮子 | 0.3 | 场景切换灵敏度(0.0–1.0) |
strategy | 字符串 | "combined" | "scene", "interval",或 "combined" |
interval | int | 5 | 间隔模式下帧之间的秒数 |
detail | 字符串 | "standard" | 视觉分析水平 |
deduplicate bool的。 true | 通过dHash删除几乎重复的帧 | ||
provider | 字符串 | null | 覆盖视觉提供者 |
force_refresh bool的。 false | 绕过缓存 |
______________________________________________________________________
analyze_moment
在特定时间范围内进行深入分析。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
source | string | 必需 | URL或本地文件路径 |
start | float | 必填 | 开始时间(秒) |
end | float | 必填 | 结束时间(秒) |
dense bool的。 true | 在该范围内每秒提取1帧 | ||
detail | 字符串 | "detailed" | 视觉分析水平 |
provider | 字符串 | null | 覆盖视觉提供者 |
force_refresh bool的。 false | 绕过缓存 |
______________________________________________________________________
get_frame_at
在特定时间戳获取单个帧,可选择由AI进行分析。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
source | string | 必需 | URL或本地文件路径 |
timestamp | float | 必填 | 时间(秒) |
analyze bool的。 true | 运行AI视觉分析 | ||
provider | 字符串 | null | 覆盖视觉提供者 |
force_refresh bool的。 false | 绕过缓存 |
______________________________________________________________________
get_metadata
在不下载完整视频的情况下获取视频元数据。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
source | string | 必需 | URL或本地文件路径 |
include | 列表 | null | 要返回的特定字段-- "title", "duration", "channel", "description", "thumbnail", "chapters", "tags", "view_count"。如果省略,则返回全部。 |
______________________________________________________________________
支持平台
VideoScan底层使用yt-dlp,支持1000多个视频平台,包括:
- YouTube、YouTube短片、YouTube直播
- Vimeo、Dailymotion、Twitch
- 推特/x、instagram、试试看、脸书
- Reddit、领英、Pinterest
- BBC iPlayer、CNN、NBC、CBS
- SoundCloud、Bandcamp(音频)
- 还有数百人——请看 yt-dlp支持的站点列表
还支持ffmpeg支持的任何格式的本地文件(mp4、mov、avi、mkv、webm、mp3、wav等)。
成本估算
费用取决于您选择的供应商和使用情况:
| 运营 | 提供商 | 大致成本 |
|---|---|---|
| 视觉分析 | OpenAI GPT-4o | ~0.015美元/帧 |
| 视觉分析 | 拟人克劳德 | 每帧约0.024美元 |
| 视觉分析 | 谷歌双子座 | 每帧约0.002美元 |
| 转录 | OpenAI Whisper | ~0.006美元/分钟 |
一个典型的10分钟视频分析 analyze_video (30帧+转录)使用OpenAI的成本约为0.45-0.51美元。
发展
git clone https://github.com/guguborbh/videoscan-mcp
cd videoscan-mcp
pip install -e ".[dev]"
pytest许可证
MIT许可证——见 许可证 了解详情。
