mcpField
A
anidoodle

anidoodle

github.com/alexgreensh创意与媒体1.2k106 次安装5 天前更新
代码仓库

关于 anidoodle

anidoodle 是一项用于创作代码绘制静帧、影片、循环动画和交互作品的技能。它结合确定性渲染引擎与视觉创作、配乐、审查和导出流程。

主要功能

  1. 01代码绘制静帧、影片和循环动画
  2. 02确定性生成画面与声音
  3. 03视觉风格与叙事工作流
  4. 04音乐创作与音效制作
  5. 05渲染、验证和导出工具

适用场景

  1. 01用代码制作海报或封面
  2. 02制作循环动画或动态标志
  3. 03创作配乐故事影片
  4. 04制作解说片或产品发布视频

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alexgreensh/anidoodle --skill anidoodle

安装后在 Claude Code 中输入/anidoodle确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

engine/
package-lock.json
package.json
engine/assets/refs/
PROVENANCE.json
engine/facts/
launchExample.json
launchExampleClean.json
engine/src/canvas-core/
adaptAlmond.ts
adaptAquarelle.ts
adaptScrapbook.ts
assetKit.ts
bake.ts
bakerSheet.ts
balloon.ts
balloonDraw.ts
banner.ts
bitRig.ts
blueprint.ts
blueprintKit.ts
brickBalloon.ts
brokenColour.ts
brokenColourKit.ts
callout.ts
calloutDemo.ts
camera.ts
engine/src/canvas-core/character/
build.ts
check.ts
design.ts
engine/src/canvas-core/character/human/
balance.ts
canon.ts
clothing.ts
figure.ts

详细介绍

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 或任意 W x H)、时长(任意时长;绝不设上限)、声音(静音,或一种音乐风格和氛围),以及有哪些角色。“你来选”就表示替他们选择,并用一句话说明原因。开始绘制前,先把答案写成一份简短的需求说明。

你要制作什么?

制作内容阅读
静态图:主视觉、广告图、封面、卡片、海报或系列作品下方的静态图工作流,references/formats.md
自行绘制的图片(延时摄影、创作过程)references/workflows/drawing-process.md
循环动画、贴纸、动画标志、氛围页眉下方的循环动画工作流,references/formats.md
故事影片,任意时长下方的影片工作流,references/workflows/long-film.md
讲解视频或信息图;以任何风格制作、通过拆解机器来讲解某个概念references/workflows/explainer.md、references/workflows/machines.md
发布或产品视频(欢迎提供他们的截图)references/workflows/launch-video.md;使用 references/workflows/launch-video-kit.md 制作;内容依据:references/workflows/facts.md
网站艺术图(页面底色和品牌风格下的主视觉、图块、广告图、分享卡片);或能响应 UI 的网页动画references/workflows/site-art.md;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/compose.md,技艺指南见 references/music/theory/);反复修改,直到 node tools/music.mjs craft 只显示你选择保留的问题,然后在真人聆听前确认检查结果必须为 PASS。风格只决定声音,不决定音符。
  • 音效:参阅 references/music/sound-design.md。14 种分层、带随机种子的音效,由影片帧触发(filmSfx);配乐会自动降低音量,每条音效都必须控制在与配乐相差 6 dB 以内。只在真正改变方向时使用音效;每部影片只用一个渐强音效和一个冲击音效。
  • 发布影片:launchTemplate.ts 根据数据渲染产品发布内容(提示词、画面素材或产品自身的 UI、专门为其创作的配乐、文字、安装命令),同一时间线可适配所有画幅;使用 launch.mjs new|ship。节省令牌的工作习惯: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) 由一位全新的评论者进行评审,绝不能由你自己评审(references/workflows/review.md):完成分镜、每个场景和完整渲染后,都要由一位没看过制作过程的新子 Agent 返回按优先级排序、带时间戳的问题和结论。修复最严重的问题,再由一位新的评论者复查;最多 3 轮,并记录在 ledger.md 中。 (8) ✋ 最终批准。 说明你验证了什么,以及哪些内容无法验证。

