Reels 向量動畫(程式碼繪製)
這個工具包製作的 reel 是一個 不停動畫的迷你卡通:
- 場景全用程式碼繪製(Remotion 中的 SVG/HTML):具有光線與深度的場景、會表演的主角、觀眾互動的主觀鏡頭,以及用來解說的霓虹圖表;
- AI 語音(ElevenLabs)附帶每個字的時間戳;
- 逐字的大字幕,關鍵字會放在與其圖形相同顏色的藥丸標籤內;
- 一個鉤子問題,在第 0 幀就呈現怪異畫面,結尾揭曉答案;
- 最後一個鏡頭回到第一個(循環);
- 顆粒感、暗角與撞擊時的震動,讓它不像範本。
公開範例格式: Dato Rarito,在 YouTube 上。程式碼範例: 每個新帳戶都會附帶的 Demo01 影片(src/videos/Demo01.tsx):鉤子、慢動作、刪除印章、圖表、角色、CTA 手機與循環。不確定怎麼做時,就去看看它。
路徑(專案資料夾名稱可能包含空格:所有路徑請用雙引號):
<S>= 此技能的資料夾。Claude Code 載入時會顯示("Base directory for this skill")。以插件安裝時是${CLAUDE_PLUGIN_ROOT}/skills/reel-vectorial;手動複製時是~/.claude/skills/reel-vectorial。如果找不到,請用:find ~/.claude -path "*reel-vectorial/scripts/nuevo-video.py"。<P>= 專案:使用者用 Claude Code 工作的資料夾,裡面包含cuentas/。腳本會自動從當前目錄(或第一個上層包含cuentas/的目錄)找到它;可透過--proyecto <ruta>或環境變數REELS_PROYECTO強制指定。<cuenta>= 帳戶資料夾的名稱(curiosidades)或cuentas/curiosidades;<R>=<P>/cuentas/<cuenta>/produccion/remotion。- 技能的腳本從
<P>執行:python3 "<S>/scripts/nuevo-video.py" … <cuenta> …。帳戶內的腳本(scripts/…),從<R>執行:cd "<R>" && …。 - 使用 Read、Write 和 Edit 時,請用絕對路徑。
0. 事前準備
-
系統需求: Node 20+、Python 3.10+ 以及 ffmpeg。如果這是此機器第一次使用,或安裝時發生錯誤,請按照
references/instalacion.md處理。專為 macOS 設計(已在 Apple Silicon 上測試);在 Linux 上也可運作,但該檔案中說明了注意事項。 -
哪個帳戶? 查看
<P>/cuentas/*/produccion/remotion/src/kit/index.ts。如果使用者沒有指定,且有多個可能的帳戶,請詢問。如果沒有帳戶,或帳戶中沒有此工具包,請按照references/cuenta-nueva.md操作(建立帳戶、Remotion 專案與範例影片)。 -
閱讀帳戶相關文件:
contexto.md、estilo.md、tono-de-voz.md、ideas.md與referencias/;produccion/ficha-reel.md:品牌識別、主角、世界觀、系列、語音、音樂、CTA 與法律注意事項;src/brand.tsx:色板與顏色的含義。
如果檔案中有「待定義」的必要資訊,請在自行決定前先詢問。如果專案內有
CLAUDE.md自訂規則,則以該規則為準。 -
檢查現有內容:
guiones/、videos/finales/(以及Publicados/如果存在)和src/Root.tsx。不要重複主題、鉤子或轉折。 -
驗證前提:使用第一手來源(研究報告、官方機構、已公布的法律)。流行的冷知識通常半真半假,而這個格式的信譽至關重要:「根本沒發生過」的留言會毀掉一個頻道。如果前提站不住腳,請以最接近的可驗證事實重新表述,並在劇本上方說明。
不可妥協的事項(以及原因)
- 場景必須豐富且不斷變化,絕不能「靜止的醜陋東西」。 這個格式的早期嘗試正是因為這個原因失敗的:相同背景上的小圖示,以及後續雖然場景正確但平面單調,卻配上更高水準的成品和語音。每個鏡頭都是一個有光線和深度的場景,主體佔據畫面 ≥ 40%,並且關鍵字處有變化。在確認完成前,請以完整尺寸檢視影格:
references/escenas.md。 - 交付的項目必須使用高品質 AI 語音;模擬語音僅用於建構階段。 模擬語音(有節奏的靜音)用於在消耗點數前建構和檢查場景;佇列會拒絕使用模擬語音進行渲染,除非是無聲預覽。不要用低品質的本地 TTS 取代真實語音:即使場景再好,糟糕的語音也會毀掉影片。
- 一次只執行一個重量級任務。 渲染、本地語音模型或 Whisper 會佔用大量記憶體;同時執行兩個可能導致電腦當機或重啟(這個工具包的開發團隊就遇過這種情況)。影格:
nuevo-video.py stills,透過scripts/turno.sh處理。渲染與封面:透過佇列(scripts/noche.py)。鎖定檔(<P>/recursos/turno-mac.lock)是專案下所有帳戶共用的。絕不手動在背景啟動渲染。 - 音效不得有空氣感或高頻亮感。 只允許
impacto、impacto-grave、pop-grave、moneda-suave和monedas-suave,且必須與某個單字綁定。禁止使用 whoosh、risers 或亮音效:它們在語音底下聽起來像貼近麥克風的風聲或金屬尖銳聲。引擎會拒絕使用被禁止的音效。 - 每個鏡頭最長 2.5 秒(75 幀;超過會導致渲染失敗),且視覺上每 1–2 秒要有變化。
- 第 0 幀必須豐富: 鉤子的怪異畫面與第一個字幕區塊,無淡入。循環: 最後一個鏡頭回到第一個的狀態與攝影機。
- 每個帳戶有其獨立品牌。 色板、主角、標誌與簽名均來自其
brand.tsx;帳戶之間不得混用風格或主角。 - 金鑰: 存放在
<P>/.env(或如果帳戶使用不同金鑰則存放在<R>/.env)。不得讀取、列印,也不得在聊天中要求提供:使用者需自行貼入檔案。如果 ElevenLabs 帳戶顯示「異常活動」,請停止並通知使用者。 - 每次交付都需注意授權: ElevenLabs 免費方案的語音與音效不允許商業用途;CC BY 音樂需在說明欄標示出處;reel 應標示為「AI 生成內容」。請參考
references/audio.md。
影片命名規則
以 ficha-reel.md 中的系列名稱,以及 src/Root.tsx 中該系列的最後編號的下一個為準:
| 項目 | 模式 | 範例(系列「DATO CURIOSO」,#3) |
|---|---|---|
資料夾(語音在 public/vo/) | <prefijo><NN> | cafe03 |
| 語音文字檔 | <R>/vo-<carpeta>.txt | vo-cafe03.txt |
元件(src/videos/) | <Prefijo><NN> | Cafe03 |
| 合成 | <Componente>-<tema> | Cafe03-cerebro |
| 封面 | Portada-<Componente>(影片匯出 Portada<Componente>) | Portada-Cafe03 |
| 劇本與影片 | AAAA-MM-DD_<slug>_<tema> | 2026-11-10_dato-curioso_cafe-cerebro |
日期為預計發布日:如果已有發布日曆則使用該日期,否則為下一個空閒日。
影片製作流程
請依照下列階段進行,並制定任務計畫。僅在兩個節點暫停與使用者確認: 劇本(在消耗語音點數前),以及草稿(在轉為最終版前)。其餘部分(場景、影格、稽核)由你自行檢查。
1. 劇本 → references/guion.md
- 撰寫:
guiones/<nombre>.md:語音 → 場景的表格,包含每個關鍵字的繪圖內容與事件、影片的世界觀、具有含義的顏色、資料來源與說明欄文字;<R>/vo-<carpeta>.txt:每行一個句子。
- 執行檢查器:
它也會顯示第 0 幀會朗讀什麼。python3 "<S>/scripts/revisar-voz.py" "<R>/vo-<carpeta>.txt" - 展示劇本並等待核准(語音大約每字元消耗 1 點 ElevenLabs 點數,每部影片約 700 點)。
2. 骨架與語音 → references/produccion.md
python3 "<S>/scripts/nuevo-video.py" crear <cuenta> <carpeta> <Componente> --serie "SERIE · #N"
python3 "<S>/scripts/nuevo-video.py" voz <cuenta> <carpeta>
crear會先設定模擬語音(如果尚未有真實語音),並寫入src/videos/<Componente>.tsx:包含約 2 秒的Pendiente(n)鏡頭(按單字切分)、設定與封面。這樣從第一分鐘起就可以進行組裝和檢視。voz會生成真實語音(呼叫 API,不佔用本機運算資源),檢查是否完整生成,並壓縮停頓。然後才取代模擬語音。- 接著,使用 Whisper 透過
comprobar-voz.py進行檢查(確切指令由voz輸出)。 - 如果沒有金鑰或點數不足: 繼續使用模擬語音直到渲染階段,通知使用者,且不交付最終成品。
3. 場景 → references/escenas.md + references/kit.md
- 決定影片的世界觀(一個連貫的場景)以及每個顏色的含義。將其記錄在
.tsx檔案的開頭註解中。 - 將每個
Pendiente(n)替換為使用工具包的實際場景(import { … } from "../kit"):場景、主體、光線、深度,以及透過A(frase, "palabra")將動作與其單字綁定。 - 鏡頭之間的轉換使用絕對影格計算(
useF(t0))。最後一個鏡頭重複第一個。
4. 剪輯 → references/motor.md
- 鏡頭按單字切分、使用
cam()控制攝影機、轉場、字幕(根據主體位置放在上方、中間或下方)、關鍵影格、音效與音樂。 - 持續稽核直到沒有錯誤,且每次語音變更都要重新執行:
cd "<R>" && python3 scripts/auditar-escenas.py src/videos/<Componente>.tsx --frames - 註冊合成與封面(可以使用模擬語音):
python3 "<S>/scripts/nuevo-video.py" registrar <cuenta> <Componente> <Componente>-<tema>
5. 使用影格進行審查
python3 "<S>/scripts/nuevo-video.py" stills <cuenta> <Composición> --salida <carpeta temporal>/<Composición>
- 輸出第 0 幀、每個鏡頭的中間幀與最後一幀,以及聯絡表
hoja-<Composición>.jpg。首次執行時 Remotion 可能會下載瀏覽器。 - 使用 Read 檢視聯絡表,並以完整尺寸開啟第 0 幀、轉折點、圖表與最後一幀。使用
references/escenas.md(「審查」部分)中的檢查清單。 - 修正並重複,直到每個鏡頭都能經得起截圖檢視。同時輸出封面(
stills <cuenta> Portada-<Componente> --frames 0)。 - 對於轉場、揭露畫面與表情變化,輸出逐幀序列:
stills <cuenta> <Composición> --tira <frame>:10。檢查跳幀與空白幀。
6. 渲染
python3 "<S>/scripts/nuevo-video.py" cola <cuenta> render <Composición> <nombre>
- 如果使用模擬語音或稽核未通過,則會拒絕渲染。
- 如果編排器已停止,腳本會說明如何啟動(在 macOS 上使用
caffeinate防止電腦休眠)。從<R>在背景啟動:佇列清空後會自動結束。 - 完成後,檢查
noche.log中的母帶(約 −14 LUFS,峰值 ≤ −1.5 dBTP),並以 1 fps 檢視影片。
7. 交付
- 告知使用者輕量版(
videos/borradores/movil/)與封面的位置;如果環境允許上傳檔案,請附上這些檔案。提醒使用者相關授權。 - 當使用者核准後,將其移動到
videos/finales/,不帶後綴。舊檔案移至系統資源回收筒,絕不使用rm。 - 更新劇本狀態、
ideas.md與發布日曆(如果有的話)。 finales/Publicados/屬於使用者:請勿更動。
對既有影片進行修改
| 需求 | 處理方式 |
|---|---|
| 修改語音中的某句話 | 編輯 vo-<carpeta>.txt → voz … --solo N → Whisper → 稽核(剪輯點會移動) → stills → 渲染(佇列會以 r2 後綴重複該行;先前的渲染會移至資源回收筒) |
| 重新製作整個語音 | voz <cuenta> <carpeta>:會另外生成一份,並將先前的備份為 vo/<carpeta>-anterior-… |
| 修改某個場景 | 編輯其元件 → stills --frames 該鏡頭 → 渲染 |
| 修改封面 | 編輯影片中的 Portada<Componente>(標題、t0 時間點、align) → stills Portada-<Componente> --frames 0 → cola <cuenta> portada <Componente> <nombre> |
| 將此格式套用到其他帳戶,或更新工具包 | references/cuenta-nueva.md |
常見錯誤
- Root.tsx 匯入了一個沒有
tiempos.json的影片: 會導致佇列中所有渲染和封面失敗,不僅是該影片。因此registrar會防止此情況。 A(…)或某個剪輯點中的單字不存在於真實語音中(模擬語音使用的是文字)。渲染會在佇列中失敗:稽核程式會檢測到。- 場景忽略了
t0: 物體、線條或光線會在剪輯時跳動,循環無法對齊。 - 攝影機縮放 < 1 或未使用
cam(): 會出現黑邊。 - 從明亮場景切到黑暗場景時出現白色閃光: 看起來像空白幀。請使用
zoom或whip轉場。 - 文字太小或場景內重複了字幕內容。 一個數據、一個事實:數字要嘛放在字幕中,要嘛放在圖表中,不能兩者都有。
- 封面標題行超過 18 個字元: 在 100 px 寬度下會斷行錯誤(稽核程式會警告)。
- 編輯帳戶中的
src/kit/、src/engine/Reel.tsx或scripts/: 這些是技能的一部分,montar-cuenta.py --actualizar會同步它們。屬於影片本身的內容應放在src/videos/;適用於所有帳戶的元件應新增至技能中(assets/plantilla-proyecto/src/kit/)。 - 缺少音效或音樂: 引擎會忽略它們(並在瀏覽器主控台中發出警告);影片看起來一樣但沒有該聲音。請參考
references/audio.md。