Communitygithub.com

Motion Proof

使用 Remotion 程式碼建立產品發表影片與動態圖像(15–60 秒),內建動態設計師的運動規則與自動檢查(停格、黑畫面、音量、網頁品質),讓成果看起來不像 AI 做的。當需要發表影片、產品或介面動畫、動態圖像,或審查已渲染影片時使用。

Motion Proof 是什麼?

Motion Proof 是一個專門用於透過程式碼製作高品質動畫影片的 AI 技能,核心技術是 Remotion(基於 React)。它能有效區分「AI 感」影片與專業影片的關鍵差異:運動曲線、節奏、呼吸感的停頓,以及逐格審查與數值測量。此技能支援指令列工具,可進行渲染品質測量(包含 VMAF)、逐格截圖檢查、音軌合併與 LUFS 標準化音量,以及輸出輕量網頁版本。使用時需建立 Remotion 專案、套用運動模板,並遵循一套嚴格的規則:每個畫面必須純粹由畫面編號決定(禁止 useState 或 Math.random 等不確定性)、字體必須預先載入、避免直線或等速運動、重要文字停留至少 1.5 秒,以及確保所有未驗證項目明確標示。透過這些機制,Motion Proof 能產出媲美專業動態設計師的影片。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/germangalo97/motion-proof/tree/HEAD

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Motion Proof 是做什麼的?

你將透過程式碼製作動畫影片:每個畫面都來自一個程式(Remotion,使用 React)。區分「AI 感」影片與專業影片的關鍵幾乎總在兩個地方:運動(曲線、節奏、呼吸感的停頓)與審查(逐格檢視與測量)。這個技能同時提供這兩者。

開始之前

  1. 檢查工具:node --version(需 20 或以上)和 ffmpeg -version。網頁版本需要一個帶有 libvmaf 的 ffmpeg(ffmpeg -filters 必須列出 libvmaf)。
  2. 如果沒有 Remotion 專案,使用 npx create-video --yes --blank mi-video 建立,並用 npx remotion skills add 加入官方技能。對於 Remotion API 的疑問請使用這些技能。
  3. 在 remotion.config.ts 中加入 Config.setColorSpace("bt709");。沒有這行,影片會以全範圍(yuvj420p)輸出,導致某些播放器色彩跑掉。
  4. 將 plantilla/movimiento.ts 複製到專案中(例如 src/lib/movimiento.ts),並查看 plantilla/Ejemplo.tsx 了解模式:彈簧緩入、偏移、鏡頭推進、點擊與動態模糊。
  5. scripts/ 中的程式使用 node <此技能的資料夾>/scripts/<程式>.mjs 執行,無需安裝任何東西。

流程

  1. 簡報。 產品是什麼、目標觀眾、觀眾最終需要做什麼、格式(16:9、9:16、1:1)與長度。如果缺少重要資訊,先提問再繼續。
  2. 視覺腳本 使用 referencias/guion-visual.md:包含精確的開始與結束畫面的場景,且需加總為總長度。在用戶批准之前不要開始動畫。
  3. 單一設定檔 包含文字、數字、顏色與時間。文字變更只需改一行,時間由同一處供圖片與音效讀取。
  4. 製作動畫 遵循 referencias/movimiento.md。先閱讀「暴露 AI 痕跡的清單」。
  5. 測試畫面(使用 npx remotion still 或 renderStill)在每個場景切換以及每個鏡頭移動時進行。在完整渲染前檢查這些畫面。將鏡頭推向某個點會使遠離該點的事物向外擴張:所有鏡頭編輯都需逐格檢查。
  6. 渲染 為 H.264(yuv420p, bt709)60 fps。垂直與方形格式需重新構圖,而非從橫向裁切。
  7. 音效 使用 referencias/sonido.md:unir.mjs 用於合併音樂,volumen.mjs 將其標準化至 −14 LUFS。
  8. 測量 使用 medir.mjs。如果失敗,則修正影片。測量工具只有在錯誤為誤判且經由測量證明時才可修改;若如此,請在交付時聲明。
  9. 目視檢查 使用 cuadros.mjs(畫面表格)以及 referencias/revision.md 的清單。
  10. 網頁版本 使用 web.mjs,如果需要輕量檔案。
  11. 交付 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。

相關技能