Communitygithub.com

Subtitle Focus|Untertitel-Migration und Hervorhebung

Korrekturlesen, Sperren, Hervorheben, Einbrennen, Einzelbild-Review und Auslieferung von SRT-Untertiteln lokal durchführen.

Was ist Subtitle Focus|Untertitel-Migration und Hervorhebung?

Subtitle Focus ist ein lokal ausführbarer Workflow für die professionelle Untertitelbearbeitung auf Basis von SRT-Dateien. Es durchläuft fünf klar definierte Phasen: Korrekturlesen und Sperren des Textes (Gate 1), semantische Hervorhebung von Schlüsselbegriffen (Gate 2), Anpassung des Stils anhand eines Referenzbildes (Gate 3), Vollbild-Rendering mit Einzelbild-Review (Gate 4) und schließlich die autoritative Auslieferung mit einem Manifest (Gate 5). Der Agent entscheidet auf Basis des SRT-Kontexts, geladener Glossare, Projekthinweisen und Benutzerkorrekturen über die Bedeutungen der Begriffe. Das Tool wird über ein Python-Skript gesteuert und unterstützt gemischte CJK/Latin-Layouts. Es erfordert zwingend eine exportierte SRT-Datei und lehnt reine Videospuren oder Transkripte ohne Zeitstempel ab. Der Workflow ist deterministisch: Jede Änderung am SRT nach dem Sperren macht alle abgeleiteten Artefakte ungültig und erfordert eine Neugenerierung. Die Auslieferung erfolgt über ein Manifest mit Prüfsummen, Videometadaten und vollständiger Rückverfolgbarkeit aller Korrekturen und Hervorhebungen.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add manwithshit/subtitle-focus

In Ihrer bevorzugten KI fragen

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

Dokumentation

Was macht Subtitle Focus|Untertitel-Migration und Hervorhebung?

Verwandeln Sie einen überprüften, zeitgestempelten SRT in gelbe semantische Hervorhebungen, ein freigegebenes kurzes Sample und einen nachvollziehbaren Vollbild-Burn-in. Wenn der Benutzer einen Referenz-Screenshot bereitstellt, kalibrieren Sie zusätzlich den Untertitelstil für dieses Projekt. Der Agent entscheidet, was die Wörter bedeuten, basierend auf dem SRT-Kontext, geladenen Glossaren, Projekthinweisen und Benutzerkorrekturen; das gebündelte Skript besitzt deterministische Flags, exakten Ersetzungscode, Quellsperrung, gemischtes CJK/Latin-Layout, Rendering, Review-Einzelbilder und Prüfsummen. Quelle-SRT und Video sind schreibgeschützt.

Erfordert eine exportierte SRT. Eine reine Videoeingabe oder ein einfaches zeilenweises MD-Transkript hat in diesem Skill keinen akzeptierten Zeitplan. Stoppen Sie und fordern Sie den Benutzer auf, SRT zu exportieren; rufen Sie keine Videoverwendung, Voiceover, lokales Whisper, ASR oder OCR auf.

Arbeiten Sie in fünf Phasen. Stoppen Sie an jeder Bestätigungsphase.

SRT Korrekturlesen & Sperren → Hervorhebungsbestätigung → Sample-Bestätigung → Vollbild-Einzelbilder → Auslieferungsregistrierung

Phase 1 — SRT Korrekturlesen & Sperren

  1. Führen Sie doctor vor der ersten Verwendung auf einem Rechner aus.
  2. Fordern Sie eine zeitgestempelte SRT an. Lehnen Sie reine MD/Transkript-Eingabe und Transkriptionsanfragen nur per Video ab.
  3. Fragen Sie bei der Projektaufnahme nach zwei expliziten Entscheidungen: ein persönliches Glossar verwenden oder explizit überspringen; ein Projektglossar verwenden oder explizit überspringen. Fragen Sie nicht während der Installation und beginnen Sie nicht mit dem formellen Korrekturlesen, bis beide Entscheidungen durch die proofread-Flags aufgezeichnet wurden.
  4. Führen Sie proofread aus. Das Basisglossar wird automatisch geladen. Lesen Sie text-lock-schema.md für die expliziten Entscheidungen, die Schichtung, das Datenschutzverhalten und das Schema. Die Überprüfungsrichtlinie für öffentliche Quellen ist in glossary-sources.md dokumentiert.
  5. Überprüfen Sie jedes Cue mithilfe von SRT-Nachbarn, geladener Glossar-Herkunft, Projektvokabular, Produktnamen, Projektdateien und Benutzerkorrekturen. Wenden Sie Rechtschreib-, Großschreibungs-, Zahlen-, Einheiten-, Pronomen- oder Abstandsregeln nur an, wenn eine tatsächliche Benutzer-/Projektregel oder ein aufgeführter Glossareintrag vorhanden ist. Erfinden Sie keine allgemeine Normalisierungsrichtlinie.
  6. Erstellen Sie einen Entwurf von corrections.json. Glossar-Übereinstimmungen sind Vorschläge, niemals automatische Bearbeitungen. Schreiben Sie niemals stillschweigend um.
  7. Führen Sie correct aus; zeigen Sie dem Benutzer die Vorher/Nachher-Tabelle auf Cue-Ebene an. Die Ausgabe muss unerwähnte Zeilenumbrüche und wiederholte Leerzeichen im SRT-Text beibehalten.
  8. Nach expliziter Textfreigabe führen Sie lock --confirmed aus.

