Communitygithub.com

chengfeng-videocut-skills(字幕)

完成口播剪辑后,无需重新转录或导出,直接利用已有逐词稿和账本,为剪好后的视频添加字幕:自动改写专名、按句子分屏、在 Studio 中逐屏复核。用户说“做字幕”、“加字幕”、“改字幕”、“重新分屏”、“字幕不对”时调用。不要用于删词剪辑、物理剪切、分镜动画或成片渲染。

chengfeng-videocut-skills(字幕) とは?

このスキルは、口述動画(口播)の編集が完了した後に、字幕を生成・編集するためのものです。**クリエイターがすでに持っている文字起こしデータ(逐語原稿)と編集の履歴(会計帳簿)だけを使い、再トランスクリプションやMP4のエクスポートを一切必要としません**。各単語はIDで管理され、表示時間は毎回動的に計算されるため、編集内容と字幕の同期が常に保たれます。まず「AI用語辞書」と「書き起こし原稿」を使って聞き間違えやすい固有名詞を自動修正し、その上で句読点や自然な区切りに基づいて字幕を一文ずつ分割します。最後にFinal Cut Pro Studio上で画面のプレビューを見ながら画面単位で確認・修正できます。主にClaude Codeのプラグインとして動作し、ユーザーが「字幕を作って」「字幕を直して」と言ったときに起動します。編集後の正しいタイムラインに依存するため、編集が完了した後にのみ実行可能です。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Agentchengfeng/chengfeng-videocut-skills/tree/HEAD/plugins/chengfeng-videocut/skills/chengfeng-subtitle

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

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

ドキュメント

字幕

これは1つの仕事であり、ワークフローの一部ではありません。 ユーザーが呼んだときにいつでも実行します——編集直後でも、2ワード削除した後でももう一度実行できます。

前提条件は1つだけです:会計帳簿が存在すること。編集の後に行うからではありません。会計帳簿がなければ、どのセンテンスが残っていて、それぞれが最終動画の何秒目に位置するのかがわからないからです。

必要なもの  edit-list.json(会計帳簿)、transcript.json(逐語原稿)
生成するもの subtitles.json

完了したらそこで停止し、ユーザーに次のステップを指示しません。

最初に「業務スキルのフェーズ契約」を読み込んで実行し、判定基準は「字幕校正ルール」、固有名詞の表記は「AI用語辞書」を参照します。

何が何を決定するか

これがこのセクションの基盤であり、その他すべてはここから導き出されます。

口述編集  決定する「どのセリフを残すか、どのタイミングか」    ← 時間に関する唯一の真実
字幕      決定する「画面上に何の文字を表示するか」            ← 表示に関する唯一の真実

1画面の字幕は単語IDリスト + 表示テキストを保存し、秒数は保存しません。時間は毎回会計帳簿から計算します。これにより、2つの帳簿に食い違いが生じることはなく、無効になった場合も「画面7と画面12の単語が削除されました」と正確に報告できます。「字幕が期限切れかもしれません」という曖昧な表現にはなりません。

字幕が自身の文字を保持するのは意図的です。 文字起こしは「彼が何を言ったか」を答え、字幕は「人に何を見せるか」を答えます——句読点、取り除かれた口癖、固有名詞の正式表記など、これらはそもそも異なっているべきです。1つのテキストで2つの役割を強制すれば、字幕にカンマを追加することは永遠にできなくなります。

0. 準備

まず「アップデートチェック」の「準備チェック」を実行します——スキルが最新か、Runtimeが互換かどうか。プラグインのルートディレクトリもそこで特定されます(このドキュメント内の <プラグインルート> はすべてその実際のパスに置き換えてください)。「準備完了」の場合のみ続行します。「新たなセッションが必要」または「停止」の場合は、その指示に従ってください(「自作の代替UIの禁止」を含む)。業務スキルは環境ロジックを持ちません。

準備結果が runtime.kind=desktop-managed の場合、デスクトップアプリにすでにインストールされている安定版CLIと同一の launchd/windows-task サービスを直接再利用します。Electronのパスを解決したり、依存関係を別途インストールしたり、2番目のRuntimeを起動したりしないでください。

1. エントリ前提条件

