製作動畫短片 是做什麼的?
概述
這是一個垂直、有聲、字幕的動畫短片製作流程:角色美術、場景面板、克隆或資料庫語音、音樂、影像轉影片剪輯與嘴形同步,並由一個引擎根據實際對話音訊來排定每個鏡頭的時間。單一個 episode.json 即可承載整個專案,而 engine/episode.py 負責執行從中讀取的每個階段。兄弟技能則負責提供者(provider)的工作。
請直接使用引擎;不要自行撰寫編輯腳本。 時間軸、覆疊、字幕、從右到左文字、混音、持續時間與嘴形同步等所有功能都已內建於 engine/ 中。該引擎已透過重建一個真實的 3.5 分鐘短片獲得驗證:產生了完全相同的幀、完全相同的音訊,以及原始版本未能達到的精確長度。手寫的編輯腳本會重新發現 references/troubleshooting.md 中的每一個錯誤。
音訊是主控者。 鏡頭長度、字幕時間與嘴形同步部分皆來自完成的對話檔案。絕對不要根據文字來估算時間。
你無法觀看或聆聽。 你可以檢查幀、持續時間與數字。人類負責判斷角色相似度、語音、發音、時機與笑點。規劃人類的審查關卡並保護他們。
需求:
- 與此技能相鄰的以下技能:image-generation、elevenlabs-tts、generating-video-clips。
- Python 3 並執行
pip install -r <此技能目錄>/requirements.txt(需安裝包含 RAQM 的 Pillow、numpy;OpenCV 為選用)。 - ffmpeg 7 或更新版本。
- 字型:樣式與字幕名稱使用字型鍵(範例中的
bold、hblack、black),這些鍵會經由fonts對應到已安裝的.ttf檔案。對於希伯來文與拉丁文,Rubik 和 Heebo(免費,來自 Google Fonts)效果良好;check指令會在缺少字型時阻斷執行。 - 環境變數中的 API 金鑰,需在每個執行引擎的 shell 中設定:
OPENAI_IMAGE_API_KEY、ELEVENLABS_API_KEY、GEMINI_API_KEY、FAL_KEY。
若想在不進行任何 API 呼叫的情況下查看整個管線如何運作,請執行 python3 <此技能目錄>/engine/episode.py /tmp demo,然後對其建立的 demo 專案執行 check 和 build。
管線與其審查關卡
每個審查關卡都是一個停頓點:傳送成品、提問、等待。指令格式為 python3 <此技能目錄>/engine/episode.py PROJECT <command>。成本以 2026 年 10 月估算。
| # | 階段 | 指令 | 審查關卡(人類) | 成本 |
|---|---|---|---|---|
| 1 | 故事與劇本 | 從 templates/script.template.md 產生 script.md | 劇本,以及每個敏感話題 | - |
| 2 | 角色聖經 | templates/characters.template.md,然後在 episode.json 中設定 characters | - | - |
| 3 | 臉孔、卡片、升級 | chars face、chars card key=face.png、chars final keys | 角色相似度,在一張所有卡片的合成頁上 | 每個角色約 $0.30 |
| 4 | 場景面板 | panels draft,然後 panels final ids | 每個面板,在一張合成頁上 | 每個面板約 $0.30 |
| 5 | 語音 | 每個語音一個樣本(elevenlabs-tts) | 每個語音,在批次處理前用耳朵聽 | 美分 |
| 6 | 台詞 | lines | 用耳朵聽整個台詞集,包含時間戳;A/B 名稱比對 | 美分到幾美元 |
| 7 | 音樂與音效 | sound | 音樂 | 美分 |
| 8 | 動態腳本 | build(尚無剪輯:使用帶有攝影機運動的靜態圖片) | 在進行任何影片花費之前,檢查節奏與順序 | 免費 |
| 9 | 動畫 | animate、合成頁、使用 animate S --takes 2 + animate pick S K 進行重拍 | 從合成頁檢查動作 | 每個剪輯每秒約 $0.10,每次重拍 |
| 10 | 嘴形同步 | lipsync prep、配置中的臉部點位、lipsync run | 抽樣檢查幀 | 每秒約 $0.13 |
| 11 | 剪輯與交付 | build、sheet、deliver | 人類觀看 mp4 檔案 | 免費 |
每個階段的指令、輸入、輸出與失敗處理方式:references/pipeline.md。
撰寫劇本
經得起考驗的規則(詳細內容與一個完整的範例:references/script-writing.md):
- 在最初 3-4 秒內建立鉤子(直接以問題開場),然後再出現標題。若短片少於 30 秒,請將標題與結束卡片作為覆疊放在故事鏡頭上,並跳過蒙太奇。
- 每個重複出現的角色至少說一句台詞。 開場的蒙太奇介紹,每個角色用自己的聲音說一句話,每張卡片約 1.2-1.5 秒,既便宜又受歡迎。
- 螢幕上的文字必須可讀: 每個字元約 0.06 秒,加上基礎 0.8 秒;短卡片約 1.2-1.5 秒;最終說明文字約 4-6 秒。請為卡片設定
mindur。 - 提早埋下線索並在後續兌現。 針對群體真實生活的內部笑話進行 callback,效果最好。
- 敏感話題由使用者決定。 列出所有你想使用的私人細節(健康、金錢、感情、家庭、爭吵),逐一詢問,並只使用他們確認的部分。
- 台詞不超過 12 個字,數字用文字表示。 螢幕上的文字保持正常拼寫;發音修正則放在
pronounce中。 - 即使有旁白,也要加入音樂與音效。 至少一個背景音樂與幾個音效(切換場景時的嗖聲、揭示時的撞擊聲);無聲的背景音樂聽起來會不完整。
一目瞭然的 episode.json
templates/episode.example.json 是一個完整的小型短片範例;每個鍵的說明都在 references/config-schema.md 中。你最常編輯的部分:
characters:顯示名稱、顏色、語音,以及來自角色聖經的提示欄位。speakers:從不出現畫面的語音,例如旁白({"display": null, "voice": "<id>"}可產生無名稱的字幕)。lines:ID、說話者、帶有音訊標籤的文字;單詞台詞可設定trim和level。shots:圖片、台詞("[email protected]"表示與前一句台詞重疊 0.4 秒)、邊距、mindur、攝影機動作、特效、音效、覆疊、剪輯偏移與速度。music_cues:[提示名稱, 開始鏡頭, 結束鏡頭, 音量, 偏移量]。當提示時間比其區間短時,建置流程會發出警告。lipsync:指定哪些鏡頭、哪些台詞要跳過,每個部位一個臉部點位。prompts:覆寫char_style和panel_style以獲得不同的外觀(如 3D 卡通、水彩、寫實照片)。
建置與審查
- 批次處理修正。 完整建置需要數分鐘。收集一個審查回合中的所有筆記(台詞拍攝、邊距調整、剪輯偏移),一次套用,然後重新建置一次。
- 區段會被快取與追蹤。
build只會重新渲染輸入有變更的鏡頭:新的剪輯或嘴形同步版本、升級的面板、編輯過的台詞、鏡頭或樣式。build --only S05,S06強制渲染這些鏡頭;--force則重新渲染所有內容。 - 嘴形同步的鏡頭在剪輯、偏移、速度或台詞有任何變更後,都需要重新處理:
lipsync prep S05 && lipsync run S05。在此之前,建置流程會警告該鏡頭已過時,並使用原始剪輯。 - 重新產生現有資產需要
--force(sound theme --force、animate S05 --force);不使用的話,只會填補空缺,不會覆寫現有檔案。 - 使用合成頁進行審查。
sheet會將每個鏡頭的 3 個幀放在一頁上。當人類根據時間點提到一個畫面時,請先透過ffmpeg -ss T -i build/<output>.mp4 -frames:v 1 f.jpg提取並讀取那些幀,再進行回覆。 - 每次建置前執行
check: 檢查缺失的資產、金鑰、兄弟技能,以及比畫面還寬的覆疊文字。 - 每次建置結束時都會驗證持續時間。 如果音訊比影片短,建置會失敗,而不是裁切結尾。
- 在傳送之前: 參閱
references/qa-checklist.md。
與人類協作
- 使用你的檔案傳送工具傳送每個成品,並提供在 Finder 中顯示的選項;不要只列印路徑。最後一步是執行
deliver並傳送該檔案。 - 對於音訊,請說明要聆聽的內容與位置(「在 0:41 處,Dani 的名字聽起來對嗎?」)。絕對不要聲稱你聽到了。
- 發音與語音選擇是他們的決定:提供帶有時間戳的 A/B 檔案(elevenlabs-tts)。
- 在每個付費階段之前,提供成本估算;之後則提供累計總額。
當出現問題時
| 症狀 | 修正方式 |
|---|---|
| 卡片或字幕過快難以閱讀 | 提高 mindur / post:短卡片約 1.2-1.5 秒,最終說明文字約 4-6 秒 |
| 標題被兩側邊緣裁切 | check 會發出警告:降低樣式的 size 或加上 wrap |
| 音樂在段落結束前停止 | 建置時已警告:提高提示的 seconds,然後執行 sound <cue> --force;或將該段落拆分為兩個提示 |
| 結尾被裁切 | 使用引擎時不可能發生(精確長度混音、持續時間檢查);在手動合成的影片中,請參閱 deck-to-video |
| 台詞被音樂淹沒 | 對該台詞執行 level_clips.py --report,然後使用更強的音量拍攝;降低該提示的音量 |
| 角色在台詞之前做出指向或動作 | 將 clip_off 設定在該時間點之後,或拆分鏡頭並使用 clip_cam 裁剪掉前段 |
| 嘴形與台詞不匹配 | 執行嘴形同步階段;如果是錯誤的嘴在動,修正其臉部點位 |
| 群體鏡頭中有一個臉比較大 | 安裝 OpenCV(臉孔會自動均等化),或鏡像一個其道具遮住相鄰角色的卡片 |
| 希伯來文顯示為反轉或未連字 | Pillow 未包含 RAQM:check 會說明如何修正 |
| 名稱或外來詞發音錯誤 | 加入 pronounce 條目,用耳朵聽 A/B 比對 |
更多問題與成因:references/troubleshooting.md。
相關技能
- image-generation:角色卡片與場景面板(「重複出現的角色與故事面板」)。
- elevenlabs-tts:語音、單詞台詞、發音、音樂與音效。
- generating-video-clips:剪輯、拍攝合成頁、嘴形同步。
- deck-to-video:用於簡報影片的相同 ffmpeg 經驗。