Short Video Maker MCP

by gyoridavid

Integrations

  • Provides community support and discussions through a Discord server for users seeking help with the Short Video Maker tool.

  • Offers containerized deployment options for running the Short Video Maker, including specialized images for CPU and NVIDIA GPU acceleration.

  • Utilizes FFmpeg for audio and video manipulation during the video creation process, enabling professional audio/video processing capabilities.

Descripción

Una herramienta de código abierto para la creación automatizada de videos cortos. Short Video Maker combina conversión de texto a voz, subtítulos automáticos, videos de fondo y música para crear atractivos videos cortos con texto simple.

Este proyecto busca ofrecer una alternativa gratuita a la generación de video, que consume mucha energía de la GPU (y a las costosas llamadas a API de terceros). No genera un video desde cero a partir de una imagen ni de un mensaje de imagen.

El repositorio fue creado en código abierto por el canal de YouTube AI Agents AZ . Te invitamos a visitar el canal para ver más contenido y tutoriales relacionados con la IA.

El servidor expone un MCP y un servidor REST.

Si bien el servidor MCP se puede utilizar con un agente de IA (como n8n), los puntos finales REST brindan más flexibilidad para la generación de video.

Puede encontrar ejemplos de flujos de trabajo n8n creados con el servidor REST/MCP en este repositorio .

Tabla de contenidos

Empezando

Uso

Información

Tutorial con n8n

Ejemplos

Características

  • Generar vídeos cortos completos a partir de indicaciones de texto
  • Conversión de texto a voz
  • Generación y estilo automáticos de subtítulos
  • Búsqueda y selección de vídeos de fondo a través de Pexels
  • Música de fondo con selección de género/estado de ánimo
  • Actuar como API REST y servidor de Protocolo de contexto de modelo (MCP)

Cómo funciona

Shorts Creator toma entradas de texto simples y términos de búsqueda y luego:

  1. Convierte texto a voz usando Kokoro TTS
  2. Genera subtítulos precisos a través de Whisper
  3. Encuentra vídeos de fondo relevantes en Pexels.
  4. Compone todos los elementos con Remotion
  5. Genera un video corto de aspecto profesional con subtítulos perfectamente sincronizados.

Limitaciones

  • El proyecto solo es capaz de generar vídeos con voz en off en inglés (kokoro-js no admite otros idiomas en este momento)
  • Los vídeos de fondo provienen de Pexels.

Requisitos generales

  • Internet
  • clave API de Pexels gratuita
  • ≥ 3 GB de RAM libre, mi recomendación es 4 GB de RAM
  • ≥ 2 vCPU
  • ≥ 5 GB de espacio en disco

NGP

Aunque Docker es el método recomendado para ejecutar el proyecto, también puedes hacerlo con npm o npx. Además de los requisitos generales, se requiere lo siguiente para ejecutar el servidor.

Plataformas compatibles

  • Ubuntu ≥ 22.04 (libc 2.5 para Whisper.cpp)
    • Paquetes necesarios: git wget cmake ffmpeg curl make libsdl2-dev libnss3 libdbus-1-3 libatk1.0-0 libgbm-dev libasound2 libxrandr2 libxkbcommon-dev libxfixes3 libxcomposite1 libxdamage1 libatk-bridge2.0-0 libpango-1.0-0 libcairo2 libcups2
  • Sistema operativo Mac
    • ffmpeg ( brew install ffmpeg )
    • node.js (probado en 22+)

Windows NO es compatible en este momento (la instalación de whipper.cpp falla ocasionalmente).

Conceptos

Escena

Cada vídeo se compone de varias escenas. Estas escenas constan de

  1. Texto: Narración, el texto que el TTS leerá y a partir del cual creará subtítulos.
  2. Términos de búsqueda: Las palabras clave que el servidor debe usar para encontrar videos de la API de Pexels. Si no se encuentra ninguna, se usan términos comodín ( nature , globe , space , ocean ).

Empezando

Docker (recomendado)

Hay tres imágenes de Docker para tres casos de uso diferentes. En general, la mayoría de las veces conviene configurar la imagen tiny .

