Communitygithub.com

二維角色草圖

製作簡單的2D卡通角色和簡短的對話草圖影片,完全在此機器上以程式碼繪製。當被要求設計或建立卡通角色、繪製角色表、讓角色說話或說台詞、製作對話動畫,或製作包含一個或多個角色的短喜劇小品、短劇、解說影片或動畫分鏡時使用。產生PNG角色表和具有嘴型同步語音的MP4影片。不適用於寫實、3D或AI生成的影片。

二維角色草圖 是什麼?

此技能讓AI助手能夠建立簡單的2D卡通角色,並生成帶有嘴型同步對話的短影片。它是一個完全本地化的工具,免費且可重複,透過SVG形狀渲染角色和場景。使用者可以透過JSON檔案定義角色和場景,產生的輸出包括可供審查的PNG角色表,以及帶有語音的MP4影片。支援多種語音引擎,從免費的本地選項(如macOS的「say」指令)到付費的雲端服務(如ElevenLabs,可提供高度逼真的語音)皆可。主要平台為Claude Code、Curson和Codex——任何能夠執行指令、讀取本機檔案並確認輸出的AI代理環境。它特別適用於快速原型設計、動畫分鏡、解說影片,以及任何需要簡潔、風格化2D動畫,又不想使用複雜的數位繪圖工具或外部API的情況。該工具包含內建檢查功能,可驗證角色一致性,並在處理付費服務之前提供使用量上限,以避免產生意外費用。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yenceesanjeev/2d-character-sketch/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

2D 角色草圖(二維角色草圖)

此技能資料夾中的一個工具 scripts/sketch.mjs 負責三項工作:

工作你要寫的你要執行的你會得到的
建立角色characters/<id>.jsonsheetcharacters/<id>.sheet.png
讓角色說話無say <id> "台詞"out/say-<id>-<前幾個字>/sketch.mp4
製作草圖sketches/<名稱>.jsonrender sketches/<名稱>.jsonout/<名稱>/sketch.mp4

每張圖片都是透過程式碼以 SVG 繪製的平面形狀,因此渲染成本為零,且相同的輸入總是產生相同的影片。一個角色大約由十行顏色和選擇構成。眼睛、嘴巴、手部、表情和姿勢是所有人共用的,這就是為什麼任何新角色都能立即開始表演。

首次執行前

先執行一次檢查。以下 SKILL 指的是此技能所在的資料夾。

node SKILL/scripts/sketch.mjs doctor

它需要 Node 20 或更新版本、rsvg-convert(來自 librsvg)和 FFmpeg,並會為缺少的項目印出安裝指令。安裝軟體前請先徵求允許。無需安裝任何 npm 套件。

所有指令都應在使用者的工作資料夾中執行,或者在指令名稱後加上 --dir <資料夾> 參數。此工具僅會在該處的以下位置讀寫檔案:

characters/   每個角色一個 <id>.json,以及從中繪製的角色表
sketches/     每個草圖一個 <名稱>.json
voice/        語音錄音,保留以確保未變更的台詞不會被生成兩次
out/          每次渲染一個資料夾:內含 sketch.mp4、contact-sheet.png、plan.json、run.json

使用 --draft 參數的渲染會進入其專屬資料夾 out/<名稱>-draft/,因此永遠不會取代全尺寸的渲染結果。在相同尺寸下重新渲染同一個草圖則會取代上一次的結果。

建立角色

請先閱讀 references/character.md。其中包含欄位說明、外觀規則以及需要檢查的缺陷。

  1. 撰寫 characters/<id>.json。從參考文件中的範例開始,只修改能區別此角色與眾不同的部分。
  2. 繪製角色表:node SKILL/scripts/sketch.mjs sheet <id>。不指定 id 則會繪製所有角色。
  3. 親自開啟 PNG 檔案並查看。 對照參考文件中的檢查清單,檢查旋轉視圖、靜態臉孔和幾個表情。
  4. 修正並重新繪製,直到看起來不錯。在展示給任何人看之前,請反覆執行數次。
  5. 展示角色表,並說明你做了哪些修改,以及還有哪些部分不夠完善。

當有兩個或更多角色時,每次執行 sheet 也會重新繪製 characters/cast.png,讓所有角色並排顯示。用它來檢查角色們是否看起來像不同的人:不同的輪廓、頭髮和上衣顏色。

讓角色說話

node SKILL/scripts/sketch.mjs say mira "它自認為是茶。" --face smug --pose offer

選項:--face <表情>、--pose <姿勢>、--frame wide|medium|close、--set <場景>、--draft。這些名稱列在角色的角色表和 references/sketch.md 中。在嘗試不同表情和姿勢時使用 --draft,確定後再執行一次不帶 --draft 的指令來產出最終要交付的片段。每句不同的台詞都會有自己的資料夾,以其前幾個字命名。在觀看影片前,先查看該資料夾中的 contact-sheet.png。

製作包含多個角色的草圖

