Communitygithub.com

Subtitle Focus|字幕美化と重点焼き込み

SRT 字幕の校正、ロック、強調表示、焼き込み、フレームレビュー、納品をローカルで実行するパイプラインです。

Subtitle Focus|字幕美化と重点焼き込み とは?

このスキルは、タイムスタンプ付きSRT字幕ファイルを入力として、校正・ロック、意味的な強調表示、サンプルクリップのレンダリング、全編焼き込み動画の生成、そしてレビューフレームの抽出までを5つのゲート(段階)で管理します。ユーザーが参照スクリーンショットを提供すれば、スタイル調整も可能です。各ゲートでユーザー確認を必須とし、自動的な上書きや推測を排除することで、品質とトレーサビリティを担保します。対応プラットフォームはローカル環境で動作するスクリプト(subtitle_focus.py)であり、Claude CodeなどのAIエージェント向けに設計されています。SRT以外の入力(動画のみやプレーンテキスト)は拒否し、ASR/OCRは使用しません。

対応~Claude Code~Codex CLI~Cursor
npx skills add manwithshit/subtitle-focus

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Subtitle Focus|字幕美化と重点焼き込み は何をしますか?

レビュー済みのタイムスタンプ付きSRTを、黄色の意味的ハイライト、承認済みの短いサンプル、トレーサブルな全編焼き込み動画に変換します。ユーザーから参照スクリーンショットが提供された場合、それに基づいてそのプロジェクトのキャプションスタイルを調整します。エージェントはSRTコンテキスト、ロードされた用語集、プロジェクトの証拠、ユーザーの修正から単語の意味を判断します。バンドルされたスクリプトは、決定論的なフラグ、正確な置換、ソースロック、CJK/Latin混在レイアウト、レンダリング、レビューフレーム、ハッシュを担当します。ソースSRTと動画は読み取り専用です。

エクスポートされたSRTが必要です。動画のみの入力や、プレーンな行単位のMDトランスクリプトには、このスキルで受け入れ可能なタイムラインがありません。停止してユーザーにSRTのエクスポートを依頼してください。Video Use、剪口播、ローカルWhisper、ASR、OCRは呼び出さないでください。

5つのゲートで作業します。各確認ゲートで停止します。

SRT 校正ロック → ハイライト確認 → サンプル確認 → 全編フレーム抽出 → 納品登録

ゲート1 — SRT 校正ロック

  1. マシンで初回使用前に doctor を実行します。
  2. タイムスタンプ付きSRTが必要です。プレーンなMD/トランスクリプト入力や動画のみの文字起こしリクエストは拒否します。
  3. プロジェクト受付時に2つの明示的な選択を求めます:個人用語集を使用するか明示的にスキップするか、プロジェクト用語集を使用するか明示的にスキップするか。インストール時には質問せず、proofread フラグで両方の選択が記録されるまで正式な校正を開始しないでください。
  4. proofread を実行します。基本用語集は自動的にロードされます。明示的な選択、レイヤリング、プライバシー動作、スキーマについては text-lock-schema.md を参照してください。 公開ソースレビューポリシーは glossary-sources.md に記載されています。
  5. SRTの隣接キュー、ロードされた用語集の出典、プロジェクト語彙、製品名、プロジェクトファイル、ユーザー修正を使用してすべてのキューを検査します。実際のユーザー/プロジェクトルールまたは列挙された用語集エントリが存在する場合にのみ、スペル、大文字小文字、数字、単位、代名詞、またはスペーシングルールを適用します。一般的な正規化ポリシーを発明しないでください。
  6. corrections.json をドラフトします。用語集の一致は提案であり、自動編集ではありません。決して黙って書き換えないでください。
  7. correct を実行し、キューレベルの変更前/変更後テーブルをユーザーに表示します。出力は、SRTテキスト内の言及されていない改行と繰り返しスペースを保持する必要があります。
  8. 明示的なテキスト承認後、lock --confirmed を実行します。

停止. ロックされていないSRTからハイライトを計画しないでください。SRTへのバイト変更は、そのロック、キャプション計画、サンプル、全編レンダリングを無効にします。それらを再生成してください。

