infofilm: インフォグラフィック解説フィルム は何をしますか?
このスキルで作成されるフィルムは、紺色のテーブルに配られた教育カードのデッキのようなものです。各カードには、タイトルバンド、画像ウィンドウ、キャプションバンドがあります。ウィンドウ内ではAIイラストが再生され、その上にコード描画のインフォグラフィックが、それを名指す正確なワードのタイミングで現れます。ニュース映画のナレーターが意味を伝え、マスコットが声を発することなくパントマイムでそれを演じます。歌入りコマーシャルブレイクとクロージングバラードがフィルムにリズムを与えます。
すべての数字、タイトル、ラベルは、事実ベースからコードで描画されます。画像はテキストを一切含みません。
template/ 内のテンプレートは、完全に動作するフィルムです。うるう年に関する1分間のデモです。これをスキャフォールドし、デモをあなたのフィルムで少しずつ置き換えてください。フィルムは各ステップでレンダリングされます。コンポーネントがないシーンはカードを表示し、ナレーションがないシーンは推定タイミングを使用します。これにより、費用をかける前に常に全体像を確認できます。
基本ルール(利便性よりも優先)
- 費用: 事前に確認すること。 ElevenLabs、画像生成、Sunoのダウンロードは、実際の費用またはクォータを消費します。有料バッチの前に、その内容、アイテム数、推定コストを明記してください。
--dry-runでコストを表示します。承認を待ってください。承認はそのバッチのみを対象とします。ただし、ユーザーが包括的な承認(「画像、音声、音楽についてはゴーサインを出します」)をしている場合は除きます。すべての承認とコストをnotes/log.mdに記録してください。 - 事実を決して推測しないこと。
- すべての主張と数字は、一次情報源を引用した
notes/research.mdから取得します。画面上のすべての数字は、調査セクションを引用したvideo/src/data.tsから取得します。 - 時事問題は一次情報源に対して検証する必要があります。検証できないものはフィルムから除外されるか、該当シーンは保留されます。references/script.md の「保留されるシーン」を参照してください。
- すべての主張と数字は、一次情報源を引用した
- テキストと数字はコードで描画され、画像モデルでは決して生成されません。 画像プロンプトはテキストを禁止し、すべての画像は検査されます。
- ユーザーが聞き、Whisperは使いません。 生成された音声を確認するために文字起こしを決して行わないでください。Whisperは実際よりも多くのエラーを拾います。代わりにユーザーにリスニングページを提供してください。
- 公平な風刺。 アイロニーは、システム、機械、スペクタクルに向けられるものであり、政党、グループ、個人には決して向けられません。サイズ、色のロジック、アニメーションにおいて、すべての立場を同一に扱います。画像内に実在の人物やロゴは使用しません。
- すべての場所で正しい発音記号を使用すること(å ä ö é ü …)。 サブエージェントへのプロンプトも含みます。すべてのサブエージェントに明示的に指示してください。
- ユーザーの言葉を文字通りに解釈すること。 「ディストピア」、「レトロ」、「Falloutっぽい」などはムードを示すものであり、小道具のリストではありません。スタイルを表す言葉が複数の意味を持ちうる場合は、提案を示し、それに基づいて構築する前に確認を取ってください(references/style.md 参照)。
パイプライン
以下のフェーズを順に進めてください。⛔ のステップはゲートです。先に進む前にユーザーの決定を仰いでください。
0 · キックオフ
- 主題、ターゲットオーディエンス、言語、長さ(デフォルト約12分)、目的を確認します。環境変数
ELEVENLABS_API_KEYとOPENROUTER_API_KEY、Chrome(claude-in-chrome 拡張機能付き)、Sunoログイン、node、pnpm/npm、ffmpeg、python3(numpyとelevenlabs付き)が利用可能であることを確認します。 - スキャフォールディング:
これによりテンプレートがコピーされ、Remotionがインストールされ、効果音が合成され、最初のタイムラインが構築され、型チェックが実行されます。<skill>/scripts/new_film.sh <dir> --slug my-film --title "My Film" --lang sv --locale sv-SE - 決定事項は、日付と決定者を添えて
notes/log.mdに記録します。 - レンダリングにはディスク容量が必要です。
df -hで確認し、システムディスクの空き容量が約20 GB未満の場合は、OUTDIRを大容量のディスクに設定します。
1 · 調査 → notes/research.md
- 番号付きセクション(
## 2.3 · The threshold)を作成し、セクションごとに1つの事実または事実のクラスターを、それぞれの一次情報源(法律、公式統計、当局のページなど)とともに記述します。 - 不確かな点はマークします。最近の出来事については、事実が有効な日付を記録します。
- references/script.md を参照してください。
2 · ルック&キャスト ⛔
- ハウススタイル(クリーム、ネイビー、ゴールドインク、1957年レトロフューチャー、Bowlby One SC + Jost + Lobster)を再利用するか、代替案を提案します。ユーザーが同等に比較できるよう、同じ小さなインフォグラフィックを3~7のスタイルでレンダリングします。
- マスコットをキャスティングします。無言の普通の人で、特徴的なジェスチャーを1つ持ちます(ハウスマスコットは帽子を持ち上げます)。有名なマスコットのジェスチャー(ウインク+親指を立てるなど)は避けてください。
- まずリファレンスポートレート(
kind: "ref")を生成し、次にモデルシートを生成し、シーン画像を作成する前に承認を得てください。 - ⛔ ユーザーがスタイル、マスコット、ジェスチャー、フォントを選択します。詳細: references/style.md および references/images.md。
3 · スクリプト → script/script.md ⛔
- 構成: オープニングテーマ、2~4パート、パート間のコマーシャルブレイク、クロージングバラード。各シーンは15~40秒の1枚のカードです。
- 単語数の予算: 分数 × ニュース映画ナレーターの1分あたり約127ワード。
- ナレーション内の数字はスペルアウトし、カードには正確な数字を表示します。
- 「月曜日」のような日付に依存する言葉は避けてください。フィルムは週を超えて存在します。
- 誰かが支払う前にレビューを実施します。 独立したサブエージェントに、一次情報源に対してスクリプトと調査をチェックさせ、その結果をMUST、SHOULD、COULDに分類させます。MUSTと評価されたものをすべて修正します。レビューにより、調査自体のエラーが発見されたことがあります。
- ⛔ ユーザーがスクリプトを承認します。フォーマットと作成方法: references/script.md。
4 · ナレーター ⛔
voice/design_voice.py preview <tag>で3つのテイクをデザインし(事前に確認)、ユーザーに1つ選んでもらいます。createで保存します。- 代表的な2シーンでテスト読み上げを行い、ユーザーにペースと発音を承認してもらいます。
- すべてを読み上げます:
python3 voice/narrate.py --dry-runを実行後、確認をとり、実行します。
後でシーンを編集した場合、そのシーンのみが再度課金されます。詳細と注意点: references/voice.md。
5 · 音楽(Suno、公式Web UI、Chrome経由)
以下のキューが必要です:
- オープニングテーマ(約20秒)。スピーチモードで無表情なクローズハーモニーボイスとして見事に機能します。
- パートごとに1つのインストゥルメンタルBGM。ループ再生され、音声の下にダッキングされます。
- 各コマーシャルブレイク用の歌入りジングル
- クロージングバラード。通常はテーマのカバーです。
アメリカの1950年代のイディオムをプロンプトに入れてください。「シュラーガー」のようなジャンルワードは音楽を別の場所に引きずっていきます。ユーザーがあなたに選択権を委ねていない限り、ユーザーはSuno内でテイクを選びます。SunoのメニューからWAVをダウンロードし、カットポイントのための整列した歌詞を取得し、music/cuts.json と video/src/lyrics.ts を作成します。詳細: references/music.md。
6 · イラストレーション
- シーンごとに1枚の21:9 2K画像。
art/shots.json内のfilm-Sxx。マスコットリファレンスから描画されます。コスト:python3 art/gen.py --dry-runを実行後、確認をとります。 - すべての画像をチェックし、テキスト、重複した小道具、余分な手足、間違った衣装がないか確認し、不良品は再生成します。
python3 tools/sync_art.pyを実行し、続けてpython3 tools/build_timeline.pyを実行します。詳細: references/images.md。
7 · シーン(Remotion)
- 2つのゴールデンシーンを自分自身で構築します: フィルムの中心的なインフォグラフィックを伝えるシーンです。それらが基準を満たしていることを確認し、デモの
TheYear/TheRuleを置き換えてgolden.tsに登録します。 - その後、
video/CONTRACT.md(その{{…}}行を埋める)を使用して、2~3の並行ビルダーサブエージェントに展開します。各ビルダーは独自のグループレジストリを持ち、コンタクトシートで検証します。 - ビルダーはナレーションが存在する前に開始できます。キューが推定単語に従い、その後自動的に実際の単語に移動するためです。作業中にスクリプトが変更された場合(レビューが届いた場合)、SendMessageを使用して各ビルダーにそのシーンの正確な変更を送信します。
- すべてのシーンのシートを自分自身でレビューします。
- 詳細: references/scenes.md。
8 · レンダリングと納品
tools/render.shを実行します。これによりタイムラインが再構築され、キューがリントされ、型チェックが実行され、レンダリングが行われ、two-pass loudnorm が -14 LUFS / -1 dBTP に適用され、SRTが書き出されます。- セグメントごとにラウドネスを検証し、mp4からフレームをスポットチェックした後、ユーザーにフィルムを公開します。
- 詳細: references/render.md。
9 · リビジョン
- テキスト変更: 該当シーンのみ再ナレーションし、タイムラインを再構築します。キューは自動的に単語に従います。
- 画像変更: 画像を再生成し、同期し、再構築します。
- 音楽変更:
cuts.jsonを編集します。
視覚的な修正は再レンダリングのみでコストはかかりません。新しいナレーション、画像、またはダウンロードのみがコストを発生させます。
テンプレートのマップ
| パス | 内容 |
|---|---|
film.json | タイトル、スラッグ、言語、ロケール、パートキッカーとBGM、シーンイントロ/アフター音楽、TTSモデル、outDir |
script/script.md | 原稿: ## Sxx · 名前、<!-- title: -->、<!-- facts: -->、> visual:、ナレーション |
notes/research.md、notes/log.md | 事実ベース、決定事項とコスト |
voice/ | design.json + design_voice.py(音声デザイン)、narrate.py(ナレーション+タイムスタンプ)、listen.py(リスニングページ)、voice.json |
music/ | suno/*.wav、cuts.json、tools/beats.py(テンポ)、tools/suno_lines.py(整列した歌詞 → ライン) |
art/ | style.json(ルック、決して行わないことリスト)、shots.json、gen.py、img/ |
tools/ | build_timeline.py、cues.py、lint_cues.py、make_srt.py、sync_art.py、art_sheet.py、unframe.py、make_sfx.py、render.sh |
video/src/ | theme.ts、fonts.ts、timing.tsx(useScene、cue)、data.ts、lyrics.ts、Music.tsx、primitives/(Card, Bits, Film, Jingle, Hemicycle)、scenes/ |
video/tools/ | stills.mjs(選択されたフレームのコンタクトシート)、review.mjs(シーンあたりNフレーム、多数のシーン) |
既知のトラップとその修正: references/pitfalls.md。