請先閱讀 references/sketch.md。其中包含檔案格式、場景、鏡頭框架、表演詞彙和語音規則。

  1. 建立每個角色並檢查 characters/cast.png。
  2. 撰寫 sketches/<名稱>.json:包含場景、從左到右的演員陣容,以及一系列鏡頭。每個鏡頭都有一個框架及其台詞。
  3. 渲染一個草稿版本(半尺寸,速度快):node SKILL/scripts/sketch.mjs render sketches/<名稱>.json --draft。
  4. 開啟 out/<名稱>-draft/contact-sheet.png 並查看。 其中包含每句台詞的一張圖片。檢查鏡頭框架、表情以及角色們在看向誰。
  5. 修正草圖檔案,然後再次渲染草稿。不要為了修正一個草圖而修改 scripts/ 目錄。
  6. 渲染全尺寸版本(去掉 --draft),並將影片路徑提供給使用者。

如果檔案中有錯誤,執行將會中斷,並列出所有問題以及允許的值。修正所有錯誤後再重新執行。

語音

除非使用者指定其他語音引擎,否則使用免費的預設引擎。使用者透過說出「使用 OpenVoice」、「使用 ElevenLabs」、「使用 Sarvam」來選擇,然後你傳入 --voice <引擎> 參數。

當草圖需要聽起來逼真時,建議使用 ElevenLabs。 免費語音引擎讀起來平淡無奇,而台詞的傳達方式往往是讓一句話有趣或具有說服力的關鍵。如果使用者想要一個聽起來像真人的草圖,或計劃發布它,請明確告知一次 ElevenLabs 是適合此用途的語音引擎,並且它是付費服務。然後讓使用者自行選擇。在確定表演節奏和時機的階段,應先使用免費語音,這樣付費語音只會用於已確定的台詞。

引擎費用使用時機
say免費Mac 上的預設選項。語音機械化,但適合用來調整時機。
openvoice免費,本地端可選安裝,約 2 GB。先詢問使用者,然後執行 bash SKILL/scripts/install-openvoice.sh。內含五種英語語音。非 Mac 環境下的預設語音(安裝後)。
elevenlabs付費最逼真的語音,也是完成草圖時推薦使用的語音。需要在每個說話角色的檔案中提供使用者的金鑰和語音 ID。
sarvam付費需要在每個說話角色的檔案中提供使用者的金鑰和發聲者。支援印度英語和十種印度語言。
none免費無聲,僅有字幕和推測的嘴部動作。

一句台詞也可以使用使用者自己的錄音,透過 "audio": "path.wav" 指定。

付費語音引擎的使用規則:

  1. 由使用者添加金鑰,而非你。 使用者在工作資料夾的 .env.local 檔案中,或在 ~/.2d-character-sketch/keys.env(可跨專案使用)中加入一行 ELEVENLABS_API_KEY=... 或 SARVAM_API_KEY=...。絕對不要在對話中索取金鑰,切勿將其輸入到檔案中,也絕對不要列印出來。doctor 指令會顯示是否找到金鑰以及金鑰的位置。
  2. 位在 git 儲存庫內的金鑰檔案必須被 git 忽略。 否則工具會拒絕使用它,並告知應在 .gitignore 中加入什麼內容。
  3. 在設定上限前,不會發送任何資料。 先執行不帶 --max-chars 參數的指令。工具會列印出它將發送多少字元的文字,但不會實際發送。將這個數字告知使用者,等待對方確認,然後再傳入 --max-chars <該數字> 參數。

詳細資訊、價格和語音清單請參閱 references/sketch.md。

規則

  • 在展示之前,親自查看每張角色表和聯絡表。工具只能檢查檔案是否有效,無法判斷圖片的品質好壞。
  • 草圖檔案是來源。要修改影片,請修改檔案並重新渲染。
  • 除非使用者要求刪除,否則保留先前的渲染結果。若要保留你已展示過的版本,請使用新的草圖名稱儲存下一個版本,例如 tea-v2.json。
  • 明確指出哪些部分還很粗糙:免費語音的效果、跟隨音量變化的嘴型、你無法調整的鏡頭框架等。
  • 除非使用者在本次對話中要求,否則不要安裝任何軟體,也不要向付費服務發送任何資料。

限制

如果使用者的需求涉及以下幾點,請事先說明:

  • 角色只能站立或坐在原位。沒有人會走路、撿東西或觸碰任何人。
  • 沒有鬍子、鬍渣、帽子、長外套、洋裝或裙子。頭髮是八種樣式之一,服裝包括上衣、褲子和鞋子。當需求需要上述項目時,請告知並提供最接近的替代方案,例如用濃密的頭髮和粗眉毛來表示鬍子。
  • 內建五個場景:plain、home、park、office 和 table。其他地點需要你自己繪製 SVG 背景,並在 set 中命名。
  • 角色可以手持三種道具:手機、馬克杯和筆。無法在手中顯示其他物品。
  • 只有一種攝影機角度(正面)。不同的鏡頭框架是透過裁切和縮放相同的平面圖畫來實現。
  • 最多三個角色可以清晰入鏡。如果角色更多,特寫鏡頭會顯示相鄰角色的邊緣。
  • 新的髮型、姿勢、表情或場景意味著需要編輯 scripts/ 中的繪圖程式碼。只有在使用者要求時才這麼做。

相關技能