Communitygithub.com

blessedsaunyama/animation-studio

將一個想法或劇本轉換為完成的動畫影片(聖經故事、科技/程式設計、數學/教育或一般故事/廣告),可選擇風格與格式,並在安全渲染前檢查電腦效能。

animation-studio 是什麼?

這個技能專為 Claude Code、Cursor 或 Codex 等 AI 代理設計,能將使用者的想法或劇本,自動轉化為完成的動畫 MP4 影片。它支援多種內容類型(聖經故事、科技、數學、一般故事/廣告)與風格(火柴人、白板、平面 2D、現代向量、故事書、卡通 3D、電影 3D),並提供 9:16、16:9、1:1、4:5 等常見格式。 其核心流程分為五個階段:詢問使用者需求(內容、風格、格式、品質)、進行硬體檢查並根據效能分級限制渲染負載、根據風格選擇對應的渲染引擎(py2d、Manim、Toon 3D、Blender)、撰寫劇本(含字數與時間計算)、以及最後的生產階段(語音生成、場景渲染、音效合成、字幕、品牌套件與最終輸出)。 此技能強烈重視安全性,在每次渲染前都會執行硬體檢查與時間/空間估算,並嚴格遵循硬體分級限制(LITE、STANDARD、POWER),避免系統過載。它也支援離線語音合成(Piper TTS)、多種編輯器專案匯出(Kdenlive、Shotcut、DaVinci Resolve 等),並允許使用者自訂品牌元素(浮水印、片尾卡、配色)。整體而言,它是一個完整、自給自足的動畫製作工作流程,非常適合需要快速產出高品質說明影片的開發者或教育內容創作者。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/blessedsaunyama/animation-studio/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

animation-studio:想法 → 劇本 → 語音 → 安全渲染 → MP4

此檔案為一個路由器。請先提出四個主要問題、檢查硬體,然後僅載入作業所需的檔案: content/<pack>.md(寫作與準確性規則)+ styles/<style>.md(外觀;其 JSON 區塊為引擎讀取的預設設定)+ engines/<engine>/README.md(如何渲染)。共用工具位於 shared/ 中。

找到技能資料夾(SKILL_DIR) = 包含此檔案的資料夾。Claude Code 會將其顯示為技能的基底目錄;其他代理則顯示為你被要求讀取的 SKILL.md 所在的資料夾。始終使用 "$SKILL_DIR/shared/..." 這樣的格式來呼叫工具(路徑通常包含空格)。找到 Python 3.10+(python3、python 或 py -3)並稱之為 PY。在執行 setup_check.py --install 後,使用它印出的 venv Python 路徑。

使用任務清單讓使用者隨時了解進度。將所有產出物寫入使用者工作資料夾中的 videos/<slug>/(slug 為簡短的小寫連字號名稱)。使用平實的語言解釋。

此版本支援的項目

部分狀態
內容套件✅ 聖經(content/bible.md)· ✅ 科技(content/tech.md)· ✅ 一般故事/廣告(content/general-story.md)· ✅ 數學/教育(content/education-math.md)
風格引擎 A:✅ 火柴人 · ✅ 平面 2D · ✅ 故事書 · ✅ 白板 · ✅ 現代向量 — 引擎 B:✅ Manim(+ 白板 / 現代向量顏色)— 引擎 C:✅ 卡通 3D — 引擎 D:✅ 電影 3D
引擎✅ A py2d(Python 2D)· ✅ B Manim(可選 LaTeX)· ✅ C 卡通 3D(較慢:有層級限制)· ✅ D Blender(快速預覽使用 Eevee,最終成品使用 Cycles,適用於 POWER 層級)
格式✅ 9:16 · ✅ 16:9 · ✅ 1:1 · ✅ 4:5
字幕✅ 永遠提供 .srt 檔案 + 帶有單字高亮的風格化內嵌字幕(shared/captions.py)
語音✅ 使用者的錄音 · ✅ Piper TTS(shared/voice.py,免費,離線)
音樂/音效✅ 合成音樂(shared/sound.py)· ✅ 使用者自己的授權音樂檔案
編輯器專案✅ Kdenlive · ✅ Shotcut · ✅ DaVinci Resolve(FCPXML)· ✅ Blender VSE · 🧪 OpenShot(實驗性)· ✅ 編輯器套件(CapCut、任何編輯器)
品牌套件✅ 已儲存的品牌(使用者資料夾)、浮水印、下三分之一處標題、品牌片尾卡、任何風格上的品牌顏色(shared/brand.py,docs/branding.md)
軟體安裝✅ 一個經過驗證的註冊表(shared/tools.yaml),包含 Windows、macOS 和各 Linux 系列的命令;未經同意絕不安裝

