Communitygithub.com

ai-video-render

透過確定性程式碼繪製動畫來渲染短片:時間純函數、固定隨機種子、風格選擇、每鏡頭靜態檢查、無頭畫面擷取與 ffmpeg 組合。執行於 ai-video-script 之後、voiceover 之前。

ai-video-render 是什麼?

此技能負責將腳本故事板轉換為實際影片影格,採用純程式碼繪製動畫,確保每次渲染結果一致。它強制執行嚴格的確定性合約:每個畫面都是時間的純函數,所有隨機性使用固定種子,並在頁面上暴露 `window.seek(t)`、`window.render(t)` 及 `window.ready` 等 API。使用者需從多種風格目錄中選擇一種(如流程圖、手繪筆記、3D 立體、賽博龐克 HUD 等),然後逐鏡頭建構,先渲染開始、中間、結束三張靜態影格檢查文字溢出、重疊等問題後才繼續。最終使用無頭 Chrome 逐影格抓圖,以 ffmpeg 合成為 H.264 格式的無聲影片(1920x1080 或 1080x1920,30fps),並產生渲染報告確認解析度、影格數與確定性檢查結果。此技能支援 Claude Code、Cursor 等 AI 編碼代理,適合製作高品質、可重複的程式生成動畫影片。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/LaomaiAI/ai-video-skills/tree/HEAD/skills/03-render

在你喜歡的 AI 中提問

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

說明文件

ai-video-render: 程式動畫渲染

使用時機

film.json 已存在且已選定風格。此技能將故事板轉換為圖片:渲染頁面、影格擷取與無聲影片。這裡不進行配音工作。

確定性合約(不可協商)

  • 每張圖片都是時間的純函數:window.render(t) 繪製任何時刻的影格。不得使用 requestAnimationFrame、setTimeout、CSS 過渡或跨影格儲存狀態來進行匯出。
  • 所有隨機性使用固定種子。絕不要在渲染路徑中使用未設種子的隨機來源或真實時鐘。
  • 在每個影格開始時重設畫布狀態。
  • 頁面必須在首次成功渲染後暴露 window.seek(t)、window.render(t) 以及 window.ready = true。
  • 相同的時間戳記渲染兩次必須產生相同的影格。在完整渲染前,使用 scripts/determinism-check.js 檢查這一點。

1. 挑選風格(使用者挑選,嚴格把關)

建議 1 種風格加上 2 種不同的替代方案,附上視覺差異、理由與限制,寫在 style-options.md 中。等待使用者挑選。「直接執行」不代表可以自行授權挑選。

風格目錄(自行從上游獲取;提示檔案與示範原始碼不在本儲存庫中):

  • 扁平流程圖、手寫筆記、復古報紙、復古剪紙、超現實拼貼、3D 立體、黑色背景科技(7 套,dashi-animationstyle)。
  • 15 種 MG 風格:扁平向量、線條藝術、等距 2.5D、3D 渲染、形狀變形、貼紙講解、賽博龐克 HUD、拼貼、極光玻璃、包浩斯、合成波、像素藝術、液體動態、逐格線條抖動、多元字幕。
  • 36 種藝術風格配方(huashu-art-motion)與 lemo-opuscar 風格:厚塗油畫、水彩、水墨、浮世繪、白板講解。

風格使用規則:

  • 一部影片使用一種風格、一個主題,最多使用 2 種動畫語法。
  • 從風格的提示或示範中學習方法,然後為新主題重新製作內容。絕不複製示範的構圖、角色或素材到影片中。
  • 當風格提示說「請勿更改標誌性特徵」時,只更改創意種子(故事、品牌、文案、色板)或輸出(例如直式 1080x1920、時長)。
  • 除非使用者明確要求,否則不要使用藍紫漸層、深紫色星空或霓虹青紫(會給人明顯的 AI 感)。
  • 程式碼絕不繪製真實的人臉。僅使用 AI 生成的素材作為綠幕角色鏡頭,合成到程式碼建構的場景中;在沒有影像生成能力的情況下,只顯示手部和背部。

2. 逐鏡頭建構

  • 從 templates/render-page.html 和 templates/render.js 編寫渲染頁面。預設為 1920x1080(直式:1080x1920,需重新編排版面與字幕,絕不能使用縮放的橫向影格)。
  • 一次建構一個鏡頭。每個鏡頭渲染 3 張靜態影格(開始、中間、結束),檢查文字溢出、重疊、主體大小與螢幕顯示時間。在繼續前修正鏡頭。
  • 對於超過 30 秒的影片,先在不含動態模糊的情況下渲染低解析度樣本,確認後再渲染完整版本。
  • 3D 渲染風格是例外:在 Blender 中渲染圖片,然後在網頁上添加文字與顆粒。

3. 渲染與組合

  • 無頭 Chrome 以影片幀率每秒擷取一個影格。使用 ffmpeg(H.264,CRF 16)組合。在此保留音軌,配音將在下一個技能中混合。
  • 保持一個時間軸用於聲音與畫面:剪輯與關鍵動作落在節拍網格或配音時間軸上。
  • 使用 ffprobe 驗證:H.264、1920x1080(或 1080x1920)、30 fps、影格數符合 film.json 中的時長乘以 fps。

輸出合約

  • render-page.html + render.js(影片的渲染頁面)。
  • frames/(逐影格擷取)。
  • film.mp4(無聲畫面)。
  • render-report.md(解析度、fps、影格數、確定性檢查結果)。

規則

  • 未執行的檢查寫為「未執行」。絕不能聲稱渲染通過了未發生的檢查。
  • 不要將 HTML 頁面、無聲中間檔案或提示當作完成的影片呈現。
  • 參考圖片為使用者自有或已授權;完成的影片絕不包含原始圖片。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

相關技能