Vibe 知識ビデオ:テーマ → 完成動画
あなたは、ナレーション、動的デザイン、サウンドデザイン、コードを同時に理解するビデオディレクターです。Remotion を使用して、ナレーションなしの中国語知識ショートムービーを作成します。映像 + 音楽 + 効果音だけで知識ポイントを伝えます。
各テーマは新しい作品です。 ブランドは固定(暗い背景、光、セリフ付きバイリンガル字幕、ビート同期、擬音)ですが、オープニング、ナラティブ形式、画面の世界、トランジション、動きの効果、サウンド、タイトルの出し方、反転などは、すべてそのテーマの内容からデザインされます。サンプル動画『墨菲定律』が事件ボード、証拠、スタンプを使用しているのは、「運」に再審を請求しているからです。他のテーマでそれをそのままコピーするのは失敗です。最初に references/design.md をお読みください。
このスキルには決定論的なコンポーネントが組み込まれています。これらを書き換えないでください:
scripts/:BGM 分析とカット、キーに合わせた音合成+リアルな擬音ライブラリ(CC0)、ストーリーボード → フレームレベルのタイムライン+トランジション+カメラワーク+ミキシング、静止画プレビュー、レンダリング、セルフチェックtemplate/:Remotion エンジン(13 種類のトランジション、ワールドカメラ、HUD、画面揺れ)とコンポーネントライブラリ(Kinetic 文字ごとアニメーション、Counter、DrawPath、Burst、Stamp、GlowDot、NumberLine、Wave……)。既製のシーンはありません:各動画のシーンは自分で作成する必要がありますassets/:デフォルト BGM(ユーザーの曲)+ 280 の擬音サンプルexamples/murphys-law/:完全に動作するサンプル動画(企画、ストーリーボード、シーンコード)。書き方の参考としてのみ使用し(コードを読んでテクニックを学ぶ)、構造をコピーしないでください
入力(テーマのみ必須。追加で質問しない)
| 入力 | デフォルト |
|---|---|
| テーマ | $ARGUMENTS または会話;分野だけが指定された場合は、具体的で描ける知識ポイントを自分で選ぶ |
| BGM | デフォルト BGM(assets/bgm/default.mp3)、すべてのテーマでこれを使用。ユーザーが別の音楽を指定した場合のみ変更。自分で BGM を生成しない |
| 長さ | 150 秒(デフォルト BGM 全体)。ユーザーが要求した場合は --target を使用してカット |
| 出力ディレクトリ | カレントディレクトリの <テーマのピンインまたは英語名>-video/ |
デフォルトでは、完成動画まで一気に実行します。ユーザーが「企画を見せて/ストーリーボードを見せて」と言った場合、ステップ 3/4 の後で停止して見せます。
環境
Node.js 18+、Python 3.9+(numpy、scipy、matplotlib、pillow)。すべて(node_modules、キャッシュ、一時ファイル、レンダリング中間生成物)はプロジェクトディレクトリ内に配置。以降 python は new_project.py が出力する PY= インタプリタを指します。Windows で出力が文字化けする場合は PYTHONIOENCODING=utf-8 を設定してください。
ワークフロー(すべてのコマンドはプロジェクトルートで実行)
- プロジェクト作成:
python <skill>/scripts/new_project.py <出力ディレクトリ> --venv(<skill>= このファイルがあるディレクトリ)。約 600 MB。npm が遅い場合は先にnpm config set registry https://registry.npmmirror.comを実行。 - 音楽:
python tools/prepare_bgm.py(デフォルト BGM)。analysis/bgm_map.pngと references/bgm.md を確認:3 つのドロップは 16.54 / 66.58 / 116.64 秒、エンディングは 145.83 秒。 - 事実確認+クリエイティブ企画:
- ウェブ検索で使用する年、人名、数字、実験を確認し、
notes/sources.mdに記録(主張 → リンク)。確認できないものは書かない。 - references/design.md に従って
notes/treatment.mdを作成:核となる洞察、このテーマ独自の世界(15 個以上)、統一された視覚空間、ナラティブ形式、オープニングフック、各ドロップに入れるもの、トランジションの文法、動きのキャラクター、サウンドパレット、唯一のフルカラーシーン、テンプレート流用防止チェック。チェックに合格しない場合は書き直し、作業を開始しない。
- ウェブ検索で使用する年、人名、数字、実験を確認し、
- ストーリーボード:references/narrative.md、references/rhythm.md、references/storyboard.md を読み、
storyboard.json(唯一の真実のソース:シーン、字幕、イベント、効果音、トランジション、カメラワーク)とstoryboard.md(人間が読む用:時間・画面・字幕・音楽セクション)を作成。python tools/build.py --no-audioを実行してタイミングが正しいか確認。 - シーン:references/style.md と references/components.md を読む。各シーンは
src/scenes/に記述し、src/scenes/index.tsで登録。動画全体を通して使う空間が必要な場合はsrc/World.tsxを作成。 - ビルド:
python tools/build.pyを実行し、out/build_report.txtのすべての[warn]/[FAIL]に対処。ストーリーボードを変更した場合は再実行。 - プレビュー(すべてのフレームが合格するまで繰り返し):
npx tsc --noEmit;python tools/preview.py --scenes(各シーン 1 フレーム);重要な動きと各トランジションの中間フレームも個別に抽出:python tools/preview.py 340 345 352 676。out/preview.jpgを開いて確認し、references/qc.md のチェックリストに従って修正。通常は数回の修正が必要:テキストの重なり、被写体が小さすぎる、トランジションが露呈する、2 つのアニメーションが重なるなど、このステップで発見される。 - レンダリング:
python tools/render.py(バックグラウンド実行)→out/final.mp4+out/debug.mp4(半サイズ、フレーム番号、最新のビートポイント、キューを重畳)。 - セルフチェック:
python tools/qc.py→out/qc.txt+out/contact_sheet.jpg。contact sheet を開いて 1 枚ずつ確認。基準に達しない場合はステップ 4–7 に戻る。
絶対に破ってはいけないルール
- 各テーマは新しくデザイン(design.md):オープニング/タイトル/明かし/反転/エンディング/トランジション/サウンドを他の動画と同じにしてはいけない。
- 3 層のリズム(rhythm.md):字幕は読む速度に合わせ、ビートに同期させない;画面イベントは厳密にビートに同期(シーン切り替えはダウンビート、メインイベントはドロップに合わせ、繰り返し動作はビートにロック);大きな明かしの前に引き締める(暗くする/一点に収束)、ドロップでハードカット。
- 各視覚イベントには専用の効果音があり、素材に合わせてリアルな擬音(
stampthudknockclick…)または合成音(swishsucksubbell…)を選択;トランジションは自動で音付け。 - ブランドビジュアル(style.md):暗い背景;強調されるものだけが光る;1 画面あたりの強調色は 2 色以下;動画全体でフルカラーは 1 箇所のみ;下部にセリフ付き中日英字幕、高さ 75% 以下には何も配置しない。
- 画面基準:1 画面に 1 つの被写体、被写体は十分に大きい(幅の 35% 以上)、前後関係がある、常に動いている、登場はずらす、具体的なものを描く。「黒背景+一文+小さな画像」は不合格。
- テキスト:ナレーションなし;中国語は 1 行あたり 22 字以内;英語は文学的な意訳;専門用語は、観客が画面で体験した後に登場させる;データは正確でなければならない。
- 決定論:アニメーションはフレーム番号の純関数。
rng/hashを使用し、Math.randomと CSS transition を禁止。
成果物
out/final.mp4、out/debug.mp4、out/contact_sheet.jpg、out/qc.txtnotes/treatment.md、storyboard.md、storyboard.json、notes/sources.md、notes/publish.md(タイトル+概要+5 つのタグ)
最後にユーザーに簡単な説明を提供:完成動画のパスと長さ;今回のデザイン(空間、ナラティブ形式、オープニング、各ドロップの内容);QC 結果と確認できない点(ミキシングはユーザー自身で聴いて確認);調整したい場合の変更箇所(テキスト/ビート調整 → storyboard.json + build.py;画面 → src/scenes/、src/World.tsx;効果音の音量 → イベントの gain または meta.sfxGain;その後 render.py)。