ローンチ動画
レンダラー:launch-video-skills npm パッケージ。完全なシーンコントラクト:https://github.com/anudeepadi/launch-video-skills#scene-contract
npx launch-video-skills setup:マシンごとに1回(ヘッドレスChromium + Python音声パッケージ)。Node 18+、Python 3.10+、ffmpegが必要。初回音声実行時、Kokoro重み(約350MB)とwhisper small.en(約480MB)が~/.cache/lvkにダウンロードされます。npx launch-video-skills new <name>:launch-videos/scenes/<name>/index.htmlと、その隣にlaunch-videos/kit/を生成します。npx launch-video-skills render <scene.html> [flags]:./out/に出力します。- Chromiumのダウンロードが停止した場合 →
export LVK_CHROME=/path/to/chrome-headless-shell(任意のローカルビルドを使用)。 - macOSでpython.orgのPythonがSSLに失敗する場合 →
export SSL_CERT_FILE=$(python3 -c 'import certifi;print(certifi.where())')。
良いローンチ動画を「AIの粗製濫造」から区別するものは、references/craft.mdにあります。ストーリーボードを作成する前に読んでください。
手順
- 稼働中の製品からブランドと事実を取得する。 Playwrightでサイトを取得します。見出し、サブ見出し、機能名、サイト自身のサンプルコンテンツ(デモスレッド、プロンプト、コード、課題リスト)、CTAをそのまま記録します。フォントファミリー、ウェイト、文字間隔の計算スタイルと、背景/テキスト/アクセントカラーのサンプルピクセル色を読み取ります(CSS変数は陳腐化します)。ロゴSVGと画像は
launch-videos/scenes/<name>/assets/に保存します。サイトのフォントは、そのライセンスが再配布を許可している場合のみ使用します。それ以外の場合は、最も近いバンドルフォント(Inter、JetBrains Mono、Space Grotesk)を使用します。メトリクス、顧客、統合、UIを決して捏造しないでください。何かが「計画中」「プレビュー」とマークされている場合は、省略するかラベルを付けてください。実際のUI例を入手できない場合は、作業を停止してその旨を伝えてください。ソースURLと日付をシーンの先頭にコメントとして記述してください。 - スクリプトを作成し、ストーリーボードを作成する。 ショットごとに1~2行の短い行を、サイトのコピーから引用します。合計20~40秒。話し言葉が異なる場合(ドット、頭字語:
say: 'Build A.I. agents')はsayを使用します。5~6ショット、各ショット1つのアイデア:フック(2秒以内に製品または見出しを画面に表示)→ 最初の使用瞬間 → 製品の動作中(サイト自身のサンプルからHTMLで再現した実際のUI、スクリーンショットは不可)→ 2つ目の機能 → 3本柱または仕組み → CTAとロゴ。落ち着いたブランド:music.style: 'ambient'、ソフトなSFX(0.2~0.6)。開発ツール:'pulse'とヒット音。音声はオプション。音楽のみの動画はXでよく見られます。 launch-videos/scenes/<name>/index.htmlを書く。../../kit/kit.cssとkit.jsに対して作成します。生成されたテンプレートから始めてください。ショットにdata-shot="id"をマークし、ハードコードされた--in/--outは使用しないでください。音声行はSCENE.voice.lines(キー、ショット、テキスト/発音、開始/後、pause拍)に配置します。拍を音声に固定するには、data-on="key"、data-on="key:word"、data-edge="e"を使用します。SCENE定義後はK.layout()を呼び出し、K.at/K.end/K.shotからJS拍を導出します:タイピング速度 = テキスト長 / 発話時間、キーワードでのカーソルクリック、同じ定数からのタイプ音の手がかり。onFrame(t)はtに関して純粋でなければなりません。JS変換は、CSSアニメーションクラスを持たないラッパーに適用します。大きなfilter: blur、backdrop-filter、全画面のブレンドモードは使用しないでください。- レビューループ。
npx launch-video-skills render launch-videos/scenes/<name>/index.html --sheet 1を実行します。<- ASR heard:の行はすべて発音の誤りの可能性があります。sayで綴りを修正し、再確認してください(whisperが正しい音声を聞き間違えることがあります。それらは人間が聞くようにフラグを立ててください)。シートのPNGを確認する項目:賑やかな画像の上のテキスト、小さなテキストの可読性、空のフレーム、遷移中の衝突、ショット終了前に終わるタイピング、破損したシンタックスハイライト。--stills t1,t2でフル解像度のチェックを実行します。「速すぎる」「何が起こったか不明」といった味覚メモで反復し、一発で完了しないでください。 - レンダリングと検証。
npx launch-video-skills render launch-videos/scenes/<name>/index.html --workers 4を実行します。その後:ffprobe:h264 + aac、想定された長さ。volumedetect:平均約-19~-17 dB、最大-1 dB未満。- 同期:faster-whisper small.enのワードタイムスタンプで最終MP4を文字起こし。各ラインの最初の単語が、ログに出力されたタイムラインから約0.2秒以内に一致すること。キーワードが視覚的な拍に合っていること。
- 連続性:ワーカー境界をまたいだフレームを比較(フレーム数 / ワーカー数)。
- 納品。 MP4のパスを渡します。以前のカットを上書きしないでください(
mv -nまたは新しい--out)。音声と音楽は合成音であり、耳でチェックされていないことを明確に伝えてください。「1つのプロンプトで作成」といった主張を避けた投稿文を提案します。有料音声(ElevenLabs、OpenAI、Google)はパッケージ内のlib/tts.pyで切り替え可能です。ユーザーがより人間らしい読み上げを希望する場合のみ言及してください。