リール編集スタイル
あなたはナレーションを、計測された編集スタイルに合わせた編集に変換します。フレーム数まで正確に指定します。各プリセットは実際のリールを1フレームずつ解析して作られているため、「見た目が良い」という直感ではなく、その数値に従ってください。発見されたいくつかの点は直感に反します。Editorial Argument の「キネティック」タイプにはアニメーションが一切なく、Flash Tutorial のフラッシュは完全な白にはなりません。
プリセットの選択
| Flash Tutorial | Editorial Argument | |
|---|---|---|
| 使用場面 | ハウツー、VFX、または結果を示すツールのデモ | 視覚的な証拠を伴う意見や解説 |
| fps | 30 | 24 |
| 約75秒間のショット数 | 38(中央値 1.60 秒) | 59(中央値 0.58 秒) |
| テキスト | 固定された1行のキャプション、変更なし | モノクロピルまたはセリフスタック、両方は使わない |
| 主な動き | フラッシュトランジション、マイクロスライド、スローズーム | ほとんどなし。エネルギーはタイミングから生まれる |
| トランジション | 11回の段階的カラーフラッシュ、それ以外はハードカット | ハードカット、最大2回の7フレームフラッシュ |
| 必要な素材 | トーキングヘッド、固定カメラの合成ショット、スクリーンレコーディング | トーキングヘッド、オプションの切り抜き、多数のポスターまたは静止画、AIクリップ |
| 仕様 | references/preset-flash-tutorial.md | references/preset-editorial-argument.md |
ユーザーがプリセットを指定しない場合は、この表から一つを推奨し、その理由を一行で説明してください。選択したプリセットのみを読んでください。breakdown-*.md ファイルが存在する場合、プリセットに記載されていない詳細(正確な座標やショットリスト全体など)が必要なときに参照してください。これらは公開リポジトリには含まれていません。参照元のクリエイターの発言を引用しているためです。
ワークフロー
1. 入力の収集
- ナレーションまたはスクリプト。 編集は単語のタイミングに依存するため、可能であれば録音された音声を入手してください。スクリプトのみの場合は、推定タイミング(Flash Tutorial は197 WPM、Editorial Argument は224 WPM)でドラフト計画を作成します。その計画は暫定版であることを明記してください。
- 素材の一覧。 存在する素材と、プリセットが必要とするものをリストアップします。Flash Tutorial では、最初の2秒間に実際の成果を示すショットが必要です。Editorial Argument では多くの静止画が必要です。74秒の参考リールでは、36枚のフルフレームポスターと、さらに11枚がコラージュで使用されていました。
- ビルドターゲット。 Remotion または After Effects。
2. 単語のタイミングを取得
python3 <skill-dir>/scripts/transcribe_words.py <audio> <outdir>
これには mlx-whisper(Apple Silicon 必須)が必要で、words.json を出力します。その他のスクリプトには numpy と pillow が必要で、ffmpeg が PATH に含まれている必要があります。これら3つがすべて入った仮想環境が最も簡単です。Whisper は名前や専門用語を聞き間違え、ファイルの末尾にテキストをでっち上げることがあるため、スクリプトと照らし合わせてトランスクリプトを読み、計画を立てる前に修正してください。
3. 編集計画を作成
edit-plan.md に、ショットごとに1行で以下を記述します。
タイムスタンプ | 継続時間 | 画面に表示されるもの | テキスト/キャプション | モーション | トランジション | サウンド
以下の順序で作業してください。各ステップは前のステップに依存します。
- セクション: スクリプトをプリセットのセクションマップにマッピングします。
- テキスト: すべての単語をプリセットのルールに従ってキャプションに分割します。各キャプションは、その最初の単語の開始から約3フレーム後に表示されるようにタイミングを調整します。
- 画像: 各セクションにショットを割り当て、プリセットのショット長とレイアウトを使用します。
- モーション: フラッシュ、ズーム、レシピを配置します。単語の隙間と照らし合わせて確認します。
- サウンド: プリセットのテーブルから SFX を配置します。
ビルドする前に計画をユーザーに表示してください。 計画の変更は安価です。レンダリングの変更はそうではありません。
4. ビルド
- プリセットの定数を正確にコピーします。そこでのフレーム番号はイベントを基準とした相対値であるため、新しいナレーションに合わせて再タイミングします。
- 段階的なテーブルはそのまま維持します。フレームごとの値のテーブルをスムーズなカーブにしないでください。段階的な変化もルックの一部です。
- プリセットの fps を使用します。そのフレーム数はそのフレームレートでのみ有効です。
- キャプションとピルをズームやブラーレイヤーから遠ざけてください。
Remotion: ショットリストを基に、ショットごとに1つの <Sequence> を使用します。テキストは <Sequence from={onFrame}> 内のプレーンな要素で、プリセットで指定されていない限り interpolate は使用しません。モーションブラーには @remotion/motion-blur を使用します。フレームごとのテーブルは frame - start をインデックスとする配列です。
After Effects: プリセットで指定されていない限り、アニメーターのないテキストレイヤーを使用します。フラッシュテーブルはイーズドキーフレームではなく、ホールドキーフレームとして設定します。
5. リファレンスと照合
レンダリング結果をプリセットのターゲットテーブルと比較します。
python3 <skill-dir>/scripts/video_metrics.py <render.mp4> <outdir>
python3 <skill-dir>/scripts/sheet.py <render.mp4> <outdir>/first5s --range 0 4.75 0.25 --cols 7 --rows 3 --thumb 220
シートをプリセットの説明と並べて見てください。検出器は過剰にカウントします。フラッシュフレームや高速モーションはカットとして表示されるため、cuts.txt を目視で確認してください。確認した内容を報告し、比較できなかった項目があればその旨を伝えてください。
正直であるために
- 各プリセットは1つのリールから来ています。 その数値を、そのリールの選択として扱い、クリエイターのスタイル全体の証明として扱わないでください。ユーザーがそれらに大きく依存している場合は、その旨を伝えてください。
- 「(推定)」や「(不明)」のラベルは引き継ぎます。 決定がそれらに基づく場合は、計画にそのまま残してください。
- サウンドの正体は聞き取れていません。 配置とタイミングは測定されましたが、「ブーン」や「クリック」といった言葉は波形を説明するものです。SFX の選択はユーザーに耳で判断してもらってください。
- フォントは近似値です。 Flash Tutorial のキャプションフォントと Editorial Argument のローマンセリフは特定されていません。コミットする前にレンダリングサンプルをユーザーに見せ、商用利用のためのフォントライセンスを確認してください。
テクニックを、コンテンツではなく使う
ユーザー自身の映像、画像、サウンドでスタイルを再構築してください。参照元のクリエイターのクリップ、ポスター、Firefly フレーム、その他のアセットを再利用しないでください。Editorial Argument のオープニングは別のクリエイターのクリップを使用しているため、ユーザーがその手法を再利用する際には、防御可能な理由と権利があることを確認してください。
新しいスタイルの追加
別のリールを分析するには、references/analyze-reference.md を読み、その後 preset-<name>.md を追加し、上記のテーブルに行を追加してください。
ファイル
references/preset-flash-tutorial.md、references/preset-editorial-argument.md: ビルドの元となる仕様。references/breakdown-dope-motions.md、references/breakdown-ashokreddyai.md(ローカルコピーのみ、公開されていません): 完全な証拠、ショットごとのテーブル、すべてのトランジション、未解決の質問。記載されているパス(ashok/analysis/など)は作業ファイルであり、含まれていません。references/analyze-reference.md: 新しいリールの分析方法。scripts/:transcribe_words.py、video_metrics.py、audio_events.py、sheet.py、probe_frame.py。