最多三道批准关卡。批准次数有限,应花在出错代价高的地方。

工艺标准

检验标准:一位自豪的人类插画师会交付这件作品吗,还是它只是机械地拼装形状?完整的缺陷清单见 references/craft-bar.md。最容易毁掉作品的几个问题:主体由椭圆拼成、只给一种风格重新上色就冒充另一种风格、物体不是被绘制出来而是淡入出现、人物关节像橡胶一样,以及角色在不同镜头中的画法不一致。

所有动态内容都不能有空白时刻:每秒都必须有可见变化。自行绘制的影片应声明 kind: "drawing",并按更严格的标准评判;静止画面则无法通过。

引擎

engine/ 是可移植的艺术核心及其工具。engine/src/canvas-core 不依赖 DOM 或任何后端。W、H、fps 和 durationFrames 来自影片的 meta。 镜头运动(平移、推轨、镜头变焦和推轨变焦、视差、抖动)以及慢动作或定格画面:engine/src/canvas-core/camera.ts、engine/src/canvas-core/timeRemap.ts、references/camera.md。 场景之间的衔接:references/motion-grammar.md(承载运动的剪辑:seams.ts;tools/deck.mjs deal 会为每部影片分配不同的运动;deck.mjs find "<name>" 可将某个运动的日常名称转换为对应卡片)。render.mjs --blur auto 会渲染运动模糊(根据测得的屏幕运动速度确定每帧的子帧数,并在线性光下取平均,使用 --shutter 180);默认路径不变。

node <skill>/engine/tools/scaffold.mjs ~/art --film intro --format 9x16 --duration 12   # seconds
cd ~/art && npm install && npx playwright-core install chromium
node tools/still.mjs intro --frame 0 --out out/look.png --scale 2   # a still, with its hash
node tools/render.mjs intro                                        # MP4; --out x.gif|x.webm|x.apng
node tools/gate.mjs intro                                          # determinism, contract, dead air
node tools/emit.mjs intro --out out/intro.html                     # one self-contained offline player
node <skill>/engine/tools/soundfetch.mjs list    # no network. Nothing installed and not declined: ask the user now
node <skill>/engine/tools/soundfetch.mjs get piano rooms  # on their yes (piano 233 MB, all 373 MB). On no: soundfetch.mjs decline
工具功能
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对渲染后的文件进行 QA:帧数、时长、评分、音视频同步、编码后的真峰值;可选检查首帧、循环衔接、--delivery
launch.mjs制作一部发布影片:new <name> 会创建规格;ship <name> --shapes 16x9,9x16 会渲染影片、海报和字幕,验证并逐帧检查每种规格(framecheck.mjs:文字完整、显示时间足以阅读,且避开 9:16 手机屏幕区域),并检查 facts.json(facts.mjs)
test.mjs(npm test)运行 engine/test/ 中的单元测试套件,不需要浏览器
music.mjsvocab 会输出某种风格的词汇表;check 会检查你编写的乐谱(调性、母带、保护措施、分轨、新颖度、哪些部分使用了录音),并输出其结构(ARC);render、meter
soundfetch.mjs音效包:list、get <id...|all>、where、verify、remove <id>
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。
  • example/ 中的 MECHANICAL LEPIDOPTERA:一部配乐影片,时长 47 s。scaffold.mjs ~/study --example。

认真研究,不要照搬。 继承前人的成果并不代表达到了工艺标准。

诚实面对局限

你无法听到配乐、观看影片的动态效果,也无法使用交互作品。关于这些内容的每项说法都来自测量或人工判断;请说明来源。绿色对勾只是一个说法,除非你重新运行检查。信任静帧之前,先用 --scale 2 渲染一帧:通过错误变换绘制的图层在 1x 下看起来正常,在 2x 下却会出问题。

评论

支持 Markdown