返回市场
视频摘要服务器

视频摘要服务器

作者:R-lz27 星标更新:2025-04-03

项目介绍

MCP 视频摘要(视频内容提取总结)

<div align="right"> <a href="README_EN.md">English</a> | <b>中文</b> </div>

项目介绍

MCP 视频摘要是一项视频内容处理服务,可以从 YouTube、Bilibili、TikTok、Twitter 等网站上的视频中提取音频,并将其转换成文本。该服务支持多个转录服务提供商,包括 Deepgram、Gladia、Speechmatics 和 AssemblyAI,并可以根据配置的API密钥灵活选择和使用。(第一个MCP培训项目,主要熟悉MCP的开发和运行流程)

特性

  • 支持从超过1000个网站下载流媒体内容并提取音频
  • 多个转录服务提供商支持:
    • Deepgram
    • Gladia
    • Speechmatics
    • AssemblyAI
  • 灵活的服务选择机制,根据可用的API密钥自动选择服务
  • 异步处理设计以提高并发性能
  • 完整的错误处理和日志记录
  • 支持说话人分离
  • 支持本地模型CPU/GPU加速处理

目录结构

.
├── src/                    # 源代码目录
│   ├── services/          # 服务实现目录
│   │   ├── download/      # 下载服务
│   │   └── transcription/ # 转录服务
│   ├── main.py           # 主程序逻辑
│   └── __init__.py       # 包初始化文件
├── config/                # 配置文件目录
├── test.py               # 测试脚本
├── run.py                # 服务启动脚本
├── pyproject.toml        # 项目配置和依赖管理
├── uv.lock               # UV 依赖锁定文件
└── .env                  # 环境变量配置

测试截图

YouTube

Bilibili

安装说明

1. 安装UV或使用Python

如果尚未安装UV,可以使用以下命令进行安装:

curl -LsSf https://astral.sh/uv/install.sh | sh

2. 克隆项目:

git clone https://github.com/R-lz/mcp-video-digest.git
cd mcp-video-digest

3. 创建并激活虚拟环境:

uv venv
source .venv/bin/activate  # Linux/Mac
# 或
.venv\Scripts\activate     # Windows

4. 安装依赖:

uv pip install -e .

在调试时,使用requests与Speechmatics遇到了各种问题(与Speechmatics无关,是我的错误),所以我使用了Speechmatics SDK

配置说明

  1. 在项目的根目录下创建.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密钥

  2. 服务优先级顺序:

    • Deepgram(推荐用于中文内容)
    • Gladia
    • Speechmatics
    • AssemblyAI

使用说明

  1. 启动服务:

    uv run src/main.py
    

    或使用调试模式:

    UV_DEBUG=1 uv run src/main.py
    
  2. 调用服务:

    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)
    
  3. 客户端SSE示例

{
    "mcpServers": {
      "video_digest": {
        "url": "http://<ip>:8000/sse"
    }
  }
}


# 当然可以在客户端传递Key

"env": {
   "DEEPGRAM_API_KEY":"your_deepgram_key"
}

STDIO方法可以修改启动命令:未验证和测试MCP文档

测试

运行测试脚本:

uv run test.py 
# 或
python test.py

测试脚本将:

  • 验证环境变量配置
  • 测试YouTube下载功能
  • 测试各种转录服务
  • 测试完整的视频处理工作流程

开发指南

  1. 添加新的转录服务:

    • src/services/transcription/目录下创建一个新的服务类
    • 继承BaseTranscriptionService
    • 实现transcribe方法
  2. 自定义下载服务:

    • src/services/download/目录下修改或添加新的下载器
    • 继承或修改YouTubeDownloader

依赖管理

  • 使用uv pip install package_name安装新依赖
  • 使用uv pip freeze > requirements.txt导出依赖列表
  • 使用pyproject.toml管理依赖,uv.lock锁定依赖版本

错误处理

服务将处理以下情况:

  • 缺失或无效的API密钥
  • 视频下载失败
  • 音频转录失败
  • 网络连接问题
  • 服务限制和配额

注意事项

  1. 确保有足够的磁盘空间用于临时文件
  2. 注意每个服务提供商的API使用限制
  3. 建议使用Python 3.11或更高版本
  4. 临时文件将被自动清理
  5. 使用UV可以实现更快的依赖安装速度和更好的依赖管理
  6. YouTube下载可能需要认证,可以将cookies复制到根目录下的cookiess.txt快速生成插件或者使用其他认证方法如浏览器中的cookies,yt-dlp

STT密钥应用及免费信用额度

内容仅供参考

许可证

采用MIT许可证。