node "<プラグインルート>/scripts/ensure-running.cjs" --json
node "<プラグインルート>/scripts/videocut-cli.cjs" inspect "<プロジェクトディレクトリ>" --json
前提条件満たさない場合
edit-list.json が存在し、クリップが含まれている会計帳簿がないことを明確に伝え、ユーザーに口述編集を依頼する。自分で編集してはいけない。
transcript.json が存在するプロジェクトの準備ができていないので停止する。自分で作成してはいけない。

source_cut.mp4 の存在を前提条件にしたり、文字起こしを実行したりしないでください。 字幕はどちらも必要ありません——次のセクションを参照してください。

2. 単語の修正:まず辞書、次に原稿

再トランスクリプションは不要です。 既存の逐語原稿にはすでにタイムスタンプが含まれており、会計帳簿はどのセクションが残っているかを知っています——各単語が最終動画の何秒目に位置するかは計算されるものであり、再認識されるものではありません:

単語がソース動画の何秒目か   文字起こしに含まれている
どのセクションが残っているか 会計帳簿に含まれている
単語が最終動画の何秒目か   両方を計算すれば導き出せる

ASRを再実行することは、同じ内容を再度認識させることに過ぎず、コストがかかり、時間もかかり、しかも精度は低くなります——固有名詞はまた修正し直さなければなりません。(transcript retranscribe は以前の設計の名残で、その時は字幕を編集後の動画の文字起こしからタイムラインを取得しようとしていました。字幕が単語IDベースに変わったため、この問題はなくなりました。字幕作成にそれを使ってはいけません。)

2つの異なるツールがあり、両方を使用します。

# 辞書:この話者の固定表記、エビデンスは不要
node "<プラグインルート>/scripts/videocut-cli.cjs" transcript dictionary "<プロジェクトディレクトリ>" --dictionary "<プラグインルート>/references/ai-term-dictionary.md" --json

# 原稿:著者が原稿を持っている場合のみ実行、箇所ごとにエビデンスが必要
node "<プラグインルート>/scripts/videocut-cli.cjs" transcript align "<プロジェクトディレクトリ>" --script "<口述原稿ファイル>" --json
辞書    常にこのように書く                文脈を無視して直接修正し、修正箇所をリストアップする
原稿    文脈が一致する場合のみこのように書く  箇所ごとにエビデンスが必要、一致しない場合は「断定できません」と報告し、推測しない

なぜ辞書が必要で、原稿だけでは不十分なのか:口述は再録音されることがあります。実際のプロジェクトでは同じ文が4回録音されていたため、「接続フォーク」「フォークは」などの文脈が複数回出現し、alignは「断定できません」と報告せざるを得ませんでした——ルールに従い推測しないためです。名前を間違えることは、聞き間違えるよりも悪いからです。 3箇所の「フォーク」の中で1箇所しか修正できません。辞書にはこの問題はありません:この話者の作品では、「フォーク」は 「X」 です。

辞書は1つだけです。プラグインレベルの references/ai-term-dictionary.md にあります。これは文字起こしを修正します。口述編集と字幕は同じ文字起こしを使用します。このスキルの下に別の辞書を作成しないでください。

修正後は、そのリストを確認してください。 辞書は文脈を無視するため、誤って修正することもあります——例えば、話者が実際に言った「Skills」(Claude Skills、複数の固有名詞)を「Skill」に正規化してしまうなどです。間違いを見つけたら辞書を修正し、コマンド側でパッチを当てないでください。

transcript align は報告のみ行い、修正は適用しません。その提案を適用するには、corrections を [{wordId, text}] に変換してから実行します:

node "<プラグインルート>/scripts/videocut-cli.cjs" transcript correct "<プロジェクトディレクトリ>" --file "<修正ファイル>" --json

文字起こしを修正すると、これらの単語を参照している字幕画面は同じステップで自動的に更新され、subtitles.updated が報告されます。修正できないもの(人が書き換えた行)は needsAttention に入り、報告され、推測は行われません。

辞書になく、原稿にも正しい表記を確認できるものがない場合、推測してはいけません。 報告し、ユーザーに辞書を補完するよう促します——辞書に追加すれば次の動画では自動的に正しくなります。推測で成功しても、次回もまた推測しなければなりません。

3. 画面分割

node "<プラグインルート>/scripts/videocut-cli.cjs" subtitle build "<プロジェクトディレクトリ>" --json

4つのルールを順に適用します:

① ここでセリフが削除された    削除された両側がタイムライン上で隣接しているが、意味的に関連性がない。
                       「無音」の削除は含まない——文の途中の一時停止を削除しても、文を分割できない。
