https://github.com/user-attachments/assets/1cf7f75c-b040-4c00-bf0c-cf1885f8b8da
发布短片,77 秒。每一帧画面、每一个声音,都是用 anidoodle 以代码制作的。
anidoodle
手绘的艺术,用代码写成。
插画、绘画延时视频、影片、讲解视频和互动网页艺术,32 种风格任你挑选。
每一笔都是一个函数,每一个音符都是一次算术运算,于是同一份源码
在任何机器、任何尺寸下,都会重新画出同一张画,永远如此。
支持 Claude Code · Codex · Grok Build · 以及任何能读取技能的智能体。
English · 日本語 · 简体中文 · 한국어 · Français · Español
风格 ·
作画影片 ·
音乐 ·
你能做出什么 ·
它自带了什么 ·
动态效果 ·
开始使用
## 32 种风格,随你挑选
每种风格都有自己独特的落笔方式:笔尖的收锋、水彩的晕染、粉笔在石板上的揉擦、剪纸边缘的撕裂感、孔版印刷滚筒的网点、一条雕刻线螺旋展开变成一轮月亮。同一个主题,在不同的风格里会呈现出完全不同的样子,就像出自 32 位不同插画师之手。每种风格还附有一段影片,按使用这种媒介的画家实际作画的顺序,逐笔展示画面如何诞生。为你的品牌选定一种风格,之后的每一张画都会出自同一双手。上面的每一幅样图,连同这张对照表本身,都是这个仓库里的代码画出来的。
全部 32 种风格,以及它们的画法
| 风格 | 画法 |
|---|---|
| **圆珠笔** | 只用一支圆珠笔,靠交叉排线形成明暗 |
| **分色笔触** | 不调匀的色彩分别点上,带着印象派的味道 |
| **粉笔黑板** | 用粉笔侧面揉擦,留下粉尘 |
| **炭笔擦画** | 炭笔画了又擦、擦了再画,保留旧痕 |
| **彩色铅笔** | 在有纹理的米色纸上,顺着方向叠加笔触 |
| **蜡笔** | 蜡质涂鸦掠过纸面的凹处 |
| **剪纸拼贴** | 撕纸与剪纸拼成画面,不画线条 |
| **蓝晒蓝图** | 在蓝晒纸上用鸭嘴笔绘制技术图 |
| **梦境釉彩** | 用树脂稀释的油彩薄涂罩染,不见笔触,轮廓一律分明 |
| **刺绣** | 在绣绷里的亚麻布上穿针走线 |
| **扁平矢量** | 清晰的几何形状,带颗粒感和长投影 |
| **民间故事绘本** | 彩绘前景逐渐融入米色纸上的铅笔线 |
| **墨线淡彩** | 先铺淡彩,再用有弹性的笔尖勾线 |
| **等距视角** | 以平面着色绘出 2:1 等距剖视图 |
| **低多边形 3D** | 用代码绘制平面着色的三角面 |
| **马克笔漫画** | 平涂色块,配上一道粗轮廓 |
| **世纪中期水粉** | 不透明的哑光色块、干刷边缘和松动的线条 |
| **报纸网点** | 在新闻纸上叠印黑色网版和一种专色 |
| **油画** | 在有底色的画布上留下硬毛笔触和厚涂肌理 |
| **纸艺** | 层层剪纸和彩绘纸片,以逐格拍摄的节奏呈现 |
| **铅笔与水彩** | 水彩晕染不完全填满铅笔轮廓 |
| **像素画** | 在低分辨率网格上使用固定的 16 色调色板 |
| **孔版印刷** | 油墨滚筒套印,留下轻微错版 |
| **橡皮管动画** | 1930 年代的墨线动画,弯曲的四肢与胶片颗粒 |
| **刮画** | 从黑色涂层中刮出白线 |
| **单线雕版** | 一条不断开的螺旋线,以粗细表现明暗 |
| **点描** | 用钢笔点的疏密表现明暗 |
| **绘本** | 用铅笔和水彩描绘角色 |
| **水墨画** | 在吸水纸上只用一支饱蘸墨汁的笔 |
| **玩具积木** | 带凸点的塑料积木,一层层搭起来 |
| **复古剪贴簿** | 在旧纸上拼贴版画、剪字标题和胶带固定的卡片 |
| **木刻/浮世绘** | 在和纸上印制雕刻的主版与色版 |
## 每种风格都会自己画出来
每种风格都从同一份源码产出完成的画,以及按这种媒介的画家实际作画顺序制作的影片。水彩先打铅笔稿,再从浅到深铺色;木刻先印主版,再逐一印上色版;像素画先搭出纯色形状,再给像素块加阴影。没有淡入效果:每一道笔画都会伸展,每片水彩都从落笔处晕开,影片最后一帧与静态图像逐像素一致。一段延时摄影,同时也是创作过程和讲解图。
## 用代码谱写音乐
没有采样,也没有录音。音符写成数据,所有声音都由代码合成。曲风是模型用来作曲的词汇,从来不是预设:共 21 种,从低保真电子、House、合成器浪潮到管弦乐、爵士、民谣和钢琴独奏。曲风提供音色、律动和和声语言;和弦、动机和曲式每次都重新写,所以每部片子都有自己的配乐。
- **键盘:** 以一台真实的施坦威三角钢琴为原型建模的钢琴,Rhodes 和 Wurlitzer 电钢琴,音轮风琴和管风琴,槌击乐器和钟。
- **合奏:** 每位乐手独立演奏的弦乐组,铜管,长笛和单簧管,会唱出元音的合唱团,尼龙弦、钢弦和电吉他,竖琴和四种贝斯。
- **鼓:** 用代码做出的真实鼓组(原声、808、909、复古颗粒、鼓刷、带定音鼓的管弦乐),每一击都略有不同。
- **真正的低保真:** 12 位采样器、磁带的晃动与底噪、黑胶的噼啪声,以及让整个混音呼吸起来的底鼓。
- **混音与空间:** 分轨均衡、鼓组总线、大厅、板式和卷积混响,以及达到流媒体响度标准的母带。
`node tools/music.mjs check` 在任何人试听之前先审核配乐:调性与调式、响度、掩蔽、每个声部的平衡,以及新颖度。听起来像已有曲子或引用了它的配乐不会通过。
| 试听 | |
|---|---|
| [降 A 大调夜曲](assets/audio/nocturne-45s.mp3) | 45 秒的钢琴曲:渐渐铺开、推向高潮,再归于低语 |
| [有表现力的钢琴](assets/audio/piano-8s.mp3) · [同一组音符的平板演奏](assets/audio/piano-flat-baseline-8s.mp3) | 差别在演奏:声部、乐句和踏板 |
| [电影感·敬畏](assets/audio/sampler-cinematic-awe-8s.mp3) · [低保真](assets/audio/sampler-lofi-nostalgic-8s.mp3) · [马林巴](assets/audio/sampler-marimba-curious-8s.mp3) · [电子乐](assets/audio/sampler-drive-electronic-8s.mp3) | 更多情绪与乐器 |
| [15 秒版夜曲主题](assets/audio/fit-theme-15s.mp3) | 作曲器会选择适合时长的曲式 |
以及**音效套件**:十四种分层、带种子的音效,精确到帧触发,每一次音乐都会让开一点([声音设计](skills/anidoodle/references/music/sound-design.md))。配乐怎么写:[`compose.md`](skills/anidoodle/references/music/compose.md) · [词汇一览](skills/anidoodle/references/music/styles/vocabularies.md)。
## 会注意到你的网页
真正能放进网站的互动插画:跟随光标、响应按钮的吉祥物,随页面滚动自行画出的主视觉,还有遇到密码栏就捂眼睛的表单伙伴。只需一个小型 ES 模块和一个 `` 元素,无需框架;也支持减少动态效果和键盘操作。给定导致当前状态的输入,每一帧都是确定的。
## 用代码画出你的产品发布片
本页顶部的影片就是用 anidoodle 做的,做它的那套工具也一起附带。`launch.mjs new <名称>` 会给你一份待填写的规格:你的产品名、用户会输入的提示、对应的回答(一幅画出来的图、你自己产品的界面,或一段影片)、几个词和你的安装命令。它会踩着节拍剪出一支发布片:自己打字的聊天界面、像墨迹一样绽开的回答、整屏的手写字,以及一张把安装命令停留足够久、方便复制的结尾卡。
- **四种画幅,一条时间线:** 16:9、1:1、4:5 和 9:16,每种画幅都重新构图,文字在手机上也清晰可读。
- **把你的产品搬上屏幕:** 由数据画出的界面,元素从修改前的状态弹跳到修改后的状态。
- **声音来自画面:** 每一次按键、点击和落地都有自己的音效,出现在屏幕上发生的位置,下面是为这支片子作曲的配乐。
- **可以直接发布:** `launch.mjs ship <名称>` 渲染每种画幅,写出封面帧和字幕(.srt 与 .vtt),在交付的文件上检查音画同步和峰值电平,并让任何边缘切到文字的帧不通过。
两种外观(手绘墨迹,或为以界面为主的产品准备的简洁外观),30 或 60 fps,运动模糊按每一帧的速度调整。
这些规则来自我们自己发布片的四次剪辑,以及优秀发布片的手艺:五秒内说清它是什么,文字永远不压在画面上,在强拍上切换,把第一帧做成缩略图。 → [`launch-video.md`](skills/anidoodle/references/workflows/launch-video.md) · [工具包](skills/anidoodle/references/workflows/launch-video-kit.md)
## 带上你自己的图片
- **匹配画风。** 给它看一张你喜欢的画,它会研究笔触、边缘、配色和纸张,再用同样的画风创作新画。借用的是风格,不是原画。
- **重画照片。** 照片可以变成刮画、木刻或单线雕版:系统会测量明暗,以及毛发或布料的方向,每道可见笔触都由代码绘制。
- **保持角色一致。** 角色只需创建一次,不论镜头、姿势或从木刻到玩具积木的画风如何变化,始终是同一个角色。
## 学着画画
观看带字幕的完整课程 (mp4, 95 秒)
问它怎么画一样东西,或者带来自己的画,anidoodle 就会把它重新拆成一堂课:分步图和带字幕的延时视频,每一步都说明该观察什么、怎样动笔,以及常见的错误。
## 你能做出什么
| 用途 | 你能得到什么 |
|---|---|
| **官网** | 一张主视觉插画,每个功能点一张点缀小图,空状态和 404 页面,全部出自同一双手。同一份源码可以导出任意尺寸的透明 PNG,视网膜屏和印刷都不在话下。 |
| **说明图和报告** | 原理图、剖视图和动态信息图,配上手绘风格的标注文字。严肃一点的话题,粉笔黑板、蓝图和圆珠笔风格都很合适。一个想法也能变成一台会运转、会自己拆开再装回去的机器,用任何风格来画。 |
| **品牌** | 一个会自己画出来的 Logo,一段片头动画,一套每次发帖都保持品牌调性的社交卡片模板。 |
| **社交和聊天** | 无限循环的动图、GIF,以及适配信息流尺寸的透明动态贴纸。 |
| **幻灯片和文档** | 一个程序生成一整套章节插画。换个种子,就能得到风格相同的姊妹图。 |
| **故事** | 分镜和动态预览,一步步长成一部任意时长、配有原创配乐的完整影片。 |
| **你自己的图片** | 带来一张画,就能用它的风格画新主题;带来一张照片,就能用 32 种画风中的任意一种重新创作,每一笔都由代码绘制。 |
| **网页** | 会追随光标、响应点击和表单,或随着页面滚动自行绘制的互动插画。还有放在标题旁的主视觉和小插图,贴合你页面的底色和品牌,浅色深色都行。 |
| **学习** | 用分步图和延时视频教你一幅画如何完成,还会指出该看什么、常见错误有哪些。 |
| **角色** | 一个角色只需构建一次,在不同镜头、姿势和风格中始终保持一致。 |
| **你的发布** | 用模板为你的产品做一支发布片:你的提示、你的画面、你的文字和安装命令,配着音乐剪好。 |
用大白话说出你的需求就行,比如 *“给我们的招聘页面画一张孔版印刷风格的灯塔,1600×900”*,或者 *“用粉笔黑板风格画一张解释我们定价方案的说明图”*,anidoodle 会自动把它路由到合适的工作流和风格配方,只有在你没说清楚的地方才会追问。
## 它自带了什么
引擎只是简单的那一半。真正的功夫,是 anidoodle 替你背下来的六条心得,每一条都是先画砸了一次才换来的经验,写下来是为了让你从上一个项目结束的地方接着开始:
- **故事**,让每件作品都有一个重点。一张静态图只讲一个想法、聚焦一个主体;一部短片只有一次转变、一个高潮,和一个反复出现的意象。→ [`storytelling.md`](skills/anidoodle/references/storytelling.md)
- **写实感**,来自把它说清楚。解剖结构、观察视角,以及你参考过的资料,都要交代明白,这样一只蝴蝶读起来才像是一个有身体、有翅脉的真实生物。→ [`realism-and-craft.md`](skills/anidoodle/references/realism-and-craft.md)
- **风格**,活在笔触里。32 套完整配方,外加一份按场合挑风格的指南,以及自创风格的步骤。→ [`styles.md`](skills/anidoodle/references/styles.md)
- **音乐**,依照某种曲风的词汇为每件作品作曲,再由代码合成:21 种曲风、完整的乐队和管弦乐团、所有大小调、每个段落各自的情绪,以及能适配任意时长的主题旋律。→ [`music/README.md`](skills/anidoodle/references/music/README.md)
- **确定性**,是这套系统的承诺。纯函数加上带种子的随机数,任何人拿到源码都能重建出一模一样的作品。→ [`determinism-and-contract.md`](skills/anidoodle/references/determinism-and-contract.md)
- **方法**,让你保持速度。先用一张静态图验证效果,再一路做到底,把审批环节留给那些出错代价高的地方。→ [`working-method.md`](skills/anidoodle/references/working-method.md)
每种格式都出自同一份源码:PNG、带配乐的 MP4、GIF、透明的 WebM 和动态 PNG,还有一个自包含的 HTML 文件。→ [`formats.md`](skills/anidoodle/references/formats.md)
## 先画,后动
 |
 |
