by DozenTwelve
An AI skill that turns books into animated, narrated, interactive web experiences
# Add to your Claude Code skills
git clone https://github.com/DozenTwelve/PapermorphSee how Papermorph compares with popular alternatives.
Papermorph is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by DozenTwelve. An AI skill that turns books into animated, narrated, interactive web experiences. It has 843 GitHub stars.
Papermorph's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/DozenTwelve/Papermorph" and add it to your Claude Code skills directory (see the Installation section above).
Papermorph is primarily written in JavaScript. It is open-source under DozenTwelve on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh Papermorph against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
| You give it | You get | On the shelf |
|---|---|---|
| A textbook PDF (maths) | Lessons where formulas and diagrams change step by step as the narration explains, with quick checks and chapter practice that grade the maths, not the string | Elementary Algebra (68 chapters), Elementary Mathematics (23) |
| A textbook PDF (science) | Illustrated scenes with acting characters and camera work, plus the same quizzes | Elementary Physics (9 chapters and a sample) |
| A story, a joke or a fairy tale | A short film of paper puppets in front of sets drawn in code or painted by an image model, with voices, subtitles, sound effects and music | Joke Collection (7 episodes), Little Red Riding Hood |
Everything is a static web page: no server, no database, no account. A book is a folder you can host anywhere.
Install the Skill in your project:
npx skills add DozenTwelve/Papermorph --skill papermorph --agent claude-code
Then, in Claude Code:
/papermorph
It finds the PDF in your project (or asks for your story), tells you what kind of book it is, suggests a chapter to try first and how much animation it needs, and offers a recommended option at every step. Your choices are saved in style.json, so every later chapter is made to the same style.
You need uv, ffmpeg, and Playwright's browsers (uv run --with playwright playwright install chromium firefox). Narration uses Edge TTS (online) or Kokoro (local). Painted sets for picture books need an image-model API key; everything else runs without one.
Textbooks: the PDF is split into chapters → each chapter gets a beat plan and narration → the narration is voiced, and every word gets a time → the picture is laid out as a storyboard first, then animated in time with those words → quizzes go between the steps → the model watches its own output (contact sheets, overlap and blank-frame checks, end-to-end tests) and fixes what it sees.
Picture books: your telling becomes a script and a shot list → puppets and sets are built (or painted) once and reused across episodes → voices, mouth shapes, sound effects and music are made and joined per scene → scenes are filmed in parallel → review rounds (a director, picture reviewers and a sound reviewer) send scenes back until they hold up next to approved episodes.
Large chapters can be made by a team of subagents, each step on the model that suits it (team.md).
Every book plays in the same player: pause anywhere, step back and forth, click a step to jump there, speed control, captions, keyboard shortcuts, and progress saved per book. Interface text follows the book's language (<html lang>: English, Russian, Chinese and Japanese are built in); foreign lines in a film are subtitled. Formulas can be written in LaTeX (MathJax, copied only into the books that use it).
The player engine lives in engine/, apart from the Skill, and every book keeps its own copy, so a book never breaks when the engine changes. To update the books, or to use your own fork:
python3 .claude/skills/papermorph/scripts/engine.py site # sync every book in site/
python3 .claude/skills/papermorph/scripts/engine.py site --from you/your-fork@main
Engine versions are tags (engine-v2, engine-v2.1, …); a new major number means a book may need a change, described in its release notes. Outside this repository, engine.py syncs from the latest compatible release, now engine-v2.1. Since engine-v2 the maths helpers (number lines, tiles, planes, the number-set diagram) are in lib/math.js: a chapter that uses them loads ../lib/math.js right after engine.js, and lint.py names the chapters that need it. --from DozenTwelve/Papermorph@engine-v1 keeps the earlier engine.
With the site served locally, any chapter or episode renders to a 1080p MP4 with an .srt:
uv run --with playwright --with numpy .claude/skills/papermorph/scripts/export.py ch12 \
--url http://localhost:8765/science/ --link https://papermorph.diamonddoge.org/science/ch12/
Frames are rendered from the lesson clock, so the video matches the page exactly; quizzes stay in the interactive version, and the video ends by pointing there.
For courses, a book can also be packaged for an LMS as SCORM 1.2 or 2004 (scripts/scorm.py), and a book can opt in to verified citation links and reviewed question banks (authoring.md). None of this is on by default.
The Skill is not tied to one model: the books on the shelf were made with Opus 5.5, GPT-6.1-Sol and Sonnet 5.5.
An illustrated physics chapter costs about $10–18 of model usage. The painted sets of a picture-book episode cost under $0.20.
How is this different from Claude Motion? Claude Motion makes animated explainers. Papermorph makes whole books: many chapters in one consistent style, quizzes that are graded, progress that is saved, and a static site you own and can host anywhere.
Can I make a book from any PDF? Yes, for your own use. The finished book contains new explanations and drawings, not the PDF's pages, but publishing a book based on someone else's textbook is your call to check.
Fixes to the Skill and the player are welcome. Please don't open pull requests that add a copyrighted book, its PDF, or lessons made from one.
git clone --depth 1 https://github.com/DozenTwelve/Papermorph.git
cd Papermorph
python3 .claude/skills/papermorph/scripts/serve.py 8765 site
Then open localhost:8765. (The full history is large; --depth 1 skips it.)
MIT. The bundled MathJax (engine/vendor/mathjax) is under the Apache License 2.0.