② 任意の句読点              火山(ASR)が提供するもの。句点と読点の両方を扱う——**口述編集の区切りと同じ粒度**で、
                       両方とも同じ場所で区切られる。句読点は時間の証拠よりも強い:話者は2つの文を
                       息継ぎせずに続けて言ったり、1つの文の途中で一時停止したりできる。
③ 段落境界 + 一時停止       **この単語に句読点がない場合のみ使用する。** 「句読点がない場合に段落で文の終わりを推測する」というもの。
                       句読点がある場合は、②と読点のルールが適用されるべきである——それらは画面の長さを考慮するが、③は考慮しない。
                       (句読点のある境界でも③をトリガーすると、実際のプロジェクトでは画面数が40から43に増え、より細かい画面が生成された)
④ 視聴者が長い間を感じる    文の内部で分割するには、より長い無音が必要。

口述編集と字幕は同じ句読点を使用し、粒度も同じです:1つの読点で1段落/1画面です。

断片(1〜2文字)はマージされますが、句点を越えてマージすることはありません——「見てください」は新しい文の始まりであり、前の文の末尾ではありません。前にマージすると「…Grok CLIを呼び出します見てください」となり、2つの文が混ざってしまいます。

話者が速く言った短い文はそのまま残ります(実際のプロジェクトでは「毎朝」「タスクを実行」が各0.6秒)。それは話者が実際にそう言ったのであり、警告は出しません。 1つの読点で1画面というルールは必然的にこのような画面を生成します。これに警告を出すことは、通常の会話に警告を出すことに等しく、警告が多すぎると誰も見なくなります。

残りの1画面より長いものは均等に分割され、1画面1行になります。1〜2文字の断片が切り出された場合は、②の境界が実際には句点ではなかったことを示しているため、その断片を前の画面にマージします。

コマンドは4つのことを報告します。すべて確認してください:

stale              編集によって変更された画面——何画面目か、どの単語が欠落したかを正確に示す
tooFast            単語が多すぎて、読む時間が足りない
transcriptMoved    文字起こしが元のものと変わっている

既に字幕が存在する場合——ここで止めて確認する

--replace を付けなければ、コマンドは直接拒否します。これがこのスキルで唯一ユーザーの同意を求める箇所です。なぜなら、--replace はユーザーが時間をかけて行った画面分割と表現を上書きしてしまい、プロダクト自体では復元できないからです。

ユーザーが数文字を修正したい場合    buildを実行しない。Studioで直接修正させるか、どの画面を修正するかを伝えさせる。
ユーザーがやり直したい場合    確認した上で --replace を付ける。

4. 確認:Studioで画面ごとに見る

node "<プラグインルート>/scripts/videocut-cli.cjs" open "<プロジェクトディレクトリ>" --json

開いたら左側の**「字幕」タブ**に切り替えます。1行が1画面です:左側に番号と時間、右側がテキストで、クリックして直接修正できます。

  • Enter = カーソル位置から新しい画面を作成
  • 行頭でBackspace = 前の画面にマージ
  • 右側の「パラメータ → 字幕」の4つのプリセットから1つ選択、全編に同じスタイルを適用
  • 画面上で字幕が直接表示され、位置とフォントサイズは画面に比例します——プレビューと最終出力は同じ数値を使用

確認時には最低限以下の点をユーザーに確認させてください:固有名詞が正しいか、文字落ちがないか、区切りが自然に読めるか、各画面の表示時間が十分か。

5. subtitles.json までで完了

このセクションは完了です。 物理的なカット、ストーリーボード、アニメーション、レンダリングは行いません。また、ユーザーに次のステップを促しません。

レポートは分けて書く必要があります:Product 構造化 readback は API/readback PASS とします。実際の同一プロジェクトのブラウザフレームレビューは visual frame PASS とします。実際に誰も字幕と映像の同期を確認していない場合は、常に human listening UNVERIFIED とし、DOM、スクリーンショット、ファイルスキャンで代替してはいけません。

境界:映像に焼き付けることはこのセクションの範囲外

出力方法として「映像に焼き付ける」ことが決まっていますが、映像の描画は書き出しの段階で行われます。字幕の出力は subtitles.json です——その中の寸法はすべて画面のパーセンテージであり、書き出し時に出力解像度に基づいてピクセルに換算すればよいため、両方で同じ数値を使用します。

