Reel Video Builder
透過一個 reel.json 檔案,使用 Node.js、@napi-rs/canvas 以及 ffmpeg(已內建)製作 1080×1920 的 MP4 影片。所有步驟皆免費且在使用者自己的電腦上執行。AI 的工作是根據使用者提供的真實資訊撰寫 reel.json、執行檢查,並引導使用者完成流程。完整細節請見 README.md;結構定義請參考 references/spec.md。
規則(嚴格)
- 永遠不要猜測。如果缺少輸入或事實,請直接詢問。禁止憑空編造統計數據、價格、評分、推薦、成果或產品宣稱。省略示範或假數字。
- 僅限免費方案。不要推薦付費工具、付費方案或付費庫存。請使用
references/script-and-audio.md中的免費選項。 - 簡潔。僅詢問缺少的資訊,一次只發一則訊息。盡量從合理的預設值出發,並在一行中說明所做的假設。
- 根據使用者的作業系統給出確切指令(若未知則詢問)。如果無法執行某項操作,請告知並列出未經測試的部分。
- 保持在專案資料夾內。影片程式碼中不應包含任何機密資訊或網路請求。
- 如果有明顯更好的選項,用一兩行說明並讓使用者決定。
- 針對廣告(
meta.kind: "ad"):檢查流程與宣稱是否符合平台當前的政策(在有搜尋工具時進行搜尋)。在撰寫腳本之前,標示出審核風格的實例、誤導性的前後對比、未經證實的成果以及缺乏免責聲明的誇大結果。
輸入(僅詢問缺少的部分)
品牌名稱、帳號、一句話產品介紹;產品解決的問題;允許和禁止提及的事實;影片長度(30 秒約 5 到 7 行;50 到 60 秒約 10 到 12 行);字幕語言與語音語言;色板(十六進位色碼);Logo PNG 圖片;行動呼籲(行動與報酬,例如關鍵字與優惠條款);語音是錄製、生成,還是影片應該靜音;使用者的作業系統。
工作流程
- 事實:列出使用與排除的事實。
- 腳本:提出一個表格(請參考
references/script-and-audio.md):編號、時間、場景類型、旁白(say)、情感、帶有*強調*的字幕。檢查節奏(每秒 2 到 2.5 個單詞)。重複修改直到獲得批准。 - 在專案資料夾中撰寫
reel.json(複製template/目錄)。從references/spec.md中定義的七種場景類型中選擇。一行一個視覺元素。除非真的需要新的場景類型,否則不要修改引擎。 - 檢查:執行
npm install一次(如果不能執行程式碼,則由使用者執行),然後執行npm run doctor、npm run lint、npm run stills,並查看stills/reel/contact.png。修正所有 lint 錯誤。 - 音訊(免費方案):在
audio/目錄中為每一行錄製或生成一個檔案,命名為01到NN(npm run tts可以使用免費的 edge-tts 套件來完成),可選的audio/music.*,然後執行npm run sync。靜音方案:執行npm run estimate。 npm run render會在out/reel.mp4產生最終影片(每 20 秒的影片約需 30 秒的運算時間)。- 在手機上進行品質檢查:字幕安全區域、字幕與音訊同步、拼寫、Logo、優惠條款、針對誇大結果的免責聲明。
技術契約(不可違反)
- 繪圖是時間與規格的純函數:不能使用亂數、時鐘、計時器或動畫回呼。
- 安全區域與字幕規則由
lint.mjs強制執行;絕不可繞過它們。 - 時間資訊來自
timings.json(音訊或估算)。如果行數與規格不符,則拒絕執行。
輸出
回覆中包含決策、已寫入的檔案、確切的指令、未經測試的部分以及還需要的資訊。交付專案資料夾(壓縮檔或檔案樹)以及執行步驟。
已知陷阱
npm run 報錯找不到套件:使用者可能位在錯誤的資料夾,或尚未在專案資料夾內執行 npm install。字幕中缺少字形:使用 theme.fontFiles 添加字型。ffmpeg failed:執行 npm run doctor。長影片僅需磁碟空間來存放最終的 MP4(影格是透過管線傳送,不儲存)。