Communitygithub.com

alexgreensh/anidoodle

用純程式碼繪製靜態插圖、繪畫過程縮時、影片、解說動畫與互動式網頁動畫,支援 31 種風格並能譜寫配樂。可比對參考風格、保持角色一致性,並教導繪畫。完全確定性,不產生任何素材。

anidoodle 是什麼?

anidoodle 是一個以純程式碼驅動的 AI 技能,專為 Claude Code 與 Cursor 等平台設計,能生成靜態圖像、繪畫過程縮時影片、敘事短片、解說動畫以及互動式網頁動畫。其核心是由兩個純函數構成:一個函數負責繪製每一幀畫面,另一個則負責合成每一段音訊樣本。這保證了在任何機器上使用相同的原始碼,都能重建完全相同的像素與聲音,不受解析度或片長限制。這項技能強調工藝性,避免了常見的 AI 生成圖像問題——例如主題空洞、風格僅是調色盤替換、音樂缺乏結構等。它支援 31 種繪畫風格,可從參考圖像中比對風格,並能保持角色在不同風格之間的一致性。工作流程涵蓋從靜態圖稿、循環動畫、短片到互動式動畫,並包含嚴格的品質檢查,如確定性驗證、死音檢測與細節檢討。使用者必須先透過結構化的問答流程定義專案,接著按照明確的七條定律進行創作,最終通過最多三層的審核關卡。這項技能不適合需要聆聽配樂、觀看動態影片或使用互動式作品的使用者,因為其評估依賴於測量數據或人類判斷。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/alexgreensh/anidoodle/tree/HEAD/skills/anidoodle

在你喜歡的 AI 中提問

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

說明文件

anidoodle 是做什麼的?

完全由程式碼繪製的圖像、影片與互動作品。一個純函數繪製每一幀畫面;另一個純函數合成每一段音訊樣本。相同的原始碼在任何機器上、任何尺寸、任何長度下,都能重建相同的像素與相同的聲音。

引擎只是最簡單的部分。作品之所以被丟棄,是因為沒有重點、主題只是自身的圖示、風格只是調色盤的更換、音樂沒有形式,或是創作者耗盡耐心去審核片段。這項技能承載了避免這些問題的工藝。

從提問開始,然後建構

