手绘绘本动画还在逐帧画?这个开源 Claude Skill:画面自己在浏览器里画出来,配音配乐一条龙

手绘绘本动画还在逐帧画?这个开源 Claude Skill:画面自己在浏览器里画出来,配音配乐一条龙

一句话:这是一个 Claude Skill —— 让 AI 在浏览器里现场画出一本会自己动的手绘水彩绘本:画面一笔笔画出来、镜头有分镜、翻页像翻真的纸、配乐是生成的、旁白用豆包语音、还带中英双语字幕。全片是实时绘制,不是预渲染视频。

仓库:lhlGitHub/hand-drawn-storybook-animation-skill

五个”真的会动”的瞬间

下面全是这个 Skill 做出来的效果——画面在浏览器里实时画出来,不是导出好的视频。素材来自仓库 previews/(已压缩转存)。

画面自己画出来:一笔一笔扫出,钢笔线 + 水彩 + 米色纸
墨滴活了过来:一坨墨点长出眼睛,压扁、拉伸、融化、聚合
暴雨里的巨大墨怪:流体角色靠径向点弹簧撑轮廓,不是 CSS 缩放
穿过撕开的纸页:冻结旧页 + evenodd 挖洞 + 纤维卷边,镜头推进穿过去
把金色还给星星:高潮收尾,金光铺满后化开

它到底是什么

一个 Claude Skill(技能包),装进 Claude 里,给一句话就能开工,比如”做一本会自己画画的绘本”或”给绘本加一章,用豆包配音”。

产出物是一整套网页动画:React + TS + 自研 Canvas/SVG 引擎,用 esbuild 打成单文件。参考实现叫 The Living Storybook《追星星的小狐狸》。

关键点:它不是”生成一段视频给你下载”,而是浏览器实时绘制——每一帧都是代码画出来的。所以观众能做的事很朴素:开始、暂停/继续、声音、重播、跳章。

核心能力

1. 画面自己画出来

分层场景(Plate 景深层):sky .12 / far .35 / back .62 / mid 1 / actors 1 / fore 1.38,纵向视差系数 ≈0.12。水彩、钢笔线、米色纸分开渲染,用 1–3 秒的”多笔扫出”(reveal)把画面画出来。

2. 镜头是设计过的,不是匀速平移

每章 4–7 个设计过的镜头(远/中/特写/插入),禁止用一个匀速平移撑一整章。每章有起因/发展/意外/高潮/收尾,且开头 5 秒内必须出主角 + 悬念,至少一次惊人的视觉变化。

3. 转场像翻一本真书

  • 章与章:卷边翻页 → 纸上印出章节卡(至少停 1.5s)→ 纸淡出,下一章在白纸上重新画出;
  • 同章换场景:canvas 湿笔刷毛边擦除;
  • 高潮收尾:金光铺满 → 章节卡 → 化开;
  • 纸页撕裂/穿越:冻结旧页 + 挖洞 + 纤维卷边,镜头推进穿洞,后面是新世界。

4. 生成式治愈配乐

毛毛钢琴(正弦 + 轻八度,快起慢收),每拍至多一个音、五声音阶级进、常留空;暖长音垫底、卷积长混响代替回声。音乐音量 ≈0.2,有人声时自动压到 0.42——配音永远优先于音乐。

5. 豆包语音配音 + 中英双语字幕

配音走火山引擎语音合成 2.0(X-Api-Resource-Id: seed-tts-2.0):

  • 中文旁白用一个温柔女声,语速慢、Pitch 微调;
  • 小狐狸的英文对白同一音色,靠 context_texts 语气描述 + pitch 区分角色;
  • 小墨怪还有一套叫声样本库(v-boop / v-eep / v-giggle / v-squeak…);
  • 字幕上英下中,按音频真实起止时间显示;时间轴 cue 挂在每句台词上,跟随真实音频,暂停时音频也暂停。

值钱的其实是一堆”真坑”

这个 Skill 最特别的地方,是它把工程里踩过的坑写进去了(不是空泛的”最佳实践”):

  • 水彩低 alpha 叠层会偏紫:8 位预乘 alpha 会把绿通道舍入成 0。解法是合并淡层 k=ceil(MIN_ALPHA/alpha)、alpha'=1-(1-alpha)^k,再用像素值判断(R>G 且 B 高 = 偏紫)。
  • 内联 JS 必须用函数形式 .replace('</body>', () => ...),否则压缩代码里的 $'、$& 会被当成替换模式,直接白屏。
  • 浏览器语音兜底:speak 前先 speechSynthesis.resume(),否则暂停过会吞句。
  • 验证要真跑:Playwright 无头 Chromium 逐章截图 + 快进连拍转场;无头帧率低,结果以”故事时钟”为准;而且明说”自己听不到声音,要如实标注未试听、未在真机确认”。

怎么装、怎么用

Claude(网页 / 桌面):把仓库下成 ZIP → Customize → Skills → + → Create skill → Upload a skill → 选 ZIP。

Claude Code:

git clone https://github.com/lhlGitHub/hand-drawn-storybook-animation-skill.git
cp -r hand-drawn-storybook-animation-skill/hand-drawn-storybook-animation ~/.claude/skills/

然后直接说需求:”做一本会自己画画的绘本”、”给绘本加一章,用豆包配音”、”Build a self-drawing storybook animation with bilingual subtitles”。

前提与分寸(诚实项)

  • 豆包配音要你自己的火山引擎 API Key,放在项目根目录的 .env 里,别提交到仓库;Skill 明确要求”不假装生成过音频、不虚构 API 调用”,密钥只走环境变量。
  • 它不是一键出片:流光水彩、分镜、配音都按流程来;扩展已有项目时强调”先读全引擎,不重建、不改前面章节”,保持角色造型与画风一致。
  • 仓库很新(2026-10-16 创建),Star 不多,属于早期项目——当参考实现和学习材料用没问题,当生产级框架要自己再掂量。

适合谁

  • 想做”故事书动画 / 绘本短视频”,又不想一帧帧手画、逐条剪辑的人;
  • 研究 AI 动画、浏览器实时绘制、以及”让 coding agent 做创意”的开发者——它把一套完整的创作方法论和踩坑清单都摊开了。

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注