视频分析MCP服务器

一个用于全面视频分析的MCP服务器,支持AI驱动的转录、视觉帧分析和来自1000多个平台的元数据提取。

  • by guguborbh
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 guguborbh/videoscan-mcp

使用说明

视频扫描MCP

用于全面视频分析的MCP(模型上下文协议)服务器——来自1000多个平台的AI驱动转录、视觉帧分析和元数据提取。

特性

  • 完整视频分析 --在单个调用中组合转录、帧提取和元数据
  • AI视觉分析 --使用GPT-4o、Claude或Gemini描述帧并提取屏幕文本(OCR)
  • 音频转录 --基于耳语的转录,带有时间戳和语言检测
  • 自动调谐 --根据视频持续时间自动调整帧提取密度、间隔和细节级别
  • 智能帧提取 --场景变化检测、间隔采样或组合策略
  • 去重 --感知散列在分析之前删除接近重复的帧
  • 元数据抽取 --标题、持续时间、章节、标签、浏览次数等,无需完整下载
  • 多供应商 --OpenAI、Anthropic和谷歌视觉提供商,具有按请求覆盖功能
  • 缓存 --用于下载、帧和结果的持久缓存,以最大限度地降低重复成本
  • 1000+平台 --由yt-dlp(YouTube、Vimeo、Twitter/X、TikTok等)提供支持

安装

pip install videoscan-mcp

系统相关性

视频扫描需要 FFmpeg 用于视频处理和 yt-dlp 用于从URL下载。

# 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会根据视频持续时间自动调整帧提取参数,以优化成本和覆盖范围:

持续时间 帧数 间隔 策略 详细信息
<2分钟 ~1/秒(密集) 1s 组合 详细
2-10分钟 ~40 3s 组合 标准
10-30分钟 ~30 10s 组合 标准
30-60分钟 ~30 20s 组合 简短
>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许可证——见 许可证 了解详情。