STOPP. Planen Sie keine Hervorhebungen aus einem nicht gesperrten SRT. Jede Byte-Änderung am SRT macht dessen Sperre, Untertitelplan, Sample und Vollbild-Rendering ungültig. Generieren Sie sie neu.

Phase 2 — Hervorzuhebender Text

  1. Führen Sie plan --lock ... mit --max-chars 16 aus, es sei denn, der Benutzer wünscht etwas anderes.
  2. Erstellen Sie einen Entwurf von highlight.json gemäß highlight-schema.md.
  3. Führen Sie apply und review aus. Passen Sie die Entscheidungen an, bis der Kadenzbericht bestanden wird, dann führen Sie validate aus.
  4. Senden Sie dem Benutzer das vollständige Untertitel-Manuskript in chronologischer Reihenfolge, wobei jede vorgeschlagene Hervorhebung direkt im Satz mit Markdown-Fettschrift markiert ist. Senden Sie nicht zuerst eine separate Schlüsselwortliste oder Hervorhebungstabelle. Bitten Sie den Benutzer, die fetten Stellen zu bestätigen oder die Sätze zu nennen, die eine Neuzuweisung benötigen.

Auswahl: nur bedeutungstragende vollständige Wörter oder Phrasen. Behandeln Sie jedes gerenderte Untertitel-Segment als einen Satz. Jedes benachbarte Paar muss mindestens ein hervorgehobenes Segment enthalten, sodass eine Sequenz von nicht hervorgehobenen Sätzen höchstens einen Satz lang sein kann. Ein Cue, dessen vollständiger Text von passenden chinesischen oder ASCII-Klammern umschlossen ist, ist ein Offscreen/PiP-Abseits: halten Sie ihn schlicht und behandeln Sie ihn als Kadenzgrenze. Inline-Klammern innerhalb eines normalen Satzes schaffen diese Ausnahme nicht. Eine explizite Benutzeranfrage, ein bestimmtes Cue oder Segment schlicht zu halten, hat Vorrang vor der Kadenz, insbesondere für PiP/Offscreen-Inhalte: erfassen Sie es als plain_overrides-Eintrag mit der Ziel-ID und dem vom Benutzer bestätigten Grund, halten Sie es schlicht und behandeln Sie es auch ohne Klammern als Kadenzgrenze. Erfinden Sie diese Ausnahme nicht nur, weil Inhalte nebensächlich erscheinen, und fügen Sie keine naheliegende Füll-Hervorhebung zum Ausgleich hinzu. Das Hervorheben jedes Satzes ist erlaubt, wenn es die Kontinuität verbessert. Ein kurzer, semantisch atomarer Satz kann vollständig hervorgehoben werden; ein längerer Satz sollte normalerweise eine primäre bedeutungstragende Phrase behalten oder nur zwei bei einer echten Parallelität oder Kontrast. Teilen Sie kein Wort, keinen Produktnamen und keine Phrase nur auf, um einen Prozentsatz zu reduzieren. Heben Sie keine Füllwörter, Übergänge oder informationsarme Wörter hervor, nur um die Kadenz zu erfüllen. Die Abdeckung blockiert niemals einen Plan. Die Überprüfung fügt eine nicht blockierende Dichtewarnung hinzu, wenn ein längeres Segment überwiegend hervorgehoben ist oder zu viele Hervorhebungsbereiche enthält, und der Benutzer entscheidet anhand des vollständigen fetten Manuskripts. Wenn die Kadenz nicht mit einer sinnvollen Hervorhebung oder einer expliziten Benutzerausnahme erfüllt werden kann, melden Sie die widersprüchlichen Segment-IDs zur Überprüfung durch den Benutzer. Überschreiben Sie niemals das gesperrte SRT während der Hervorhebung.

STOPP. Rendern Sie nicht, bis der Benutzer das vollständige fette Manuskript bestätigt hat.

