HyperFrames を使った VLOG 編集
生のトーキングヘッド動画(フィラー映像も少し含む)を、コンパクトでメッセージ性が強く、色味が美しく、テキスト付きの 16:9 動画に変換します。
基本哲学 / 出典
- Walter Murch, Rule of Six (In the Blink of an Eye): 感情 51% > ストーリー 23% > リズム 10% > 視線の誘導 > 画面の二次元性 > 三次元表現。感情とストーリーの流れを優先してセグメントを選択し、映像の問題は後で処理します。
- Casey Neistat: 導入 → 背景 → 本題 → 結論; 意図的なジャンプカット; 多くのフィラー映像の使用。
- トーキングヘッド: 音声が核 (L-cut)、フィラー映像を重ね、パンチインでジャンプカットを隠す。
- 実績: 車内で撮影した 11:22 の VLOG を 5:22 に編集、23 セグメント、29 テキストブロック (サンプル計画は
references/vi-du-plan.jsonにあり)。
使用する / 使用しない場合
- 使用する: 一人語りの長い動画 (VLOG、共有、ライブ配信の録画、車内撮影) で、短縮 + フィラー + テキストが必要な場合、横画面 16:9 のもの。
- 使用しない: TikTok 風の縦画面 9:16 で単語ごとに字幕が流れるもの; AI アバター動画 / ナレーションのみ; 動画をそのままにして字幕だけが必要な場合 (その場合は HyperFrames の
/embedded-captionsを使用)。
前提条件
HUONG-DAN-CAI-DAT.md に従ってインストールし、node <skill>/scripts/kiem-tra-may.mjs を実行してすべて ✓ が表示されることを確認してください。
ffmpeg/ffprobe、Node ≥ 18、npx hyperframes(0.8.168–0.8.169 で確認済み)。whisper-cli(whisper.cpp) + モデル~/.whisper-models/ggml-large-v3-turbo.bin(環境変数WHISPER_BIN、WHISPER_MODELで変更可能)。- Mac では VideoToolbox を使用するため高速カット可能 (~2.7K HEVC 10-bit で実時間の約2倍); Windows/Linux では自動的に libx264 に切り替わります (低速)。
- 空きディスク容量: 出力動画1分あたり 0.6 GB + 3 GB。初回レンダリング時は chrome-headless-shell をダウンロードします (~150 MB)。
- Be Vietnam Pro フォントは
assets/fonts/に同梱 (SIL OFL ライセンス、オンライン不要)。
実行手順
S=<スキルディレクトリ>/scripts (通常は .claude/skills/hmhshare-mkt-bien-tap-vlog-hyperframes/scripts)
W=<作業ディレクトリ>、例: ~/vlog-lam-viec/<slug>。メディアファイルはここに置き、クラウド同期フォルダ (Google Drive、OneDrive、Dropbox など) には置かないでください。処理が遅くなりエラーが発生します。
ステップ 1 — 準備 (マシン、約1~3分)。
node $S/01-chuan-bi.mjs --work $W --main "<メイン動画>" --broll "<フィラー1>,<フィラー2>,..."
結果: probe.json、contact.jpg、loi-thoai.txt (単語レベルのタイムスタンプ)、main_clean.wav、フィラーのプロキシ hfproj/media/bNN*.mp4 + broll.json。再実行時は既存部分をスキップします (--force で再実行)。
ステップ 2 — AI 編集 (references/chon-doan-bien-tap.md をよく読んでください)。
contact.jpg (話者の位置 → tam_zoom、テキスト配置位置) を確認し、loi-thoai.txt をすべて読み、視聴者 + メッセージ (不明な場合はユーザーに確認) を決定し、$W/plan.json の doan セクションを references/plan-json.md に従って記述します。合計時間を簡単に確認:
node $S/02-cat-doan.mjs --work $W --main "<メイン動画>" --chi-tinh # ban-cat.txt のみ表示、カットはしない
→ ユーザー確認: ユーザーが事前確認を希望する場合は、ban-cat.txt の表を送信して停止します。デフォルト: そのまま続行し、最終レポートにセグメント表を含めます。
ステップ 3 — カット + ノイズ除去 + 結合点の確認 (マシン)。
node $S/02-cat-doan.mjs --work $W --main "<メイン動画>"
出力: hfproj/media/main_cut.mp4/.wav、segs.json、kiem-tra-noi.json。単語が欠落している警告があるセグメントは cut-words.json (Whisper の誤認識が原因の場合あり) と照合し、実際のエラーであれば lui_dau/them_cuoi を追加して再実行します。
ステップ 4 — AI がテキストを作成 + コンポジションを構築。
ban-cat.txt を読み、plan.json の chu セクション (doan + sau に従う) と canh_tram (デフォルト: {"nhip":20}) を作成し、次を実行:
node $S/03-dung-hyperframes.mjs --work $W
cd $W/hfproj && npx hyperframes check --json # lint 0 エラー、layout 0、contrast すべて合格
npx hyperframes snapshot --at <スクリプトが出力するマーカー> # AI がコンタクトシートを確認: テキストの改行が不自然、顔を隠している、色がおかしい
計画/テキストを修正 → 03 を再実行し、フレームがきれいになるまで繰り返します (テキストが長い場合は文章を短くし、フォントサイズを小さくしないでください)。
ステップ 5 — レンダリング + 書き出し (マシン、Mac M1 Pro で動画時間の約1.5倍)。
node $S/04-render-xuat.mjs --work $W --out "<出力ディレクトリ>" --quality delivery
時間が合っているか、音声があるか、LUFS を確認し、soat.jpg を出力し、動画 + du-an-hyperframes/ + plan/segs/文字起こしを出力ディレクトリにコピーします。AI は soat.jpg を最後に確認します。
ステップ 6 — レポート。 ユーザーに以下を返します: 動画のパス、編集前後の時間、タイムライン表 (セグメントと主要メッセージ)、削除した内容、plan.json の修正箇所。レンダリングキャッシュを削除します (注意事項を参照)。
リファレンス
scripts/lib.mjs: ffmpeg/whisper/単語クラスタ検索、マシンに応じたエンコーダ選択。scripts/01-chuan-bi.mjs·02-cat-doan.mjs·03-dung-hyperframes.mjs·04-render-xuat.mjs·kiem-tra-may.mjs。scripts/template.tpl: HTML + GSAP フレームワーク (9 種類のテキスト、パンチイン、フィラー合成、Ken Burns)。references/plan-json.md: 計画フォーマット + テキストタイプの表 ·references/vi-du-plan.json: 実際の計画 (23 セグメント / 29 テキスト)。references/chon-doan-bien-tap.md: セグメント選択ルール、ストーリー構造、映像リズム。- HyperFrames ドキュメント: https://hyperframes.heygen.com (マシンに
hyperframes、hyperframes-cliスキルがあればさらに参照)。
注意点 / 落とし穴
- Whisper のテキストタイムスタンプは実際の音声より約 0.3~0.5 秒遅れます: スクリプトは開始点を 0.3 秒早めています; それでもずれる場合は
lui_dauを追加してください。 - 元の 2.7K/4K 動画全体のプロキシを作成しないでください (11 分で約 40 分かかります): ステップ 3 で選択したセグメントのみをカットします。
hfproj/のルートに 2 つ目の.htmlファイルを置かないでください: HyperFrames はmultiple_root_compositionsエラーを報告します。テンプレートはscripts/にあります。- lint 警告
nested_structure_needs_subcomposition/timeline_track_too_denseは構成上の提案であり、無視しても構いません。 - レンダリングはデコードキャッシュをマシンの一時ディレクトリに書き込みます (Mac/Linux では
$TMPDIR/hyperframes-extract-cache-*、Windows では%TEMP%; 5 分の動画で約 2 GB): レンダリング完了後に削除してください。 - 初回の「Checking browser」フェーズは数分かかることがありますが、ブラウザをダウンロードしているためであり、フリーズではありません。
- 文字起こしに多くの誤りがある場合: 画面上のテキストは正しいスペルで記述し、文字起こしをそのままコピーしないでください。このスキルでは、動画全体の字幕はまだサポートしていません。
- HDR/LOG 動画: 事前に SDR に変換してください (ステップ 1 で警告が出ます); リアルタイムカラーグレーダーは Rec.709 のみに対応しています。
- カメラのメモリーカードは、ステップ 1 からステップ 3 が完了するまで挿したままにしてください (ステップ 3 で元のファイルを再度読み取ります)。最善の方法は、事前に動画をマシンにコピーすることです。
- Windows: スペースを含むパスは常に二重引用符で囲んでください。
出力
<出力ディレクトリ>/: <slug>.mp4、du-an-hyperframes/ (index.html + config、メディアは含まない)、plan.json、segs.json、ban-cat.txt、loi-thoai.txt、kiem-tra-noi.json、broll.json、soat.jpg。