Communitygithub.com

Zman2087/faceless-studio

使用 Remotion 製作動態圖形短片 — 無臉解說、動態字型鉤子、文字訊息故事、比較、圖表與計數器,或是 AI 角色片段之間的動畫場景。

faceless-studio 是什麼?

此技能讓 AI 代理能直接透過 Remotion 引擎建立零成本的動態圖形短片。它提供兩層操作:第一層是組合數個內建場景 (如 kinetic、title、number、bars、compare 等),每種場景都有專屬欄位與可自訂的過場、疊加層,讓使用者無需編寫程式碼即可快速產出影片。第二層則允許開發者在內建場景無法表達特定點子時,新增全新的場景類型,並將其整合到引擎中,讓所有代理未來都能重複使用。技能支援多種常見影片格式,包括無臉解說、對話故事、動畫插播、以及迷思與事實對比等。為了確保品質,系統會要求先檢視預覽結果,並遵循品牌色、字數限制與引用資料來源等風格規範。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Zman2087/faceless-studio/tree/HEAD/.claude/skills/animated-video

在你喜歡的 AI 中提問

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

說明文件

動畫影片

此處所有內容都在 remotion/ 中渲染,不消耗任何點數。分為兩個層級 — 永遠先嘗試層級 1:

  1. 組合內建場景 於規格檔案中 (數分鐘內完成,無需程式碼)。
  2. 新增場景類型 到引擎中,當某個點子確實需要時 (需編寫程式碼、測試,之後所有代理皆可重複使用)。

在本機渲染前:若 remotion/node_modules 遺失,請執行 cd remotion && npm ci (首次渲染也會下載 Remotion 的無頭 Chrome,約 170 MB,僅需一次)。

層級 1 — 場景套件

場景 (shots[].type)最佳用途關鍵欄位
kinetic鉤子、關鍵台詞text, highlight, per_word (0.18) — 單字逐一彈入
title單一醒目標題text ≤ 6 個字, highlight
number一個驚人數字value, prefix, suffix, decimals, caption, color — 向上計數
bars比較各項目大小title, unit, items[{label,value,color}]
compare他們 vs 你、迷思 vs 事實、前後對比title, left{label,items,color}, right{…}
list「3 件事」、做 / 不做items, style 勾號/叉號/數字
timeline事情發生的順序items[{year,text}]
chat以文字對話呈現的故事title (聯絡人), messages[{from: me/them, text, at}]
quote有來源的引文text, by
media輔助畫面、照片、AI 片段src, kenburns, headline, fit

每個場景都可設定 label (引言標籤)、stamp (橡皮圖章數字)、bg (背後淡出的照片或影片,需附 credit) 以及 transition (fade 為預設,另有 cut, slide, zoom, wipe)。疊加層 (headline, textover, lowerthird, stamp) 可置於任何場景之上。完整參考: remotion/SPEC.md。 每個新場景的實作範例: remotion/examples/animated.json。

範本

  • 無臉解說 (20–40 秒):kinetic 鉤子 → number → bars/compare → list → title 呼應鉤子的收尾。旁白作為 audio,字幕來自 words,搭配音量 0.08–0.12 的輕柔 music 背景音樂。
  • 文字訊息故事:kinetic 鉤子 ("她在凌晨三點回覆了") → 每段對話一個 chat 場景 (at 間隔 0.8–1.4 秒,配合旁白節奏) → title 轉折。每個對話泡泡 ≤ 10 個字。
  • 談話影片中的動畫插播:CLIP_1 … 在提到關鍵處時使用 number 或 compare 持續 2–3 秒 (過場: "zoom") … 回到 CLIP_1,並將 start 設為片段應繼續播放的位置。
  • 迷思 vs 事實:使用 compare,其中 left.color: "danger", right.color: "good",然後在下一個 title 上蓋上 stamp "FALSE"。

用 video-script 規劃節拍 (tools/beats.mjs 會將場景時間對齊旁白),然後執行:

cd remotion
node render.mjs job/spec.json --validate
node render.mjs job/spec.json job/final.mp4 --preview job/check.jpg --at 0.1,<每個場景的中間點>,<結束前 1 秒>

在交付前一定要查看預覽條:鉤子應在 0.1 秒時完整顯示、沒有文字被邊緣裁切、沒有文字重疊、強調色易於閱讀、AI 生成標籤與浮水印必須存在。

風格規則

  • 品牌色來自 settings.brand (規格檔案中的 theme):使用一個強調色,用於每個場景中唯一重要的事物。
  • 每個標題 ≤ 7 個字、每個文字疊加層 ≤ 12 個字、每個列表 / 比較欄位 ≤ 4 個項目 (手機螢幕較小)。
  • 一個場景應至少停留 1.5 秒 (根據其中每行文字計算)。
  • 數字必須符合 citations;切勿對未註明來源的數字進行動畫處理。
  • 不得使用品牌標誌、真實人物照片或真實對話截圖。

層級 2 — 新增場景類型

僅在以上任何組合都無法表達點子時才使用 (例如地圖路線、進度環、分割畫面反應)。

  1. src/types.ts:新增 XShot = ShotBase & { type: "x"; … } 並將其加入 Shot 聯集型別。
  2. src/shots/Shots.tsx:在現有組件旁編寫該組件 — 使用 useCurrentFrame() 的 spring/interpolate 製作動畫 (永遠不要用 CSS 動畫或 Math.random:渲染必須確定性),使用 t.font、t.accent、tone(t, color),尺寸為 1080×1920,然後在 ShotView 中加入一行 if (s.type === "x") body = …。若該場景在 0 秒時就在畫面上 (base === 0),則應完整繪製它,不需進場動畫。
  3. render.mjs:將 "x" 加入 types 並為其必要欄位加入驗證 (檢查代理依賴這些訊息)。
  4. SPEC.md 與上方的表格:為其撰寫文件。並將其加入 examples/animated.json。
  5. 測試:npx tsc --noEmit -p .,node render.mjs examples/animated.json out/animated.mp4 --preview out/animated.jpg --at …,然後檢查結果。

相關技能