Phase 3 — Sample und Referenzbild-Stil

  1. Kopieren Sie default-style.json oder leiten Sie eine Version mit style ab.
  2. Behalten Sie den Standard center_y_ratio von 0.82 bei, wenn es kein Referenzdemo gibt.
  3. Wenn der Benutzer einen Referenz-Screenshot bereitstellt, überprüfen Sie ihn und führen Sie style --reference-image ... mit expliziten Überschreibungen wie --center-y-ratio, --safe-width-ratio oder --font-size-max aus. Die Ausgabe zeichnet die SHA und Abmessungen des Referenzbildes auf. Siehe style-calibration.md.
  4. Rendern Sie einen 10–15 Sekunden langen Clip, der bei der ersten Hervorhebung beginnt.
  5. Führen Sie preview --video ... für CJK-, Latein- und gemischte Hervorhebungen aus, sodass Standbilder die tatsächlichen Abmessungen des Zielvideos verwenden.
  6. Überprüfen Sie Baseline, Überlappung, Beschneidung, Sicherheitsbereich für Telefonrahmen, Vermeidung von Avataren und Ausrichtung des Referenzdemos.
  7. Führen Sie validate --video ... --style ... aus, um jeden Untertitel mit den tatsächlichen Videoabmessungen und der ausgewählten Schriftart zu messen. Der Renderer kann einen Untertitel auf font_size_min verkleinern; ein Untertitel, der immer noch die sichere Pixelbreite überschreitet, schlägt fehl.

STOPP. Vollbild-Rendering ist verboten, bis der Benutzer das Sample akzeptiert. Stiländerungen erstellen style-vN.json; Textänderungen kehren zu Phase 1 zurück.

Phase 4 — Vollbild und Einzelbilder

  1. Führen Sie render ohne --start oder --duration aus.
  2. Führen Sie validate --video ... gegen das gesperrte SRT und die endgültige Videodauer aus.
  3. Führen Sie frames gegen das endgültige gerenderte Video mit --already-burned aus, wobei --corrections immer dann übergeben wird, wenn Korrekturen vorhanden sind. Es muss jedes korrigierte Cue, jedes hervorgehobene Segment sowie Einstiegs-/Mitten-/Ausstiegs-Einzelbilder enthalten.
  4. Überprüfen Sie contact-sheet.jpg sowie jedes Einzelbild in voller Auflösung. Korrigierte Cues, die in den Überprüfungs-Einzelbildern fehlen, sind ein Auslieferungsfehler.

Phase 5 — Einzige Auslieferung

Führen Sie deliver mit dem endgültigen Video, gesperrten SRT, hervorgehobenem Plan, Stil, Korrekturen und Überprüfungsverzeichnis aus. Der Befehl schreibt ein subtitle-focus-delivery-Manifest mit Pfaden, Prüfsummen, Videometadaten, geänderten Cue-IDs, überprüften Cue-IDs, Referenzdemo-Herkunft und Übergabedateien.

Verwenden Sie --handoff-dir, um das endgültige SRT zu kopieren und ein Transkript zu generieren. Fügen Sie --copy-video nur hinzu, wenn der Benutzer das Video kopiert haben möchte. Fügen Sie --publish-copy hinzu, wenn bereits ein fertiges Veröffentlichungsdokument vorhanden ist. Erfinden Sie niemals Veröffentlichungskopien.

Siehe delivery-schema.md.

Befehlsübersicht

SCRIPT=skill/scripts/subtitle_focus.py

python3 "$SCRIPT" doctor
python3 "$SCRIPT" glossary-init --scope personal
python3 "$SCRIPT" proofread --srt /abs/in.srt --no-personal-glossary --no-project-glossary --output /abs/text-review.md
python3 "$SCRIPT" correct --srt /abs/in.srt --corrections /abs/corrections.json --output /abs/locked-text.srt --review /abs/corrections-review.md
python3 "$SCRIPT" lock --srt /abs/locked-text.srt --output /abs/srt-lock.json --confirmed
python3 "$SCRIPT" plan --srt /abs/locked-text.srt --lock /abs/srt-lock.json --output /abs/caption-plan.json
python3 "$SCRIPT" apply --plan /abs/caption-plan.json --highlights /abs/highlight.json --output /abs/caption-plan.highlighted.json
python3 "$SCRIPT" review --plan /abs/caption-plan.highlighted.json --output /abs/highlight-review.md
python3 "$SCRIPT" style --base skill/assets/default-style.json --reference-image /abs/demo.png --center-y-ratio 0.73 --output /abs/style-v1.json
python3 "$SCRIPT" validate --plan /abs/caption-plan.highlighted.json --video /abs/input.mp4 --style /abs/style-v1.json
python3 "$SCRIPT" preview --video /abs/input.mp4 --plan /abs/caption-plan.highlighted.json --style /abs/style-v1.json --cue 2 --output /abs/cue-2.png
python3 "$SCRIPT" render --video /abs/input.mp4 --plan /abs/caption-plan.highlighted.json --style /abs/style-v1.json --output /abs/edit/final-subtitled.mp4
python3 "$SCRIPT" frames --video /abs/edit/final-subtitled.mp4 --already-burned --plan /abs/caption-plan.highlighted.json --style /abs/style-v1.json --corrections /abs/corrections.json --output-dir /abs/edit/review-frames
python3 "$SCRIPT" deliver --video /abs/edit/final-subtitled.mp4 --srt /abs/locked-text.srt --plan /abs/caption-plan.highlighted.json --style /abs/style-v1.json --corrections /abs/corrections.json --review-dir /abs/edit/review-frames --output /abs/edit/delivery.json