Diminuto

  • Utiliza el modelo tiny.en whisper.cpp
  • Utiliza el modelo kokoro cuantificado q4
  • CONCURRENCY=1 para superar errores OOM provenientes de Remotion con recursos limitados
  • VIDEO_CACHE_SIZE_IN_BYTES=104857600 (100mb) para superar errores OOM provenientes de Remotion con recursos limitados
docker run -it --rm --name short-video-maker -p 3123:3123 -e LOG_LEVEL=debug -e PEXELS_API_KEY= gyoridavid/short-video-maker:latest-tiny

Normal

  • Utiliza el modelo base.en whisper.cpp
  • Utiliza el modelo fp32 kokoro
  • CONCURRENCY=1 para superar errores OOM provenientes de Remotion con recursos limitados
  • VIDEO_CACHE_SIZE_IN_BYTES=104857600 (100mb) para superar errores OOM provenientes de Remotion con recursos limitados
docker run -it --rm --name short-video-maker -p 3123:3123 -e LOG_LEVEL=debug -e PEXELS_API_KEY= gyoridavid/short-video-maker:latest

Cuda

Si posee una GPU Nvidia y desea utilizar un modelo Whisper más grande con aceleración de GPU, puede usar la imagen Docker optimizada para CUDA.

  • Utiliza el modelo medium.en whisper.cpp (con aceleración de GPU)
  • Utiliza el modelo fp32 kokoro
  • CONCURRENCY=1 para superar errores OOM provenientes de Remotion con recursos limitados
  • VIDEO_CACHE_SIZE_IN_BYTES=104857600 (100mb) para superar errores OOM provenientes de Remotion con recursos limitados
docker run -it --rm --name short-video-maker -p 3123:3123 -e LOG_LEVEL=debug -e PEXELS_API_KEY= --gpus=all gyoridavid/short-video-maker:latest-cuda

Docker Compose

Podrías usar Docker Compose para ejecutar n8n u otros servicios y quieres combinarlos. Asegúrate de añadir la red compartida a la configuración del servicio.

version: "3" services: short-video-maker: image: gyoridavid/short-video-maker:latest-tiny environment: - LOG_LEVEL=debug - PEXELS_API_KEY= ports: - "3123:3123" volumes: - ./videos:/app/data/videos # expose the generated videos

Si está utilizando el kit de inicio de IA autohospedado, desea agregar networks: ['demo'] al servicio** short-video-maker para poder acceder a él con http://short-video-maker:3123 en n8n.

Interfaz web

@mushitori creó una interfaz web para generar los videos desde su navegador.

Puedes cargarlo en http://localhost:3123

Variables de entorno

🟢 Configuración

llavedescripciónpor defecto
CLAVE DE API DE PEXELSsu clave API de Pexels (gratuita)
NIVEL DE REGISTROnivel de registro de pinoinformación
SUSURRO_VERBOSOSi la salida de whisper.cpp debe enviarse a stdoutFALSO
PUERTOel puerto en el que escuchará el servidor3123

⚙️ Configuración del sistema

llavedescripciónpor defecto
PRECISIÓN DEL MODELO KOKOROEl tamaño del modelo Kokoro a utilizar. Las opciones válidas son fp32 , fp16 , q8 , q4 y q4f16Depende, mira las descripciones de las imágenes de Docker arriba ^^
CONCURRENCIALa concurrencia se refiere a cuántas pestañas del navegador se abren en paralelo durante un renderizado. Cada pestaña de Chrome renderiza el contenido web y luego lo captura. Ajustar este valor facilita la ejecución del proyecto con recursos limitados.Depende, mira las descripciones de las imágenes de Docker arriba ^^
TAMAÑO DE CACHÉ DE VIDEO EN BYTESCaché para Marcos en Remotion. Ajustar este valor facilita la ejecución del proyecto con recursos limitados.Depende, mira las descripciones de las imágenes de Docker arriba ^^

⚠️ Zona de peligro

