Communitygithub.com

Subtitle Focus|Sous-titrage et mise en surbrillance

Assurez la relecture, le verrouillage, la mise en surbrillance, l’incrustation, la révision par images clés et la livraison de sous-titres SRT localement. Pipeline de sous-titrage vérifiable localement.

Qu'est-ce que Subtitle Focus|Sous-titrage et mise en surbrillance ?

Subtitle Focus est une compétence d’agent spécialisée dans le traitement professionnel de fichiers SRT. Elle guide l’utilisateur à travers cinq étapes verrouillées : relecture et verrouillage du texte, planification des surlignages sémantiques (jaune), échantillon vidéo de validation avec calibrage du style à partir d’une capture de référence, rendu complet de la vidéo avec extraction d’images clés de contrôle, et livraison finale avec manifeste. La compétence impose que toute modification du SRT verrouillé invalide les artefacts dérivés et nécessite une régénération complète. Elle est conçue pour fonctionner avec des scripts Python locaux et exige impérativement un SRT exporté avec timestamps. Elle ne supporte pas les transcriptions brutes, les fichiers MD, ni les appels ASR/OCR. L’agent gère le cadencement des surlignages (chaque paire de segments adjacents doit contenir au moins un surlignage) et respecte les exceptions explicites de l’utilisateur pour les apartés hors champ. Idéal pour les projets de sous-titrage multilingues (CJK/Latin) avec un contrôle qualité strict.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add manwithshit/subtitle-focus

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Subtitle Focus|Sous-titrage et mise en surbrillance ?

Transformez un fichier SRT relu et horodaté en segments sémantiques surlignés en jaune, un échantillon court approuvé, et une incrustation complète retraçable. Lorsque l'utilisateur fournit une capture d'écran de référence, calibrez également le style des sous-titres pour ce projet. L'agent détermine la signification des mots à partir du contexte du SRT, des glossaires chargés, des preuves du projet et des corrections de l'utilisateur ; le script inclus gère les indicateurs déterministes, les remplacements exacts, le verrouillage des sources, la disposition mixte CJK/Latin, le rendu, les images de révision et les empreintes. Le SRT source et la vidéo sont en lecture seule.

Nécessite un fichier SRT exporté. Une entrée vidéo seule ou une transcription MD simple sans ligne horodatée n'est pas acceptée dans le cadre de cette compétence. Arrêtez-vous et demandez à l'utilisateur d'exporter un SRT ; n'utilisez pas Video Use, 剪口播, Whisper local, ASR ou OCR.

Travail en cinq étapes. Arrêtez-vous à chaque étape de confirmation.

SRT 校对锁定 → 高亮确认 → 样片确认 → 全片抽帧 → 交付登记

Étape 1 — Relecture et verrouillage du SRT

  1. Exécutez doctor avant la première utilisation sur une machine.
  2. Exigez un SRT horodaté. Rejetez les entrées MD/transcriptions simples et les demandes de transcription vidéo.
  3. Demandez deux choix explicites lors de l'import du projet : utiliser un glossaire personnel ou l'ignorer explicitement ; utiliser un glossaire du projet ou l'ignorer explicitement. Ne demandez pas pendant l'installation, et ne commencez pas la relecture formelle tant que les deux choix ne sont pas enregistrés par les indicateurs proofread.
  4. Exécutez proofread. Le glossaire de base se charge automatiquement. Lisez text-lock-schema.md pour les choix explicites, la hiérarchie, le comportement de confidentialité et le schéma. La politique de révision des sources publiques est documentée dans glossary-sources.md.
  5. Inspectez chaque réplique en utilisant les voisins du SRT, la provenance du glossaire chargé, le vocabulaire du projet, les noms de produits, les fichiers du projet et les corrections de l'utilisateur. Appliquez les règles d'orthographe, de capitalisation, de nombres, d'unités, de pronoms ou d'espacement uniquement lorsqu'une règle explicite de l'utilisateur/du projet ou une entrée de glossaire énumérée existe. N'inventez pas de politique de normalisation générale.
  6. Rédigez corrections.json. Les correspondances du glossaire sont des suggestions, jamais des modifications automatiques. Ne réécrivez jamais silencieusement.
  7. Exécutez correct ; affichez le tableau avant/après par réplique à l'utilisateur. La sortie doit préserver les sauts de ligne non mentionnés et les espaces répétés dans le texte SRT.
  8. Après approbation explicite du texte, exécutez lock --confirmed.