Führen Sie python3 scripts/subtitle_focus.py <command> --help für alle Flags aus.

Zeichnungsvertrag

Visuelle Zahlen und Typografieregeln finden Sie in visual-spec.md. Fügen Sie keine agentenseitigen Zeichnungs-Hacks hinzu. Behalten Sie eine gemeinsame Baseline bei, vergrößern Sie nur hervorgehobene Läufe, halten Sie gemischte Phrasen wie C 组 zusammen und zeichnen Sie Zeichenfolgen als ganze Läufe.

Nicht tun

AusredeRealität
„Das SRT hat sich nur um ein Wort geändert“Sein Hash hat sich geändert. Sperren Sie neu und generieren Sie alle abgeleiteten Artefakte neu.
„Hervorhebungen sind offensichtlich“Phase 2 ist eine Benutzerentscheidung. Warten Sie.
„Die standardmäßige 82 %-Höhe ist immer richtig“Behalten Sie 82 % nur ohne Referenzdemo bei; verwenden Sie andernfalls eine versionierte Stilüberschreibung.
„Ein paar zufällige Einzelbilder reichen“Jedes korrigierte Cue und jedes hervorgehobene Segment muss in den Überprüfungs-Einzelbildern erscheinen.
„Der endgültige Dateiname sagt uns, was er enthält“Nur das Auslieferungsmanifest ist maßgeblich.
„Das Video oder MD reicht aus, um die Zeitsteuerung wiederherzustellen“Dieser Skill erfordert exportiertes SRT und führt keine ASR/OCR aus.
„Eine Glossar-Übereinstimmung ist sicherlich korrekt“Es ist ein bequellter Vorschlag. Zeigen Sie ihn an und warten Sie auf Textfreigabe.
„Keine Glossardatei bedeutet, dass keine Entscheidung erforderlich ist“Phase 1 erfordert dennoch explizite persönliche und projektbezogene Überspringungsentscheidungen.
„Allgemeine Typografieregeln sind offensichtlich“Behalten Sie das SRT bei. Fügen Sie nur vom Benutzer angeforderte oder aufgeführte Regeln hinzu.
„Das Glätten von SRT-Zeilen ist harmlos“Der Rendering-Plan kann eine Anzeigezeile ableiten, aber das gesperrte SRT muss unerwähnte Leerzeichen beibehalten.
„Vier schlichte Sätze in Folge sind akzeptabel“Jedes benachbarte Paar benötigt mindestens ein hervorgehobenes Segment; die Validierung blockiert längere schlichte Sequenzen.
„Ein Klammernebensatz benötigt eine erzwungene Hervorhebung, um die Kadenz zu erfüllen“Ein vollständig in Klammern gesetztes Cue bleibt schlicht und trennt Kadenzläufe; Inline-Klammern bleiben Teil eines normalen Cues.
„Kadenz ist strenger als die explizite Schlicht-Text-Auswahl des Benutzers“Die bestätigte Wahl des Benutzers gewinnt. Erfassen Sie das Ziel-Cue oder -Segment in plain_overrides; leiten Sie niemals eine Ausnahme im Namen des Benutzers ab.
„Ein kurzer Satz kann nicht vollständig hervorgehoben werden“Er kann vollständig hervorgehoben werden, wenn der gesamte Satz einen sinnvollen Punkt darstellt; die Abdeckung bleibt informativ.
„Das Entfernen der 30 %-Grenze bedeutet, dass ein langer Satz komplett gelb werden kann“Lange, dichte Hervorhebung wird als Überprüfungswarnung angezeigt; behalten Sie standardmäßig eine primäre Phrase bei und lassen Sie den Benutzer anhand des vollständigen Manuskripts entscheiden.

Verwandte Skills