如果使用者選擇了 🚧 項目,請直接說明,提供最接近的 ✅ 選項,但仍需交付腳本套件。

階段 1:需求蒐集(AskUserQuestion,每次呼叫最多 4 個問題;跳過已回答的項目)

呼叫 1

  1. 內容: 聖經故事 · 科技/程式設計 · 數學/教育 · 一般故事/廣告
  2. 風格: 先提供該內容的預設風格(聖經 → 故事書 · 科技 → 現代向量 · 數學 → Manim · 一般 → 平面 2D),然後提供 2–3 種其他風格。對於快速、輕量的作品,可提及火柴人。
  3. 格式(可複選):9:16 1080x1920(TikTok/Reels/Shorts)· 16:9 1920x1080(YouTube/投影機)· 1:1 1080x1080 · 4:5 1080x1350。執行 PY shared/formats.py table 可列印平台對照表。
  4. 品質: 預覽(快速,720p)· 最終(1080p)。始終建議先製作 5 秒的預覽。

呼叫 2(僅適用項目) 0. 品牌化? 無 · 使用已儲存的品牌(從 PY "$SKILL_DIR/shared/brand.py" list 列表中選取)· 建立新品牌。建立新品牌: 一次只詢問一個欄位,全部可選(名稱、標語、網站、標誌檔案、電話、WhatsApp、電子郵件、社群媒體、顏色、OFL 字型、行動呼籲按鈕),並使用 brand.py set 逐一儲存(它會驗證電話/電子郵件/URL/顏色格式);標誌透過 brand.py logo,字型透過 brand.py font。絕對不要虛構聯絡資訊:僅使用使用者提供的內容(或從他們自己的網站確認的資訊)。然後是選項,預設值來自 docs/branding.md:浮水印(廣告/宣傳類開啟;聖經、科技和數學類關閉)、角落/大小/透明度/標誌或標誌+名稱 · 下三分之一處標題(何時出現、持續多久)· 片尾卡,包含行動呼籲按鈕 + 聯絡資訊(廣告/宣傳類開啟)及其長度 · 將風格重新著色為品牌顏色(是/否)。 5. 主題/故事及長度(30 秒 · 60 秒 · 90 秒 · 2–3 分鐘;其他長度選擇「其他」)。內容套件會添加自己的規則(聖經:目標觀眾)。 6. 語音: 我自己的錄音(預設)· Piper TTS(免費、離線;預設語音 en_US-ljspeech-medium,使用公共領域數據)。Piper 需要一次性安裝(setup_check.py --tts --install)和下載語音模型(voice.py --download,約 60 MB):請先詢問。 7. 內嵌字幕? 建議 9:16 和 1:1 選擇「是」(大多數人靜音觀看),16:9 選擇「否」。.srt 檔案一定會產生。 8. 「使用 animation-studio 製作」片尾卡? 預設關閉;僅限選擇加入。絕對不要添加浮水印。 9. 輸出: 完成的 MP4 · 供編輯器使用的專案檔案 · 兩者都要。

編輯器選擇(僅當輸出包含專案檔案時):執行 PY "$SKILL_DIR/shared/tools.py" status --kind editor 並顯示完整的編號列表(✅ 已安裝 + 版本 · ❌ 未安裝 · ⚠️ 此處不支援,例如在無頭伺服器上的桌面編輯器)。使用者選擇一個(AskUserQuestion:最多 4 個選項,已安裝的編輯器優先;其餘可在「其他」下輸入)。如果選擇的是 ❌,則逐字顯示 PY "$SKILL_DIR/shared/tools.py" flow <editor>(它是什麼、針對此作業系統/發行版/終端機的安裝命令、官方連結),並詢問:立即安裝(我將執行它)· 我自己安裝,然後說「完成」· 選擇其他編輯器 · 跳過,給我 MP4 和編輯器套件。「立即安裝」→ tools.py install <editor> --yes(如果 Windows 會顯示權限提示,或某步驟需要 sudo,請先說明;sudo 步驟以 ! sudo ... 形式交給使用者)。任何安裝或「完成」後:再次執行 status,確認 ✅,然後從中斷處繼續。CapCut 和不支援的編輯器將獲得編輯器套件。詳細資訊:docs/editors.md。

將答案記錄在 videos/<slug>/brief.md。

階段 2:硬體檢查(在任何渲染之前;絕不跳過)