STOP. Ne planifiez pas les surlignages à partir d'un SRT non verrouillé. Tout changement d'octet dans le SRT invalide son verrou, le plan de sous-titres, l'échantillon et le rendu complet. Régénérez-les.

Étape 2 — Surlignage du texte

  1. Exécutez plan --lock ... avec --max-chars 16 sauf si l'utilisateur demande autre chose.
  2. Rédigez highlight.json en utilisant highlight-schema.md.
  3. Exécutez apply et review. Ajustez les choix jusqu'à ce que le rapport de cadence passe, puis exécutez validate.
  4. Envoyez à l'utilisateur le manuscrit complet des sous-titres dans l'ordre chronologique, avec chaque surlignage proposé marqué directement dans la phrase en utilisant du gras Markdown. N'envoyez pas d'abord une liste de mots-clés séparée ou un tableau de surlignages. Demandez à l'utilisateur de confirmer les emplacements en gras ou de nommer les phrases nécessitant un reciblage.

Sélection : uniquement des mots ou des phrases complets porteurs de sens. Traitez chaque segment de sous-titre rendu comme une phrase. Chaque paire adjacente doit contenir au moins un segment surligné, de sorte qu'une série de phrases non surlignées ne peut pas dépasser une. Une réplique dont le texte complet est entouré de parenthèses chinoises ou ASCII correspondant est un aparté hors écran/PiP : gardez-la en clair et traitez-la comme une limite de cadence. Les parenthèses intégrées dans une phrase normale ne créent pas cette exemption. La demande explicite d'un utilisateur de garder une réplique ou un segment spécifique en clair prévaut sur la cadence, en particulier pour le contenu PiP/hors écran : enregistrez-la comme entrée plain_overrides avec l'identifiant cible et la raison confirmée par l'utilisateur, gardez-la en clair et traitez-la comme une limite de cadence même sans parenthèses. N'inventez pas cette exemption simplement parce que le contenu semble secondaire, et n'ajoutez pas un surlignage de remplissage à proximité pour compenser. Surligner chaque phrase est autorisé lorsque cela améliore la continuité. Une phrase courte et sémantiquement atomique peut être entièrement surlignée ; une phrase plus longue doit normalement conserver une phrase porteuse de sens principale, ou deux seulement pour une véritable opposition ou comparaison. Ne divisez pas un mot, un nom de produit ou une phrase simplement pour réduire un pourcentage. Ne surlignez pas les remplissages, les transitions ou les mots à faible information juste pour satisfaire la cadence. La couverture ne bloque jamais un plan. La révision ajoute un avertissement de densité non bloquant lorsqu'un segment plus long est majoritairement surligné ou contient trop de plages de surlignage, et l'utilisateur décide à partir du manuscrit complet en gras. Si la cadence ne peut pas être satisfaite avec un surlignage pertinent ou une exception explicite de l'utilisateur, signalez les identifiants de segments en conflit pour examen par l'utilisateur. Ne réécrivez jamais le SRT verrouillé pendant le surlignage.

STOP. Ne rendez pas tant que l'utilisateur n'a pas confirmé le manuscrit complet en gras.

Étape 3 — Échantillon et calibrage du style de référence

  1. Copiez default-style.json ou dérivez une version avec style.
  2. Conservez la valeur par défaut de center_y_ratio à 0.82 lorsqu'il n'y a pas de démo de référence.
  3. Lorsque l'utilisateur fournit une capture d'écran de référence, inspectez-la et exécutez style --reference-image ... avec des remplacements explicites tels que --center-y-ratio, --safe-width-ratio ou --font-size-max. La sortie enregistre l'empreinte SHA et les dimensions de l'image de référence. Voir style-calibration.md.
  4. Rendez un clip de 10 à 15 secondes commençant au premier surlignage.
  5. Exécutez preview --video ... pour les surlignages CJK, Latin et mixtes afin que les images fixes utilisent les dimensions réelles de la vidéo cible.
  6. Inspectez la ligne de base, le chevauchement, le recadrage, la zone de sécurité du téléphone, l'évitement des avatars et l'alignement de la démo de référence.
  7. Exécutez validate --video ... --style ... pour mesurer chaque sous-titre avec les dimensions réelles de la vidéo et la police sélectionnée. Le moteur de rendu peut réduire un sous-titre à font_size_min ; un sous-titre qui dépasse toujours la largeur en pixels sécurisée échoue.

STOP. Le rendu complet est interdit tant que l'utilisateur n'accepte pas l'échantillon. Les modifications de style créent style-vN.json ; les modifications de texte retournent à l'Étape 1.

