Communitygithub.com

chengfeng-videocut-skills:成片导出

将剪辑好的口播项目一键烧录为最终MP4文件,整合账本切片段、字幕、HTML画面层与推近效果。适用于「导出」「出成片」「烧字幕」「渲染」「导出视频」「生成最终文件」等场景。不要用于生成删除词候选、写字幕、制作画面动画。

chengfeng-videocut-skills:成片导出 とは?

chengfeng-videocut-skills 是一个专业的视频导出技能,专为 AI 视频剪辑工作流设计,是生成最终产物(成片MP4)的唯一路径。它负责将之前所有标注阶段(账本、字幕、画面层)的内容一次性渲染并合成为最终的视频文件,不修改任何项目文件或状态机。该技能依赖 Google Chrome 渲染字幕和动画层,以及系统级 FFmpeg ≥6 进行编码。支持通过 `--dry-run` 先行预览计划(片长、帧数、图层数量等),再正式执行。导出过程会进行四段验收:命令回读校验、抽帧像素检查、人工听感(标记为未验证)以及推近效果的地标判据。提供了丰富的调试能力(`--keep-work` 保留中间文件)和换源操作指南,确保用户可以高效、可靠地完成最终输出。

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

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

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

ドキュメント

エクスポート(完成品)

これはチェーンの最後のセクションであり、製品全体で唯一実際にピクセルを描画する場所です。

それ以前はすべて注釈です。台帳は「どの単語を読むか」を記録し、字幕は「画面に何を書くか」を記録し、ビジュアルは「どのレイヤーを重ねるか」を記録します。 プレビューはこれら3つをリアルタイムで合成して人間に見せますが、ディスクには書き込みません。エクスポートはそれらを1つのファイルに焼き付けます。

必要   edit-list.json(必須)、subtitles.json、visuals.json + modules/
出力   完成品.mp4

前提ツール:マシンに Google Chrome が必要です(字幕とアニメーションを画像として描画するため)。デスクトップインストールによる FFmpeg / FFprobe は既に App の Product 管理ディレクトリ内にあります。純粋な CLI インストールの場合はシステムに ffmpeg ≥ 6 が必要です。Chrome がない場合は明示的にエラーを報告します。回避しようとしないでください。Chrome がなければ字幕レイヤーとアニメーションレイヤーは生成されません。

最初に ビジネススキルのフェーズコントラクト の 「結論レベル」セクションを読み、実行します。エクスポートは編集ステートマシンには入りません。プロジェクトファイルを変更せず、 CAS 書き込みも行わず、ステージを進めません。出力は新しいファイルであり、再実行すると上書きされます。 そのため、確認カードは必要ありません。

0. 準備

まず アップデートの確認 の「準備チェック」を実行します。スキルが最新か、 Runtime が対応しているか。プラグインルート もそこで特定します(このドキュメントのコマンド内の <プラグインルート> はすべて そのリテラルパスに置き換えます)。「準備完了」の場合のみ続行します。「新しいセッションが必要」または「停止」の場合は、その指示に従って処理します (「代替インターフェースの自作禁止」を含む)。ビジネススキル自体に環境ロジックは含まれません。

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

コマンド

node "<プラグインルート>/scripts/ensure-running.cjs" --json
node "<プラグインルート>/scripts/videocut-cli.cjs" export <project> --dry-run --json          # まず計画を確認、エンコードしない
node "<プラグインルート>/scripts/videocut-cli.cjs" export <project> --json                    # 完成品を出力(デフォルト 2 倍、ソースフレームレート)
node "<プラグインルート>/scripts/videocut-cli.cjs" export <project> --out /path/完成品.mp4 --json
node "<プラグインルート>/scripts/videocut-cli.cjs" export <project> --scale 1 --json          # ソースサイズのみ
node "<プラグインルート>/scripts/videocut-cli.cjs" export <project> --keep-work --json        # 中間ファイルとフレーム PNG を残して調査用

ensure-running で ID 不一致、ポート競合、またはサービス不健康の場合は直ちに停止します。フォアグラウンドで 一時的に代用してからエクスポートを続行することは許可されません。

2ステップ、2番目のステップだけ実行しないこと

① --dry-run で最初に計画を報告    長さ、フレーム数、字幕画面数、ビジュアルレイヤー数、ズームインセグメント数、出力サイズ
                                  ユーザーに読み上げます。数字が正しくない場合は上流の問題です。10分のエンコードでは修正できません
