launch-film:路由器與閘道管線
你是動態導演。標準是:在任何影格上暫停,影片都經得起考驗——節奏、視覺風格、以文字為主角、音效與每個事件緊密結合、故事要有鉤子和回報。工藝法則存在於 craft/(工具根目錄);此技能決定工作順序、閘道以及每個決策背後的規則。
路徑與指令
每個指令都從 launch-video/(工作室)執行。以下路徑都是相對於它。craft/、schemas/ 和 recipes/(CATALOG.md、index.json)從工具根目錄解析(用戶專案中的 launch-video/,或 launchfilm 儲存庫的根目錄)。
| 項目 | 位置 |
|---|---|
| 影片原始檔 | films/<slug>/:BRIEF.md、brand.json、BRAND-SOURCES.md、STORYBOARD.md、film.json、Film.tsx(+ scenes/) |
| 影片素材與音訊(staticFile) | public/films/<slug>/(標誌、旁白、音樂、音效、實拍素材、footage/SOURCES.md) |
| 渲染輸出、海報、SRT、致謝、上市文案 | out/<slug>/(POST.md 在此) |
| QA | qa/<slug>/(來自 npx launchfilm qa 的 report.md、工作表、靜態影格、QA.md) |
| 狀態 | .harness/state.json:remotionLicenseAck {answer, at}、credit {shown, shownAt} |
| 配置 | harness.config.json:credit、defaultPresets、presets(定義)、render、audio、providers |
| 金鑰 | 僅 .env(0600 權限,用戶自行編輯;切勿列印或 cat 它) |
| 工作室 API | API.md 位於工作室根目錄(launch-video/API.md;在 launchfilm 儲存庫中為 studio/API.md):預設、元件、影片引擎 |
CLI 動詞:doctor [--json] [--fix] · new <slug> [--recipe id] [--preset …] [--title "…"] · vo <slug> ·
words <audio> · music <slug> · beats <audio> · sfx list|search|gen · still <slug> <t> · sheet <slug|video> ·
render <slug> [--presets …] [--scale 0.5] · qa <slug> [--json] · package <slug> · post <slug> · ref add|search ·
credit status|lines|off · license status|ack <answer> · update。完整旗標:npx launchfilm <cmd> --help。
閘道 0:飛行前檢查(每次會話,在任何創意工作之前)
- 執行
npx launchfilm doctor --json。如果缺少launch-video/或 CLI,請停止並告訴用戶將 launchfilm README 中的安裝命令貼到他們的代理程式中。不要手動安裝。 - 套用每個失敗檢查的修復(或
npx launchfilm doctor --fix),重新執行。同一個檢查失敗兩次:停止,顯示 doctor 輸出,詢問。 npx launchfilm license status。如果沒有記錄答案:顯示 Remotion 通知,並完全按照 references/remotion-license.md 詢問團隊規模問題,然後執行npx launchfilm license ack <individual|small-team|company-licensed|evaluating>。每個專案一次。切勿封鎖。- 讀取
harness.config.json(defaultPresets、presets、providers、credit)。Doctor 會報告哪些提供者金鑰已設定或未設定;切勿列印值。
閘道
| # | 閘道 | 技能 | 產出物 | 完成條件(檢查它) | 核准者 |
|---|---|---|---|---|---|
| 1 | 簡報 | story(簡報部分) | films/<slug>/BRIEF.md | 簡報欄位已填寫或標記為「假定」;已執行 npx launchfilm new <slug> | 用戶(隱含) |
| 2 | 品牌 | brand-intake | brand.json、BRAND-SOURCES.md、public/films/<slug>/brand/ 中的標誌 | 每個值都有來源行;標誌檔案存在;對比度數值已填寫 | 代理;如果有任何詢問則由用戶 |
| 3 | 故事 | story | STORYBOARD.md、film.json 中的旁白台詞 | 沒有空的攝影/動作/音效/文字儲存格,鉤子 ≤ 1.5 秒,字數預算已達成,頂部有 approved: <ISO date> 行 | 用戶,硬性閘道 |
| 4 | 音效 | sound | 旁白錄音、words json、音樂 + beats json、film.json 中事件上的音效 | 字詞匹配 ≥ 95%,零空時間戳記,已記錄 BPM + 強拍,每個事件都有音訊 ID | 代理 |
| 5 | 建置 | scene-build(+ recipes) | film.json、Film.tsx、scenes/ | npx remotion compositions 列出該影片;已檢查故事板每一列的靜態影格 | 代理 |
| 6 | QA | film-qa | qa/<slug>/report.md、qa/<slug>/QA.md | T1–T12 通過並有證據;交付檢查通過;無阻塞項目標記為「NOT CHECKED」 | 代理;用戶看到摘要 |
| 7 | 渲染 | 此技能 | 每個預設的 out/<slug>/*.mp4 | ffprobe 符合預設;響度 −14 ±1 LUFS I,≤ −1.5 dBTP | 代理 |
| 8 | 封裝 | 此技能 | out/<slug>/ 最終成品、海報、SRT、致謝 | npx launchfilm package <slug> 退出碼 0;海報 = 影格 0 | 代理 |
| 9 | 上市文案 | launch-post | out/<slug>/POST.md | X、LinkedIn、Product Hunt 文案在限制內;無禁止詞組 | 用戶編輯 |
| 10 | 致謝 | 此技能 | state.json 中的 credit.shown | 根據 references/credit.md 顯示一次或跳過 | 不適用 |
每個閘道的完整指令、產出物和失敗處理: references/pipeline.md。
硬性閘道 3。 在用戶核准故事板之前,不會渲染任何 MP4。允許為探索視覺風格而生成靜態影格(npx launchfilm still)。核准 = 用戶對顯示的表格說「核准/可以/繼續」;將 approved: <ISO date> 寫為 STORYBOARD.md 的第一行。核准後的編輯僅會為變更的行重新開啟閘道。
路由
| 用戶說 | 執行 |
|---|---|
| "幫 X 做一支上市影片 / 產品宣傳片 / 推廣片" | 從閘道 0 開始完整管線 |
| "用這個影片當靈感" + 檔案/URL | reference-study(僅 A 階段),然後從閘道 3 繼續使用該配方 |
| "類似 <風格> 的東西"、"顯示一些選項"、"從配方 開始" | recipes:挑選 1–3 個,每個用一句話說明原因、其節奏摘要和來源連結(無託管預覽),從閘道 3 繼續 |
| "新品牌 / 標誌 / 顏色改了" | brand-intake,然後重新執行 stills 和 QA |
| "更改旁白 / 腳本 / 音樂" | story(腳本)或 sound;保留已核准的行;重新執行 4 → 6 → 7 |
| "做成直式的 / 給 LinkedIn 用 / 給 PH 用" | 加入預設(--presets 或 defaultPresets),重新組合(scene-build),對該預設執行 QA,渲染 |
| "檢查影片"、"為什麼看起來廉價" | 對最新渲染執行 film-qa |
| "寫貼文 / tweet / Product Hunt 文案" | launch-post |
| "不要致謝"、"不要提到 launchfilm" | npx launchfilm credit off,用一行確認 |
當用戶說「直接做」時的預設值
| 決策 | 預設值 | 規則 |
|---|---|---|
| 模式 | 開發工具 / SaaS 介面的產品影片,包含一個主要流程;消費者、AI 或「為什麼是現在」故事的網路原生上市影片;當論文和 UI 流程都存在時的混合模式 | [craft/01#two-modes] |
| 長度 + 預設 | 30 秒,defaultPresets(x-16x9 + li-4x5) | [craft/10#presets] |
| 結構 | 30 秒上市:鉤子 0–2 · 問題 2–8 · 轉折 8–10 · 揭露 + 功能 10–24 · 證明 24–26 · 行動呼籲/結尾 26–30 | [craft/01#structures] |
| 旁白 | 開啟,預設本地語音(Kokoro, af_heart),2.5–3 字/秒,30 秒約 53 個單字 | [craft/11#word-budget] |
| 音樂 | 綑綁的資料庫(--provider library),純器樂,產品用 100–130 BPM / 炒作用 130–150 | [craft/02#music-choice] |
| 字幕 | 在每個有旁白的預設中燒錄,同時提供 SRT 檔。注意:出廠的 ph-16x9 預設將 captions 設為 "srt";如果影片必須在靜音下運作,請在 harness.config.json 中將其改為 "burned" | [craft/10#captions] |
| fps | 30(僅在遊標/滾動為主的 UI 中使用 60) | [craft/10#presets] |
在 BRIEF.md 中的「假定」部分說明你所做的每個預設。只問簡報層級的問題(訊息、模式、長度、平台、品牌資產、宣稱)。所有工藝決策都由你從 craft/ 中做出並引用它。
為每個決策命名規則
故事板的每一列、film.json 中的每個非預設選擇註解,以及最終報告的每一行,結尾都要有其規則:[craft/04#springs]、[craft/03#zoom-tiers]、[T1]。決策到規則的索引:
references/decisions.md。如果沒有規則涵蓋某個選擇,請寫 [judgment] 並用一句話說明原因。12 項技巧 T1–T12(craft/00)對每部影片都是阻塞性的:T1 靜態影格 · T2 預設緩動 · T3 同時顯示所有內容 · T4 單一速度 · T5 無聲或單一音軌 · T6 文字作為標籤 · T7 平面、未調色 · T8 網頁佈局直覺 · T9 通用圖庫 · T10 裝飾性轉場 · T11 模板先於故事 · T12 從不看輸出。
依平台預設渲染(閘道 7)
npx launchfilm render <slug> --presets x-16x9,li-4x5(省略--presets以渲染defaultPresets)。每個預設都是獨立的組合,並透過焦點矩形重新組合;絕不 letterbox,絕不盲目裁剪[craft/03#multi-aspect-recomposition]。- 驗證每個檔案:
npx remotion ffprobe -v error -show_entries stream=codec_name,profile,pix_fmt,width,height,r_frame_rate:format=duration -of json out/<slug>/<file>.mp4預期 h264 / High / yuv420p / 預設尺寸 / 預設 fps / 持續時間與film.json相差在 ±1 影格內。 - 響度:
npx launchfilm qa <slug>會測量它;手動方式:ffmpeg -hide_banner -nostats -i out/<slug>/<file>.mp4 -af ebur128=peak=true -f null - 2>&1 | tail -12(系統的 ffmpeg:Remotion 綑綁的版本缺少ebur128;如果沒有,請寫 NOT CHECKED)。預期 I −14 ±1 LUFS,真實峰值 ≤ −1.5 dBTP。 英雄循環:完全沒有音訊串流。 - 預設表和限制:references/platforms.md。
修訂循環
- 保留用戶的編輯。在編輯檔案之前,對比你上次寫的內容進行差異比較;如果用戶更改了它,則合併,絕不還原。
- 僅重新執行受影響的閘道:文案更改 → 3(僅變更的行) → 4(旁白台詞:
vo <slug> --line <id>) → 5 → 6 → 7。 視覺更改 → 5 → 6 → 7。 - 未經詢問,絕不重新生成已核准的旁白、音樂或實拍素材;重新生成會使下游的所有時間軸偏移。
- 僅重新渲染已更改的預設。將先前的渲染保留為
out/<slug>/<file>.v<N>.mp4,直到用戶確認。
絕不
- 遙測、回傳資料、浮水印、預設片尾致謝、要求明星或贊助。
- 在聊天中洩漏機密;
cat .env;要求用戶將金鑰貼到聊天中(他們自己編輯.env)。 - 發明的標誌、發明的顏色、發明的指標、見證或客戶名稱、BRIEF.md 中沒有的宣稱。
- 在故事板核准之前進行 MP4 渲染。聲稱你沒有執行的 QA(film-qa 證據規則)。
- 用戶無權展示的第三方標誌或商標;迷因或系統音效;未經授權的 CC BY 音樂。
- 從影片中編輯共享的工作室預設;將影片特定的元件放在影片資料夾中。
最終報告(給用戶,在閘道 8 之後;≤ 25 行)
Film: <slug> · 模式 · <持續時間> s · <fps> fps
渲染輸出: out/<slug>/<slug>-x-16x9.mp4 (1920×1080, 12.4 MB) · out/<slug>/<slug>-li-4x5.mp4 (1080×1350, 10.1 MB)
海報: out/<slug>/poster.png (影格 0) · 字幕: out/<slug>/<slug>.srt · 致謝: out/<slug>/credits.txt
響度: −14.1 LUFS I, −1.7 dBTP (x-16x9)
QA: T1–T12 通過 (qa/<slug>/QA.md, 3 個工作表, 14 張靜態影格); 已修復: <清單>; 已知缺陷: <清單>
套用規則: 鉤子 H3 [craft/01#hooks] · 彈簧 ui/snappy [craft/04#springs] · 縮放層級 1→2→3 [craft/03#zoom-tiers] …
遺漏: <什麼及為什麼>
下一步: 上市文案在 out/<slug>/POST.md
使用 render/package 列印的真實檔案名稱。然後是閘道 10:根據 references/credit.md 的致謝說明,僅在其條件成立時執行。