| 每一笔都是真的画出来的,顺序和手绘时一模一样。 |
蓝图在水彩中苏醒,振翅飞向自己的草地。 |
**▶ 完整的 47 秒短片**,记得开声音。1080×1080,配有原创配乐,每一帧、每一个音频采样都是代码生成的:
https://github.com/user-attachments/assets/019d46d3-536a-4843-9f68-8e8f5f5c3401
一个纯函数负责画出每一帧,所以一张成品插画,就是这个函数被调用了一次;一枚贴纸,是同一个函数循环调用;一部短片,则是这个函数配上一个故事和一段配乐。三者背后,是同一套保证。
## 画一次,管一辈子
图像模型每渲染一帧都要烧掉 token 和算力,而且每次画出来的都不一样。代码只花这份钱一次。这部 47 秒的短片就是一个程序:写一次,就能在任何机器、任何尺寸下渲染出全部 1,410 帧画面和一整段立体声配乐,而且每次运行都是免费的。折算下来,第一遍大约每帧只花六十个 token 的代码量,之后每一遍都是零成本。一张静态插画不过几百行代码,一整个系列的图像,也不过是一份种子列表。
## 开始使用
**Claude Code:**
```bash
/plugin marketplace add alexgreensh/anidoodle
/plugin install anidoodle@alexgreensh-anidoodle
```
**Codex:**
```bash
codex plugin marketplace add alexgreensh/anidoodle
```
然后在 Codex 的 TUI 中输入 `/plugins`,安装 anidoodle。
**Grok Build:**
```bash
grok plugin marketplace add alexgreensh/anidoodle
grok plugin install anidoodle --trust
```
`--trust` 用于确认安装;不加它,Grok 会列出插件可以运行的内容,然后停下。也可以在 `/plugins` 的 Marketplace 标签页里安装。
**其他智能体:** anidoodle 是标准的 skill 文件夹(`skills/anidoodle/SKILL.md`),可以复制到任何能读取 skill 的运行环境。
然后直接说出你想要什么就行,比如 *“给我们的菜谱页面画一个铅笔加水彩风格的梨”*。如果你想亲自操作引擎:
```bash
node /engine/tools/scaffold.mjs ~/art --still hero --film intro --format 9x16 --duration 60
cd ~/art && npm install && npx playwright-core install chromium
node tools/still.mjs hero --out out/hero.png --scale 2 # a finished illustration, print size
node tools/render.mjs intro --out out/intro.gif # a loop; also .mp4 with score, .webm with alpha
node tools/emit.mjs intro --out out/intro.html # the whole piece as one offline file
node tools/gate.mjs hero # determinism, contract and dead air in one pass
node tools/verify-export.mjs intro --file out/intro.mp4 # the file you ship, decoded and checked
node tools/music.mjs check score.ts#myScore # your score: key, loudness, balance, novelty
node tools/launch.mjs new myLaunch # a launch film spec; then: launch.mjs ship myLaunch
```
需要 Node 20 及以上版本。静态图只需要上面那个浏览器;只要涉及动态效果,就还会用到 `ffmpeg`。
`emit` 会输出一个大约 100 KB 的 HTML 文件,双击就能离线播放,声音也在里面。它带着完整的配方,每次打开都会从头重新画一遍。把它作为邮件附件发出去,你就等于交付了一整个工作室。
四个后端共用同一个绘图核心,而这个核心压根不在乎是谁在画:`playwright`、`html-player`、`remotion`、`hyperframes`。
## 示例短片
`skills/anidoodle/example/` 目录里放着**机械鳞翅目**(Mechanical Lepidoptera):1,410 帧,47 秒,一只机械蝴蝶自己画出自己的图纸,在水彩中苏醒过来,又把蓝图留在了草丛里。这一部作品,就是整个引擎的缩影:控制点是按照真实解剖结构手工摆放的,缓存键记录了每个像素依赖的每一个输入,配乐专为它创作,从画成到活过来,是一气呵成的一个动作。风格样图和引擎放在一起,都在 `skills/anidoodle/engine/src/canvas-core/` 里,每一张的顶部都写着自己的配方。随便打开一个,改一个数字,看看会发生什么变化。
## 诚实是设计出来的
声音和动态效果,靠的是拿实打实的证据说话。每一句关于配乐或动作的描述,背后都有一次测量或一双人眼验证过,绿色对勾也只有在重新跑过之后才算数。正是这份较真,让同一件作品无论在哪台机器上、跑多少次,都能分毫不差地重现。
---
基于 [Apache License 2.0](LICENSE) 协议开源。版权所有 2026 Alex Greenshpun。
由 anidoodle 绘制,它的全部本事,都是老老实实画了几遍蝴蝶换来的。