Communitygithub.com

iamaanahmad/captions-subtitles

Erstellen, bearbeiten, übersetzen und einbrennen von Untertiteln – Sprache mit Whisper transkribieren, SRT/VTT/ASS-Dateien schreiben, stylen und Wort-für-Wort-Highlight-Untertitel für Shorts, Reels und TikTok einbrennen. Verwenden Sie dies für jede Anforderung an Untertitel, Transkripte oder Barrierefreiheit.

Was ist captions-subtitles?

Dieses Skill ermöglicht die vollständige Pipeline zur Erstellung von Untertiteln und Bildunterschriften, von der Transkription über die Bearbeitung bis hin zum finalen Einbrennen in Videos. Es unterstützt gängige Untertitelformate wie SRT, VTT und ASS und bietet spezielle Funktionen für Kurzvideo-Plattformen. Die Transkription erfolgt mit OpenAI Whisper oder faster-whisper, wobei die Ergebnisse manuell korrigiert werden können, um Eigennamen und technische Begriffe exakt zu halten. Für Kurzvideos im Hochformat erstellt das Skill ASS-Dateien mit Wortgruppen-Highlighting, bei dem das aktive Wort farblich hervorgehoben wird. Das Skill deckt auch das Einbrennen von Untertiteln per FFmpeg ab, sowohl weich (als separate Spur) als auch hart (dauerhaft im Video). Es ist plattformunabhängig und arbeitet mit jedem Tool, das die genannten Befehle und Formate unterstützt, wie Claude Code, Cursor oder Codex. Die bereitgestellten Codebeispiele sind direkt ausführbar und zeigen die typischen Schritte: Audiotranskription, Textkorrektur, Formatierung und Integration ins Video.

Funktioniert mit~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/iamaanahmad/agents-video-editing-skills/tree/HEAD/skills/captions-subtitles

In Ihrer bevorzugten KI fragen

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

Dokumentation

Untertitel und Bildunterschriften

Die meisten sozialen Videos werden stumm angeschaut. Untertitel sind Teil des Schnitts, kein Extra.

1. Transkribieren

# openai-whisper (pip install openai-whisper)
whisper audio.mp3 --model small --language en --output_format srt --output_dir captions/

# faster-whisper (pip install faster-whisper): schneller, weniger Speicher, Wort-Zeitstempel
python - <<'PY'
from faster_whisper import WhisperModel
model = WhisperModel("small", compute_type="int8")
segments, info = model.transcribe("audio.mp3", word_timestamps=True, vad_filter=True)
for s in segments:
    for w in s.words:
        print(f"{w.start:.2f}\t{w.end:.2f}\t{w.word}")
PY

Zuerst sauberes Audio extrahieren, um bessere Ergebnisse zu erzielen:

ffmpeg -i video.mp4 -vn -ac 1 -ar 16000 audio.wav

Die Modellgröße ist ein Kompromiss zwischen Genauigkeit und Geschwindigkeit: base < small < medium < large. Verwenden Sie small oder medium für Englisch, large für schwere Akzente oder andere Sprachen.

Falls das Skript bereits existiert (Sie haben die Sprachausgabe daraus generiert), vertrauen Sie nicht der Wortwahl des Transkripts. Verwenden Sie den Skripttext und nutzen Sie Whisper nur für das Timing (erzwungene Ausrichtung). So bleiben Namen und Zahlen exakt.

2. Text korrigieren

Korrekturlesen von Eigennamen, Produktnamen, Zahlen. Whisper hört diese oft falsch. Fragen Sie den Benutzer nach einem Glossar, wenn das Thema technisch ist.

3. Untertiteldateien schreiben

SRT:

1
00:00:00,000 --> 00:00:02,400
Die meisten Builds scheitern am Freitag.

2
00:00:02,400 --> 00:00:05,100
Hier ist der Grund.

Lesbarkeitsregeln:

  • Maximal 2 Zeilen, etwa 42 Zeichen pro Zeile (bei vertikalen Videos etwa 20).
  • Lesegeschwindigkeit unter 17 Zeichen pro Sekunde; Mindestlänge einer Einblendung 1 Sekunde.
  • Satzweise umbrechen, nicht mitten im Satz. Niemals einen Namen über Einblendungen hinweg aufteilen.
  • Einblendungen dürfen sich nicht überlappen. Lassen Sie eine Lücke von 2 Frames oder keine.

4. Einbrennen

# Weiches Styling mit force_style (SRT)
ffmpeg -i in.mp4 -vf "subtitles=captions.srt:force_style='FontName=Arial,FontSize=22,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=2,Alignment=2,MarginV=60'" -c:a copy out/captioned.mp4

# ASS bietet volle Kontrolle (Karaoke-Wort-Highlighting, Positionen, Animationen)
ffmpeg -i in.mp4 -vf "ass=captions.ass" -c:a copy out/captioned.mp4

Windows-Pfad-Falle: In Filtern den Laufwerksbuchstaben mit einem Backslash escapen und forward Slashes verwenden (subtitles='C\:/work/captions.srt'), oder FFmpeg aus dem Ordner ausführen, der die Datei enthält, und einen relativen Pfad verwenden.

5. Wort-Highlight-Stil für Kurzformate

Eine ASS-Datei mit je einem Ereignis pro Wortgruppe (2 bis 4 Wörter) erstellen, und das \k-Karaoke-Tag oder eine wortweise Farbüberschreibung verwenden, sodass das aktive Wort die Farbe wechselt. Typisches Aussehen: fette serifenlose Schrift, weiße Schrift, schwarze Kontur von 3 bis 4 Pixel, aktives Wort in einem Akzent der Marke, platziert im unteren mittleren Drittel, nicht ganz unten (die Plattform-UI deckt es ab).

Minimaler ASS-Header als Startpunkt:

[Script Info]
ScriptType: v4.00+
PlayResX: 1080
PlayResY: 1920

[V4+ Styles]
Format: Name,Fontname,Fontsize,PrimaryColour,SecondaryColour,OutlineColour,BackColour,Bold,Italic,Underline,StrikeOut,ScaleX,ScaleY,Spacing,Angle,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,Encoding
Style: Default,Arial,72,&H00FFFFFF,&H0000D7FF,&H00000000,&H64000000,-1,0,0,0,100,100,0,0,1,4,0,2,60,60,520,1

[Events]
Format: Layer,Start,End,Style,Name,MarginL,MarginR,MarginV,Effect,Text
Dialogue: 0,0:00:00.00,0:00:01.20,Default,,0,0,0,,{\k30}Most {\k40}builds {\k30}fail

Farben in ASS sind &HAABBGGRR (Reihenfolge Blau-Grün-Rot, Alpha zuerst).

6. Ausliefern

  • Eingebrannte Version für soziale Plattformen.
  • Eine separate .srt- oder .vtt-Datei für YouTube, LinkedIn und Webplayer (Zuschauer können ein- und ausschalten und übersetzen).
  • Weiche Untertitelspur in MP4: -i captions.srt -c copy -c:s mov_text.

Übersetzen

Übersetzen Sie den Text der Einblendungen, nicht das Timing. Beachten Sie die Zeilenbegrenzung pro Sprache (Deutsch und Finnisch werden länger, also neu umbrechen). Lassen Sie die Übersetzung von einem Muttersprachler prüfen, wenn das Video öffentlich ist.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Verwandte Skills