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.

Beschreibung

Ein Open-Source-Tool zur automatisierten Videoerstellung für kurze Videoinhalte. Short Video Maker kombiniert Text-to-Speech, automatische Untertitel, Hintergrundvideos und Musik, um aus einfachen Texteingaben ansprechende Kurzvideos zu erstellen.

Dieses Projekt soll eine kostenlose Alternative zur GPU-intensiven Videogenerierung (und eine kostenlose Alternative zu teuren API-Aufrufen von Drittanbietern) bieten. Es generiert kein Video von Grund auf neu basierend auf einem Bild oder einer Bildaufforderung.

Das Repository wurde vom YouTube-Kanal „AI Agents AZ“ als Open Source bereitgestellt. Wir empfehlen Ihnen, den Kanal für weitere KI-bezogene Inhalte und Tutorials zu besuchen.

Der Server stellt einen MCP- und einen REST-Server bereit.

Während der MCP-Server mit einem KI-Agenten (wie n8n) verwendet werden kann, bieten die REST-Endpunkte mehr Flexibilität bei der Videogenerierung.

In diesem Repository finden Sie Beispiele für n8n-Workflows, die mit dem REST/MCP-Server erstellt wurden.

Inhaltsverzeichnis

Erste Schritte

Verwendung

Info

Tutorial mit n8n

Beispiele

Merkmale

  • Generieren Sie komplette Kurzvideos aus Textaufforderungen
  • Text-zu-Sprache-Konvertierung
  • Automatische Untertitelgenerierung und -gestaltung
  • Hintergrundvideosuche und -auswahl über Pexels
  • Hintergrundmusik mit Genre-/Stimmungsauswahl
  • Dient sowohl als REST-API als auch als Model Context Protocol (MCP)-Server

Wie es funktioniert

Shorts Creator nimmt einfache Texteingaben und Suchbegriffe entgegen und führt dann Folgendes aus:

  1. Wandelt Text mit Kokoro TTS in Sprache um
  2. Generiert präzise Untertitel über Whisper
  3. Findet relevante Hintergrundvideos von Pexels
  4. Komponiert alle Elemente mit Remotion
  5. Rendert ein professionell aussehendes Kurzvideo mit perfekt abgestimmten Untertiteln

Einschränkungen

  • Das Projekt kann nur Videos mit englischem Voiceover erstellen (kokoro-js unterstützt derzeit keine anderen Sprachen).
  • Die Hintergrundvideos stammen von Pexels

Allgemeine Anforderungen

  • Internet
  • kostenloser Pexels-API-Schlüssel
  • ≥ 3 GB freier RAM, meine Empfehlung ist 4 GB RAM
  • ≥ 2 vCPU
  • ≥ 5 GB Speicherplatz

NPM

Docker wird empfohlen, Sie können das Projekt aber auch mit npm oder npx ausführen. Zusätzlich zu den allgemeinen Anforderungen sind die folgenden Voraussetzungen für den Serverbetrieb erforderlich.

Unterstützte Plattformen

  • Ubuntu ≥ 22.04 (libc 2.5 für Whisper.cpp)
    • Erforderliche Pakete: 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
  • Mac OS
    • ffmpeg ( brew install ffmpeg )
    • node.js (getestet auf 22+)

Windows wird derzeit NICHT unterstützt (die Installation von whisper.cpp schlägt gelegentlich fehl).

Konzepte

Szene

Jedes Video besteht aus mehreren Szenen. Diese Szenen bestehen aus

  1. Text: Erzählung, der Text, den das TTS vorliest und aus dem es Untertitel erstellt.
  2. Suchbegriffe: Die Schlüsselwörter, die der Server verwenden soll, um Videos von der Pexels-API zu finden. Wenn keine gefunden werden, werden Jokerbegriffe verwendet ( nature , globe , space , ocean ).

Erste Schritte

Docker (empfohlen)

Es gibt drei Docker-Images für drei verschiedene Anwendungsfälle. Normalerweise möchten Sie das tiny Image starten.

Winzig

  • Verwendet das Modell tiny.en whisper.cpp
  • Verwendet das quantisierte q4 -Kokoro-Modell
  • CONCURRENCY=1 um OOM-Fehler zu überwinden, die von Remotion mit begrenzten Ressourcen herrühren
  • VIDEO_CACHE_SIZE_IN_BYTES=104857600 (100 MB), um OOM-Fehler zu überwinden, die von Remotion mit begrenzten Ressourcen herrühren
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

  • Verwendet das base.en whisper.cpp-Modell
  • Verwendet das fp32 -Kokoro-Modell
  • CONCURRENCY=1 um OOM-Fehler zu überwinden, die von Remotion mit begrenzten Ressourcen herrühren
  • VIDEO_CACHE_SIZE_IN_BYTES=104857600 (100 MB), um OOM-Fehler zu überwinden, die von Remotion mit begrenzten Ressourcen herrühren
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