閱讀 references/workflows/start-here.md 並執行其導入流程:一次只問一個問題,只針對請求中未明確的部分,並先提出你的建議。他們在創作什麼,採用哪種風格(顯示圖庫表:https://github.com/alexgreensh/anidoodle/blob/main/skills/anidoodle/assets/styles.jpg;列表位於 references/styles/INDEX.md),什麼形狀(1x1、9x16、16x9、4x5 或任意寬 x 高),多長(任意長度;永遠不要設上限),什麼聲音(靜音或某種音樂風格與情緒),哪些角色。「你決定」代表你來選擇,並用一句話說明理由。在開始繪製前,將答案寫成一份簡短的簡報。

你在創作什麼?

創作類型閱讀文件
靜態插圖:主圖、重點插圖、封面、卡片、海報、系列作品下方的靜態工作流程,references/formats.md
會自己繪製的圖像(縮時、幕後花絮)references/workflows/drawing-process.md
循環動畫、貼圖、動態標誌、背景動畫下方的循環工作流程,references/formats.md
故事短片,任意長度下方的影片工作流程,references/workflows/long-film.md
解說動畫或資訊圖表references/workflows/explainer.md
產品發布或宣傳影片(歡迎使用他們的截圖)references/workflows/launch-video.md;建構在 references/workflows/launch-video-kit.md 之上
對 UI 產生反應的互動式網頁動畫references/workflows/interactive.md
繪畫教學,或「我要怎麼畫這個?」references/workflows/teach-drawing.md
在任何風格下保持完全一致的角色(從木刻到積木風格)references/workflows/character-consistency.md,references/anatomy.md
從他們的圖片比對出風格references/workflows/adapt-a-style.md
配樂或原聲帶references/music/README.md
  • 音樂:為你的影片創作自己的配樂(references/music/README.md);node tools/music.mjs check <score.ts#export> 必須通過,才能讓人類聆聽。
  • 音效:references/music/sound-design.md。14 種分層、帶種子的音效,由影片影格觸發(透過 filmSfx);配樂會進行閃避,且每個音效提示必須在配樂音量的 6 dB 範圍內。音效僅在實際方向改變時使用,每部影片一個上升音效加一個撞擊音效。
  • 產品發布影片:launchTemplate.ts 能從數據渲染產品的發布內容:提示、為此繪製的圖版、為此創作的配樂、文字、安裝指令;節省 token 的習慣記載於 references/working-method.md。

七條定律

  1. 每件作品都有一個重點。 靜態插圖:一個想法、一個焦點主體、一束光。一部影片:一個轉變、一個回報、一個會回歸的象徵。 → references/storytelling.md
  2. 明確說明寫實程度。 對於動物、物體和人物,都要說出解剖結構、視角以及你參考的資料。 → references/realism-and-craft.md,references/anatomy.md
  3. 風格是一種做標記的方式。 改變介質、邊緣和標記的順序,而不只是調色盤。 → references/styles.md
  4. 先用一張靜態插圖證明外觀,再進行端到端建構。 之後,設置關卡反而弊大於利。 → references/working-method.md
  5. 合約是絕對的。 只能使用純函數 (frame, env)(對於互動作品,還包括輸入日誌),僅使用 rng(seed),不使用時鐘,不使用 ctx.filter。不產生或下載任何東西;使用者提供的圖片可以嵌入,並透過雜湊值固定。 → references/determinism-and-contract.md
  6. 音樂需要計劃,而不是形容詞。 風格、每個段落的情绪、作為數據的樂譜,然後進行測量。你無法聽到它,所以在上架前必須由一位人類聆聽。 → references/music/
  7. 一人指導,一人建構,兩人都要寫下所有事情。 當工作階段品質下降時,重新開始;檔案就是記憶。 → references/working-method.md

工作流程

靜態插圖。 (1) 用一句話說出想法;說出焦點主體和光線。 (2) 對任何存在的實物打開真實參考資料,並記錄是哪個。 (3) 選擇風格,並先閱讀其圖版標題。 (4) 按照該介質的順序繪製。 (5) 使用 still.mjs 以完整尺寸渲染,對裁切區域(臉部、手部、腳部、關節;請參閱 references/craft-bar.md)執行細節檢查,並以書面方式進行評論。 ✋ 一次審核。 (6) 從相同原始碼交付所有要求的尺寸和形狀,並說明已列印 reproducible。

循環動畫。 如同靜態插圖,再加上:每個動作在循環中是週期性的,主體永不停止,每秒都有東西在動。檢查接縫(最後一幀與第 0 幀)。 ✋ 一次審核,在動態檔案上進行。

影片。 (1) 用三句話說出故事(設定、轉變、回報)和象徵;對於較長的影片,加上一個主幹和每章一句話。如果你寫不出來,就停止。 (2) 網格:一個節拍 = 60 x fps / bpm 幀,bpm 來自簡報中的配樂;一個提示表格記錄每個影格編號,並在載入時運行檢查器。 (3) 對任何存在的實物使用真實參考資料。 (4) 一張外觀檢查用的靜態圖,選取最難的影格,以書面方式評論。 ✋ 審核。 (5) 一個 8 秒的音樂樣本。 ✋ 審核。 (6) 建構整部影片;機械檢查持續運行。 (7) 從渲染的檔案進行一次審查:每個節拍一個連絡表,每個剪接成對顯示,靜音時段數據。一份排序後的修正清單,一次重建。 (8) ✋ 最終審核。 說明你驗證了什麼,以及你無法驗證什麼。

最多三個審核關卡。審核是一種預算;將其花在出錯代價高昂的地方。

工藝標準

測試標準:一位自豪的人類插畫家會交付這個作品嗎?還是這只是機械式的形狀組合?完整的判斷指標表位於 references/craft-bar.md。最常見的致命問題包括:由橢圓構成的主體、僅重新著色的風格替代、淡入而非繪製的物件、關節如同橡膠般的人物,以及在不同鏡頭中畫法不一致的角色。

任何會動的作品都不能有死音:每秒必須有可見的變化。一部會自我繪製的影片應宣告 kind: "drawing",並以更嚴格的標準評判;靜止畫面仍算失敗。

引擎

engine/ 是可攜式藝術核心加上工具集。engine/src/canvas-core 對 DOM 或任何後端一無所知。W、H、fps 和 durationFrames 來自影片的 meta。鏡頭運動(平移、縮放、視差、晃動)來自 engine/src/canvas-core/camera.ts:請參閱 references/camera.md。render.mjs --blur N 使用動態模糊渲染(N 個子影格在線性光下平均);預設路徑則保持不變。

node <skill>/engine/tools/scaffold.mjs ~/art --film intro --format 9x16 --duration 12   # 秒
cd ~/art && npm install && npx playwright-core install chromium
node tools/still.mjs intro --frame 0 --out out/look.png --scale 2   # 一張靜態圖,附帶雜湊值
node tools/render.mjs intro                                        # MP4;--out x.gif|x.webm|x.apng
node tools/gate.mjs intro                                          # 確定性、合約、死音
node tools/emit.mjs intro --out out/intro.html                     # 一個自包含的單機播放器
工具功能
scaffold.mjs建立包含靜態圖和/或影片的專案;--duration、--format 或 --size、--fps、--bpm
still.mjs / render.mjs繪製兩次影格並附帶雜湊值(--frames a,b,c --sheet 在一個瀏覽器中) / 以任何格式渲染作品(--from/--to、--poster-frame、--hashes)
gate.mjs確定性、合約、死音、偽影;--self-test 證明它可以失敗
registry.mjs / gallery.mjs直接從圖版讀取的風格列表 / 圖庫表
docs-check.mjs當任何文件的風格計數、長度或路徑與程式碼不一致時失敗
verify-export.mjs對渲染檔案進行品質保證:影格、時長、配樂;可選首幀檢查、循環接縫檢查、--delivery
test.mjs (npm test)engine/test/ 中的單元測試套件,無需瀏覽器
music.mjs渲染並測量配樂;check 對其進行檢查(調性、主音量、保護、分軌、新穎性)
sfx.mjs音效工具組:list、one、kit <dir>、test

四個後端,一個藝術核心:playwright、html-player、remotion、hyperframes。 → references/backends-and-adapters.md

實作範例

  • 風格圖版位於 engine/src/canvas-core/:每個風格都有一張靜態圖和一部繪製過程的影片,並在標頭和 references/styles/<id>.md 中提供配方。
  • MECHANICAL LEPIDOPTERA 位於 example/:一部 47 秒的有配樂影片。使用 scaffold.mjs ~/study --example。

研究它們。不要複製它們。 工藝標準無法透過繼承來滿足。

誠實的限制

你無法聽到配樂、觀看影片動態,或使用互動式作品。關於它們的所有聲明都來自測量或人類的回饋;請說明是哪一種。一個綠色勾號在重新執行之前都只是聲明。在信任一張靜態圖之前,先用 --scale 2 渲染一個影格:透過錯誤變換合成的圖層在 1 倍率下看起來正常,但在 2 倍率下就會出現問題。

相關技能