現在のエクスポートされたMP4には字幕は含まれていません。そのステップはまだ実装されていません。レポートにはこの結果を明確に記載し、「字幕が完成しました」とだけ言ってはいけません——ユーザーは最終動画に字幕が含まれていると思ってしまいます。

リカバリと失敗

  • subtitles_exist:既に字幕が存在します。まず確認し、直接 --replace しないでください。
  • revision_conflict:別の場所でも書き込み中です。再読み込みし、自動的に上書きしないでください。
  • 辞書が「N行目を読み取れません」と報告:それはフォーマットが壊れたテーブル行です。ルールはテーブル行(| 正しい表記 | よくある誤認識 |)のみを認識し、散文やリストは無視されます。
  • transcript correct が「word id、time、またはgapフラグを変更してはいけません」と報告:修正提案に時間に関する変更が混ざっています。修正は文字のみに限定してください。
  • runtime_unhealthy:ループして再インストールしないでください。
  • どのような失敗でも、「文字起こしが完了した」ことを「字幕が完成した」と言ってはいけません。ASRの出力は原材料であり、成果物ではありません。

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

Agentchengfeng/chengfeng-videocut-skills

剪辑环境的唯一管理者:就绪检查(skills 是否最新 → Runtime 是否配套)、Skills 更新激活、Runtime 安装与体检。用户说检查更新、安装剪辑环境、装播放器、检查剪辑环境、剪辑环境就绪了吗、配置转录凭证时使用;业务 Skill(剪口播/字幕/画面/导出)第 0 步也引用本 Skill 的就绪检查。不用于剪辑、字幕、画面、导出本身或项目数据迁移。

Agentchengfeng/chengfeng-videocut-skills

剪辑中文口播原素材:逐词转录、词典修字出修字表、五轮扫描找口误与重复、汇总表与重复句子表、打开 Studio 让用户复核、复盘沉淀用户偏好与词典。只产出一份已复核的删词账本,不切媒体、不做字幕、不做分镜动画。用户说剪口播、处理口误、生成口播基础素材、继续剪口播,或确认卡回传 action=return_cut_review 时使用。不要用于执行物理剪切、导出剪后视频、单独安装、单独打开工作台或口播分镜成片。

Agentchengfeng/chengfeng-videocut-skills

把剪好的口播烧成一个成片文件:账本切片段、推近、字幕、HTML 画面层,一次全部烧进 mp4。用户说导出、出成片、烧字幕、渲染、导出视频、生成最终文件时使用。不要用于生成删词候选、写字幕、做画面动画。

Agentchengfeng/chengfeng-videocut-skills

整理、脱敏并上报 chengfeng-videocut 的 GitHub Bug。用户说上报 Bug、反馈剪口播问题、提交 GitHub Issue、这个问题告诉开发者,或要求继续提交已预览的 Bug 草稿时使用。不要用于功能建议、普通排错、代码提交或未获用户确认的自动上报。

Agentchengfeng/chengfeng-videocut-skills

操作 chengfeng-videocut 剪辑工作台的已有工程,通过 Runtime CLI 查工程与词句位置、添加或替换画面覆盖层、移除画面、删除明确指定的词句或片段、拆分裁剪移动已有片段、调整画布比例并回读核验。用户说插入片段、删掉这句、移除动画、换个画面、调整顺序或管理时间线时使用;先区分画面覆盖与主轨顺延插入,不负责自动判断口误、创作动画、制作字幕、导出或排查安装故障。

Agentchengfeng/chengfeng-videocut-skills

Create Ian Xiaohei-style HTML/SVG motion illustrations for Chinese articles, scripts, storyboard scenes, workflow explanations, concept metaphors, and short video visual aids. Use when the user asks for 小黑 SVG、漫画感 HTML、分层 SVG 动效、把小黑生图做成 HTML/SVG、可编辑矢量动效、口播流程动画、手绘漫画动效、正文配图动画, or wants a Xiaohei illustration style adapted into controllable HTML/SVG/GSAP output instead of raster image generation.

Agentchengfeng/chengfeng-videocut-skills

给剪好的口播配画面:在录屏上盖 HTML 层(圈重点标注 / 小黑整屏动画 / 推近),层绑字幕屏、由播放器逐帧驱动、直接在预览里看。用户说做分镜、配画面、加动画、圈重点、B-roll、做 storyboard 时使用。不要用于删词剪辑、字幕、物理剪切或成片渲染。

関連スキル