Wenn Sie eine Nvidia-GPU besitzen und ein größeres Whisper-Modell mit GPU-Beschleunigung verwenden möchten, können Sie das für CUDA optimierte Docker-Image verwenden.

  • Verwendet das medium.en whisper.cpp-Modell (mit GPU-Beschleunigung)
  • Verwendet das fp32 -Kokoro-Modell
  • CONCURRENCY=1 um OOM-Fehler zu überwinden, die von Remotion mit begrenzten Ressourcen herrühren
  • VIDEO_CACHE_SIZE_IN_BYTES=104857600 (100 MB), um OOM-Fehler zu überwinden, die von Remotion mit begrenzten Ressourcen herrühren
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-Compilierung

Sie verwenden Docker Compose möglicherweise zum Ausführen von n8n oder anderen Diensten und möchten diese kombinieren. Stellen Sie sicher, dass Sie das gemeinsame Netzwerk zur Dienstkonfiguration hinzufügen.

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

Wenn Sie das selbstgehostete KI-Starterkit verwenden, möchten Sie networks: ['demo'] zum ** short-video-maker Dienst hinzufügen, damit Sie ihn mit http://short-video-maker:3123 in n8n erreichen können.

Web-Benutzeroberfläche

@mushitori hat eine Web-Benutzeroberfläche erstellt, um die Videos aus Ihrem Browser zu generieren.

Sie können es unter http://localhost:3123 laden.

Umgebungsvariablen

🟢 Konfiguration

SchlüsselBeschreibungStandard
PEXELS_API_KEYIhr (kostenloser) Pexels API-Schlüssel
LOG_LEVELPino-Log-EbeneInfo
WHISPER_VERBOSEob die Ausgabe von whisper.cpp an stdout weitergeleitet werden sollFALSCH
HAFENder Port, auf dem der Server lauscht3123

⚙️ Systemkonfiguration

SchlüsselBeschreibungStandard
KOKORO_MODEL_PRECISIONDie Größe des zu verwendenden Kokoro-Modells. Gültige Optionen sind fp32 , fp16 , q8 , q4 und q4f16kommt drauf an, siehe die Beschreibungen der Docker-Images oben ^^
GLEICHZEITIGKEITParallelität gibt an, wie viele Browser-Tabs während eines Renderings parallel geöffnet sind. Jeder Chrome-Tab rendert Webinhalte und erstellt anschließend Screenshots davon. Die Anpassung dieses Werts hilft bei der Ausführung des Projekts mit begrenzten Ressourcen.kommt drauf an, siehe die Beschreibungen der Docker-Images oben ^^
VIDEO_CACHE_SIZE_IN_BYTESCache für Frames in Remotion. Das Anpassen dieses Werts hilft beim Ausführen des Projekts mit begrenzten Ressourcen.kommt drauf an, siehe die Beschreibungen der Docker-Images oben ^^

⚠️ Gefahrenzone

SchlüsselBeschreibungStandard
WHISPER_MODELWelches whisper.cpp-Modell verwendet werden soll. Gültige Optionen sind tiny , tiny.en , base , base.en , small , small.en , medium , medium.en , large-v1 , large-v2 , large-v3 , large-v3-turboHängt davon ab, siehe die Beschreibungen der Docker-Images oben. Für npm ist die Standardoption medium.en
DATA_DIR_PATHdas Datenverzeichnis des Projekts~/.ai-agents-az-video-generator mit npm, /app/data in den Docker-Images
DOCKERob das Projekt in einem Docker-Container ausgeführt wirdtrue für die Docker-Images, sonst false
ENTWICKLERerraten! :)false

Konfigurationsoptionen

SchlüsselBeschreibungStandard
PolsterungZurückDer Endbildschirm, der angibt, wie lange das Video nach dem Ende des Kommentars weitergespielt werden soll (in Millisekunden).0
MusikDie Stimmung der Hintergrundmusik. Rufen Sie die verfügbaren Optionen vom Endpunkt GET /api/music-tags ab.zufällig
BeschriftungspositionDie Position, an der die Untertitel angezeigt werden sollen. Mögliche Optionen: top , center , bottom . Standardwertbottom
BeschriftungHintergrundfarbeDie Hintergrundfarbe des aktiven Untertitelelements.blue
StimmeDie Kokoro-Stimme.af_heart
OrientierungDie Videoausrichtung. Mögliche Optionen sind portrait und landscapeportrait

Verwendung

MCP-Server

Server-URLs

/mcp/sse

/mcp/messages

Verfügbare Werkzeuge

  • create-short-video Erstellt ein kurzes Video. Das LLM ermittelt die passende Konfiguration. Wenn Sie eine bestimmte Konfiguration verwenden möchten, müssen Sie diese in der Eingabeaufforderung angeben.
  • get-video-status Ziemlich nutzlos. Es ist zum Überprüfen des Status des Videos gedacht, aber da die KI-Agenten mit dem Zeitkonzept nicht wirklich gut umgehen können, werden Sie dafür wahrscheinlich sowieso die REST-API verwenden.

