Motion Proof 是做什麼的?
你將透過程式碼製作動畫影片:每個畫面都來自一個程式(Remotion,使用 React)。區分「AI 感」影片與專業影片的關鍵幾乎總在兩個地方:運動(曲線、節奏、呼吸感的停頓)與審查(逐格檢視與測量)。這個技能同時提供這兩者。
開始之前
- 檢查工具:
node --version(需 20 或以上)和ffmpeg -version。網頁版本需要一個帶有 libvmaf 的 ffmpeg(ffmpeg -filters必須列出libvmaf)。 - 如果沒有 Remotion 專案,使用
npx create-video --yes --blank mi-video建立,並用npx remotion skills add加入官方技能。對於 Remotion API 的疑問請使用這些技能。 - 在
remotion.config.ts中加入Config.setColorSpace("bt709");。沒有這行,影片會以全範圍(yuvj420p)輸出,導致某些播放器色彩跑掉。 - 將
plantilla/movimiento.ts複製到專案中(例如src/lib/movimiento.ts),並查看plantilla/Ejemplo.tsx了解模式:彈簧緩入、偏移、鏡頭推進、點擊與動態模糊。 scripts/中的程式使用node <此技能的資料夾>/scripts/<程式>.mjs執行,無需安裝任何東西。
流程
- 簡報。 產品是什麼、目標觀眾、觀眾最終需要做什麼、格式(16:9、9:16、1:1)與長度。如果缺少重要資訊,先提問再繼續。
- 視覺腳本 使用
referencias/guion-visual.md:包含精確的開始與結束畫面的場景,且需加總為總長度。在用戶批准之前不要開始動畫。 - 單一設定檔 包含文字、數字、顏色與時間。文字變更只需改一行,時間由同一處供圖片與音效讀取。
- 製作動畫 遵循
referencias/movimiento.md。先閱讀「暴露 AI 痕跡的清單」。 - 測試畫面(使用
npx remotion still或renderStill)在每個場景切換以及每個鏡頭移動時進行。在完整渲染前檢查這些畫面。將鏡頭推向某個點會使遠離該點的事物向外擴張:所有鏡頭編輯都需逐格檢查。 - 渲染 為 H.264(yuv420p, bt709)60 fps。垂直與方形格式需重新構圖,而非從橫向裁切。
- 音效 使用
referencias/sonido.md:unir.mjs用於合併音樂,volumen.mjs將其標準化至 −14 LUFS。 - 測量 使用
medir.mjs。如果失敗,則修正影片。測量工具只有在錯誤為誤判且經由測量證明時才可修改;若如此,請在交付時聲明。 - 目視檢查 使用
cuadros.mjs(畫面表格)以及referencias/revision.md的清單。 - 網頁版本 使用
web.mjs,如果需要輕量檔案。 - 交付 mp4、測量結果以及未經驗證的項目(例如,若無人聽過音效)。
固定規則
- 每個畫面僅由畫面編號決定,該編號可因動態模糊而包含小數。不得使用
useState、setTimeout、CSS 轉場或無固定種子的Math.random()。 - 字體必須在第一個畫面之前載入。出現 Times New Roman 的畫面即為失敗。
- 沒有任何東西以直線或等速移動,也沒有任何東西完全靜止。
- 重要文字必須在螢幕上停留至少 1.5 秒。計數器約在 1 秒內上升。
- 除非刻意移出,否則沒有任何東西超出畫面。
- 未經驗證的項目必須明確以「未驗證」字樣標示。
指令
node scripts/medir.mjs video.mp4 --ancho 1920 --alto 1080 --fps 60 --duracion 30 --informe medicion.json
node scripts/cuadros.mjs video.mp4 hoja.png --cantidad 12
node scripts/cuadros.mjs video.mp4 cambios.png --segundos 4.5,9,15.2,22
node scripts/unir.mjs video-mudo.mp4 musica.wav con-sonido.mp4
node scripts/volumen.mjs con-sonido.mp4 final.mp4
node scripts/web.mjs final.mp4 web.mp4 --poster poster.jpg --segundo 28
medir.mjs 若符合標準則以代碼 0 結束,否則以代碼 1 結束,並列出每個失敗的文字說明。cuadros.mjs 會產生一張圖片,可用於一次檢視影片的多個時刻。對無音效影片請加上 --mudo 參數至 medir.mjs。