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.
- Teile den Text in eine
.txt-Datei auf, jede Zeile eine kurze Phrase (bei Komma/Punkt/„...“), keine Zeilen mit#, keine[icon]. 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>- Gib die Zeitmarken jeder Zeile aus: Führe den obigen Befehl mit
--print-timingerneut aus (ohne Rendering). Prüfe: Zeilen, die ungewöhnlich lang/kurz im Verhältnis zur Zeichenzahl sind → zusammenführen/teilen und erneut rendern. - 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 Filtersubtitles/libass):brew install ffmpeg-fulledge-tts:pipx install edge-tts(bei Netzwerkfehler automatischer Fallback auf Stimmesay -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ännlichvi-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-timingausgeben (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,thuminhweiblich nordvietnamesisch,lannhi,linhsanweiblich südvietnamesisch,myanweiblich zentralvietnamesisch,giahuymännlich zentralvietnamesisch). Benötigtexport FPT_API_KEY=...(Schlüssel auf console.fpt.ai, Free Tier 100.000 Zeichen/Monat). Keine Einzelzeichen-Zeitmarken, daher Karaoke nach Zeichenlänge;--ratewird 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/, Linkassets.mixkit.co/videos/<id>/<id>-1080.mp4), mehrere Clips kombinieren, vertikal zuschneiden,setpts=1.4*PTSfü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: Stimmevi-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. --musicwird 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--rateanpassen 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.