REST-API

GET /health

Healthcheck-Endpunkt

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" }

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

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

GET /api/short-video/{id}

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

Antwort: die Binärdaten des Videos.

GET /api/short-videos

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

LÖSCHEN /api/short-video/{id}

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

GET /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" ]

GET /api/music-tags

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

Fehlerbehebung

Docker

Der Server benötigt mindestens 3 GB freien Speicher. Stellen Sie sicher, dass Docker genügend RAM zugewiesen wird.

Wenn Sie den Server unter Windows und über WSL2 ausführen, müssen Sie die Ressourcenlimits über das WSL-Dienstprogramm 2 festlegen. Andernfalls legen Sie sie über Docker Desktop fest. (Ubuntu schränkt die Ressourcen nicht ein, sofern dies nicht mit dem Befehl „Ausführen“ angegeben wird.)

NPM

Stellen Sie sicher, dass alle erforderlichen Pakete installiert sind.

n8n

Die Einrichtung des MCP- (oder REST-)Servers hängt davon ab, wie Sie n8n und den Server betreiben. Bitte folgen Sie den Beispielen aus der folgenden Matrix.

|n8n läuft lokal, mit n8n start|n8n läuft lokal mit Docker|n8n läuft in der Cloud| |---|---|---|---| |short-video-maker läuft lokal in Docker|http://localhost:3123|Es kommt darauf an. Technisch gesehen können Sie http://host.docker.internal:3123 verwenden, da es auf den Host verweist. Sie können es aber auch so konfigurieren, dass dasselbe Netzwerk verwendet wird und der Dienstname zur Kommunikation verwendet wird, z. B. http://short-video-maker:3123|funktioniert nicht - short-video-maker in der Cloud bereitstellen| |short-video-maker läuft mit npm/npx|http://localhost:3123|http://host.docker.internal:3123|funktioniert nicht - short-video-maker in der Cloud bereitstellen| |short-video-maker läuft in der Cloud|Sie sollten Ihre IP-Adresse http://{YOUR_IP}:3123 verwenden.|Sie sollten Ihre IP-Adresse http://{YOUR_IP}:3123 verwenden.|Sie sollten Ihre IP-Adresse http://{YOUR_IP}:3123 verwenden.|

Bereitstellung in der Cloud

Obwohl jeder VPS-Anbieter anders ist und es unmöglich ist, für alle eine Konfiguration bereitzustellen, finden Sie hier einige Tipps.

  • Verwenden Sie Ubuntu ≥ 22.04
  • Verfügt über ≥ 4 GB RAM, ≥ 2 vCPUs und ≥ 5 GB Speicher
  • Verwenden Sie pm2 , um den Server auszuführen/zu verwalten
  • Fügen Sie die Umgebungsvariablen in die .bashrc Datei (oder eine ähnliche Datei) ein.

Häufig gestellte Fragen

Kann ich andere Sprachen verwenden? (Französisch, Deutsch usw.)

Leider ist dies derzeit nicht möglich. Kokoro-js unterstützt nur Englisch.

Kann ich Bilder und Videos einfügen und können diese zusammengefügt werden?

NEIN

Soll ich das Projekt mit npm oder docker ausführen?

Zum Ausführen des Projekts wird Docker empfohlen.

Wie viel GPU wird für die Videogenerierung verwendet?

Ehrlich gesagt nicht viel – nur whisper.cpp kann beschleunigt werden.

Remotion ist CPU-lastig und Kokoro-js läuft auf der CPU.

Gibt es eine Benutzeroberfläche, mit der ich die Videos generieren kann?

Noch nicht)

Kann ich eine andere Quelle für die Videos als Pexels auswählen oder mein eigenes Video bereitstellen?

NEIN

Kann das Projekt Videos aus Bildern generieren?

NEIN

Abhängigkeiten für die Videogenerierung

AbhängigkeitVersionLizenzZweck
Entfernung^4.0.286Motion-LizenzVideokomposition und -rendering
Flüstern CPPVersion 1.5.5MITSprache-zu-Text für Untertitel
FFmpeg^2.1.3LGPL/GPLAudio-/Videobearbeitung
Kokoro.js^1.2.0MITText-to-Speech-Generierung
Pexels APIN / APexels-BedingungenHintergrundvideos

Wie kann ich beitragen?

PRs sind willkommen. Anweisungen zum Einrichten einer lokalen Entwicklungsumgebung finden Sie in der Datei CONTRIBUTING.md .

Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert.

Danksagung

  • ❤️ Remotion für die programmatische Videogenerierung
  • ❤️ Flüstern für Sprache-zu-Text
  • ❤️ Pexels für Videoinhalte
  • ❤️ FFmpeg für die Audio-/Videoverarbeitung
  • ❤️ Kokoro für 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