llavedescripciónpor defecto
MODELO SUSURROQué modelo whisper.cpp usar. Las opciones válidas son tiny , tiny.en , base , base.en , small , small.en , medium , medium.en , large-v1 , large-v2 , large-v3 y large-v3-turboDepende. Consulta las descripciones de las imágenes de Docker más arriba. Para npm, la opción predeterminada es medium.en
RUTA DEL DIRECTORIO DE DATOSel directorio de datos del proyecto~/.ai-agents-az-video-generator con npm, /app/data en las imágenes de Docker
ESTIBADORsi el proyecto se está ejecutando en un contenedor Dockertrue para las imágenes de Docker, de lo contrario false
DESARROLLO¡adivinar! :)false

Opciones de configuración

llavedescripciónpor defecto
acolchado traseroLa pantalla final, durante cuánto tiempo debe seguir reproduciéndose el vídeo una vez finalizada la narración (en milisegundos).0
músicaEl ambiente de la música de fondo. Obtenga las opciones disponibles desde el punto final GET /api/music-tags .aleatorio
TítuloPosiciónPosición donde se deben mostrar los subtítulos. Opciones posibles: top , center , bottom . Valor predeterminado.bottom
TítuloColor de fondoEl color de fondo del elemento de título activo.blue
vozLa voz de Kokoro.af_heart
orientaciónOrientación del vídeo. Las opciones son portrait y landscapeportrait

Uso

Servidor MCP

URL del servidor

/mcp/sse

/mcp/messages

Herramientas disponibles

  • create-short-video Crea un video corto. El LLM determinará la configuración correcta. Si desea usar una configuración específica, debe especificarla en el mensaje.
  • get-video-status Algo inútil, está destinado a verificar el estado del video, pero como los agentes de IA no son muy buenos con el concepto de tiempo, probablemente terminarás usando la API REST para eso de todos modos.

API REST

OBTENER /health

Punto final de comprobación de estado

curl --location 'localhost:3123/health'
{ "status": "ok" }

POST /api/short-video

curl --location 'localhost:3123/api/short-video' \ --header 'Content-Type: application/json' \ --data '{ "scenes": [ { "text": "Hello world!", "searchTerms": ["river"] } ], "config": { "paddingBack": 1500, "music": "chill" } }'
{ "videoId": "cma9sjly700020jo25vwzfnv9" }

OBTENER /api/short-video/{id}/status

curl --location 'localhost:3123/api/short-video/cm9ekme790000hysi5h4odlt1/status'
{ "status": "ready" }

OBTENER /api/short-video/{id}

curl --location 'localhost:3123/api/short-video/cm9ekme790000hysi5h4odlt1'

Respuesta:los datos binarios del vídeo.

OBTENER /api/short-videos

curl --location 'localhost:3123/api/short-videos'
{ "videos": [ { "id": "cma9wcwfc0000brsi60ur4lib", "status": "processing" } ] }

ELIMINAR /api/short-video/{id}

curl --location --request DELETE 'localhost:3123/api/short-video/cma9wcwfc0000brsi60ur4lib'
{ "success": true }

OBTENER /api/voices

curl --location 'localhost:3123/api/voices'
[ "af_heart", "af_alloy", "af_aoede", "af_bella", "af_jessica", "af_kore", "af_nicole", "af_nova", "af_river", "af_sarah", "af_sky", "am_adam", "am_echo", "am_eric", "am_fenrir", "am_liam", "am_michael", "am_onyx", "am_puck", "am_santa", "bf_emma", "bf_isabella", "bm_george", "bm_lewis", "bf_alice", "bf_lily", "bm_daniel", "bm_fable" ]

OBTENER /api/music-tags

curl --location 'localhost:3123/api/music-tags'
[ "sad", "melancholic", "happy", "euphoric/high", "excited", "chill", "uneasy", "angry", "dark", "hopeful", "contemplative", "funny/quirky" ]

Solución de problemas

Estibador

El servidor necesita al menos 3 GB de memoria libre. Asegúrate de asignar suficiente RAM a Docker.

Si ejecuta el servidor desde Windows y mediante wsl2, debe configurar los límites de recursos desde la utilidad wsl 2 ; de lo contrario, configúrelo desde Docker Desktop. (Ubuntu no restringe los recursos a menos que se especifique con el comando de ejecución).

NGP

Asegúrese de que todos los paquetes necesarios estén instalados.

n8n

La configuración del servidor MCP (o REST) depende de cómo se ejecute n8n y del servidor. Siga los ejemplos de la matriz a continuación.

