Communitygithub.com

lokeshrana9999/agent-demo-film

プロジェクトのナレーション付きデモ動画を作成します。実際の画面キャプチャと発言が一致した、リアルなデモ映像を生成します。

agent-demo-film とは?

このスキルは、開発者がプロジェクトのナレーション付きデモ動画を制作するためのエンドツーエンドのワークフローを提供します。特徴は、画面上の映像と話者の発言を完全に同期させる点です。Playwright によるブラウザ操作、`claude -p` によるエージェントの動作、ターミナル操作など、実際の動作をキャプチャし、それに基づいて台本を作成します。話者は一度だけ台本を読み、その録画を元に、スキルが自動でトランスクリプション、不要な部分のカット、セクション分割、キュープラン生成、動画ビルドを行います。対応プラットフォームは、Claude Code や Codex などのエージェンツール向けに設計されていますが、Playwright を使うことで任意のWebアプリにも対応可能です。パイプラインは prep(準備)→ capture(キャプチャ)→ script(台本)→ record(録画)→ cut(編集)→ cue plan(キュープラン)→ build(ビルド)→ verify(検証)の8段階で構成され、各段階で Sonnet、Haiku、Opus といったモデルを適切にルーティングして処理を効率化します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/lokeshrana9999/agent-demo-film/tree/HEAD/skills/agent-demo-film

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

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

ドキュメント

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 を読んでください。

  1. 各テイクをローカルでトランスクライブ:npx hyperframes transcribe <take> --engine parakeet
  2. 単語に番号を付け、実際の無音部分でトリミング:python scripts/words.py transcript.json <take> vo --media <take>
  3. フレーズリストと台本を Sonnet エージェントに渡します(assets/SPLIT-BRIEF.md)。エージェントは edl.json を作成します:セクションごとに保持する単語範囲、削除するフィラーや言い間違え、事実がサポートしない行。
  4. カット前に、繰り返された行やフラグが立てられた主張について話者に確認します。
  5. ウェブカメラをフレーミング:Haiku エージェントが、サンプリングされたフレームからすべてのテイクにわたって頭と肩を収める1つのクロップを選択するか、代わりに背景をぼかします(scripts/blur_bg.py)。
  6. カット:python scripts/cut.py edl.json により、vo.wav、cam.mp4、timeline.json、およびセクションごとの単語ファイルが作成されます。リップシンクは、同じフレームグリッド上でオーディオとビデオがトリミングされるため維持されます。

6. cue plan

各セクションに対して1つの Haiku エージェント(assets/CUE-BRIEF.md)が、セクションのタイムドワードを字幕、キュー(どのビジュアルがどの単語に着地するか、そのソース付き)、およびフラッシュに変換します。その後:

  1. python scripts/cues.py cut が各セクションファイルをカットに対してチェックし、film.json にマージします。エラーがあれば、そのセクションを作成したエージェントに送り返します。
  2. 話者向けのキュープランを作成します(examples/samatva-support/CUE-plan.md に形状の例があります):セクションレイアウト、行ごとのビジュアル、オーディオ編集、および話者だけが決定できる事項。承認を待ちます。

字幕ルール:正しい単語を表示します。トランスクライバーの聞き間違いは黙って修正します。実際の言い間違いは、言われた内容の代わりに正しい単語を *(word) としてマークします。聞き取りにくい名前、数字、用語は、字幕の上に大きくフラッシュ表示します。

7. build

references/hyperframes.md を読んでください。assets/build_film.py をフィルムフォルダにコピーします。現状では、film.json からアニマティックを構築します:各キューはその単語にテキストを、セクションごとにウェブカメラのインセット、字幕、フラッシュを表示します。タイミングに疑問がある場合は、まずこれをレンダリングします。その後、各セクションの本体を実際のビジュアルに置き換えます:キュー時間に合わせてカットされた映像、各部分が名前付けられるたびに構築される図、およびソースのカード。

8. verify

references/verify.md を読んでください。順番に:

  1. npx hyperframes check --json をエラーが0になるまで実行します。
  2. 各キュー時間でスナップショットを撮り(ビルダーが cues.json を作成します)、Haiku エージェントにそれらのフレームをキュープランと照合し、秘密情報の漏洩がないかチェックさせます。
  3. 画面上のテキストをスクリプトによってソースと比較します。
  4. 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 映像。

関連スキル