Papermorph: a Claude skill that turns a PDF into an animated, narrated web book
An AI skill that turns books into animated, narrated, interactive web experiences
At a glance
- What is it?
- Papermorph is a skill for Claude Code that takes a PDF, asks a short set of questions, and produces storyboards, narration, animation and quizzes rendered as a web book. The pipeline runs from a PDF through a style file to storyboards and narration, and a separate engine directory keeps the player fixable without touching the skill.
- Who is it for?
- Papermorph fits a teacher or lecturer who wants to turn a chapter of a textbook into an animated narrated walkthrough with quizzes, and who is happy to work through the skill's questions and review the output. It does not fit a production pipeline that needs batch conversion without a human in the loop, and it does not fit anyone who needs the raw PDF republished.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The pipeline, from PDF to web book
Papermorph is described as a skill that turns PDFs into animated interactive web books, and the README gives the whole pipeline in one line:
PDF -> A short conversation (style.json) -> Storyboards -> Narration -> Animation & quizzes -> Web bookThe first stage is a conversation, and that is what makes the tool different from a converter script. The skill starts by finding your PDF, saying what the book is, suggesting a chapter to try and an animation tier, and offering options at every step, so you can pick the recommended one.
Your choices are saved in style.json, and the README calls that the style every later chapter is made against. That single file is the memory of the session, and it is the reason a book comes out visually consistent: chapter one sets the decisions and the rest follow them.
The animation tier is the other axis. Diagrams that change, which is tier 1, suit maths and other abstract topics, and illustrated scenes, tier 2, suit physics and stories.
The status is honest about where it stands. It was built with Opus 5.5 and tested with other models, and there is no image models, multilingual support or background music yet.
What the roadmap says about the intended scope
The roadmap lists four kinds of book, and the checked boxes tell you which are working and which are not.
Math books are done, with formulas and diagrams that change step by step, with quizzes, and two books on the shelf.
Physics books are not done. The planned work is illustrated scenes, acting characters and camera work, with chapters 9 to 12 on the shelf, where chapter 12 was made by the new Skill.
Picture books are in local testing, and need image models and storyboards for interactive picture books.
Humanities documentaries are not started, covering history and social science titles.
And the note at the end of the list says that along the way the bookshelf grows and new skills are released, so the project is conceived as a set of skills rather than one tool.
The two books on the shelf and the chapter range that each model produced are the practical measure of the current state. This is a project with a working end to end path for mathematics, a partially working path for physics, and a design for the rest.
Installing the skill and running the first chapter
Installation is a single npx command run in your project directory:
npx skills add DozenTwelve/Papermorph --skill papermorph --agent claude-codeThen, in Claude Code with Opus 5.5, you run the slash command:
/papermorphAnd it looks for the PDF in your project, then asks the rest. The first interaction is the one described earlier, where it proposes a chapter and a tier.
There is a quality gate before you look at the output. Before you review a chapter, scripts/lint.py catches broken names, missing audio and stale narration in under a second. That is a small script doing a specific job, and it is the difference between a chapter that plays and a chapter that fails silently in the middle of a lesson.
The player itself is described separately from the skill. Every book plays in the same player, with speed control using the less-than and greater-than keys, the ability to click anywhere on a step to jump there, captions, keyboard shortcuts, and progress saved per book. The player engine lives in an engine directory, apart from the Skill, so a fix reaches every book without touching the Skill, and the README invites you to fork it and point the Skill at your fork.
Exporting a chapter to video
Any chapter can be rendered to MP4 at 1080p with an .srt file for YouTube or Bilibili, using a script and the uv runner to pull in Playwright:
uv run --with playwright .claude/skills/papermorph/scripts/export.py ch12 \
--url http://localhost:8765/science/ --link https://papermorph.diamonddoge.org/science/ch12/The command takes a chapter identifier, the local URL to render from and the link to point the video at.
The design decision worth noting is that frames come straight from the lesson clock, so the video matches the page rather than being a separate rendering of the same content. The trade is that quizzes stay in the interactive version, and the video ends by pointing there.
That is a sensible division for the medium. A video cannot ask a question, so the quiz has to live in the page, and the video becomes the entry point rather than the whole artefact.
The scripts directory also holds the engine pointer, so a fork of the player can be used in place of the original:
python3 .claude/skills/papermorph/scripts/engine.py site --from you/your-fork@mainThe argument takes a repository reference in the form owner/name@branch, which is how a fork is wired in without changing the skill itself.
Model support and the official alternative
The README is explicit that the skill is not tied to one model, and the books on the shelf are the evidence.
Opus 5.5 produced most of the books, including the physics chapters. GPT-6.1-Sol runs the skill well, as seen in Elementary Mathematics chapters 4 to 20. Sonnet 5.5 works with some rough edges, in Elementary Mathematics chapters 21 to 22.
That is a useful piece of information for anyone planning to run this, because the rough edges are visible in the output rather than hidden. The chapter ranges are the record of where each model stopped working cleanly.
Then there is the section on the official alternative, and it is unusually candid. Claude now offers official animated explainers, called Claude Motion and in beta, which overlap with much of what this skill does, and for token efficiency the official tool may be the better choice.
The author's response to that is personal rather than competitive: they will still finish Papermorph along its roadmap, and building it is worth it to them. That is a fair thing to read before adopting a tool, because it tells you that the project is not trying to out-feature the official product and may not be maintained at a pace that matches it.
Running the examples and the copyright rule
The examples can be run locally with a plain static server, and the command is short:
git clone https://github.com/DozenTwelve/Papermorph.git
cd Papermorph
python3 -m http.server 8765 -d siteAnd then you open localhost:8765. The port 8765 is the same one the export command renders from, so the local server is the intended way to preview a book before exporting it.
The contributing section contains the rule that matters most for anyone thinking about forking this:
Fixes to the Skill and the player are welcome, but please do not open pull requests that add a book, its PDF, or generated lessons, audio or videos, because those raise copyright issues.
That is a specific and reasonable boundary. The code is MIT licensed and the repository is open to improvements, but the content, the source PDFs and the generated media are not contributions, because a book and its derivative animated narration are the copyrighted work. The project hosts a live bookshelf, and the boundary is what keeps that hosting legitimate.
The consequence for a user is the same one it is for a contributor: you can bring your own PDF, but the licence of that PDF is your responsibility, and a generated animated narration of a commercial textbook is a derivative work of it. The repository structure mirrors the arrangement, with a .claude directory holding the skill, an engine directory, a site directory holding the built books and an img directory for the README assets.
Editorial conclusion
Papermorph fits a teacher or lecturer who wants to turn a chapter of a textbook into an animated narrated walkthrough with quizzes, and who is happy to work through the skill's questions and review the output. It does not fit a production pipeline that needs batch conversion without a human in the loop, and it does not fit anyone who needs the raw PDF republished. Before using it, read the contributing rules, because the project explicitly refuses pull requests that add a book, its PDF or generated lessons, audio and videos on copyright grounds, and check the licensing of any material you feed it since the output is derived from the source document.
Frequently asked questions
What does the Papermorph skill do with a PDF?
It finds the PDF, tells you what the book is, suggests a chapter to try and an animation tier, and offers options at every step so you can accept the recommendation. Your choices are saved in style.json as the style every later chapter is made against, and the pipeline runs from PDF through that conversation to storyboards, narration, animation with quizzes, and a web book.
How do I install and run Papermorph?
Run `npx skills add DozenTwelve/Papermorph --skill papermorph --agent claude-code` in your project directory, then in Claude Code with Opus 5.5 type `/papermorph`. It looks for the PDF in your project and asks the rest, and before you review a chapter, scripts/lint.py catches broken names, missing audio and stale narration in under a second.
Which AI models does Papermorph work with?
It is not tied to one model. Opus 5.5 produced most of the books including the physics chapters, GPT-6.1-Sol runs the skill well with Elementary Mathematics chapters 4 to 20, and Sonnet 5.5 works with some rough edges in chapters 21 to 22. There is no image model support, multilingual support or background music yet.
Can a Papermorph chapter be exported to video?
Yes, any chapter can be rendered to MP4 at 1080p with an .srt file for YouTube or Bilibili, using `uv run --with playwright .claude/skills/papermorph/scripts/export.py ch12` with the URL to render from and the link to point the video at. Frames come from the lesson clock so the video matches the page, and quizzes stay in the interactive version.
Can I contribute a book to Papermorph?
Not through a pull request. Fixes to the Skill and the player are welcome, but the project asks that pull requests adding a book, its PDF, or generated lessons, audio or videos are not opened, because those raise copyright issues. The MIT licence covers the code, while the content and the generated media are not contributions.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/dozentwelve-papermorph)Was this useful?