Communitygithub.com

Papermorph

使用一个引擎制作或编辑带动画、旁白和交互功能的网络书籍:可从参考PDF生成课程,从故事、笑话或童话制作动画绘本(纸偶电影),从公共领域图片构建纪录片,为手机信息流制作三分钟以内的竖版短片,随读者滚动而变化的滚动故事,以及可逐年探索的历史地图。

Papermorph 是什么?

Papermorph 是一个强大的 AI 代理技能,用于制作动画、旁白和交互式网络书籍,涵盖三种主要层级:从教材 PDF 生成的课程(Lesson)、包含纸偶和场景的动画绘本(Picture book),以及基于公共领域图片或用户素材的纪录片、竖版短片、滚动故事和可探索地图(Film / Page to explore)。所有作品均基于一个通用的 SVG 舞台(1600×900 或竖版 900×1600)和播放器,通过“节拍(Beats)”将旁白片段与定时动作配对,强调生动性、构图、真实性和流畅性。该技能支持多种平台(Claude Code、Cursor、Codex 等),通过详细的参考文档和脚本实现完整的制作流水线,包括风格定义、旁白生成、资产处理、预览和导出,并支持子代理并行工作以及用户驱动的迭代审查。

兼容平台~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/DozenTwelve/Papermorph/tree/HEAD/.claude/skills/papermorph

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Papermorph 是做什么的?

Papermorph 在一个引擎上制作三层书籍:

  • 课程,来自教材 PDF:每个章节都是一部简短的动画课程影片,画面承载讲解,旁白配合讲述,并在画面内完成快速检查和练习。
  • 绘本,来自故事、笑话或童话:纸偶在场景前的短片,可用代码绘制或由图像模型绘制,配有声音、效果和音乐。
  • 影片,来自一本书、一个想法或用户的论点:有旁白的纪录片,使用找到的公共领域图片、文字和地图,与语音同步移动;以及为手机信息流制作的竖版短片,在三分钟以内传达一个观点。

所有作品均基于一个 SVG 舞台(1600×900,或竖版短片的 900×1600)和一个播放器;节拍将旁白片段与定时动作配对。优秀的作品意味着生动(事物带有重量和时机地行动和变化)、构图(每个时刻都像一个画面,文字紧邻其所指)、真实(运动、标签和数字在每个时刻都一致)以及流畅(播放无卡顿,包括 Firefox)。

