上市影片
渲染器:launch-video-skills npm 套件。完整場景合約:https://github.com/anudeepadi/launch-video-skills#scene-contract
npx launch-video-skills setup:每台機器執行一次(安裝 headless Chromium 與 Python 語音套件)。需要 Node 18+、Python 3.10+、ffmpeg。首次執行語音功能時,Kokoro 權重(約 350 MB)與 whisper small.en(約 480 MB)會下載至~/.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(可使用本機任何版本的 Chromium)。 - macOS 上 python.org 的 Python 若 SSL 失敗 →
export SSL_CERT_FILE=$(python3 -c 'import certifi;print(certifi.where())')。
好的上市影片與「AI 垃圾」之間的區別,詳見 references/craft.md。在開始分鏡之前,請務必先閱讀該檔案。
步驟
- 從實際產品中取得品牌與事實。 使用 Playwright 擷取網站內容。記錄下標題、副標題、功能名稱、網站自身的範例內容(示範討論串、提示詞、程式碼、議題清單)以及號召性用語。讀取計算後的字型樣式(font family、weight、letter-spacing)與背景/文字/強調色的樣板像素色(請注意 CSS 變數可能會過時)。將 Logo SVG 與任何圖片儲存至
launch-videos/scenes/<name>/assets/。僅在字型授權允許重新散布時,才使用網站的字型;否則使用最接近的內建字型(Inter、JetBrains Mono、Space Grotesk)。絕對不要捏造數據、客戶、整合功能或 UI。如果某個項目標示為「計畫中」或「預覽」,請省略或明確標註。如果你無法取得真實的 UI 範例,請停止並說明原因。在場景檔案頂端的註解中放入來源網址與日期。 - 先寫腳本,再畫分鏡。 每個鏡頭使用一至兩行簡短文字,取材自網站的文案;總長度 20–40 秒。使用
say來標註口語形式與原文不同之處(如點號、縮寫:say: 'Build A.I. agents')。5–6 個鏡頭,每個鏡頭一個概念:引發興趣(2 秒內顯示產品或標題)→ 首次使用場景 → 產品實際運作(使用網站自身的範例,透過 HTML 重建真實 UI,絕不使用螢幕截圖)→ 第二項功能 → 三大支柱或運作方式 → 號召性用語與 Logo。低調品牌:music.style: 'ambient',柔和的音效(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中(key、shot、text/say、at/after、pause節拍)。使用data-on="key"、data-on="key:word"、data-edge="e"將節拍與語音對齊。在定義完SCENE後呼叫K.layout(),然後從K.at/K.end/K.shot推導出 JavaScript 節拍:打字速度 = 文字長度 / 語音持續時間,在關鍵字詞處觸發游標點擊,從相同的常數取得打字音效提示。onFrame(t)必須是純函數(只依賴 t)。JavaScript 變換應套用在沒有 CSS 動畫 class 的包裝元素上。避免使用大範圍的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 秒以內。關鍵字詞應與視覺節拍對齊。
- 連續性:比較各 worker 邊界處的畫面(使用總影格數 / worker 數量)。
- 交付。 提供 MP4 檔案路徑。切勿覆蓋先前的剪輯版本(使用
mv -n或指定新的--out路徑)。明確說明語音與音樂是合成而來,且尚未經過人耳確認。提供貼文文案,避免使用「一鍵生成」之類的誇大說法。付費語音服務(ElevenLabs、OpenAI、Google)可透過套件內的lib/tts.py抽換;僅在用戶想要更自然的語音才提及其可行性。