使用 HyperFrames 剪輯 Vlog
將一段原始談話影片(附帶一些填充鏡頭)轉換成一部 16:9 的影片,精簡、切題、色彩美觀且帶有文字。
核心理念 / 來源
- Walter Murch, Rule of Six (In the Blink of an Eye): 情感 51% > 故事 23% > 節奏 10% > 視線追蹤 > 2D > 3D。先根據情感和故事脈絡選擇片段,影像瑕疵事後處理。
- Casey Neistat: 開頭 → 背景 → 內容 → 結尾;有目的的跳躍剪輯;大量使用填充鏡頭。
- 談話性頭影片: 語音是主幹(L-cut),填充鏡頭覆蓋其上,punch-in 遮蔽跳躍剪輯。
- 實際驗證:車上拍攝的 11:22 vlog 縮短至 5:22,共 23 個片段,29 個文字區塊(範例計畫在
references/vi-du-plan.json)。
使用時機 / 不使用時機
- 使用時機: 一個人的長篇談話影片(vlog、分享、錄製的直播、車上拍攝)需要縮短 + 填充 + 文字,橫向 16:9 畫面。
- 不使用時機: 9:16 的豎向 TikTok 類型短片且需要逐字跑馬字幕;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 倍,適用 2.7K HEVC 10-bit);Windows/Linux 會自動轉為 libx264(速度較慢)。
- 可用硬碟空間至少為影片輸出長度每分鐘 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,確認觀眾 + 訊息(若不清楚則詢問使用者),然後根據 references/plan-json.md 的格式在 $W/plan.json 中撰寫 doan 區段。快速估算總時長:
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 錯誤、對比度全部通過
npx hyperframes snapshot --at <腳本輸出的各個時間點> # AI 檢視 contact sheet:文字換行是否美觀、是否遮擋臉部、顏色是否協調
修改計畫/文字 → 重新執行步驟 03,直到畫面乾淨(文字過長請簡化句子,不要縮小字型)。
步驟 5 — 渲染與輸出(機器執行,Mac M1 Pro 上約為影片長度的 1.5 倍)
node $S/04-render-xuat.mjs --work $W --out "<輸出目錄>" --quality delivery
檢查時長是否吻合、是否有音訊、LUFS 是否達標,產出 soat.jpg,然後將影片 + du-an-hyperframes/ + 計畫/分段/逐字稿複製到輸出目錄。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 種文字類型、punch-in、填充片段融合、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/根目錄放置第二個.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 + 設定檔,不含媒體)、plan.json、segs.json、ban-cat.txt、loi-thoai.txt、kiem-tra-noi.json、broll.json、soat.jpg。