Japanese Subtitle Polish(日本語字幕ととのえ)
日本語SRTの本文だけを整えるSkillです。AIがSRT全文を書き直すことはしません。
AIは修正候補のJSONを作り、scripts/ のPythonスクリプトが原文と照合して適用・検査します。
同じフォルダの app.py(起動ファイルあり)は、利用者がSRTをドロップして使うアプリです。会話から頼まれた場合は、このSKILL.mdの手順で進めます。
このファイルがあるフォルダを SKILL_DIR と書きます。スクリプトはPython 3.9以上の標準ライブラリだけで動きます
(macOS・Linuxは python3、Windowsは python または py)。
標準動作で守ること
- 元のSRTは読むだけ。修正版は
<元の名前>.polished.srtに別名で保存する。 - 字幕の件数・番号・順番・開始時刻・終了時刻は変えない。変えるのは各字幕の本文と、本文の中の改行だけ。
- 誤字・誤変換・表記ゆれ・指定辞書の固有名詞を直す。数字・単位・否定・断定の強さ・話者の口調は保つ。
- 音声や資料がないと決められない箇所は直さず、
"status": "review"(要確認)にする。自然に見せるための推測で言葉を置き換えない。 - 「えー」「あの」などのフィラー削除と、発言の要約はしない。利用者がはっきり頼んだときだけ
--allowで選ぶ。 - 表示時間に対して長すぎる字幕は、時刻を変えずに要確認として報告する(スクリプトが自動で出す)。
- 字幕の分割・結合、時刻の調整、翻訳、音声の聞き直しはこのSkillの範囲外。必要なら利用者に伝える。
手順
1. 条件を確かめる
対象のSRT、辞書(固有名詞の一覧)の有無、用途を確かめる。分からなければ次の初期値で進め、聞くのは必要なことだけにする。
| 用途 | プリセット | 内容 |
|---|---|---|
| 映像制作の現場基準で作る | genba | 最大2行・1行15字・見やすさの目安 1秒4字 |
| 横長の動画(初期値) | standard | 最大2行・1行16字・見やすさの目安 1秒6字 |
| 読みやすさを優先(翻訳字幕・高齢の視聴者など) | safe | 最大2行・1行13字・見やすさの目安 1秒4字 |
| 縦型のショート動画 | vertical | 最大2行・1行12字・見やすさの目安 1秒6字 |
見やすさの目安(1秒に読む字数)はルールではなく目安で、超えた字幕を報告するだけ。利用者が別の値を言えば --max-cps で変え、「知らせなくていい」なら --max-cps 0。
句読点の扱いも確かめる。標準は「残す」。テロップとして使う場合は、句読点・かっこを外す --punct telop を選べる
(ダッシュ・…・!・?は残す。残す記号は --punct-keep で変えられる)。
利用者が字幕の文字の大きさを分かっている場合は、字数の代わりに --video-size 1920x1080 --font-size 80 のように指定する(1行の字数をそこから計算する)。
数え方と変更方法は references/settings.md。辞書を作る場合は references/glossary.md。
2. SRTを読む
python3 SKILL_DIR/scripts/inspect_srt.py 入力.srt --glossary 辞書.json --template 入力.candidates.json
辞書は .json と .tsv のどちらでもよい。辞書がなければ --glossary を省く。
- 構造の問題、字幕ごとの本文・表示時間・1秒あたりの文字数、改行の問題、辞書と一致した箇所、表記ゆれの手がかりが出る。
--templateで、SRTのSHA-256と辞書由来の候補(IDG…)を入れた候補ファイルの下書きができる。- 読み込みエラーが出たら、内容を利用者にそのまま伝える(Shift_JISなら
--encoding cp932)。 - 字幕一覧は全件読む。長い場合は区切って読み、読んでいない字幕について判断しない。
3. 修正候補を作る
references/rules.md の基準で判断し、候補ファイルの candidates に追記する。
形式は references/candidates-format.md。
originalは inspect の出力から一字一句写す。同じ字幕に同じ文字列が複数あるときは、前後の文字を含めて一意にする。reason(なぜ直すか)とevidence(何で確かめたか)を必ず書く。どちらかが空の候補は適用されない。- 辞書由来の候補
G…も文脈を読み、誤一致なら削除するかreviewにする。 - 改行はスクリプトが整えるので、通常は候補にしない(inspect の「⚠ 改行」も、適用時にスクリプトが直す)。
- 固有名詞の公式表記をWebで確かめられる環境なら確かめ、
evidenceに確認先のURLを書いてよい。確かめていなければreview。 - 字幕の重複・分け方の誤りなど、本文の修正では直せない疑いも
reviewで報告する(proposedは空、typeは「その他」でよい)。 - 迷ったら
review。要確認は失敗ではなく、利用者が音声で確かめるための一覧。
4. 適用する
python3 SKILL_DIR/scripts/apply_candidates.py 入力.srt 入力.candidates.json --glossary 辞書.json
プリセットや --punct を変える場合は、inspect と apply の両方に同じ指定を付ける。
--punct telop のときは句読点をスクリプトが外すので、句読点の候補は作らない。
- 修正版・変更一覧・要確認一覧・確認画面(
.review.html)・適用ログを、元のSRTと同じフォルダに書き出す。既存の出力は上書きしない(再実行は--overwrite)。 - 照合に失敗した候補・安全チェックで止まった候補は適用されず、要確認一覧の「適用しなかった修正候補」に理由が載る。
- 原文の写し間違いなら、候補を直して再実行してよい。
- 安全チェック(数字・否定・口調などが変わる)で止まった候補を、AIの判断で
approvedにしない。利用者に見せ、承認を得たものだけ"approved": trueにする。
- フィラー削除・要約は、利用者が頼んだときだけ
--allow フィラー削除/--allow 要約を付ける。
5. 検査を確かめる
apply は書き出したあと、自動で検査を行い結果を表示する(変更一覧の末尾にも載る)。単独で行う場合:
python3 SKILL_DIR/scripts/verify_srt.py 入力.srt 入力.polished.srt --log 入力.apply-log.json
1件でも NG があれば、修正版を使わないよう利用者に伝え、原因を調べる。
6. 確認画面を案内する
入力.review.html をブラウザで開くと、字幕を映像の枠に重ねた見え方、タイムライン上の要確認の位置、修正前後の差分を確認できる。
利用者はここで候補ごとに「採用/見送り」を選び、要確認の箇所に確かめた表記を入れ、字幕を直接直せる。
画面はSRTを書き換えない。「決定を保存」で 入力.candidates.reviewed.json ができるので、利用者に頼まれたらそのファイルで手順4を --overwrite 付きでやり直す。
保存されたファイルの approved: true は、利用者が画面で承認したものとして扱ってよい。
7. 報告する
次の順で短く報告する。機械検査の結果と、日本語・映像の確認を混ぜない。
- 出力したファイル(修正版・変更一覧・要確認一覧・確認画面)
- 機械検査:件数・番号・順番・時刻・BOM・改行コードが原本と一致したか。「時刻が一致した」はこの検査の結果だけを指す。
- 主な修正を数件(修正前 → 修正後)と、改行だけ整えた件数
- 要確認:音声で確かめてほしい箇所、見やすさの目安より速い字幕(誤りではない)、上限に収まらない字幕、適用しなかった候補
- 確認していないこと:日本語の意味・読みやすさ・音声や映像との同期は、人が修正版を再生して確かめる必要がある