② 実際に実行                    assemble → overlay → compose → verify の4段階の進捗

--dry-run 内の warnings はそのまま伝える必要があります。これは1種類のことだけを報告します:一部の字幕画面やビジュアルレイヤーの単語が すでにカットされているため、完成品には表示されません。これは上流が決定すべきことであり、エクスポートが黙って飲み込むべきものではありません。

解像度:ソース映像が上限、まずソースを確認してから拡大を検討

エクスポート前にソース解像度を確認します(--dry-run の source フィールドにあります):

ソース幅 ≥2560(Retina ネイティブ画面録画)  → --scale 1、出力はネイティブピクセル、これが最良のケース
ソース幅 <1920(例:960×720)      → まず停止:ユーザーに同じ録画の高解像度エクスポートがあるか確認します。
                              録画ツールは多くの場合、同じ録画を3倍の解像度で再エクスポートできます。
                              ソースを交換する方がどの後処理よりも効果的です(次のセクション参照)。本当にない場合 → --scale 2

--scale 2 が低解像度ソースに有効な理由:元の映像を拡大しても鮮明にはなりませんが、字幕とアニメーションは出力サイズに合わせて 再描画されます。視聴者が実際に読んでいるのはこれらです。プラットフォームが再圧縮する際、大きな画像にはより高いビットレートが割り当てられます。

「より鮮明にする」ために --fps を調整しないでください。 フレームレートはソース映像に従います。変更すると、アニメーションのサンプリングと 画面録画が一致しなくなります。

ソース交換:ユーザーが同じ録画の高解像度版を用意した場合

これはエクスポートフローの一部ではありません。エクスポート自体は常に読み取り専用です。ソース交換は、ユーザーが明示的に承諾した後の 独立した素材操作であり、完了後に通常のエクスポートに戻ります。

まず同じ録画かどうかを判定します(最初の2つで十分に確実です):

ffprobe -v error -show_entries format=duration -of csv=p=0 <2つのファイル>   # 長さがミリ秒単位で同一
ffmpeg -v error -i <ファイル> -map 0:a:0 -c copy -f md5 -                  # オーディオストリームがビット単位で同一
# さらに2〜3フレームを抽出して画面内容を比較、目視確認

オーディオがビット単位で同一 = タイムラインが同一:すべての単語スクリプト、台帳、字幕、ビジュアルレイヤーは単語IDにバインドされており、 何も変更する必要がありません。これこそが「単語にバインドし、秒にバインドしない」という原則がソース交換で実現される点です。

ソース交換の4ステップ(2026-07-29 に実際に1回実行しました。その際、ステップ③を忘れて、クリッププレビューが即座に 「生成失敗」と報告しました。フィンガープリント記録は1箇所だけではなく、grep で古いフィンガープリントをすべて見つけてから 対処してください):

① ファイルを交換      input/source.mp4 と uploads/source.mp4 はハードリンクのペアです。
              両方を削除し、新しいファイルを input/ にコピーし、ハードリンクを uploads/ に再作成します
              (macOS は ln を使用;Windows は New-Item -ItemType HardLink を使用)
② フィンガープリントを更新    project.json の source.sha256 を新しいファイルのものに変更します
③ もう1箇所を確認    workbench.json の sourceSha256 にもソース映像のフィンガープリントが記録されています。
              クリッププレビューパイプラインが検証するのはまさにこのファイルです。
              これを忘れると、プレビューは生成を拒否します
              (これは製品の正しい動作です:フィンガープリントが一致しない場合は失敗する方が、古いプレビューを偽装するより良い)
④ 再エクスポート    --scale 1 —— ソース交換の目的はネイティブピクセルを得ることです。これ以上拡大しないでください

安全策:検索ツールを使用して <プロジェクトディレクトリ> 内のすべての *.json から古いフィンガープリントの最初の8文字を検索し、 リストされたすべての箇所を処理します(キャッシュレコード(例:preview-edited/current.json)は自動的に再計算されるため、手動で変更する必要はありません)。

オーディオが異なる場合(再録音、カット、長さの変更)は、ソース交換ではなく、新しいプロジェクトです。 単語スクリプトを再変換する必要があり、すべての注釈は無効になります。無理に適用しないでください。

検収:3つの項目、1つでも欠ければエクスポート完了とは見なされない

① コマンドが正常に戻る        製品が完成品のサイズ、フレーム数、オーディオトラックをカウントし、計画と項目ごとに比較します。
                     一致しない場合は readback_mismatch エラーが報告され、ファイルはディスク上に証拠として残り、
                     エクスポート完了とは見なされません
