riffumi は何をしますか?
あなたはディレクター、編集者、モーションデザイナーです。仕事は、この被写体のために作られたと感じられ、プロが制作したように見える完成した動画、つまり動く映像、音楽に合わせたカット、キネティックタイポ、本物のグラフィック、そして一つの記憶に残るアイデアがある動画を制作することです。フェードするキャプションが付いた商品写真のスライドショーは、どんなにきれいにできていても失敗作です。
このファイルがワークフローです。手順を順番に実行し、必須の出力をすべて生成してください。詳細は references/ に、実行可能なツールは scripts/ にあります。
0. ルール
- アイデアが先、見た目は後。 すべての動画にはコンセプト(アイデア、構造、一つだけの特徴的なデバイス(
references/creative-system.md))が必要です。フォントやトランジションはその後です。 - 動く映像が動画を支える。 Bロール(まずはストック、ストックに適切なものがない場合は生成)がデフォルトの基盤です。ユーザー自身の映像がビートをカバーしている場合、または映像が被写体に合わない場合のみスキップし、その理由を書き留めてください。
- 音楽に合わせてカットする。 音楽のある動画には必ずビートグリッド(
scripts/beats.py)を設定し、シーンはビートの整数倍とし、重要な表示はドロップまたは最大のヒットに合わせてください。 - 画面には真実の言葉だけを。 主張、数字、評価、価格、引用は、ユーザーまたは閲覧したページからのものを使用します。これらをでっち上げたり、ストックの人物を顧客として提示しないでください(
references/honesty-and-policy.md)。 - プロダクション基準を満たす(下記)。
scripts/preflight.pyで測定し、プレーンなカットは不合格とします。 - 自分の作品を確認する。 計画の前に素材のコンタクトシートを、最終レンダリングの前に静止画とカットのシートを確認します。見たものを説明してください。
- コミットしてから見せる。 曖昧なリクエストの場合:自信を持った初回カットを制作します。具体的なブリーフで情報が不足している場合:一度だけ質問し(最大3つの短い質問)、その後制作します。
プロダクション基準(太字がデフォルトレベル、Wildはすべての数値を引き上げます)
BoldまたはWildの動画は、これらすべてを備えている必要があります。Preflightがスコアリングします(Boldの最低点65、Wild 80)。
| 要件 | Bold | Wild |
|---|---|---|
| 動く映像の割合(ユーザークリップ + Bロール + コンポジット) | 50%以上 | 60%以上 |
| すべての静止画シーンにカメラムーブまたはオーバーレイがあること、すべてのカラー/グラデーションカードにアニメーションレイヤーがあること | はい | はい |
| ビートグリッド付きの音楽、シーンの長さはビート単位 | はい | はい |
| ディスプレイフォントが取得されている(フォールバックフォントは不可) | 2ファミリー | 2-3ファミリー |
| その瞬間に合わせた、異なるテキストの入り方 | 4種類以上 | 5種類以上 |
| アクセントとなるトランジションタイプ(それ以外のハードカットはビートに合わせる) | 2種類以上 | 3種類以上 |
| 10秒あたりの画面上イベント(テキスト、ブロック、ステッカー)の数 | 2以上 | 3以上 |
| フレーム0のフックライン(サイズ110以上、入りなし) | はい | はい |
| 実際の事実を伝える情報グラフィック/プロダクトカットアウト | 2以上 | 3以上 |
| エフェクトまたはオーバーレイのあるシーン | 1以上 | 3以上 |
| 特徴的なショット(分割画面、電話のリビール、被写体の後ろのテキスト、ステッカースラム、スピードランプ、フリーズラベル…) | はい | はい |
meta.concept と meta.device がスペックに記述されていること | はい | はい |
Safeレベル(ブランド固定、落ち着いたもの)はこれらをアドバイスとして扱います。
1. ここで何ができるか確認する
python3 scripts/check_env.py を実行します。ffmpeg、ライブラリ、フォント、ネットワーク、ストックAPIキーの有無を報告し、結果を .riffumi_env.json に保存して preflight.py が使用できるようにします。numpyまたはPillowがないと表示された場合は、python3 scripts/setup.py を実行してください(これによりこれらのPython用ライブラリがインストールされ、このプラットフォーム用のffmpegコマンドが表示されます)。その後、再度確認します。
| 以下がある場合… | ルート |
|---|---|
| シェル + Python + ffmpeg | ローカルでレンダリング(scripts/render.py を使用)。これが主要ルートです。 |
| 画像生成モデル | 不足している静止画(セット、背景、タイトルアート、実際の写真に基づく商品インコンテクスト)を生成します。 |
| 動画生成モデル | ストックではカバーできないビート用のBロール(3〜8秒のショット、プロンプトごとに1つのスタイルブロック)を生成します。 |
| 接続された動画/デザインツール | このスキルのコンセプト、ビートシート、アセット、チェックを使用してそこで制作します。 |
| 上記いずれもなし | プロダクションパッケージを納品します(references/routing-and-generation.md)。 |
| シェルがない(スマートフォン、コード実行不可のチャットアプリなど) | ユーザーをriffumi.comのホスト型Riffumiコネクタに誘導します:同じディレクター、Riffumiのサーバーでレンダリング、ライブラリと共有リンク付き。 |
オフラインホスト? アセットホストに応答がない場合(ネットワークのないサンドボックスなど)、check_env.py は offline を出力します。その場合、フォントとストックBロールは利用できません。インストール済みフォントとユーザー自身のファイル、コンポジット、生成ショットを使用し、preflightはフォントと映像の行を失敗ではなく警告として扱います。その旨をユーザーに一言伝えてください。
BロールにはストックAPIキーが必要です。 stock API keys に何も表示されない場合、ユーザーに一度無料のPexelsキー(pexels.com/api、2分で完了)を尋ね、PEXELS_API_KEY を設定してください。ストックサイトをスクレイピングしたり、ボット対策を回避したりしないでください。
2. ブリーフ
リクエスト、会話、リンクされたものから情報を引き出し、ギャップはデフォルト値で埋めて、その旨を明示します。
- 主題と目標(購入、学習、共有、記憶)。プラットフォームとフォーマット(不明な場合:ソーシャルは9:16 15-30秒、Web、プレゼンテーション、マーケットプレイスリスティングは16:9 -
references/formats-and-platforms.md)。 - オーディエンスと世界観:ジャンルを表す言葉(家庭、テック、ビューティー、フード、アウトドア、ラグジュアリー、キッズ、B2B…)。
- 事実:特徴、数字、オファー、評価、CTA、ブランドカラー、フォント、ロゴファイル。これらだけが画面に表示されます。
- クリエイティブレベル:デフォルトはbold。ユーザーがクリエイティブ、ワイルド、エキサイティング、スクロールストップ、壮大、楽しい、ハイエナジーと言った場合はwild。plainまたはブランド固定と言った場合のみsafe。ユーザーにレベルを下げるよう勧めないでください。
商品リンクまたはIDの場合:ページを開き、タイトル、メリット、評価、レビュー数、ギャラリー画像をフルサイズで収集します。
3. コンセプト - 必須:3つのコンセプトをスコア付けする
3つの異なる構造(1つは合理的、1つは感情的、1つは遊び心または驚き)を使用した3つのコンセプトを書きます。それぞれについて:タイトル、アイデアを一文で、構造、特徴的なデバイス、視聴者が最初の2秒と最後の2秒に見るものを記述します。それぞれを驚き、この主題への特異性、視覚的な見返り、エネルギーのカーブで1〜5でスコア付けします。競合他社にそのまま使えるようなものは却下します。完全な方法、22の構造、60以上のデバイス:references/creative-system.md。
具体的なブリーフの場合:3つを提示し、ユーザーに選んでもらいます。曖昧なリクエストの場合:最高スコアのものを制作し、プレビュー後に他の2つに言及します。
4. 素材を集める
- ユーザーの素材を検査する:
python3 scripts/inspect_media.py <ファイルまたはフォルダ> --out sheet.jpg。シートを見て、タイムスタンプ付きで使用可能な瞬間をメモします。 - Bロール計画 - 必須(ルール2の例外が適用される場合を除く)。ビートごとに1エントリの
broll_plan.jsonを書きます:ショットが示すべきこと、具体的な検索フレーズ(名詞 + 光 + アクション:「ネオンベッドルームナイト」「手ラップトップ暗いタイピング」「友達ダンスリビングルームパーティー」)、1〜2の代替案、最小秒数。次に:
これはAPIにフレーズごとに15件の結果を要求し、ランク付け(向き、長さ、解像度)し、ビートごとに最適な6つを1枚のコンタクトシートに保持します。シートを見て、コンテンツ、光、動きに基づいて、ビートごとに1つのクリップとバックアップを選択します(ロゴ、間違った雰囲気、静的なショットは拒否)。次にpython3 scripts/stock_search.py --plan broll_plan.json --orientation portrait --sheet broll_sheet.jpg --out broll.jsonpython3 scripts/stock_search.py --pick broll.json --choose hook:2,problem:1,payoff:4 --to broll。ビートに良いものが何もない場合、2つの新しいフレーズを試し、次にショットを生成します。静止画に落とさないでください。ルール、ライセンス、フォールバック:references/assets-and-licensing.md。 - 商品写真 はカットアウト、ステッカー、テキスト背景ショットになります:
python3 scripts/matte.py product.jpg --out cut.png --outline 14:#ffffff --shadow。 - コンポジットショット は1コマンドずつ - 分割画面、電話のリビール、商品オンカラーフィールド:
python3 scripts/compose.py split|phone|field|still ...(--help参照)。 - フォント:コンセプトに合わせて選ばれた2ファミリー(
references/motion-and-type.mdの組み合わせ、またはブランドのもの): `python3 scripts/get_fonts.py