Communitygithub.com

LeAnhTuanIT/short-video

Erstelle vertikale Kurzvideos im 9:16-Format (TikTok/Reels/Shorts) zu jedem Thema mit vietnamesischer Sprachausgabe (oder anderen Sprachen) und fest eingebrannten Untertiteln, basierend auf einem selbst geschriebenen oder vom Benutzer bereitgestellten Skript.

Was ist short-video?

Diese Skill `LeAnhTuanIT/short-video` automatisiert die Produktion von vertikalen Kurzvideos im TikTok/Reels/Shorts-Format (9:16). Sie ist ideal, wenn ein Benutzer ein Video mit Sprachausgabe und Untertiteln erstellen möchte – entweder aus eigener Idee, aus einem vorhandenen Skript, oder auf Basis einer bereits aufgenommenen MP3-Sprachdatei (z.B. von EverAI). Der Workflow ist vollständig dokumentiert und besteht aus mehreren Schritten: Zuerst wird das Textskript erstellt (entweder durch Claude generiert oder vom Benutzer geliefert), dann wird mit dem Tool `make_video.py` die Sprachsynthese (über edge-tts oder FPT.AI) durchgeführt, Audiodateien werden geschnitten, ASS-Untertitel werden erstellt und mit ffmpeg in das Hintergrundvideo eingebrannt. Das Ergebnis ist eine MP4-Datei in 1080x1920. Die Skill unterstützt verschiedene Stile (`night` für nächtliche Reels, `ui` für Technik-Tutorials), Optionen für Sprache, Zeichentempo und Hintergrund (eigenes Video/ Bild oder farbiger Verlauf). Besonders nützlich ist die Möglichkeit, eine MP3-Datei mit fertiger Sprachaufnahme zu verwenden – dann werden die Untertitel auf Basis der tatsächlichen Sprechpausen synchronisiert. Der gesamte Prozess ist für macOS und Ubuntu/Debian (auch via WSL unter Windows) ausgelegt und wird durch ein Setup-Script eingerichtet.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/LeAnhTuanIT/short-video-skill/tree/HEAD

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Kurzvideos mit Sprachausgabe + Untertiteln

Pipeline: Skript .txt → make_video.py (edge-tts liest jeden Satz → Audio zusammenfügen → ASS-Untertitel mit echter Laufzeit → Hintergrund + Untertitel einbrennen via ffmpeg) → MP4 1080x1920.

Festgelegter Modus: Vorhandene Stimme → Video (Standard, wenn der Benutzer eine MP3 sendet)

Der Benutzer erstellt die Stimme auf EverAI (Web, Geschwindigkeit 0.85), sendet mp3 + Text. Keine API-Aufrufe, kein Klonen von Stimmen, kein Ausführen von Sprachmodellen (VieNeu) auf dem Rechner.

  1. Teile den Text in eine .txt-Datei auf, jede Zeile eine kurze Phrase (bei Komma/Punkt/„...“), keine Zeilen mit #, keine [icon].
  2. python3 make_video.py kichban.txt ~/Downloads/<name>.mp4 --audio voice.mp3 --style night --no-wave --bg assets/pho-dem.mp4 --target <Länge±5>
  3. Gib die Zeitmarken jeder Zeile aus: Führe den obigen Befehl mit --print-timing erneut aus (ohne Rendering). Prüfe: Zeilen, die ungewöhnlich lang/kurz im Verhältnis zur Zeichenzahl sind → zusammenführen/teilen und erneut rendern.
  4. Extrahiere 1–2 Bilder zur Überprüfung der Untertitel, gib den Pfad und die Dauer an. Kein Ton zu hören → liegt meist an AirPods-Ausgabe auf dem Mac. Anleitung für den Benutzer: HUONG-DAN.md.

Installation auf anderen Rechnern