執行 PY "$SKILL_DIR/shared/hwcheck.py" 並在一條簡短訊息中顯示其表格和層級。它還會儲存後續每個步驟都會讀取的系統設定檔(作業系統 + 版本、WSL、Apple Silicon、Linux 發行版和系列、套件管理器、終端機、顯示器)。你顯示或執行的每個安裝命令都來自 PY "$SKILL_DIR/shared/tools.py" cmd <tool>(與此作業系統、發行版和終端機匹配);絕不要憑記憶輸入。無顯示器(無頭模式)→ 僅渲染:不支援編輯器應用程式。

層級規則引擎限制
LITE< 12 GB RAM 或 < 4 個 CPU 執行緒A, B僅限 720p;封鎖卡通 3D 和 Blender(提供靜態圖片)
STANDARD介於之間A, B 完整;C 僅限 ≤ 5 秒預覽(更長需確認 + 恢復);D Eevee 僅限 ≤ 5 秒 720p,低取樣1 個渲染任務;工作者數量 = 執行緒數 − 2
POWER≥ 32 GB RAM + 專用 GPU ≥ 6 GB VRAM全部,在 GPU 上使用 Cycles工作者數量 = 執行緒數 − 1
如果筆記型電腦使用電池供電,在渲染超過一分鐘前發出警告。如果可用 RAM 低於 25%,請要求使用者關閉大型應用程式。

階段 3:選擇引擎(風格 → 引擎),然後載入檔案

風格引擎載入
火柴人、平面 2D、故事書、白板、現代向量A engines/py2dstyles/<style>.md,engines/py2d/README.md
Manim(數學、演算法、圖表);白板/現代向量顏色也可用於此B engines/manimstyles/manim.md(或選擇的風格),engines/manim/README.md
卡通 3DC engines/toon3d(一個包含 story.js + world.js 的專案資料夾)styles/toon-3d.md,engines/toon3d/README.md
電影 3DD engines/blender(scene.json,Z 軸向上)styles/cinematic-3d.md,engines/blender/README.md
如果硬體層級封鎖了引擎,請解釋原因並提供:使用引擎 A 風格講述相同故事,或僅提供少量靜態圖片。使用者只能在收到明確警告後才能覆蓋限制(「這可能導致電腦當機或過熱;請先儲存您的工作」)。

然後載入 content/<pack>.md 並遵循其研究和寫作階段。

階段 4:腳本套件(內容套件規則),然後停止

每個套件提供:一個可複製的旁白區塊(除非套件另有說明,否則約 3.7 字/秒),包含字數和長度 → script.txt;一個鏡頭列表 → shotlist.md;套件附加內容(聖經:忠實度對照表、研讀筆記、描述);以及最後的參考資料。絕對不要虛構經文、引用、API、旗標、版本或事實:請取得或執行它們,否則標記為 未驗證。 然後移交配音(使用者的錄音:mp3/wav,無音樂)並等待音訊。如果使用者只想要腳本,則在此停止。

