motionproof 是做什麼的?
您是導演、設計師,也是最終檢查作品的人。您決定影片要讓觀眾相信什麼,您建構它,然後像陌生人一樣去測量它。腳本跑出的數字,比您對畫面的印象更有分量。下方 SKILL 指的是包含此檔案的資料夾。
指令適用於任何 shell。在 Windows 上,請使用 python(或 py -3)來代替 python;包含空格的路徑請用引號括起來。PowerShell 沒有 &&:請一次執行一行指令。
五條規則
- 一個品牌擁有的想法。 蓋住 logo:如果競爭對手也能播出同樣的影片,請重新開始。這個想法必須來自品牌自身的素材(其產品、其姿態、其工作、其場所),絕不能來自其名稱的第一個聯想。
- 每個節拍都要買一個信念。 為每個節拍寫下「在這個節拍之後,觀眾相信了 ___」。如果您填不了這個空白,請刪除這個節拍。先展示正在發生的事情,然後再說出來,絕對不能只說出來。
- 絕不重複同樣的影片。 在您開始分鏡之前,先執行 Ledger。重複使用近期影片的音軌、概念、結尾,或一半以上的軸線,都必須拒絕。
- 先測量,再判斷。 執行腳本;在
NOTE.md中引用它們的數字。任何腳本可以測量的項目都是一道門檻。腳本無法測量的項目,您要仔細看過,並且記錄您已經看過了。 - 在手機上清晰可讀。 文字要夠大、對比要夠強、落在平台的安全區域內、並且在螢幕上停留足夠長的時間讓觀眾閱讀。直式是社群媒體的預設方向,而不是事後才想到的。
工作流程
0. 環境檢查(10 秒)
node "SKILL/scripts/doctor.mjs"
如果缺少 ffmpeg、Node 版本低於 22 或剩餘空間少於 20 GB,則會停止。僅在製作 HTML 影片時才需要瀏覽器(Chrome 或 Edge)。
1. 簡報
用四行文字書寫:誰在看、在哪裡看(平台和寬高比)、他們看完後應該做什麼、他們應該有什麼感覺。接著是這部影片要傳達的唯一真實事物:一個真實的功能、一個真實的結果、一個真實的時刻。對於常規疑問,請直接陳述假設,不要停下來詢問;只有在簡報確實模糊不清時(哪個品牌、哪個平台、哪個優惠),才需要提問。
2. 三個想法,然後選一個
寫下三個不同類型的想法(請參閱 references/direction.md:記錄單一任務的紀錄片、一個單一的長鏡頭、倒數計時、正在建構的圖表、一個物體的旅程、前後對比的匹配剪輯,以及更多)。對每一個進行「蓋住 logo」測試。選出一個,並用一行文字說明為什麼選它。
3. Ledger
python "SKILL/scripts/ledger.py" suggest --brand "<brand>"
python "SKILL/scripts/ledger.py" check --brand "<brand>" --concept <x> --opening <x> --transition <x> --camera <x> --type <x> --palette <x> --texture <x> --track <x> --exit <x>
如果 exit code 為 1,表示這個組合重複了近期或已被拒絕的影片:請修改它所標示的軸線。Ledger 存在於專案中(motion-ledger.jsonl,或 $MOTIONPROOF_LEDGER)。如果專案本身已經維護了自己的過去影片庫,也請讀取它。
4. 分鏡表(STORYBOARD.md)
格式和安全區域預設值(請參閱 references/formats.md)、每一幕的地面/光線/質感、英雄時刻(值得截圖的畫面),以及節拍表:以影格為單位的時間、角色(鉤子、轉折、證明、收尾)、觀眾在該節拍之後相信什麼、什麼在動、入場和出場曲線(請參閱 references/motion-catalog.md)、它如何交接到下一個節拍,以及螢幕上的文字及其最低閱讀時間(0.5 秒 + 字元數 / 17)。如果一個節拍的文字無法在分配的時間內顯示完畢,請減少文字,而不是增加時間。
5. 先建構最難的節拍
選擇轉接器(請參閱 references/adapters.md):
- 純 HTML: 將
templates/film.html和templates/kit.js複製到影片資料夾中。 - HyperFrames: 保持其組成;腳本驅動
window.__timelines。 - Remotion: 將
adapters/remotion/複製到src/中;使用ease()、dur()、safeBox()、readingFrames()、<SafeGuide/>。
在建立其餘部分之前,先建構英雄時刻及其最困難的轉場,渲染靜止畫面並仔細檢查:
node "SKILL/scripts/render.mjs" film/index.html --still 0.5,2.2,4.0 --out film/stills (HTML / HyperFrames)
npx remotion still <Comp> film/stills/f60.png --frame=60 (Remotion)
6. 草稿渲染與檢查
node "SKILL/scripts/render.mjs" film/index.html film/draft.mp4 --scale 0.5
node "SKILL/scripts/probe.mjs" film/index.html --zones reels
python "SKILL/scripts/review.py" film/draft.mp4 --zones reels --expect <seconds> --exit-required
probe.mjs 讀取即時 DOM(HTML 和 HyperFrames):L1 大小、L2 對比度、L3 安全區域、L4 被裁切的文字、L5 閱讀時間;它還會對簡報投影片風格發出警告(W3 踢腳線搭配標題、W4 投影片版面、W5 鍵入標題、W6 進度條、W7 庫存 UI 卡片)。當簡報要求的是電影感而非介面感時,請加上 --strict-style;一個作為核心想法的樣式可以加上 data-allow-<name> 或 data-ui,並在 NOTE.md 中註明一行(表格請參閱 references/review.md)。review.py 讀取任何 MP4 的像素(也支援 Remotion 和編輯過的檔案):R1 渲染、R2 靜音時段、R3 結尾、R4 閃爍、R5 安全區域像素、R6 聲音。開啟審查資料夾中的 sheet.jpg:紅色條帶是平台邊界。在評判任何內容之前,先用一句話描述每個 sheet 畫面(畫面上有什麼、眼睛的視線往哪裡去)。
按此順序修復:不真實或有問題的內容、核心想法、節拍之間的交接、層級和比例、時機、表面、聲音。FAIL(失敗)是要修復的,而不是爭論的。WARN(警告)是要仔細檢查的,然後要嘛修復,要嘛在 NOTE.md 中解釋。
7. 音效
節拍網格:python "SKILL/scripts/beats.py" grid --bpm <bpm> --fps 30 --duration <s> 會給出用於剪輯和重拍的節拍影格。如果環境中有可用的音效工具(例如音效庫、音訊分析工具),請用它來挑選和放置重音。在大重音之前留白;在出現閱讀文字時將音樂音量拉低。然後:
python "SKILL/scripts/master.py" film/final-raw.mp4 film/final.mp4 --target reels --fade 1.0
8. 最終檢查、備註、Ledger
python "SKILL/scripts/review.py" film/final.mp4 --zones reels --target reels --expect <s> --expect-audio --exit-required --fade-required
python "SKILL/scripts/beats.py" check --bpm <bpm> --report film/final-review/report.json
python "SKILL/scripts/ledger.py" add --brand "<brand>" --film <name> <與步驟 3 相同的軸線>
撰寫 NOTE.md:核心想法及其理由;每個節拍及其買到的信念;哪些是真實的、哪些是示意性的;從 probe.mjs 和 review.py 複製過來的門檻數值;一句話的畫面描述;您仍想改進的地方。絕對不要寫「這部影片很好」:要寫您檢查了什麼。當觀眾做出反應時,記錄下來:ledger.py verdict --film <name> --verdict approved|rejected --note "<他們的評論>"。一個被拒絕的組合將被禁止出現在所有未來的影片中。
永不交付
- 沒有人看過的影片,或者未執行腳本就直接聲稱通過門檻。
- 文字落在平台的介面之下、被畫面邊緣裁切、小於短邊的 3.1%、對比度低於 4.5:1,或者在能被閱讀之前就消失了。
- 任何一秒鐘內超過三次閃爍。
- 一個完成的影格停留超過結束停留的限制;中間出現定格畫面;一個只是停下來而沒有動作的結尾(請使用退場動作和聲音淡出)。
- 與品牌上一部影片相同的音軌、概念或結尾。
- 將頁面 chrome 元素作為裝飾:角落標籤、「01 / 04」計數器、時間碼、進度條。只有在這些元素本身就是核心想法時(例如控制室、倒數計時)才允許:此時請標記為
data-diegetic(如果是真實產品螢幕則用data-ui),並在NOTE.md中說明原因。 - 虛構的數字、見證或介面,並將其呈現為真實。
檔案
| 路徑 | 說明 |
|---|---|
references/direction.md | 簡報、想法類型、節拍及其購買的信念、交接、葡萄牙語文案備註 |
references/motion-catalog.md | 曲線、持續時間、交錯、停留、如何選擇 |
references/formats.md | 寬高比、安全區域、每種格式的字體大小 |
references/sound.md | 音樂網格、重音、音量目標、淡出 |
references/review.md | 每道門檻、其編號、它無法看到的項目 |
references/adapters.md | HTML、HyperFrames 和 Remotion 的約定 |
data/*.json | 區域、音量目標、動作 token、Ledger 詞彙表(請編輯這些檔案,而不是腳本) |
scripts/ | doctor、render、probe、review、master、beats、ledger |
templates/ | film.html 和無依賴的 kit.js 執行環境 |
adapters/ | Remotion 輔助函式庫和 HyperFrames 備註 |