ゲート2 — ハイライト文字

  1. ユーザーが別途指定しない限り、--max-chars 16 を指定して plan --lock ... を実行します。
  2. highlight-schema.md を使用して highlight.json をドラフトします。
  3. apply と review を実行します。ケイデンスレポートが合格するまで選択を調整し、その後 validate を実行します。
  4. すべての提案ハイライトを、Markdown太字を使用して文中に直接マークした、完全なキャプション原稿をタイムライン順にユーザーに送信します。最初に個別のキーワードリストやハイライトテーブルを送信しないでください。ユーザーに太字の位置を確認するか、再ターゲットが必要な文を指定するよう依頼します。

選択:意味を持つ完全な単語またはフレーズのみ。各レンダリングキャプションセグメントを1つの文として扱います。隣接するペアには少なくとも1つのハイライトセグメントが含まれている必要があるため、ハイライトされていない文の連続は最大1つです。テキスト全体が一致する中国語またはASCII括弧で囲まれているキューは、オフスクリーン/PiPの余談です:プレーンに保ち、ケイデンス境界として扱います。通常の文内のインライン括弧はこの免除を作成しません。特定のキューまたはセグメントをプレーンに保つというユーザーの明示的なリクエストは、特にPiP/オフスクリーンコンテンツの場合、ケイデンスよりも優先されます:ターゲットIDとユーザー確認済みの理由を plain_overrides エントリとして記録し、プレーンに保ち、括弧がなくてもケイデンス境界として扱います。コンテンツが二次的に見えるという理由だけでこの免除を発明したり、近くに埋め合わせのハイライトを追加したりしないでください。継続性を向上させる場合、すべての文をハイライトすることは許可されています。短い意味的に原子的な文は全体をハイライトしても構いません。長い文は通常、1つの主要な意味を持つフレーズ、または真の並列または対比の場合にのみ2つを保持する必要があります。割合を減らすためだけに単語、製品名、またはフレーズを分割しないでください。ケイデンスを満たすためだけにフィラー、トランジション、または情報価値の低い単語をハイライトしないでください。カバレッジが計画をブロックすることは決してありません。レビューは、長いセグメントがほとんどハイライトされているか、ハイライト範囲が多すぎる場合に非ブロッキングの密度警告を追加し、ユーザーが完全な太字原稿から決定します。意味のあるハイライトまたは明示的なユーザー例外でケイデンスを満たせない場合は、競合するセグメントIDをユーザーレビュー用に報告します。ハイライト中にロックされたSRTを決して書き換えないでください。

停止. ユーザーが太字の完全な原稿を確認するまでレンダリングしないでください。

ゲート3 — サンプルと参照図スタイル

  1. default-style.json をコピーするか、style でバージョンを派生させます。
  2. 参照デモがない場合、デフォルトの center_y_ratio を 0.82 に保ちます。
  3. ユーザーが参照スクリーンショットを提供した場合、それを検査し、--center-y-ratio、--safe-width-ratio、--font-size-max などの明示的なオーバーライドを指定して style --reference-image ... を実行します。出力には参照画像のSHAと寸法が記録されます。style-calibration.md を参照してください。
  4. 最初のハイライトから始まる10〜15秒のクリップをレンダリングします。
  5. CJK、Latin、および混合ハイライトに対して preview --video ... を実行し、静止画がターゲット動画の実際の寸法を使用するようにします。
  6. ベースライン、オーバーラップ、クリッピング、電話フレームセーフエリア、アバター回避、参照デモのアライメントを検査します。
  7. validate --video ... --style ... を実行して、実際の動画寸法と選択されたフォントで各キャプションを測定します。レンダラーはキャプションを font_size_min に縮小する場合があります。それでも安全なピクセル幅を超えるキャプションは失敗します。

停止. ユーザーがサンプルを受け入れるまで全編レンダリングは禁止されています。スタイル変更は style-vN.json を作成します。テキスト変更はゲート1に戻ります。