Étape 4 — Vidéo complète et extraction d'images clés

  1. Exécutez render sans --start ni --duration.
  2. Exécutez validate --video ... par rapport au SRT verrouillé et à la durée finale de la vidéo.
  3. Exécutez frames sur la vidéo finale rendue avec --already-burned, en passant --corrections chaque fois que des corrections existent. Il doit inclure chaque réplique corrigée, chaque segment surligné, ainsi que les images d'entrée, de milieu et de sortie.
  4. Inspectez contact-sheet.jpg ainsi que chaque image en pleine résolution. Les répliques corrigées manquantes dans les images de révision constituent un échec de livraison.

Étape 5 — Livraison unique

Exécutez deliver en utilisant la vidéo finale, le SRT verrouillé, le plan de surlignage, le style, les corrections et le répertoire de révision. La commande écrit un manifeste subtitle-focus-delivery avec les chemins, les empreintes, les métadonnées vidéo, les identifiants de répliques modifiées, les identifiants de répliques révisées, la provenance de la démo de référence et les fichiers de transfert.

Utilisez --handoff-dir pour copier le SRT final et générer une transcription. Ajoutez --copy-video uniquement lorsque l'utilisateur souhaite copier la vidéo. Ajoutez --publish-copy lorsqu'un document de publication fini existe déjà. N'inventez jamais de copie de publication.

Voir delivery-schema.md.

Tableau des commandes

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

Exécutez python3 scripts/subtitle_focus.py <command> --help pour tous les indicateurs.

Règles de dessin

Les règles de typographie et de numéros visuels se trouvent dans visual-spec.md. N'ajoutez pas de hacks de dessin côté agent. Gardez une seule ligne de base partagée, agrandissez uniquement les passages surlignés, maintenez les phrases mixtes telles que C 组 ensemble, et dessinez les chaînes en passages entiers.

À ne pas faire

ExcuseRéalité
« Le SRT n'a changé que d'un mot »Son empreinte a changé. Re-verrouillez et régénérez tous les artefacts dérivés.
« Les surlignages sont évidents »L'Étape 2 est une décision de l'utilisateur. Attendez.
« La hauteur par défaut de 82 % est toujours correcte »Gardez 82 % uniquement sans démo de référence ; sinon, utilisez un remplacement de style versionné.
« Quelques images aléatoires suffisent »Chaque réplique corrigée et chaque segment surligné doit apparaître dans les images de révision.
« Le nom du fichier final nous indique son contenu »Seul le manifeste de livraison fait autorité.
« La vidéo ou le MD suffit à récupérer le timing »Cette compétence nécessite un SRT exporté et n'exécute pas d'ASR/OCR.
« Une correspondance du glossaire est certainement correcte »Il s'agit d'une suggestion sourcée. Montrez-la et attendez l'approbation du texte.
« Aucun fichier de glossaire signifie qu'aucune décision n'est nécessaire »L'Étape 1 exige toujours des choix explicites de glossaire personnel et de projet ignorés.
« Les règles de typographie générales sont évidentes »Préservez le SRT. N'ajoutez que des règles demandées par l'utilisateur ou énumérées.
« Aplatir les lignes du SRT est inoffensif »Le plan de rendu peut dériver une ligne d'affichage, mais le SRT verrouillé doit préserver les espaces non mentionnés.
« Quatre phrases en clair consécutives sont acceptables »Chaque paire adjacente nécessite au moins un segment surligné ; la validation bloque les séquences en clair plus longues.
« Un aparté entre parenthèses nécessite un surlignage forcé pour satisfaire la cadence »Une réplique entièrement entre parenthèses reste en clair et sépare les séquences de cadence ; les parenthèses intégrées restent partie d'une réplique normale.
« La cadence est plus stricte que le choix explicite de texte en clair de l'utilisateur »Le choix confirmé de l'utilisateur prévaut. Enregistrez la réplique ou le segment cible dans plain_overrides ; n'inférez jamais une exception au nom de l'utilisateur.
« Une phrase courte ne peut pas être entièrement surlignée »Elle peut être entièrement surlignée lorsque la phrase entière constitue un point pertinent ; la couverture reste informative.
« Supprimer la limite de 30 % signifie qu'une phrase longue peut toute devenir jaune »Un surlignage long et dense est signalé comme avertissement de révision ; gardez une phrase principale par défaut et laissez l'utilisateur décider à partir du manuscrit complet.

Skills associés