Communitygithub.com

anidoodle

纯代码绘制的静态图像、绘画延时、影片、解说视频和交互式网页动画,支持31种风格并配有合成配乐。可匹配参考风格、保持角色一致性、教授绘画。确定性强,不生成任何资源。

anidoodle 是什么?

anidoodle 是一个以代码为唯一创作媒介的艺术引擎技能。它的核心是一套纯函数系统:一个函数负责逐帧绘制所有像素,另一个则负责合成每一段音频采样。得益于这种确定性设计,同一份源码在任何机器上、以任意尺寸和时长运行,都能重建出完全相同的画面和声音。该技能覆盖了从单幅英雄图、循环动画、故事影片到交互式网页动画的广泛格式,并内置了31种风格。它不仅仅是一个渲染工具,更包含了一套完整的创作方法论——通过七项基本法则和严格的工艺标准,指导用户避免空洞的创作,确保每一件作品都有明确的主题、真实的参考、一致的风格和精心设计的配乐。用户可以悬停在某个风格上查看样片,或者通过一次性提问快速启动项目。操作上,该技能支持 Playwright、HTML Player、Remotion 和 Hyperframes 四种后端,并提供丰富的 CLI 工具链用于项目搭建、渲染、质检和交付。总之,anidoodle 能够帮助开发者和创作者高效产出具有高艺术完成度的确定性代码艺术作品。

兼容平台~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 或任意 W x H),多长(任意时长;永远不要设上限),什么声音(无声或一种音乐风格和情绪),哪些角色。“你选”意味着你做出选择,并用一句话说明理由。在绘制之前将这些答案写成一份简短的需求摘要。

你在制作什么?

制作内容阅读文档
静态图:主图、插图、封面、卡片、海报、系列作品下方的静态图工作流,references/formats.md
自绘式图片(延时摄影、制作过程)references/workflows/drawing-process.md
循环动画、贴纸、动态 Logo、氛围页头下方的循环动画工作流,references/formats.md
故事影片,任意时长下方的影片工作流,references/workflows/long-film.md
解说视频或信息图references/workflows/explainer.md
发布或产品视频(欢迎使用他们的截图)references/workflows/launch-video.md;基于 references/workflows/launch-video-kit.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/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 倍时就会暴露问题。

相关技能