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







