プレミアムフィルム
ブランドガイドラインに従い、確認済みの事実のみを使用し、プロフェッショナルな見た目とサウンドの動画をコードで制作します。以下の「オーナー」とは、あなたがフィルムを制作する相手であり、多くの場合クライアントからのフィードバックを伝える役割を持ちます。例は実際のクライアントフィルムから引用しています(case-studies.md)。
基準は「プレミアムで、洗練されていて…ピクセルパーフェクト」です。オーナーの言葉で失敗例を挙げると:「これらのピルは安っぽく見える」「かなり基本的…単にスクリプトをなぞっているだけ」「トランジションがすごく変」「速すぎて読めない」「奇妙にドロップする」「声が若すぎる」「画像がすごく偽物に見える」「無音状態からの突然の爆音はやりすぎ」。
ルール
- 何よりも正確な情報を最優先。 あらゆる事実、名前、肩書き、数字、日付、引用、ロゴ、発音は、スクリーンに表示したりナレーションで使用する前に一次情報源と照合し、何かが変更された場合は再度確認します。決して invent(創作)したり推測したりせず、情報源がない場合は確認するか質問します。公式の肩書きはそのままコピーし、ロゴはオーナー自身のファイルからのみ使用し、実在の組織には実際の写真(全身、後光なし、生成された顔なし)を使用します。製品デモでは、明らかに架空のデータ(存在しないドメイン、ドキュメント用IP、考案された名前)のみを使用します。誤った主張が一つあるだけで、フィルムの他のすべての要素が台無しになります。
- すべてのコンポーネントをプレミアムに。 タイポグラフィ、カード、アイコン、UI、チャート、トランジション、照明、声、音楽、サウンドのそれぞれが、このフィルムのためにハイエンドな基準でデザインされています。ストック、テンプレート、「十分に良い」ものは一切使用しません。すべてのアイデアは、ネガティブスペースを活用した大規模で目的に合わせたモーションピースとして構築します。実際のスクリーンショットやスクリーンレコーディングは、カメラがその上を移動していても「安っぽく」見えます。ピルラベル、番号付きチップ、追跡された大文字タグ、ドットで結合されたメタデータは使用しません。生成画像はプレートやアセットとしてのみ使用し、100%で確認します。
- 奥行き、光、動くカメラ—そしてフルフレーム。 フラットなレイアウト(テキスト左、カード右、無地の背景)は「退屈」に見えます。ヒーローモーメントには、照明が設定されたセットが必要です:反射する床、3Dで回転するオブジェクト、移動する光、空中のほこり、決して完全には止まらないカメラ。すべてのフレームがポスターとして機能する必要があります:奥行きのレイヤー、光源、フレームを埋めるヒーロー(スマートフォンで読めるテキスト)、暗い空白の中の小さな要素であってはなりません。ブリーフの箇条書きは最低限であり、デザインのすべてではありません。
- すべてのトランジションは実際の動きであること。 カメラの動き、光、またはあるシーンから次のシーンへ移動する要素。フラットな白いフラッシュやポップインは決して使用せず、ヒットには数フレームのアタックを付けます。
- 読みやすく、一定のペース。 見出しは2秒以上、結果はそのラインの後3秒以上表示します。リストは一度に1項目ずつ表示します。チャプター全体でエネルギーは一定に保ちます。尺に合わせてコンテンツを詰め込まないでください。
- ナレーションは神聖なもの。 タイムストレッチしたり、ポーズを詰めたりしないでください:代わりに言葉を削除して再録音します。ラインの間で呼吸し、チャプターの変わり目では少し長めに間を取ります。各チャプターは、前のチャプターにリンクするラインで始まります。フィルム全体とすべてのパッチで、言語ごとに1つの声と1つのモデルを使用します。オーナーが耳で選べるようにします。
- 音楽は着地し、運び続ける。 解決は視覚的なクライマックスと正確に一致し、音楽は次のラインの下でも流れ続けます。絵がピークに達したときに音楽が途切れることはなく、ハードカットでピースを切り替えることもなく、最後は控えめに終わります。
- 編集者のように検証する。 あなたはフィルムを見たり聞いたりできないので、自分の感覚の代わりをします:すべての言語のすべてのシーンのコンタクトシート、すべてのトランジションのフレームストリップ、すべてのテキストモーメントのフルサイズ静止画、自動グリッチおよびオーディオスキャン、ラインごとのラウドネス、そしてアクションを起こす前にフレームで確認したクレームを含むAIレビュー。この方法でチェックされていないカットは完了していません。
- ループを所有し、平易に報告する。 適切なデフォルトを決定し、何を決定したかを伝えます。自分のコントロールの及ばないもの(不足している写真、キー、お金)についてのみ質問します。ファイル名やコード名を使わずに報告します:何が変更されたか、何がチェックされたか、何がチェックされなかったか、ファイルがどこにあるか、どれを送信すべきか。
完全なテイストガイドと各ルールの理由は、quality-bar.mdにあります。デザインを始める前に読んでください。
制作するもの
まずフィルムタイプを選択します。それによって形状が決まります(詳細とタイミングはcase-studies.mdを参照):
| タイプ | 標準尺 | ナレーション | 画像 |
|---|---|---|---|
| 製品紹介 | 60~100秒、言語ごとに1カット | 通常なし;画面上のライン、オプションでキャプション | 製品の主要アイデアをカスタムデザインしたモーションピース;架空データのみ |
| ブランド/組織フィルム | 2~4分、マスター言語+他のカット | 1人のナレーター | 組織の実際の写真、人物、イベント+モーションデザイン;すべての主張を事実確認 |
| イベント/カンファレンスオープナー | 1.5~3分、クライアントのスクリプト | 深く力強い | シネマティックな3Dセット、奥行き再構築された写真、公式の名前とロゴ、イベントタイトルで着地するクライマックス |
| ティーザー/ショートプロモ | 15~45秒 | ビートごとに1つの短いライン、またはなし | 3つのビートで一つのアイデア:フック、ターン(ヒーローモーメント)、名前 |
すべてのタイプで機械は同じです:Remotion (React) が1080p60で映像をレンダリングします。1つのタイムラインファイルが映像、ナレーション、音楽、キャプションを駆動します。Docker内のPythonがナレーション、スコア、サウンド、ミックスを生成します。測定とAIレビューが結果をチェックします。リリーススクリプトがチャンクでレンダリングし、成果物をパッケージ化します。
開始:利用可能なものを確認する
新しいプロジェクトで tools/setup.sh を実行します。最後に tools/providers.py が実行され、.env 内のキーを確認し(決して印刷しません)、各サービスが現在提供しているものを尋ね、ジョブごとに最適なものを選択します:映像と音声のレビューには最新のGemini Flash、声のオーディション(ElevenLabsとGemini TTS)、プレートには最新のGPT Image。OpenRouterが推奨されます(1つのキーで多くのモデル、可視の支出制限)。無料のGemini APIキーだけでもナレーションとレビューをカバーできます。キーがなくても、フィルムはデザインされたタイポグラフィ、作曲された音楽、すべてのチェック、リリースを取得します。キーがないと品質が低下する場合は、その人に一度尋ねてください。文言、フォールバック、およびお金のルールはproviders.mdにあります。これらのドキュメントのモデル名よりも、ツールの現在の選択を信頼してください。
ワークフロー
新しいフィルムではフェーズを順番に実行します。修正の場合は、フィードバックが影響するフェーズにジャンプし、その後レビューとリリースを再度実行します。このチェックリストをノートにコピーしてチェックを入れていきます:
フィルム進捗:
- [ ] 0 セットアップ:ツールが利用可能、キーが確認済み、予算が合意済み
- [ ] 1 インテーク:ブリーフの引用、ブランドファイル、成果物の合意、マシンの確認
- [ ] 2 事実:すべての主張に情報源とステータスがあるファクトシート、回避リスト
- [ ] 3 スクリプト:言語の設定、タイムライン内のナレーション、すべての言語のすべての画面上の単語
- [ ] 4 ストーリーボード:チャプターごとに1つのアイデア、ハンドオフの計画、1つのルックサンプルの提示
- [ ] 5 構築:キューからのシーン、すべての言語で静止画をチェック
- [ ] 6 ナレーション:声のオーディションとロック、すべてのラインのカット確認、クリーニング、測定
- [ ] 7 サウンド:スコア、エフェクト、ミックス(すべてのラインで声≥音楽より6 dB)
- [ ] 8 レビュー:シート、ストリップ、スキャン、AIレビュー;すべての発見を修正または説明;事実を再確認
- [ ] 9 リリース:出力の検証、zipのテスト、配信状態のコミット、オーナーにどこに何を送るかを伝える
1. インテーク
- オーナーが送信したすべてのもの(ブリーフ、スクリプト、レポートPDF、チャットのスクリーンショット、以前のフィルム)を読みます。彼らの言葉をラウンドログとともに
docs/brief.mdに引用します。必須の文言と公式の名前をメモします。 - 情報源からブランドの真実を収集します:公式ロゴファイル、サイトのCSSまたはブランドPDFからのパレット、フィルムのすべての言語(アクセント、発音区別符号、他のスクリプト)をカバーするフォント、各言語の製品名とUIの文言。
- 言語と成果物を事前に確定します(言語ごとのマスター、キャプション付きカット、.srt、サムネイル、zip)。オーナーが以前のラウンドから既にパッケージを持っている場合は、それを完全にミラーリングします。
- マシンを確認します:空きディスク、Dockerの実行、同じフィルム上の他のレンダリングやセッション(2つのエージェントが1つのフィルムで互いの作業を上書きしました。見つけたら停止して、誰が所有しているか尋ねてください)。
2. 調査と事実
- 実際の情報源を読みます:
tools/webpage.sh <url> <name>は実際のブラウザでページをレンダリングし、そのテキストとスクリーンショットを保存します。サイトがダウンしている場合は、推測する代わりに story-and-research.md のフォールバックリスト(アーカイブコピー、他の公開情報源、次にオーナー)に従います。 - ブリーフとともにstory-and-research.mdにあるリサーチサブエージェントを実行します:すべての事実に日付の入った情報源とステータス(VERIFIED / SINGLE-SOURCE / SELF-REPORTED / UNVERIFIED / OWNER-STATED)、および回避リストが付けられます。製品フィルムの場合:実際の製品のコードと文言を読み、画面上のすべてのラベル、番号、フローが製品に存在することを確認します。
docs/factsheet.mdを書きます。ステータスがない限り、何も画面に表示したりナレーションに含めたりしてはなりません。自己申告の数値は帰属表示されます。
3. ストーリーとスクリプト
- フィルムタイプに適した構造を選び、ナレーションを1つの話される作品として書きます:各チャプターの変わり目でリンクするライン、文に折りたたまれたリスト、話されるように書かれた数字。各言語は翻訳としてではなく、ネイティブで書きます。話さない言語の名前を声に言わせないでください — 名前を表示し、役割で人を紹介します。
- ラインを
src/film/timeline.tsに配置し、キャプション区切りは「 | 」でマークします(そして、フィルムがデザインされたタイプとして表示するラインではonScreen: trueを設定し、字幕が脇にそれるようにします)。また、すべての画面上の単語をすべての言語でsrc/film/script.tsに入れます(そのLANGSリストがフィルムの言語を設定します。最初のものがマスターです)。
4. ルックとストーリーボード
- チャプターごとに1つのアイデアがあり、それぞれ独自のビジュアルコンセプト、ヒーローモーメント、隣のチャプターに何かを渡す入口と出口を持ちます。それを
docs/storyboard.mdに書き留めます。 - 実際の3D、奥行き再構築された写真、または生成されたプレートが効果を発揮する場所を決定します(remotion-craft.md)。全体を構築する前に、ルックを変更するものについては、代表的なフレームまたはクリップを1つ表示します。
5. 構築
- プロジェクトを開始します:
<skill>/scripts/new_film.sh <dir> <Film-Name>(名前は配信ファイル名になります)。次にtools/setup.sh。スターターは動作するフィルムです — タイムライン、シーンクロック、キャプション、フィニッシュ、ガラスとタイプキット、ブルーム、ミラーフロア、ダスト、ライト、デプスフォト、3つのサンプルシーン、オーディオエンジン、および以下のすべてのツール。サンプルシーンを置き換え、アーキテクチャは維持します。 - 最初にタイムライン:シーン、名前付きキューモーメント、ナレーションスロットは
src/film/timeline.tsにあります。シーンはキューからアニメートします(cuesOf(scene, lang))。npm run cuesは同じ番号をオーディオに渡します。タイミングはここでのみ変更します。 - 長いフィルムの場合は、remotion-craft.mdのブリーフパターンを使用して、シーンを並行ビルダーサブエージェントに分割します。あなたはディレクターのままで、すべてのレポートをフレームで検証します。
6. ナレーション
完全な方法はnarration.mdにあります。ナレーターのプロフィールとディレクターズノートを書き、声が間違えるものを audio/vo/say.json でスペルアウトします。tools/providers.py が見つけた声をオーディションし、オーナーに選ばせます。各バッチを1つのリクエスト(tools/vo_prompt.py → tools/tts.py)で録音し、すべてのラインをカットして単語チェックし(tools/cut_lines.py)、クリーニングしてレベル調整し、パッチが同じナレーターのように聞こえるかを測定します(tools/voice_score.py)。正確な声、モデル、プロンプトをREADMEにロックします。
7. 音楽、サウンド、ミックス
完全な方法はmusic-and-sound.mdにあります。デフォルトでは、画像のキューモーメントで変化するライセンスフリーのスコアをコードで作曲します。オーナーが提供した場合のみ、ライセンスされたトラックをそのバーグリッド上でカットします。サウンドデザインは名前付きキューをヒットします。ミックスはラインごとに音楽をダッキングし、AACエンコード用のヘッドルームを確保して-14 LUFSにマスタリングし、声対音楽のテーブルを出力します。
8. レビュー(すべてのラウンドで、何かを表示する前)
完全なチェックリストはreview-and-qa.mdにあります:すべての言語でのプレビューとコンタクトシート、すべてのトランジションのストリップ、すべてのテキストとキャプションモーメントのフルサイズ静止画、すべてのレンダリングでの tools/qa_scan.py、すべてのミックスと配信ファイルでの tools/audio_qa.py、そして tools/review.py(最新のGemini Flashが小さなフィルム全体のコピーを見て聞きます)。確認できる具体的なフラグに対してのみ行動します。そのA/B選好、声の同一性、小さなテキストの判断は信頼できません。すべての画面上の事実をファクトシートと再確認します。
9. リリースと配信
tools/release.sh(release-and-delivery.md)はすべてを構築します:ナレーションチェック、言語ごとのスコアとミックス、キャプション、サムネイル、チャンクでレンダリングされたマスターとキャプション付きカット、結合、ピークチェック、フレームカウント、zip。REDO= はタッチされたチャンクのみを再レンダリングします。LANGS=、VOICE= はサブセットとボイスバージョン用。ZIP_ONLY=1 は再パッケージ化します。出力を検証し、配信状態をコミットし、READMEを更新し、オーナーにパッケージがどこにあるか、送信しても安全であることを正確に伝えます。
10. フィードバックラウンド
working-with-owner.md:チャットのスクリーンショットとタスク中のメッセージをそのラウンドのブリーフとして扱います。新しい主張を最初に事実確認します。表示されたフレームだけでなく、フィルム全体にわたってパターンを修正します。オーナーが批判しなかったものは維持します。レビューとリリースを再実行し、ポイントごとに回答します。次のセッションが見つける場所に、すべての永続的な優先設定を保存します。
スタータープロジェクトのツール
実行します。失敗した場合のみコードを読みます(各ツールの最初の行は、その機能と呼び出し方法を示しています)。Pythonツールは、tools/setup.sh によってビルドされたDockerイメージ(film-audio と film-asr;setup.sh all は film-voice と film-depth を追加)で実行されます:docker run --rm -v "$PWD":/p -w /p <image> python <tool> …。Node、zsh、Swiftツールはホスト上で実行されます。
| ニーズ | ツール(プロジェクトルートから) | 実行環境 |
|---|---|---|
| セットアップ、キーとモデルの確認 | tools/setup.sh [all]、tools/providers.py | ホスト / film-audio |
| Webサイトの読み取り(テキスト+スクリーンショット) | tools/webpage.sh <url> <name>、tools/webpage.sh archive:<domain> | ホスト |
| ファクトシートの生成 | tools/fact_check.py <brief.md> | film-audio |
| スクリプトの検証 | tools/script_validate.py | film-audio |
| ナレーションの生成(プロンプト → TTS) | tools/vo_prompt.py → tools/tts.py | film-voice |
| ラインのカットと単語チェック | tools/cut_lines.py | film-audio |
| 声のスコアリング(一貫性) | tools/voice_score.py | film-audio |
| 音楽の作曲 | tools/compose.py | film-audio |
| オーディオのQA(ラウドネス、クリップ) | tools/audio_qa.py | film-audio |
| ビデオのQA(グリッチ、フレームカウント) | tools/qa_scan.py | ホスト |
| AIレビュー(Gemini Flash) | tools/review.py | film-audio |
| リリースビルド | tools/release.sh | ホスト |
| 新しいフィルムスターターの作成 | <skill>/scripts/new_film.sh <dir> <Film-Name> | ホスト |
設定と環境
.env ファイル(プロジェクトルート)には、必要に応じて以下のキーを含めることができます。すべてオプションです。
OPENROUTER_API_KEY=sk-...
GEMINI_API_KEY=AIza...
ELEVENLABS_API_KEY=...
OPENAI_API_KEY=sk-...
tools/setup.sh は不足しているキーを検出し、利用可能なものに基づいてプロバイダーを設定します。
参照
- quality-bar.md — 各ルールの背後にある完全なテイストガイドと理由
- case-studies.md — 実際のクライアントフィルムの例とタイミング
- providers.md — プロバイダーの設定、フォールバック、コスト
- story-and-research.md — リサーチサブエージェントのパターンとフォールバック
- remotion-craft.md — Remotionの技法ベストプラクティス
- narration.md — ナレーションの録音と編集の完全な方法
- music-and-sound.md — 音楽作曲、サウンドデザイン、ミキシング
- review-and-qa.md — 完全なレビューとQAチェックリスト
- release-and-delivery.md — リリーススクリプトと配信手順
- working-with-owner.md — フィードバックラウンドとオーナーとのコミュニケーション