video-editing (ルーター)
実行するのは、小規模で単一目的のスクリプトとそのJSON出力を読むことです。動画自体を見ることはありません。判断ポイントでのみフレーム(証明写真、フル解像度静止画)を確認します。
どのスキルを使うか
| ユーザーが望むこと | スキル |
|---|---|
| 長い録画をクリップに分割、カットポイントを提案、不要なリーディンを除去 | auto-cut |
| フック/タイトル/「POV:」テキストを動画に重ねる | hook-overlay |
| 字幕、キャプション、トランスクリプト、単語を尊重したカット | captions |
| ラウドネス修正、無音除去、きれいな結合、クロスフェード | audio-polish |
| シームレスループ、GIF、ミームGIF、ステッカー | loops-gifs-stickers |
| レンダリングがOKか確認、コンタクトシート、承認ステップ | render-qc |
| 動画をYouTubeに公開 | youtube-publish |
デフォルトパイプライン(生の画面収録から公開Shortまで)
auto-cut -> hook-overlay -> captions -> audio-polish -> render-qc -> youtube-publish
提案、 Plate PNG + 文字起こし、 無音トリミング、 検証、 ドライラン、
承認、 オーバーレイ ASS、焼き込み loudnorm 証明写真、 アップロード非公開、
分割、トリミング (最後の視覚的工程) (最後の音声工程) ユーザー承認 台帳
すべてのジョブがすべてのステップを必要とするわけではありません。音楽クリップはキャプションをスキップし、GIFは公開をスキップします。目標が不明な場合は質問し、そうでなければ計画を提示して実行します。
ハードルール(全スキル共通)
- オリジナルには決して触れない。 出力はソースの隣の
edit/に配置されます(スクリプトはデフォルトでこの動作をします)。 - 計画してからカットする。 破壊的または時間のかかるステップの前に、カットポイント/フック/設定を提案し、ユーザーの承認を得てください。
- 単語の途中でカットしない。 音声の場合、カットは単語間のギャップにスナップします(
captions/snap-to-words)。 - すべての音声カットには約30msのフェードを入れる。 クリックノイズは非ゼロサンプルでのカットから発生します。
- クリップはコンテンツから始める。 黒フレーム、ローディング画面、前の画面の尻尾は含めません(
auto-cut/trim-lead、render-qcでチェック)。 - テキストはセーフゾーン内に配置する。 フックプレートは上部エリア、最大2行。キャプションは下部のプラットフォームUIより上に。何も重ならないようにします。
- 順序が重要。 カット → オーバーレイ → キャプション(最後の視覚的工程)→ ラウドネス(最後の音声工程)→ QC。
- すべての最終レンダリングをQCする。
render-qc/verify-renderを使用し、ユーザーに証明写真または実際のMP4を表示します。ダウンスケールされたプレビューで判断してはいけません。 - 承認は人間が行う。 この会話内でユーザーが明示的に言わない限り、
--approvedや--allow-publicを渡してはいけません。 - シークレットはgitやログから除外する。 OAuthクライアントやトークンは環境変数またはgitignoreされたファイルに保存し、決して表示してはいけません。
- 手書きのffmpegコマンドよりも、スクリプトを異なるフラグで再実行することを推奨する。 すべてのスクリプトは
--helpと--help --jsonに応答します。
セットアップ確認
ffmpeg -version && ffprobe -version # 必須(任意の最近のビルド、drawtextは不要)
node --version # >= 18
npm install # 一度だけ、リポジトリルートで(sharpをインストール)
python3 -m pip install faster-whisper # captions/transcribe.py のみに必要
ffmpegがPATHにない場合は、FFMPEG_PATH と FFPROBE_PATH を設定してください。
スタイルパック
brands/example.json には、キャンバスサイズ、フォント、色、フックプレートのジオメトリ、キャプションスタイルが格納されています。チャンネルやブランドごとにコピーし、--brand brands/<name>.json で指定します。システムフォントまたはオープンライセンスフォント(--font-file)を使用し、商用フォントは絶対にコミットしないでください。