パロディショート動画
中の人を知っている、または状況を知っている観客向けの短いコメディ。80年代のアクション番組のオープニング、ハロウィンのクリーチャーフィーチャー、クリスマスのテレビCMとして描かれる、チームのビッグイベント。グループはどんなグループでもよく(営業チーム、学校の職員室、5人制サッカークラブ、家族)、題材は彼らが一緒に経験したことなら何でも。このスキルで作られる他のどんな作品よりも強く響く。なぜなら、観客は自分たちが知っているものを見て笑うからです。このスキルは、そのような動画を意図的に作る方法です。
2026年11月に、とあるチーム向けに3本の動画(リリースを描いたアクション番組オープニング、そのハロウィン版、クリスマス向けの『クリスマス・キャロル』パロディCM)を作成・学習したことに基づいています。これらは実在の同僚が出演しているため、examples/には含まれていません。その後、架空のキャストを用いた2本の公開ショート(終わらないビデオ通話を描いたホラートレーラー、オフィス回帰を描いたネイチャードキュメンタリー)を16:9と縦型の両方で、さらに製品独自のUIを使ったブランド版を制作しました。
なぜ効果的なのか(効果の高い順)
- 実際の顔が動くこと。 飛躍的な進歩は、チームのプロフィール写真をアニメーション化したことです。静止画では笑顔が返ってくる程度でしたが、同じ人がサングラスを掲げたり、パンチで乾杯したりするのを見ると、笑いが起こりました。認識が原動力です。
people.mdを参照。 - 実際の内輪ネタ。 チームのチャンネルで見つかったセリフは、書かれたギャグよりも勝ります。同僚の決め台詞、誰かが詰め込み続けている機能、誰かがずっと言い続けていること。文脈を探ることは、スクリプトを磨くよりも価値があります。
context.mdを参照。 - イベントに合ったジャンル。 観客はすでにその型を知っている(破られる3つのルール、過去・現在・未来の精霊、チーム結集)ので、動画はその枠を埋めるだけで済みます。マッピングが緻密であればあるほど、スクリプトの説明は少なくて済みます。
genres.mdを参照。 - 誇張の許可。 これはリリースノートではありません。依頼者が「事実は重要じゃない」と言った時点で、数字は水増しされ、タイムラインは捏造されます。一度だけ早い段階で確認し、その後はギャグのファクトチェックをやめましょう。
- 愛情が境界線。 誰もがギャグの主役か、その内輪にいるのであって、被害者ではありません。これにより温かみが保たれ、同時に安全ルールにもなります(後述)。
- ジャンルごとの見た目と音。 独自のフォント、オーバーレイ、グレード(VHSトラッキング、フィルムグレインとレターボックス、キャンドルライト)、オリジナル曲またはスコア、いくつかの効果音、せいぜいCMのナレーション1行。ツールキットのテンプレートのように見えてはいけません。
- 短い。 CMは60~90秒。「番組のオープニング」は2分まで。約2分30秒を超えると中盤がだれるので、そこを最初にカットしましょう。
- すべてのクリップを選別する。 約3つのLTXクリップのうち1つは、部外者が見ると違和感があります。1つの間違った顔が魔法を壊すので、すべてのクリップをコンタクトシートで確認し、作り直しましょう。
2種類のキャスト
- 実在の人物(グループ自身の写真):最も強い笑いを生み、それを知っている観客向け。デフォルトは内部使用。公開するには各人の書面による許可が必要。
- 架空のキャスト(FLUXポートレート、または人間以外のキャラクター):公開動画、または人ではなく状況を観客が認識する共通のトピック向け(ビデオ通話、オフィスのキッチン)。認識が顔から状況に移るので、状況は普遍的かつ具体的でなければなりません:「ミュートになってるよ」、412ものタブがあるスプレッドシート、ホットデスクに置いてある上着。
people.mdのステップ0を参照。 - 一度キャストを作成し、どこでも使い回す。 共有フォルダに架空のキャストを一度生成し、各動画に同じ顔から独自のコスチュームとクリップを与えます。同じ4人が登場する2本の動画はシリーズのように感じられ、それらの間のコールバック(動画2の最後のセリフが動画1の最初のセリフ)は追加の笑いを生みます。
必須ルール
- すべて愛情を込めて。 グループの誰かが気にするようなジョークの対象になってはいけません。パフォーマンス、健康、私生活、内緒の話は一切なし。迷ったら、そのセリフはカット。
- 実在の人物は内部に留める。 彼らの肖像は彼らのものです。グループのために作り、リンク限定で共有し、公開する前に関係者に確認を取ってください。出演を希望しない人がいれば、外してください。
- 画面に機密情報を表示しない。 顧客名やパートナー名、ホスト名、秘密の値(秘密はぼかしバーまたは
••••に)、内部URLは一切表示しない。実際のシステム名は変更する(「RELAY ONE」など)。 - オリジナルの言葉と音楽。 ジャンルの形式は借りても、作品のキャラクター、名前、セリフ、デザイン、テーマ曲は借りないこと。パブリックドメインの作品(ディケンズ、グリム、シェイクスピア)は直接使用できますが、映画やテレビ番組は改名しても使用できません。歌の歌詞はオリジナルを書きましょう(
acestepスキル)。 - 引用は観客が読める可能性があるもののみ。 公開チームチャンネルはOK。DMは不可。
context.mdを参照。
開始前の準備
- GPUエンドポイント(Modal、一度だけ):
uv sync --extra modal && uv run modal setup、その後uv run tools/modal_setup.py flux2 image_edit ltx2 qwen3_tts。LTXは制限付きで、Modal SecretにHugging Faceトークンが必要です(docs/modal-setup.md)。音楽:.envに無料のACEMUSIC_API_KEY(acestepスキル)。 - プロジェクト は、
projects/<name>/にある標準的なRemotionプロジェクトです。ここにあるものはテンプレートのように見えてはいけないため、フィットするテンプレートはありません。任意のテンプレートからpackage.jsonとremotion.config.tsをコピーし(この設定によりlib/のインポートが解決されます)、src/Root.tsxにカットごとに1つのコンポジションを配置し、キャストのクリップをpublic/people/に置きます。ショットは、人物が含まれる絶対フレーム上の<Sequence>です:
import { LivingPhoto } from '../../../lib/components/LivingPhoto';
// クリップを1回再生し、最後の良好なフレームを保持します。fitは、やや短いクリップをショットに合わせるために遅くします。
<Sequence from={120} durationInFrames={180}>
<LivingPhoto src="people/sam-xmas.mp4" hold={140} fit={180} pos="center 30%" style={{ inset: 0 }} />
</Sequence>
ワークフロー
| ステップ | 内容 | 参照先 |
|---|---|---|
| 1. ブリーフィング | イベント、観客、キャスト(3~6人)、ジャンル、尺、「事実は重要か?」 | 本ファイル |
| 2. コンテキスト収集 | グループのチャンネルやツールを調べ、public/bible.md に書き出す | context.md |
| 3. マッピング | ジャンルのビートをイベントに当てはめる。1人につき1ビート。バイブルからセリフを選ぶ | genres.md |
| 4. キャスト | 写真または架空のキャストを用意し、image_edit で衣装を設定、LTXでアニメーション化、コンタクトシート | people.md |
| 5. 世界観 | FLUX背景(テキストなし)、効果音、音楽またはオリジナル歌詞の曲 | acestep、elevenlabs |
| 6. ビルド | Remotionで絶対フレームにショットを配置。キャストには LivingPhoto、ジャンルオーバーレイ | people.md、video-design |
| 7. チェック | レンダリングのコンタクトシート、qc.py --render --fix、sync_check.py --cues、その後再度安全ルールを確認 | video-design/critique.md、CLAUDE.md |
| 8. カット編集 | 縦型、および必要に応じてブランド版:同じアセット上に新しいレイアウト | formats.md |
シーンではなくショット。 これらはCMのように編集されます。固定されたショットリストと絶対フレーム範囲、ショット間の10~20フレームのディゾルブ、すべての下に流れる曲またはスコア。ナレーションがある場合は、それを最初に生成し、それにアンカーします(CLAUDE.md、オーディオアンカータイムライン)。最後にナレーション1行があるCMは、音楽主導で構築できます。
動きに合わせて音を:目見当ではなく測定する。 くしゃみ、上着が落ちる音、バッジのジングル:各音を tools/sync_check.py --clip(音のピークが動きと一致する場所)で配置し、プロジェクトの sync-cues.json にリストアップし、レンダリングごとに sync_check.py --video ... --cues を実行してから見せます。手動で配置したくしゃみは0.5秒早く、他の3つのキューは0.8~1.0秒ずれていました。クリップがフリーズしたりカットされたりした場合は、その音もそこで終わらせます。
テキストはパンチラインの運び手。 吹き出し、スタンプ、ダンスカード、墓石、タイプされたラベル。Remotionですべてをレンダリングします(FLUXとLTXはテキストを歪めます)。画面上のすべてのギャグにフレームキューと音を与えましょう。
声。 誰のものでもないナレーターの場合、Qwen VoiceDesignを使って、書かれたブリーフィングからデザインします(「温かみのある、中年のイギリス人女性がネイチャードキュメンタリーをナレーションする、静かでゆっくりとした落ち着いたペース」、「深く、ガラガラの映画予告編アナウンサー」)。qwen3_tts.py --design-instruct "..." --text "<ジャンルに合った20秒のシードパラグラフ(スクリプトではなく)>" --format wav。VoiceDesignは呼び出しごとに新しい声を作成するので、一度デザインし、そのリファレンスをすべての文にクローンします(3テイク、pick_takes.py)。ジャンルを説明し、実在の人物は決して説明しないこと。ジャンルの有名な声ではないナレーターを選ぶこと(例えば野生生物映画に女性を選ぶ)で、明らかにオリジナルであることが保たれます。
カット編集。 縦型カットとブランド版は最初から計画します。生成されたすべてのアセットを再利用し、レンダリング1回分のコストしかかかりません。formats.mdを参照。
ジャンル間の再利用。 一度アニメーション化されたキャストは、次の祝日に合わせて衣装を変えることができます。写真、クロップ、コンテキストバイブルはそのまま引き継がれ、衣装、クリップ、世界観だけが変わります。
コスト(Modal、2026年11月時点)
LTX:5秒クリップあたり約$0.08、image_edit:1回の編集(ウォーム時)あたり約$0.01(コールドスタートは約10分。最初に1つ編集を送信して待つ)。FLUX:背景またはポートレートあたり約$0.01、ACE-Stepの曲は数セント。5人のキャストメンバーとリテイクを含む90秒のCMは約$2。9回の衣装編集、16クリップ、2つのデザイン声を共有する1つの架空キャストを使った2本の80~100秒のショートは、合わせて約$2.50でした。acemusic APIはバッチ処理中に502を返すことがあります。失敗したテイクはスキップされるので、必要に応じて再実行してください。
関連ファイル
context.md、genres.md、people.md、formats.md(このディレクトリ内)。ltx2、qwen-edit、acestep、elevenlabs、video-design、remotion スキル。lib/components/LivingPhoto.tsx。