デモビデオスタジオ は何をしますか?
動作中のWebアプリを、洗練されたデモ動画に変換します。実際の操作収録(スライドショーやモックではありません)+ ローカルTTSによるナレーション + ワード単位で同期された字幕 + 控えめなBGMを、HyperFrames で決定的に合成します。
使用するタイミング
Webアプリのデモ / ウォークスルー / プロダクト / ローンチ / ハッカソン動画を作成する場合、特に実際のプロダクトを動作させながらナレーションと字幕を表示したい場合に使用します。デプロイ済みのURLまたはローカルの開発サーバーを収録できます。
パイプライン
① 録画 Playwright でアプリを操作、可視カーソル → out/clips/*.webm
② ナレーション シーンごとにVOを作成 → Kokoro TTS(ローカル) → narration/*.wav
③ 文字起こし Whisper によるワードレベルのタイムスタンプ → *.transcript.json
④ 字幕 フレーズにグループ化 + ブランド名の誤認識修正 → captions.js
⑤ BGM ffmpeg によるアンビエント(音声の下にミックス) → music/bed.wav
⑥ 合成 HyperFrames HTML ワンタイムライン: クリップ+音声+字幕+BGM → MP4
録画と合成は独立しています。他の部分をやり直すことなく、1シーンのみ再収録したり、ナレーションのみ再生成できます。コード生成GIFトラック(HTMLシーンを録画せずに直接MP4にレンダリング)は、ドキュメントページ用のオプショナルなサイドパスとして利用可能です。
ワークフロー
- まずプロダクトを理解する。 READMEやデモ用ドキュメントを読み、ツールに触れる前に「デモフロー」を作成します:問題 → プロダクトウォークスルー → 証拠 → 結論。推奨されるクリックパスと、各シーンで到達すべき可視結果を決めます。references/templates.md を参照。
- 録画する。
scripts/record.mjsをコピーし、APPとSIZEを設定、scenesを自分の振り付け(スライド → 一時停止 → 操作 → ホールド)に置き換えます。デバイススケール1:1で録画。node scripts/record.mjs [scene]。エンジンと動作例は references/recording.md を参照。 - ナレーション → 字幕。 各シーンごとに
assets/narration/NN-*.txtをVOの声で作成します(あなたが視聴者に話しかけているのであって、READMEを読み上げているわけではありません)。その後:bash scripts/tts.sh && bash scripts/transcribe.sh && node scripts/build-captions.mjs。build-captions.mjs内のPHRASE_FIXをブランド名に合わせて編集します。ガイド: references/narration-and-captions.md。 - 合成してレンダリング。 references/composition-skeleton.html から始め(1つのクリップ + 字幕トラック + 音声)、タイムラインを拡張し、その後
npx hyperframes render . --resolution landscape --fps 30 --crf 17 --quality high。1:1でレンダリング(1080pで作成 → 1080p出力)— 4Kにアップスケールしないでください。UIがぼやけます。references/composition.md を参照。 - 出荷前にQC。 ffprobeで長さ/音声を確認、1~2フレームをサンプリング(黒や空でないこと)、字幕がフレーム内に収まっているか、ナレーションが切れていないか、重要な結果ページが実際に表示されているかを確認。フロー/タイミングを修正し、再レンダリング。
クイックスタート
# システム依存
brew install node ffmpeg
npx playwright install chromium
# ローカルTTS + 文字起こし用のPython venv(初回のみ)
python3 -m venv .ttsvenv && .ttsvenv/bin/pip install kokoro-onnx soundfile
export PATH="$(pwd)/.ttsvenv/bin:$PATH"
# 1) 録画 2) ナレーション 3) 字幕 4) 合成+レンダリング
node scripts/record.mjs
bash scripts/tts.sh && bash scripts/transcribe.sh && node scripts/build-captions.mjs
npx hyperframes render . --resolution landscape --fps 30 --crf 17 --quality high --output out/demo.mp4
初回のTTSは約340 MB(Kokoro)、初回の文字起こしは約466 MB(Whisper small.en)をダウンロードします。どちらも ~/.cache/hyperframes/ にキャッシュされます。
経験則
- 実際の操作がスライドより優れている — 実際にプロダクトが動作しているところを収録すること。
- 1:1、2倍アップスケール禁止 — 2× DPRで録画し4Kでレンダリングすると、すべてのUIクリップがぼやける。1080pで作成・レンダリングすること。
- 決定的な合成 — HTML内に
Date.now()、Math.random()、ネットワークアクセスを入れない。HyperFramesはフレームをシークするため、動きは再現可能でなければならない。 - 可視カーソル + 結果でホールド — 意図的にスライドし、結果が表示されたところで一時停止。
- VOであって、ドキュメントではない — ナレーションは映像に合わせる。READMEをそのまま読むのではない。
- 映像はナレーションより長く — クリップ時間を余裕を持たせ、映像が音声より先に終わらないようにする。
依存関係
Node 22以上、FFmpeg、Playwright(Chromium)、およびHyperFrames CLI(npx hyperframes、スキルは npx skills add heygen-com/hyperframes で追加)。ローカルTTS/WhisperにはPython + kokoro-onnx が必要。HyperFramesのセットアップについては references/composition.md を参照。
リファレンス
- references/pipeline.md — 6つのステージとデータフロー
- references/recording.md — Directorエンジン + 動作例 + 録画の注意点
- references/narration-and-captions.md — VOの書き方、TTS、Whisper、字幕修正
- references/composition.md — HyperFramesタイムライン、クロスフェード、1080p、レンダリング
- references/composition-skeleton.html — index.htmlとしてコピー可能な最小限の合成ファイル
- references/templates.md — ハッカソン + プロダクトデモの構造とVOの雛形
- references/troubleshooting.md — 字幕、白画面、音声、フォントに関するトラブルシューティング