Vibe 知識ビデオ
トピックを、ソースに基づいたRemotionプロジェクトとエクスポート可能なビデオに変換します。特定のクリエイターのアイデンティティをコピーするのではなく、明確さ、視覚的な説明、再現性を重視して最適化します。
コアワークフロー
- トピック、対象者、アスペクト比、目標時間、言語、およびナレーションが必要かどうかを確認または推測します。詳細が不足している場合のデフォルトは、中国語、一般成人視聴者、16:9、60〜120秒、30 fps、ナレーションスクリプト付き、焼き込み中国語字幕とします。
- 作成前にトピックを調査します。一次ソース、論文、規格、公式統計、および信頼できる機関を優先します。すべての事実の主張を
research/sources.mdにURL、タイトル、日付、およびそれが裏付ける主張とともに記録します。 - 検証済みの事実、解釈、および類推を分離します。裏付けのない主張は削除します。引用、研究、数値、日付、因果関係をでっち上げないでください。
- references/brief-schema.md を使用して
video-brief.jsonを作成します。シーンのコーディング前にnode scripts/validate-brief.mjs video-brief.jsonを実行します。 - 最初の3秒に強い質問、シーンごとに1つのアイデア、5〜8秒ごとに視覚的な見せ場、そして簡潔なエンディングを備えたシーンプランを作成します。1つの明確なナラティブの背骨を保持します。要求された説明を中断する場合、歴史的な比較、サイドファクト、または追加のタイムラインは、それを進めるのではなく削除します。references/storyboard-guide.md を使用します。
- Remotionプロジェクトが存在しない場合は、
bash scripts/bootstrap-remotion.sh <project-directory>を実行します。これにより、公式の空のテンプレートがスキャフォールドされ、公式のRemotion Agent Skillsがインストールされます。既存の空でないディレクトリを上書きしないでください。 - ビデオをRemotionで実装します。編集前にプロジェクトにインストールされている公式のRemotion Skillsを読んでください。
useCurrentFrame()、interpolate()、spring()、Sequence、およびSeriesを使用したフレーム駆動アニメーションを使用します。CSSアニメーション、ランダム値、または壁時計時間は使用しないでください。 - ネイティブのHTML、SVG、Canvas、数式、チャート、タイムライン、地図、および目的のあるイラストを優先します。車両、機械、動物、人物、製品などの認識可能な実際の被写体については、最終的なビジュアルとして粗雑な棒人間や一般的な幾何学的な輪郭を使用しないでください。被写体のシルエット、プロポーション、定義コンポーネント、機能構造を保持します。ユーザーが参照画像を提供した場合は、まずそれらを検査し、ソースをコピーするのではなく、独自の詳細なビジュアルを作成します。動く被写体については、references/motion-direction-prompt.md を読み、実装前に接触ジオメトリ、プロポーション、モーションカップリング、オクルージョン、シーンの連続性を定義します。外部画像やクリップは、理解を実質的に向上させ、そのライセンス/ソースが記録されている場合にのみ使用します。
- ナレーションは、ユーザー提供のオーディオまたは利用可能な許可されたTTSサービスのみから追加します。プライベートテキストを外部の音声サービスに静かにアップロードしないでください。メディアを
public/に配置し、staticFile()でロードします。 - 背景音楽が要求された場合は、ライセンスされた音楽を使用して帰属を記録するか、オリジナルの決定論的なトラックを生成します。音楽をコード、リズム、メロディー、エンベロープから構築します。可聴の音楽ベッドとしてホワイトノイズ、ピンクノイズ、ブラウンノイズを使用しないでください。ナレーションの下に音楽を配置し、通常の電話またはラップトップのスピーカーでテストします。中立的なオリジナルの出発点として
scripts/generate-light-science-music.pyを使用します。 - 最終的なナレーションのタイミングからキャプションを生成します。最大2行に保ち、安全なマージンを提供し、読みやすいコントラストを維持します。ワードレベルのタイミングには、
@remotion/captionsを使用します。 - フルレンダリングの前に、代表的な静止フレームを確認します。冒頭、各シーンの中間点、トランジション、および最終フレームを、テキストのオーバーフロー、事実の正確さ、レイアウト、音楽の使用法、および帰属について確認します。ユーザーが明示的に要求しない限り、10秒のプレビューをレンダリングまたはアップロードしないでください。重複するレンダリングとストレージコストを避けてください。
- 完全なMP4をエクスポートし、次に
scripts/finalize-video.sh <input.mp4> <output.mp4>で正規化します。これにより、H.264 High/yuv420pビデオ、AAC-LCステレオオーディオ、avc1タグ、およびfast-start MP4インデックスが生成されます。未確認のストリームコピー結果を公開しないでください。 - プロジェクトディレクトリ、最終ビデオ、
video-brief.json、およびresearch/sources.mdを納品します。明示的に要求された場合にのみプレビューを含めます。手動検証が必要な主張またはメディアがある場合は、その旨を明記します。
プロジェクト標準
FullVideoコンポジションを登録します。ユーザーがプレビューレンダリングを明示的に要求した場合、またはそれが開発を実質的に簡素化する場合にのみ、別のプレビューコンポジションを追加します。- 編集可能なコンテンツはデータファイルに配置し、コピーをコンポーネント全体に散在させないでください。
- タイトル、キャプション、チャート、タイムライン、シーントランジション用の再利用可能なコンポーネントを構築します。ソースメタデータはプロジェクトに保持しますが、デフォルトではソース名、日付、または参照ラベルをビデオに焼き付けないでください。ユーザーが要求した場合、引用に帰属が必要な場合、または主張が誤解を招く可能性がある場合にのみ、画面上にソースを表示します。
- 手続き型グラフィックスが必要な場合は、決定論的アニメーションと安定したシードを使用します。
- 安全なタイポグラフィを使用します。再配布可能なローカルフォントがバンドルされていない限り、最初にシステム中国語フォントを優先します。
- ポートレート出力は別途確認します。ランドスケープコンポジションを単にクロップしないでください。
- 静的なステッカーよりも継続的な説明アクションを優先します。ラベル、矢印、図、ナレーションが何が起こっているかを説明している間、メインの被写体を動かし続けます。平行移動、回転部品、サスペンションまたはボディモーション、スプレーまたはダスト、および背景パララックスを同じフレーム駆動速度信号に結合します。
- 説明が旅、プロセス、成長経路、またはカウントダウンに従う場合は、開始から終了までの永続的な進行キューを作成します。被写体は開始近くに入り、概念が説明されている間も進行を続け、終了時に目的地または最終状態に視覚的に到達する必要があります。
- 二次的な物理的効果は、基になるアクションから導出します。速度はスプレーの長さ、ホイールの回転、航跡、ダスト、ブラー、または振動を制御します。方向はそれらの効果が移動する場所を制御します。被写体のモーションを無視する汎用的な装飾を追加しないでください。
- 描画前に1つの数値的な物理的接触アンカーを確立し、その数式をすべてのシーンで再利用します。ホイール、スキー、足、船体、道路、喫水線はもっともらしく接触する必要があります。ショットごとに異なる垂直位置を手動で目視調整しないでください。説明がその状態を明示的に必要としない限り、被写体全体を表面の下に配置したり、地面の上に浮かせたりしないでください。
- トランスフォーム計算と配置計算は同じ座標系に保ちます。接触位置が被写体の左上隅から計算されている場合、同じ原点からスケーリングおよび回転するか、トランスフォーム原点を明示的に補正します。最小および最大の被写体スケールをテストします。中心原点のスケーリングは、被写体を接触ラインの下に静かにシフトさせる可能性があるためです。
- 実際の機械の場合、描画する前に参照画像から非対称の機能部品をインベントリします。実際の前後または左右の部品が異なる場合、1つの汎用ホイール、翼、サポート、またはツールコンポーネントを再利用しないでください。どの部品が操縦、支持、推進、または環境と接触するかを保持します。
- 人物の場合、スタイリングの前に参照からポーズスケルトンを抽出します。頭、首、肩、肘、手、腰、膝、足首、足。手がコントロールに届き、腰がシートに合い、膝が体の周りで曲がり、足がペグまたは地面に届くことを確認します。塗りつぶされた胴体とまっすぐな四肢のストロークは、完成したライダーではありません。
- ブランディングはデフォルトでオフにします。ユーザーが明示的に要求するか、承認されたブランドアセットを提供しない限り、パブリックアカウント名、ビデオチャンネル名、クリエイターハンドル、ロゴ、透かし、または定期的なアカウントラベルを追加しないでください。
- 中国語話者のユーザー向けにプロジェクトまたはスキルの変更をコミットする場合は、ユーザーが別の言語を要求しない限り、簡潔な中国語のGitコミットメッセージを使用します。
- 存命のクリエイターの正確なブランドスタイル、声、アバター、ロゴ、または特徴的なトランジションを模倣しないでください。映画的なペースやデータ駆動モーションなどの高レベルの特性を、オリジナルのビジュアルシステムに変換します。
デフォルトのビジュアル方向性
暗いエディトリアル背景、1つの明るいアクセントカラー、控えめなグロー、大きな中国語タイポグラフィ、細いグリッド線、および目的のあるモーションを使用します。過剰なパーティクル、カードグリッド、ランダムグラデーション、偽の3D、および一定のカメラ移動を避けます。概念がアニメーションを決定するようにします。
コマンド
npm run dev
npx remotion render FullVideo out/review-frames --frames=0,450,900,1350,1800,2250,2699 --image-format=png
npx remotion render FullVideo out/final.mp4
python3 scripts/generate-light-science-music.py --duration 90 --output public/audio/light-science-music.wav
bash scripts/finalize-video.sh out/final.mp4 out/final-compatible.mp4
Windowsでは、インラインシェルJSONではなく、JSONファイルを使用してコンポジションプロップを渡します。
完了ゲート
以下のすべてが満たされるまで、ビデオを完了と見なさないでください。
- すべての事実の主張にソースがあるか、解釈として明確にラベル付けされている。
- ブリーフバリデーターが合格する。
- 冒頭、シーンの中間点、トランジション、およびエンディングからの代表的な静止フレームがレビューされている。
- メインの被写体を含むすべてのシーンが少なくとも1回レビューされている。最終フレームのみから被写体のジオメトリを承認しない。
- 説明テキスト、ラベル、矢印、進行インジケーターが、レビューされたどのフレームでもメインの被写体またはキャプションと重なっていない。
- 16:9または要求されたフォーマットでテキストがクリップされていない。
- 認識可能な実際の被写体が視覚的に信頼でき、プレースホルダーレベルの線画に還元されていない。
- 人間のプロポーションが目に見えて圧縮または伸長されておらず、関節部分が自然に接続されており、被写体のスケールがシーン間で一貫している。
- 物理的な接触とオクルージョンが信頼できる。被写体が意図せず水面下に沈んだり、地面と交差したり、他のオブジェクトを通過したりしていない。
- 最小スケールと最大スケールの外観が、トランスフォーム後も同じ接触アンカーを維持している。
- 非対称な現実世界のコンポーネントが参照と一致し、汎用的な再利用可能な形状から複製されていない。
- 期待される機械的モーションが表示され、同期している。例えば、ホイールまたはプロペラの回転が移動速度と一致し、スプレー、サスペンション、またはボディピッチなどの二次的な動きがある。
- トピックが動きを伴う場合、メインの説明シーケンスは静的な図だけに依存するのではなく、継続的なアクションを使用している。
- 旅またはプロセスに、首尾一貫した視覚的な開始、進行中の進行、および完了が見える。
- 要求されていないアカウント名、チャンネル名、ロゴ、または透かしがビデオに表示されていない。
- キャプションがナレーションと一致している。
- 背景オーディオが音楽的に聞こえ、ヒスノイズ、ランブル、またはスタティックではない。
- メディアのライセンスと帰属が記録されている。
- フルレンダリングコマンドが成功する。
- 納品されたMP4が完全なFFmpegデコードに合格し、
ffprobeがオーディオが存在する場合は常にH.264/yuv420pに加えてAAC-LCを確認する。 - ファイルがアップロードされた場合、アップロードの成功がメディアの整合性を意味すると想定するのではなく、そのアップロードされたアーティファクトをダウンロードまたは具体化し、そのサイズ、ハッシュ、およびデコード可能性を検証する。