Kopiere das gesamte Verzeichnis ~/.claude/skills/short-video/ auf den neuen Rechner (gleicher Pfad), dann führe bash ~/.claude/skills/short-video/setup.sh aus. Unterstützt macOS und Ubuntu/Debian; Windows nutzt WSL. Hintergrundvideo „Nachtstraße“ vorhanden: assets/pho-dem.mp4 (Mixkit Stock, kommerziell nutzbar).

Voraussetzungen (auf diesem Rechner installiert)

  • ffmpeg-full (benötigt Filter subtitles/libass): brew install ffmpeg-full
  • edge-tts: pipx install edge-tts (bei Netzwerkfehler automatischer Fallback auf Stimme say -v Linh)

Schritt 1 — Brief festlegen

Aus der Anfrage entnehmen; falls fehlend, Standardwerte verwenden, nur nachfragen, wenn das Thema völlig unklar ist:

  • Thema / Blickwinkel — falls kein spezifischer Blickwinkel vorhanden, selbst einen attraktiven, konkreten wählen.
  • Dauer — Standard 45–60s.
  • Stimme — Standard weiblich vi-VN-HoaiMyNeural; männlich vi-VN-NamMinhNeural. Andere Sprachen: edge-tts --list-voices | grep <Code> (z.B. en-US-AriaNeural).
  • Hintergrund / Musik — vom Benutzer bereitgestellte Bilder/Videos, falls nicht vorhanden standardmäßiger Farbverlaufshintergrund.

Schritt 2 — Skript schreiben

Speichere Datei .txt, erste Zeile ist der Titel, jede folgende Zeile ein zu lesender Satz:

# Kurzer Titel, der am oberen Bildschirmrand erscheint (≤ 6 Wörter)
Neugierig machender Hooksatz, ≤ 12 Wörter.
Inhaltssatz...
Abschlusssatz + Handlungsaufforderung.

Regeln:

  • Vietnamesische Wortlänge: ~2,3 Wörter/Sekunde (gemessen: 155 Wörter ≈ 65s). 45–60s → 110–140 Wörter; 30s → ~65 Wörter; 15s → ~30 Wörter.
  • Jede Zeile ein Satz, 8–20 Wörter. Die ersten 3 Sekunden sind der Hook (Frage / überraschende Tatsache). Mitte: 3–5 konkrete, einprägsame Punkte. Ende: Handlungsaufforderung (speichern, abonnieren, kommentieren).
  • Fakten müssen korrekt sein; bei Gesundheits-/Finanz-/Rechtsthemen: keine Diagnosen, keine spezifischen Expertenempfehlungen, bei Bedarf Verweis auf Fachleute.
  • Zahlen/Symbole beim Vorlesen schwer verständlich ausschreiben („vier - sieben - acht“ statt „4-7-8“, „Prozent“ statt „%“). Emojis, Zeichen {} \ vermeiden.
  • Dem Benutzer das Skript vor dem Rendern zur Prüfung vorlegen, es sei denn, er hat bereits Inhalte bereitgestellt oder gebeten, direkt zu rendern.

Schritt 3 — Rendern

