MCP Video Digest

Transcreva e resuma o conteúdo de vídeo a partir de links usando vários serviços de transcrição.

Documentação

MCP Video Digest (extração e resumo de conteúdo de vídeo)

English | 中文

Introdução do Projeto

MCP Video Digest é um serviço de processamento de conteúdo de vídeo que extrai áudio de vídeos do YouTube, Bilibili, TikTok, Twitter... e o converte em texto. O serviço suporta vários provedores de transcrição, incluindo Deepgram, Gladia, Speechmatics e AssemblyAI, que podem ser usados de forma flexível de acordo com as chaves de API configuradas. (Primeiro projeto de prática com MCP, principalmente para me familiarizar com o processo de desenvolvimento e execução do MCP)

Recursos

  • Suporta download de conteúdo de streaming e extração de áudio em mais de 1000 sites
  • Suporte a múltiplos provedores de serviço de transcrição:
    • Deepgram
    • Gladia
    • Speechmatics
    • AssemblyAI
  • Mecanismo flexível de seleção de serviços, que escolhe automaticamente o serviço com base nas chaves de API disponíveis
  • Design de processamento assíncrono, melhorando o desempenho de concorrência
  • Tratamento completo de erros e registro de logs
  • Suporte à separação de falantes
  • × Suporte à aceleração de processamento de modelo local com CPU/GPU

Estrutura de Diretórios

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

Capturas de Tela de Teste

YouTube

Bilibili

Instruções de Instalação

1. Instalar o uv ou usar Python

Se ainda não tiver o uv instalado, você pode instalá-lo com o seguinte comando:

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

2. Clonar o projeto:

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

3. Criar e ativar o ambiente virtual:

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

4. Instalar as dependências:

uv pip install -e .

O speechmatics apresentou vários problemas durante a depuração com requests (não é um problema do speechmatics, sou eu que sou iniciante), então usei o speechmatics SDK

Configuração

  1. Na raiz do projeto, crie o arquivo .env ou renomeie o .env.example para configurar as chaves de API necessárias:

    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
    

    Observação: é necessário configurar pelo menos uma chave de API de um serviço

  2. Ordem de prioridade dos serviços:

    • Deepgram (recomendado para conteúdo em chinês)
    • Gladia
    • Speechmatics
    • AssemblyAI

Como Usar

  1. Iniciar o serviço:

    uv run src/main.py
    

    Ou usar o modo de depuração:

    UV_DEBUG=1 uv run src/main.py
    
  2. Chamar o serviço:

    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. O SSE do cliente é apenas um exemplo

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


# 当然可以在Client传递Key

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

O modo STDIO é configurado apenas alterando o comando de inicialização: ainda não validado nem testado Documentação do MCP

Testes

Execute o script de teste:

uv run test.py 
# 或
python test.py

O script de teste irá:

  • Verificar a configuração das variáveis de ambiente
  • Testar a funcionalidade de download do YouTube
  • Testar cada serviço de transcrição
  • Testar o fluxo completo de processamento de vídeo

Guia de Desenvolvimento

  1. Adicionar um novo serviço de transcrição:

    • Crie uma nova classe de serviço no diretório src/services/transcription/
    • Herde da classe BaseTranscriptionService
    • Implemente o método transcribe
  2. Personalizar o serviço de download:

    • Modifique ou adicione novos downloaders no diretório src/services/download/
    • Herde ou modifique a classe YouTubeDownloader

Gerenciamento de Dependências

  • Use uv pip install package_name para instalar novas dependências
  • Use uv pip freeze > requirements.txt para exportar a lista de dependências
  • Use pyproject.toml para gerenciar dependências, e uv.lock para fixar as versões das dependências

Tratamento de Erros

O serviço lida com as seguintes situações:

  • Chaves de API ausentes ou inválidas
  • Falha no download do vídeo
  • Falha na transcrição do áudio
  • Problemas de conexão de rede
  • Limitações e cotas do serviço

Observações

  1. Garanta espaço em disco suficiente para os arquivos temporários
  2. Preste atenção aos limites de uso da API de cada provedor de serviço
  3. Recomenda-se usar Python 3.11 ou versão superior
  4. Os arquivos temporários são limpos automaticamente
  5. Usar o uv proporciona maior velocidade de instalação de dependências e melhor gerenciamento delas
  6. O download do YouTube pode exigir autenticação; você pode copiar o cookie para o arquivo cookies.txt na raiz do projeto gere rapidamente com um plugin ou use outros métodos de autenticação como cookies-from-browser, yt-dlp

Solicitação de Chave STT e Cotas Gratuitas

O conteúdo é apenas para referência

Licença

Licenciado sob a licença MIT.