画面应该是什么样子取决于书籍和用户,因此工作从一次对话开始,最终生成 style.json:用户的描述、他们选择的外观、声音、哪个模型执行哪个步骤,以及后来被批准的章节。每个章节都是根据它制作的;你对每个节拍的布局和编排的判断应基于它以及已批准的章节。用户请求覆盖默认设置。重新创建解释、示例和图纸;将源 PDF、页面图像和提取的文本保留在静态输出文件夹之外,并脱离版本控制(.gitignore:*.pdf,books/*/pages/)。技能制作的章节是一个初稿:在发布之前,需要经过审查轮次和用户的观看。

哪个层级

阅读层级的第一份文件,然后仅阅读当前步骤所需的内容。下面的每个文件都从此处链接;无需查找另一个文件。

用户带来层级从以下开始然后,按步骤需要
一本教材 PDF(也包括课程教材)课程lessons.mdintake.md · authoring.md · diagrams.md(第 1 层) · scenes.md(第 2 层) · assets.md · maths.md(math.js,数学部分,LaTeX) · questions.md · figures.md(读者可以移动的图形) · checks.md · cover.md · courses.md(引用、题库、SCORM:仅在书籍需要时)
一个故事、笑话、童话,或一本故事书的 PDF(包含其自己扫描的图片:stories.md)绘本stories.mdpuppets.md · painting.md(绘画风格) · listen-and-find.md(适合幼儿的寻找游戏)
一本书、一个想法或一段历史,需要作为一部带旁白的影片来解释影片:纪录片films.mddocumentary.md
在不到三分钟内传达一个观点,竖版,用于手机信息流(YouTube Shorts、TikTok、Reels),或重新剪辑一部长片影片:短片films.mdshorts.md
一部影片的素材,或一个主要是地图和数字的想法,让读者在自己的节奏下阅读,页面上的图片随滚动而变化(滚动故事)影片:滚动页面films.mdscroll.md
一段需要在逐年变化的地图上探索的历史:变化的边界、移动的人物(一个页面,自己的播放器,非引擎)可探索页面explore.md

每个层级共享核心:

文件内容
core/style.md如何询问用户、模型步骤、付费步骤(密钥、价格、账本、余额)、style.json
core/publish.mdnew_book.py、语言、分钟数、预览和交付、视频导出
core/sound.md旁白文件、声音、音量、效果、音乐、字幕
core/review.md查看自己的作品在动态中的效果、帧、流畅度、导演轮次
core/team.md使用子代理制作章节、协调器、并行工作
core/engine.md播放器和绘图 API、计时、镜头、性能、陷阱

每当 books/<book>/style.json 尚不存在时,从层级的初始文件开始;重用已经给出的答案和批准。

参考书籍

参考书籍是标杆:需要达到的水平,而非要复制的格式。每本书都是 Papermorph 仓库(https://github.com/DozenTwelve/Papermorph)的 site/<slug>/ 文件夹,通过 https://papermorph.diamonddoge.org/<slug>/ 提供服务,因此其源代码可以在检出中读取,或者在技能独立安装时从任一地址获取。层级文件会指出在某个步骤值得打开的书籍文件。

层级书籍(slug)
课程第 1 层:Elementary Algebra(elementary-algebra)、Math Notebook(math-notebook);第 2 层:Science(science);使用深色墨水的浅色板:physics-notebook
绘本The Little Horse Crosses the River(little-horse)和 Little Red Riding Hood(little-red-riding-hood):全部由代码生成,由 ElevenLabs 配音的演员,一个 listen-and-find 环节,最新且为标杆;Joke Collection(joke-collection):绘制的场景、代码生成的纸偶、一系列剧集;Millions of Cats(millions-of-cats,Wanda Gág,1928年):从扫描书籍中提取的图片转化为场景和纸偶(不在书架上)
纪录片Madness and Civilization(madness,基于福柯,十分钟)、The Pandemic(pandemic)、Shooting an Elephant(shooting-an-elephant,读者参与其中)
短片Madness and Civilization 短片(madness-shorts;第一集 The Ship 是工作示例)、The Pandemic 短片(pandemic-shorts)

Tulip Mania(tulip-mania)是一部完全由技能独立制作的测试影片,除这些文件外无其他帮助;这些文件引用了它所遇到的问题。

项目布局

books/<book>/                 私有:源代码、style.json、分镜图、艺术、review/(层级文件列出其自己的)
content/<book>/chNN/           narration.<lang>.json 和语音缓存
tools/<book>/                  测试、音频脚本、证据
site/<book>/                   静态书籍(仅此部分交付)
  index.html                   封面和目录,或系列页面
  lib/                         引擎(由 engine.py 同步)、lib/book.css(此书籍的设置)、层级的工具包、书籍自己的片段
  img/                         书籍的图片
  chNN/index.html, audio/<lang>/   一个章节或剧集,其节拍的 MP3 文件和 timings.js(影片和绘本:audio/sfx/、audio/bgm/)

SKILL 表示此技能的绝对文件夹;<book> 是书籍 slug,<lang> 是其主语言代码。new_book.py 启动任何层级的书籍(core/publish.md)。

需要:uv、ffmpeg/ffprobe、Edge TTS 网络访问(或本地 Kokoro)、github.com 用于 engine.py(当仓库的 engine/ 文件夹不可用时)、仅用于用户选择的付费步骤(paint.py、eleven.py、video.py;paint_openai.py 需要 OpenAI 密钥)的 OpenRouter 密钥,以及 Playwright 浏览器(uv run --with playwright playwright install chromium firefox;当 Playwright 的 Chromium 无法运行时,设置 CHROME 为已安装的 Chrome、Chromium、Brave 或 Edge)。预览:python3 SKILL/scripts/serve.py 8765 site(无浏览器缓存)。

脚本

全部位于 SKILL/scripts/ 中;每个脚本使用 uv run --with … 运行,其后跟其文档字符串首行列出的包(即使 --help 在没有包的情况下也会因导入而失败),并使用 --help 打印其用法。

用途脚本
所有书籍new_book.py 启动书籍文件夹 · serve.py 无缓存预览 · engine.py 将引擎同步到书籍中 · tts.py 旁白和单词时间 · eleven.py 来自 ElevenLabs 的相同功能(付费) · level.py 均衡音量 · lint.py 静态检查 · check.py 在 Chromium 和 Firefox 中检查页面错误、控制台警告和节拍长度 · shot.py 节拍截图 · strip.py 分镜图条和运动条 · still.py 无运动的片段 · playlog.py 将声音和字幕与画面对照 · perf.py Firefox 帧时间 · export.py MP4 和 .srt 导出 · sfx.py 合成效果
课程outline.py 和 split_pages.py 页面映射和章节文本 · check_blank.py 空开头 · overlap.py 穿过文本的箭头 · sprites.py 图像处理步骤 · refs.py 已验证的引用 · items.py 题库 · scorm.py LMS 包
绘本mouths.py 嘴型 · join.py 每个场景一个片段 · bake_sets.py 场景图层 · bake_puppets.py 纸偶位图 · paint.py / paint_openai.py 图像模型图片 · painted.py 将它们放入书中 · lift.py 从扫描书籍的图片中裁剪出图形、场景和文字 · cutout.py 将基于关键色的图像模型图片裁剪成纸偶部件和道具
可探索页面topo.py 来自 Natural Earth 的地图 TopoJSON · explore.py 对可探索地图进行检查、截图、Firefox 计时和旁白文件
影片commons.py 公共领域图片和录音及其许可证 · prep.py 打印、线条和全出血处理 · trace.py 自我绘制的画作 · video.py 从静态图片生成剪辑 · frames.py 从处理的帧生成剪辑 · geo.py 来自 Natural Earth 的地图工具包数据 · music.py 根据影片裁剪的曲目、语音间隙中的背景音,以及音乐、背景音和效果与每行旁白的对齐 · safe.py 检测竖版影片安全区域外的文字

silence.py、ledger.py(单一成本账本:日期、章节、文件、模型、内容、成本)和 browsers.py 是其他脚本导入的辅助工具。

上下文

  • 从主对话中与用户交谈:初始输入,以及试点的每个表格和选择。当子代理可用时,章节作为一个团队制作,每个步骤使用用户选择的模型,主对话作为试点的协调者(core/team.md 说明了这允许什么);如果没有子代理,则在当前代理中运行相同的步骤,使用基于文件的状态。
  • 在需要时使用引擎 API 并检查单个函数;复制工具包文件,而不是将其完整源代码作为指令读取。
  • 保持 style.json 最新且简短;章节状态、勘误和历史反馈保留在 chapters.md 和 chapters/chNN.md 中。

相关技能