python3 ~/.claude/skills/short-video/make_video.py kichban.txt out.mp4 \
  [--voice vi-VN-HoaiMyNeural] [--rate -5%] [--target 45-60] \
  [--bg hintergrund_bild_oder_video] [--music hintergrund_musik.mp3] [--gap 0.35] \
  [--pitch -8Hz] [--style default|night]
  • Vorhandene Stimme: --audio voice.mp3 überspringt TTS. Skript muss mit der gesprochenen Version übereinstimmen, jede Zeile eine kurze Phrase (getrennt bei Komma/Punkt); Zeitmarken an Atempausen ausrichten. Zeitmarken mit --print-timing ausgeben (normal ~12–16 Zeichen/Sekunde), ungewöhnlich lange/kurze Zeilen zusammenführen/teilen und erneut rendern.
  • FPT.AI: --engine fpt --voice leminh (männlich, nordvietnamesisch; weitere Optionen: banmai, thuminh weiblich nordvietnamesisch, lannhi, linhsan weiblich südvietnamesisch, myan weiblich zentralvietnamesisch, giahuy männlich zentralvietnamesisch). Benötigt export FPT_API_KEY=... (Schlüssel auf console.fpt.ai, Free Tier 100.000 Zeichen/Monat). Keine Einzelzeichen-Zeitmarken, daher Karaoke nach Zeichenlänge; --rate wird mit atempo angewendet. Schlüssel niemals in die Skill-Datei schreiben.
  • Jede Engine hat eine natürliche Sprechgeschwindigkeit (leicht abweichende Geschwindigkeit/Tonhöhe pro Satz, längere Pausen nach Fragen) sowie Wärmebehandlung, Kompression und leichten Hall. Skript nach gesprochener Sprache schreiben, „...“ und Punkte zwischen Sätzen für Atempausen nutzen.
  • Tiefe, reife männliche Nordstimme (edge): --voice vi-VN-NamMinhNeural --pitch=-8Hz --rate=-10% (NamMinh ist die einzige männliche vietnamesische Stimme bei edge).
  • --style night --no-wave + Skript ohne #-Zeilen, ohne [icon]-Tags → nur Hintergrund + Untertitel.
  • --style night (Stil „Nachtstraße“-Reel): Titel in Großbuchstaben mit Zeichenabstand in Tealfarbe + Unterstrich, Neon-Icons mit dünnen Linien, Untertitel in Großbuchstaben als Karaoke pro Zeichen (echte Zeitmarken von edge-tts), Wellenform als Balken. [icon] am Satzanfang setzen, um ab diesem Satz das Icon zu ändern: sun hourglass gift heart leaf book star eye. Hintergrund sollte ein echtes Nachtstraßen-Video sein: kostenlose Stock-Videos auf Mixkit (https://mixkit.co/free-stock-video/night-city-street/, Link assets.mixkit.co/videos/<id>/<id>-1080.mp4), mehrere Clips kombinieren, vertikal zuschneiden, setpts=1.4*PTS für Zeitlupe.
  • --style ui (Technik-Tutorial-Video): dunkler Hintergrund mit Raster, Serienleiste (Titel #) + Schrittboxen 1..n, simulierte App-Fenster, Terminal-Tastatureingaben, Untertitelrahmen mit orangefarbener Hervorhebung für *Schlüsselwörter*. Tags am Satzanfang: [step:Schrittname] (neuer Schritt), [card:Titel|Punkt1|Punkt2] (Fenster, bleibt bis zur nächsten Szene), [term:Befehl]. Tastenkombinationen im gesprochenen Text ausschreiben („Befehl, Umschalt, drei“), in der Karte dagegen „Befehl + Umschalt + 3“. Beispiel: Stimme vi-VN-NamMinhNeural --pitch=-4Hz --rate=+15% --gap 0.25.
  • Kein --bg → dunkelblau-violetter Farbverlauf, langsam animiert (geeignet für ruhige Themen; bei lebhaften Themen Bilder/Videos als Hintergrund anfordern). Bilder → langsamer Zoom-Effekt. Videos → automatische Wiederholung.
  • --music wird auf 12% Lautstärke reduziert, mit Ausblendung am Ende.
  • Skript gibt Dauer und Warnung aus, wenn --target überschritten wird → Sätze hinzufügen/entfernen oder --rate anpassen und erneut rendern.

Schritt 4 — Überprüfung

Ein Bild extrahieren, um zu prüfen, ob Untertitel Zeichenfehler haben oder über den Rand ragen: ffmpeg -v error -y -ss 5 -i out.mp4 -frames:v 1 frame.jpg und dann frame.jpg lesen. Den absoluten Pfad des Videos und die Dauer an den Benutzer melden.

Beispielskript: example-sleep.txt im Skill-Verzeichnis.

Verwandte Skills