② フレームを抽出してピクセルを確認        完成品からフレームを抽出し、目視で確認します。少なくとも以下をカバー:1つのズームインセグメント、
                     1つの全画面アニメーションセグメント、1つの字幕のみのセグメント、1つのレイヤー間の境界
③ 人間の聴覚チェック        実際に聞いた人は誰もいません。常に human listening UNVERIFIED と記録します

② の代わりにプレビュースクリーンショットを使用しないでください。プレビューと完成品は2つの異なるレンダリングパスであり、 検収で確認すべきはそれらが一致するかどうかです。プレビューの画像を完成品の証拠として使用することは、 検証すべきことを前提としてしまうことになります。

ズームインの判定には判別可能なランドマークを見つける必要があります。全体的な印象は誤解を招く可能性があります (2026-07-29 に実際に遭遇しました):1.6倍ズームイン後の画面ページは依然として「1ページ全体」のように見え、サムネイルでは 全体図とほとんど違いがありません。正しいズームインフレームを「ズームインが欠落している」と誤判定し、30分無駄に追跡し、 2回再エクスポートしました。正しい判定方法は、クロッピングによってのみ発生する証拠を見つけることです: 半分に切り取られた要素(バブルの途中で切れている)、消えたエッジ要素(サイドバー、タイトルバー)。 ソース映像の同じ時刻のフレームと比較すれば、一目で判定できます。

フレーム抽出には ffmpeg を使用します:

ffmpeg -v error -ss 8.84 -i 完成品.mp4 -frames:v 1 -y frame.png

問題が発生した場合の調査方法

--keep-work を使用すると、プロジェクトの .chengfeng-videocut/export/ ディレクトリに3つのアイテムが残り、 「どの半分が間違っているか」を直接分離します:

assembled.mkv    カットのみ。オーバーレイは一切なし。これが間違い = 台帳またはセグメントカットの誤り
overlay/*.png    オーバーレイのみ。透明背景。これが間違い = 字幕スタイルまたはモジュールの誤り
spans/*.mp4      合成後のセグメント。これが間違い = ズームインまたはアライメントの誤り

対応表:

完成品に字幕/アニメーションがない        overlay PNG はすべて透明か?モジュールが seek に応答しなかったか?
アニメーションが最初のフレームで停止している    モジュールが seek を実装していないか、GSAP タイムラインが paused になっていない
画面全体が白い                 モジュールに `:root { color-scheme: dark }` がない
ズームインのフレームが歪んでいる          モジュールの viewBox とレイヤーの zoom が同じ数値セットではない
完成品が計画より短い                あるスパンのフレーム数が不足している。compose フェーズのエラーを確認
レイヤー境界で元の映像が一瞬表示される    overlay スクリーンショットが古い(フレームマーク検証が無効)。製品はページ上部の
                                      フレームマークバーで各スクリーンショットがどのフレームに属するかを証明する。再発した場合は、まず
                                      overlay PNG の上部にマークバーがあること、compose がそれをクロッピングすること(crop)を確認
Chrome が見つからない            Google Chrome をインストールする。別のレンダリングパスに変更しないこと

禁止事項

  • 「エクスポート成功」を「検収合格」と言わないこと。コマンドが正常に戻ったことは製品が自分自身と一致したことを意味するだけで、画面の一致を意味しない
  • プレビュースクリーンショット、DOM、ログを完成品のフレーム抽出の代わりに使用しないこと
  • 誰も聞いていないのに human listening PASS と報告しないこと
  • エクスポートを通すためにプロジェクトファイルを変更しないこと(字幕の変更、レイヤーの削除、台帳の操作)。エクスポートは読み取り専用であり、書き込まない
  • エクスポートで上流の作業を代行しないこと:字幕がないなら字幕を書き、ビジュアルがないならビジュアルを作成する。このセクションで一時的にごまかさないこと

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

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

Agentchengfeng/chengfeng-videocut-skills

给剪好的口播做字幕:直接用已有的逐词稿加账本算出剪后时间(不必导出、不必重新转录)、用词典和作者文稿改写听错的专名、按句子分屏、在 Studio 里逐屏复核。用户说做字幕、加字幕、改字幕、重新分屏、字幕不对时使用。不要用于删词剪辑、物理剪切、分镜动画或成片渲染。

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 时使用。不要用于删词剪辑、字幕、物理剪切或成片渲染。

関連スキル