ゲート4 — 全編とフレーム抽出

  1. --start や --duration なしで render を実行します。
  2. ロックされたSRTと最終動画時間に対して validate --video ... を実行します。
  3. 最終レンダリング動画に対して、--already-burned を指定し、修正が存在する場合は --corrections を渡して frames を実行します。これには、修正されたすべてのキュー、ハイライトされたすべてのセグメント、およびエントリ/ミドル/エグジットフレームが含まれている必要があります。
  4. contact-sheet.jpg と各フル解像度フレームを検査します。レビューフレームに欠落している修正済みキューは、納品失敗です。

ゲート5 — 唯一の納品

最終動画、ロックされたSRT、ハイライト計画、スタイル、修正、レビューディレクトリを使用して deliver を実行します。このコマンドは、パス、ハッシュ、動画メタデータ、変更されたキューID、レビュー済みキューID、参照デモの出典、およびハンドオフファイルを含む1つの subtitle-focus-delivery マニフェストを書き込みます。

--handoff-dir を使用して最終SRTをコピーし、トランスクリプトを生成します。--copy-video は、ユーザーが動画のコピーを希望する場合のみ追加します。公開用コピー文書がすでに存在する場合にのみ --publish-copy を追加します。公開用コピーを決して発明しないでください。

délivery-schema.md を参照してください。

コマンドマップ

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

すべてのフラグについては python3 scripts/subtitle_focus.py <command> --help を実行してください。

描画契約

ビジュアル番号とタイポグラフィルールは visual-spec.md に記載されています。エージェント側の描画ハックを追加しないでください。1つの共有ベースラインを維持し、ハイライトされた実行のみを拡大し、C 組 などの混合フレーズをまとめて保持し、文字列を全体の実行として描画します。

禁止事項

言い訳現実
「SRTが1単語だけ変わった」ハッシュが変わりました。再ロックして、すべての派生アーティファクトを再生成してください。
「ハイライトは明らかだ」ゲート2はユーザー決定です。待ってください。
「デフォルトの82%の高さは常に正しい」参照デモがない場合のみ82%を維持し、それ以外はバージョン管理されたスタイルオーバーライドを使用します。
「ランダムなフレームがいくつかあれば十分だ」修正されたすべてのキューとハイライトされたすべてのセグメントがレビューフレームに現れる必要があります。
「最終ファイル名が内容を教えてくれる」納品マニフェストのみが信頼できます。
「動画やMDでタイミングを回復できる」このスキルはエクスポートされたSRTを必要とし、ASR/OCRを実行しません。
「用語集の一致は確かに正しい」それは出典付きの提案です。表示してテキスト承認を待ちます。
「用語集ファイルがない = 決定不要」ゲート1でも明示的な個人およびプロジェクトスキップ選択が必要です。
「一般的なタイポグラフィルールは明らかだ」SRTを保持します。ユーザーがリクエストしたルールまたは列挙されたルールのみを追加します。
「SRT行をフラット化しても害はない」レンダリング計画は1つの表示行を派生させるかもしれませんが、ロックされたSRTは言及されていない空白を保持する必要があります。
「4つのプレーンな文が連続しても許容される」隣接するペアには少なくとも1つのハイライトセグメントが必要です。検証は長いプレーン実行をブロックします。
「括弧内の余談にケイデンスを満たすための強制ハイライトが必要」完全に括弧で囲まれたキューはプレーンのままで、ケイデンス実行を分離します。インライン括弧は通常のキューの一部です。
「ケイデンスはユーザーの明示的なプレーンテキスト選択よりも厳格である」ユーザーの確認済み選択が優先されます。ターゲットのキューまたはセグメントを plain_overrides に記録し、決してユーザーに代わって例外を推測しないでください。
「短い文は全体をハイライトできない」文全体が1つの意味のあるポイントである場合、全体をハイライトしても構いません。カバレッジは情報提供のみです。
「30%の上限を削除すると、長い文がすべて黄色になる可能性がある」長く密なハイライトはレビュー警告として表示されます。デフォルトで1つの主要フレーズを維持し、ユーザーが完全な原稿から決定できるようにします。

関連スキル