階段 5:生產

  1. 設定: PY "$SKILL_DIR/shared/setup_check.py" --engine <engine> → ✅/❌ 表格。缺少的工具(Blender、Manim、Node、LaTeX、Inkscape...)使用與編輯器相同的流程:顯示 tools.py flow <tool> --for engine,然後立即安裝 · 我自己安裝,然後說「完成」· 選擇其他風格 · 跳過(僅提供腳本、鏡頭列表和參考資料);之後重新檢查。Python 套件僅安裝在技能自己的 .venv 中(--install,需先獲得同意)。
  2. 語音 + 時間安排。 Piper:PY "$SKILL_DIR/shared/voice.py" script.txt voice.wav --timing work --speed 0.85(精確的詞組時間,無需猜測)。使用者的錄音:PY "$SKILL_DIR/shared/timing.py" voice.mp3 script.txt --out work。兩者都會寫入 work/words.json + work/phrases.json。
  3. 場景: 引擎 A:videos/<slug>/scene.json;引擎 B:一個以 from studio import * 開頭的 Manim .py 場景;引擎 C:videos/<slug>/story.js + world.js;引擎 D:一個 Blender scene.json(格式請參閱引擎 README)。每個詞組一個鏡頭;確保臉部、文字和關鍵道具保持在每個所選格式的安全區域內(shared/formats.md)。
  4. 外觀檢查: 為每個格式渲染 3–6 張靜態圖片(--frames 0,60,...),製作一個聯絡表(PY "$SKILL_DIR/shared/sheet.py" sheet.jpg <dirs> --safe <fmt>),顯示它,並根據內容套件的規則進行檢查(聖經:尊重 + 暴力)。在渲染前修正。
  5. 估算: PY "$SKILL_DIR/shared/estimate.py" --engine <engine> scene.json --fmt <fmts> --quality <q>(Manim:--engine manim scene.py --name SceneName --timing work/phrases.json;卡通 3D:--engine toon3d <project folder>;Blender:--engine blender scene.json)→ DECISION: OK 可渲染 · ASK 告知使用者「約 X 分鐘,Y GB」並詢問(提供 5 秒預覽)· REFUSE 磁碟空間不足(需要估算值的 2 倍):要求使用者釋放空間。
  6. 渲染一次一個格式(絕不同時執行兩個任務)。長時間渲染在背景執行;引擎以低優先級運行,如果重新執行,則從最後儲存的幀繼續,如果可用 RAM 低於 15%,則自動暫停(退出碼 4)。告知使用者他們可以繼續工作。
  7. 音訊: 音樂 PY "$SKILL_DIR/shared/sound.py" music music.wav --seconds <video length> --mood warm|calm|tense|tech|playful,音效 ... sfx sfx.wav --seconds <len> --cues cues.json(pop、whoosh、type、chime、success、swell、rain、soft thunder),然後 PY "$SKILL_DIR/shared/mix.py" voice.wav music.wav sfx.wav --music-db -12 --sfx-db -10 --seconds <len>(音樂音量絕不超過語音下方 −6 dB;語音重或莊重的影片為 −9 至 −12 dB)。使用者提供的音樂檔案將取代 music.wav:提醒使用者一次,他們必須擁有使用權。 7b. 品牌(如果選擇):在渲染前重新著色(brand.py recolor <brand> --style <style> --out style_<brand>.md,將其用作場景的風格);渲染後,brand.py apply <brand> frames_<fmt> branded_<fmt> --fmt <fmt> [--watermark tr,9,90,logo] [--lower-third a,b] [--end-card 2.5 --cta "..."] [--captions] 並從這裡開始使用 branded_<fmt>。如果包含片尾卡,則使用 --seconds <new length> 混合音訊。
  8. 字幕 + 完成 + 品質檢查: PY "$SKILL_DIR/shared/captions.py" work out/<Title> --style <style> --fmt <fmt> --quality <q>(→ .srt + _<fmt>.ass),然後 PY "$SKILL_DIR/shared/finish.py" frames_<fmt> out/<Title>_<fmt>.mp4 --audio mix.wav --quality <q> [--ass out/<Title>_<fmt>.ass] --srt out/<Title>.srt [--end-card only if opted in]。檢查品質檢查行(黑色/靜止片段,約 −14 LUFS)並查看 _qa.jpg 聯絡表。
  9. 編輯器專案(如果選擇):PY "$SKILL_DIR/shared/editors.py" prepare --frames frames_<fmt> --shots "<f0>-<f1>:<name>,..." --final out/<Title>_<fmt>.mp4 --voice voice.wav --music music.wav --sfx sfx.wav --srt out/<Title>.srt --out videos/<slug>/editor 然後 ... export videos/<slug>/editor/timeline.json --editor <kdenlive|shotcut|openshot|resolve|blender-vse|pack>。顯示其檢查表(時間必須與 MP4 匹配;Kdenlive/Shotcut 還會獲得一個 2 秒的 melt 渲染)。告訴使用者如何打開它(docs/tools/.md)。
  10. 交付 MP4 檔案、.srt 檔案、編輯器專案(如有),以及每個鏡頭的一行描述。可選的片尾卡僅在使用者選擇加入時提供。

安全規則(始終遵守)

  • 未經階段 2 和步驟 5(估算)絕不開始渲染。始終提供「先預覽 5 秒」。
  • 遵守硬體層級限制;僅在明確警告並獲得同意後才能覆蓋。
  • 一次只執行一個繁重任務。未經詢問,絕不刪除或覆蓋使用者的檔案(重新渲染到現有影格資料夾會繼續;--force 會覆蓋,因此需要詢問)。
  • 如果缺少工具或使用者拒絕安裝,仍應交付腳本、鏡頭列表和參考資料。

致謝與授權

程式碼:MIT(請參閱 LICENSE)。捆綁的第三方程式碼列於 THIRD_PARTY_NOTICES.md。此技能不捆綁任何字型、音樂或圖像:它使用系統字型和合成聲音。使用者的影片歸他們所有:無強制浮水印;片尾卡為選擇加入。

相關技能