agent-demo-film は何をしますか?
デモ動画は、画面上の映像が実際のものであり、話者の発言と一致している場合にのみ送る価値があります。このスキルは、話者が一度台本をカメラに向かって読むという1つのタスクだけを実行するように促します。エージェントが残りの作業(リサーチ、映像、台本、編集、ビルド)をすべて行います。
1 prep ─> 2 capture ─> 3 script ─(承認)─> 4 record (話者) ─> 5 cut ─> 6 cue plan ─(承認)─> 7 build ─> 8 verify ─> MP4
各プロジェクトには異なる映像と異なるストーリーが必要です。これらはプロジェクト自体から導き出します。examples/ には2つの実際の実行例が示されています:ナレーション付き製品ウォークスルーと、エージェントスキルの with/without 映像です。リクエストに近い方を先に読んでから計画を立ててください。
原則
- 実際の映像のみ。 画面上のすべてのアプリ画面、エージェントの応答、数字、ログは、キャプチャまたはファイルから取得され、スクリプトによってコピーされ、決して再入力されません。キャプチャにない行を表示したい場合、その動画はそれを表示できません。
- 画面は音声に従う。 各ビジュアルは、それを名付ける単語に合わせて配置されます。ビルド内のすべてのタイミングはカット内の単語 ID から取得されるため、再カットするとビジュアルが音声とともに移動します。
- 言葉とソース以上のものを主張しない。 事実リスト(各事実の出典ファイルを含む)と「主張しない」リストを保持します。研究の引用はすべて論文自体と照合します(Crossref:
https://api.crossref.org/works/<doi>)。 - 合成入力。 ユーザー、チャット、データはすべて作成されたものです。実際の名前やトランスクリプトは使用しません。映像内の秘密や電話番号はマスクし、キーを決して印刷しません。サインイン手順では、記録されていないコンテキストで env ファイルからキーを読み取ります。
- すべてのテイクを保持する。 スクリプトはキャプチャまたはカットソースの上書きを拒否します。生録画は話者が配置した場所にそのまま残り、削除するかどうかは話者の判断に委ねられます。
- 話者は2回承認する: 録画前のアウトラインと台本、およびビルド前のキュープラン。台本の文言に関するメモは数ラウンド行われることを想定しています。それがこのフェーズの目的です。
モデルルーティング
作業の大部分はサブエージェントで実行し、メインセッションでは決定事項を保持します。話者が特定のステップにモデルを指定した場合、そのモデルを使用します。
| 作業 | モデル |
|---|---|
| テキストの一括読み取りとリサーチ:リポジトリのファクトシート、トピックリサーチ、テイクの編集リストへの分割、台本のAIらしさのチェック | Sonnet |
| ビデオまたはフレームを読み取るもの:クロップフレーミング、レンダリング後のフレームチェック、映像内の秘密のチェック、セクションごとのキュー処理(1セクションにつき1エージェント) | Haiku |
| パイプラインに不足している新しいツールの構築(例:カスタムレコーダー) | Opus |
| アウトライン、台本、キュープラン、および話者が承認する必要があるすべての呼び出し | メインセッション |
Haiku と Sonnet は音声を聞くことができません。単語のタイミングはトランスクリプション(ステップ5)からのみ取得されます。
1. prep
references/prep.md を読んでください。並行して、Sonnet エージェントがリポジトリからファクトシート(機能、実際の数値とそのソースファイル、画面に表示しない既知の癖)を作成し、Sonnet エージェントがストーリーの基礎となるトピックをリサーチします。その後、アウトラインを作成します:各セクションの目標秒数、各セクションの画面上の内容、必要な映像、事実リスト、および「主張しない」リスト。
2. capture
references/capture.md を読んでください。プロジェクトに適したキャプチャ方法を選択します:Webアプリには Playwright、claude -p によるエージェント動作には scripts/run_take.sh、CLI にはターミナルレコーダー、ライブページにはスクロール。各テイクはそのマーク(送信、応答、スクロール停止)をタイムスタンプとともに記録するため、ビルドは映像を音声に合わせてカットできます。Haiku エージェントが各テイクのフレームをチェックします。
3. script
references/script.md を読んでください。話者のダイアログのみを、アウトラインに一致する ## N. title セクションで、1回の収録で約150語/分の速度で記述します。話者の口調での平易な話し言葉:マーケティングの誇張やAIらしさは一切排除します。台本を録画ガイドとともに表示し、承認を待ちます。
4. record
話者はウェブカメラとマイクを同時に使用して1つのファイルを録画します(OBS、カメラアプリ、またはスマートフォン)。間違いや言い直しは問題ありません。カットは最後の完全なバージョンを採用します。複数ファイル(セクションごと、または後で録画した差し替え行)でも機能します。
5. cut
references/cut.md を読んでください。
- 各テイクをローカルでトランスクライブ:
npx hyperframes transcribe <take> --engine parakeet - 単語に番号を付け、実際の無音部分でトリミング:
python scripts/words.py transcript.json <take> vo --media <take> - フレーズリストと台本を Sonnet エージェントに渡します(
assets/SPLIT-BRIEF.md)。エージェントはedl.jsonを作成します:セクションごとに保持する単語範囲、削除するフィラーや言い間違え、事実がサポートしない行。 - カット前に、繰り返された行やフラグが立てられた主張について話者に確認します。
- ウェブカメラをフレーミング:Haiku エージェントが、サンプリングされたフレームからすべてのテイクにわたって頭と肩を収める1つのクロップを選択するか、代わりに背景をぼかします(
scripts/blur_bg.py)。 - カット:
python scripts/cut.py edl.jsonにより、vo.wav、cam.mp4、timeline.json、およびセクションごとの単語ファイルが作成されます。リップシンクは、同じフレームグリッド上でオーディオとビデオがトリミングされるため維持されます。
6. cue plan
各セクションに対して1つの Haiku エージェント(assets/CUE-BRIEF.md)が、セクションのタイムドワードを字幕、キュー(どのビジュアルがどの単語に着地するか、そのソース付き)、およびフラッシュに変換します。その後:
python scripts/cues.py cutが各セクションファイルをカットに対してチェックし、film.jsonにマージします。エラーがあれば、そのセクションを作成したエージェントに送り返します。- 話者向けのキュープランを作成します(
examples/samatva-support/CUE-plan.mdに形状の例があります):セクションレイアウト、行ごとのビジュアル、オーディオ編集、および話者だけが決定できる事項。承認を待ちます。
字幕ルール:正しい単語を表示します。トランスクライバーの聞き間違いは黙って修正します。実際の言い間違いは、言われた内容の代わりに正しい単語を *(word) としてマークします。聞き取りにくい名前、数字、用語は、字幕の上に大きくフラッシュ表示します。
7. build
references/hyperframes.md を読んでください。assets/build_film.py をフィルムフォルダにコピーします。現状では、film.json からアニマティックを構築します:各キューはその単語にテキストを、セクションごとにウェブカメラのインセット、字幕、フラッシュを表示します。タイミングに疑問がある場合は、まずこれをレンダリングします。その後、各セクションの本体を実際のビジュアルに置き換えます:キュー時間に合わせてカットされた映像、各部分が名前付けられるたびに構築される図、およびソースのカード。
8. verify
references/verify.md を読んでください。順番に:
npx hyperframes check --jsonをエラーが0になるまで実行します。- 各キュー時間でスナップショットを撮り(ビルダーが
cues.jsonを作成します)、Haiku エージェントにそれらのフレームをキュープランと照合し、秘密情報の漏洩がないかチェックさせます。 - 画面上のテキストをスクリプトによってソースと比較します。
- 1080pマスターと720pレビューコピーをレンダリングします。
次にレビューコピーを送信します。話者が瞬間を指定した場合(「1:23で私は…と言っています」)、差し替え録画またはキュー変更で修正し、変更されたフレームのみを再度検証します。
ファイル
scripts/words.py:トランスクリプトから番号付き単語とフレーズリストへの変換、実際の無音でトリミング。scripts/cut.py:編集リストからvo.wav、cam.mp4、timeline.jsonへの変換、フレームグリッド上で同期。scripts/cues.py:キューエージェントのセクションファイルをチェックし、film.jsonにマージ。scripts/blur_bg.py:ウェブカメラ用ローカル背景ぼかし(RobustVideoMatting、CPU)。scripts/run_take.sh、scripts/grade.py:エージェント動作の実際のclaude -pテイクとその評価。assets/build_film.py:出発点となるビルダー(アニマティック、ウェブカメラ、字幕、フラッシュ)。assets/edl.example.json、assets/SPLIT-BRIEF.md、assets/CUE-BRIEF.md:編集リスト形式と2つのエージェント用ブリーフ。references/:prep、capture、script、cut、hyperframes、verify。examples/samatva-support/:3つのテイクからなる2分19秒のナレーション付き製品ウォークスルー。examples/samatva-vent/:実際のclaude -pテイクから構築された、エージェントスキルの短いサイレント with/without 映像。