视频内容提取总结
HTTP-SSESTDIO从多平台视频中提取音频和文本
从多平台视频中提取音频和文本
MCP Video Digest 是一个视频内容处理服务,,能够从 YouTube、Bilibili、TikTok、Twitter... 视频中提取音频并转换为文本。该服务支持多个转录服务提供商,包括 Deepgram、Gladia、Speechmatics 和 AssemblyAI,可以根据配置的 API 密钥灵活选择使用。(第一个MCP练手的项目,主要熟悉MCP的开发和运行流程)
.
├── src/ # 源代码目录
│ ├── services/ # 服务实现目录
│ │ ├── download/ # 下载服务
│ │ └── transcription/ # 转录服务
│ ├── main.py # 主程序逻辑
│ └── __init__.py # 包初始化文件
├── config/ # 配置文件目录
├── test.py # 测试脚本
├── run.py # 服务启动脚本
├── pyproject.toml # 项目配置和依赖管理
├── uv.lock # UV 依赖锁定文件
└── .env # 环境变量配置
如果还没有安装 uv,可以使用以下命令安装:
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/R-lz/mcp-video-digest.git cd mcp-video-digest
uv venv source .venv/bin/activate # Linux/Mac # 或 .venv\Scripts\activate # Windows
uv pip install -e .
speechmatics 在使用requests调试的时候出现了各种问题(不是speechmatics的问题, 是我菜),所以使用了speechmatics sdk
在项目根目录创建 .env
文件或者重命名.env.example
,配置所需的 API 密钥:
mv .env.example .env
# 修改
DEEPGRAM_API_KEY=your_deepgram_key
GLADIA_API_KEY=your_gladia_key
SPEECHMATICS_API_KEY=your_speechmatics_key
ASSEMBLYAI_API_KEY=your_assemblyai_key
注意:至少需要配置一个服务的 API 密钥
服务优先级顺序:
启动服务:
uv run src/main.py
或者使用调试模式:
UV_DEBUG=1 uv run src/main.py
调用服务:
from mcp.client import MCPClient async def process_video(): client = MCPClient() result = await client.call( "get_video_content", url="https://www.youtube.com/watch?v=video_id" ) print(result)
客户端SSE为示例
{ "mcpServers": { "video_digest": { "url": "http://<ip>:8000/sse" } } } # 当然可以在Client传递Key "env": { "DEEPGRAM_API_KEY":"your_deepgram_key" }
STDIO方式修改启动命令即可:未验证和测试 MCP文档
运行测试脚本:
uv run test.py # 或 python test.py
测试脚本会:
添加新的转录服务:
src/services/transcription/
目录下创建新的服务类BaseTranscriptionService
类transcribe
方法自定义下载服务:
src/services/download/
目录下修改或添加新的下载器YouTubeDownloader
类uv pip install package_name
安装新依赖uv pip freeze > requirements.txt
导出依赖列表pyproject.toml
管理依赖,uv.lock
锁定依赖版本服务会处理以下情况:
内容仅供参考
采用 MIT 许可证。