|n8n se está ejecutando localmente, usando n8n start|n8n se ejecuta localmente usando Docker|n8n se ejecuta en la nube| |---|---|---|---| |short-video-maker se ejecuta en Docker, localmente|http://localhost:3123|Depende. Técnicamente, puedes usar http://host.docker.internal:3123 ya que apunta al host, pero podrías configurarlo para usar la misma red y usar el nombre del servicio para comunicarse, como http://short-video-maker:3123|No funcionará: implemente short-video-maker en la nube| |short-video-maker se ejecuta con npm/npx|http://localhost:3123|http://host.docker.internal:3123|No funcionará: implemente short-video-maker en la nube| |short-video-maker se ejecuta en la nube|Debes usar tu dirección IP http://{YOUR_IP}:3123|Debes usar tu dirección IP http://{YOUR_IP}:3123|Debes usar tu dirección IP http://{YOUR_IP}:3123|

Implementación en la nube

Si bien cada proveedor de VPS es diferente y es imposible brindar configuración a todos ellos, aquí hay algunos consejos.

  • Utilice Ubuntu ≥ 22.04
  • Tener ≥ 4 GB de RAM, ≥ 2 vCPU y ≥ 5 GB de almacenamiento
  • Utilice pm2 para ejecutar/administrar el servidor
  • Coloque las variables de entorno en el archivo .bashrc (o similar)

Preguntas frecuentes

¿Puedo utilizar otros idiomas? (Francés, alemán, etc.)

Lamentablemente, no es posible en este momento. Kokoro-js solo admite inglés.

¿Puedo pasar imágenes y vídeos y unirlos?

No

¿Debo ejecutar el proyecto con npm o docker ?

Docker es la forma recomendada de ejecutar el proyecto.

¿Cuánta GPU se utiliza para la generación de vídeo?

Honestamente, no mucho: solo whisper.cpp se puede acelerar.

Remotion consume muchos recursos de la CPU y Kokoro-js se ejecuta en la CPU.

¿Existe una interfaz de usuario que pueda usar para generar los videos?

Aún no)

¿Puedo seleccionar una fuente diferente a Pexels para los videos o proporcionar mi propio video?

No

¿Puede el proyecto generar vídeos a partir de imágenes?

No

Dependencias para la generación de vídeo

DependenciaVersiónLicenciaObjetivo
Remoción^4.0.286Licencia de RemotaComposición y renderizado de vídeo
Susurro CPPversión 1.5.5Instituto Tecnológico de Massachusetts (MIT)Conversión de voz a texto para subtítulos
FFmpeg^2.1.3Licencia pública general (LGPL)/licencia pública general (GPL)Manipulación de audio y vídeo
Kokoro.js^1.2.0Instituto Tecnológico de Massachusetts (MIT)Generación de texto a voz
API de PexelsN / ATérminos de PexelsVídeos de fondo

¿Cómo colaborar?

Se aceptan solicitudes de colaboración. Consulte el archivo CONTRIBUTING.md para obtener instrucciones sobre cómo configurar un entorno de desarrollo local.

Licencia

Este proyecto está licenciado bajo la licencia MIT .

Expresiones de gratitud

  • ❤️ Remota para la generación programática de vídeos
  • ❤️ Susurro para voz a texto
  • ❤️ Pexels para contenido de video
  • ❤️ FFmpeg para procesamiento de audio/video
  • ❤️ Kokoro para TTS

Related MCP Servers

  • -
    security
    A
    license
    -
    quality
    A MCP server that creates graphic recordings by converting websites or text input into visual summaries using different prompt styles (standard, elementary, timeline).
    Last updated -
    TypeScript
    MIT License
  • A
    security
    A
    license
    A
    quality
    An MCP server providing video processing capabilities through FFmpeg, enabling dialog-based local video search, trimming, concatenation, and playback functionalities.
    Last updated -
    7
    9
    Python
    MIT License
    • Apple
  • A
    security
    A
    license
    A
    quality
    MCP server that exposes Google's Veo2 video generation capabilities, allowing clients to generate videos from text prompts or images.
    Last updated -
    7
    7
    TypeScript
    MIT License

View all related MCP servers

ID: pyvkl848iz