Communitygithub.com

Papermorph

Créez ou modifiez des livres web animés, narrés et interactifs à partir de PDF de référence, des livres d'images animés (films de marionnettes en papier) à partir d'une histoire, d'une blague ou d'un conte de fées, des documentaires narrés sur un livre ou une idée, construits à partir d'images du domaine public, des courts métrages verticaux pour un fil d'actualité mobile qui font un point en moins de trois minutes, des histoires à défilement dont l'image change au fur et à mesure que le lecteur fait défiler, et des cartes à explorer, où un pan d'histoire se déroule année après année et le lecteur clique sur les personnages et les lieux qui s'y trouvent.

Qu'est-ce que Papermorph ?

Papermorph est un outil de création de contenu web interactif spécialisé dans la production de livres animés, narrés et interactifs. Il prend en charge trois niveaux principaux de contenu : les leçons (à partir de PDF de manuels), les livres d'images (à partir d'histoires) et les films (documentaires ou courts métrages). Le système utilise une scène SVG (de 1600×900 à 900×1600) et un moteur de lecture. La qualité repose sur des principes de vivacité, composition, vérité et fluidité. L'utilisateur commence par une conversation avec l'outil pour définir un fichier `style.json` qui capture ses préférences (style visuel, voix, modèle). Ensuite, les chapitres sont générés et peuvent être révisés en boucle. Papermorph peut travailler avec des sous-agents pour une production en parallèle et nécessite des outils comme `uv`, `ffmpeg`, ainsi que des clés API optionnelles pour des fonctionnalités avancées comme la synthèse vocale ou la peinture par IA.

Compatible avec~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/DozenTwelve/Papermorph/tree/HEAD/.claude/skills/papermorph

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Papermorph ?

Papermorph crée trois niveaux de livres sur un seul moteur :

  • Leçons, à partir d'un PDF de manuel : chaque chapitre est un court film de leçon animé où l'image porte l'explication, la narration la dit, et des vérifications rapides et des exercices se déroulent dans l'image.
  • Livres d'images, à partir d'une histoire, d'une blague ou d'un conte de fées : courts films de marionnettes en papier devant des décors, dessinés en code ou peints par un modèle d'image, avec des voix, des effets et de la musique.
  • Films, à partir d'un livre, d'une idée ou de l'argument de l'utilisateur : documentaires narrés d'images du domaine public trouvées, de mots et de cartes animés en synchronisation avec la voix, et courts métrages verticaux pour un fil d'actualité mobile qui font un point en moins de trois minutes.

Tous sont une scène SVG (1600×900, ou 900×1600 pour un court métrage) plus un lecteur ; les temps forts associent des segments de narration à des actions minutées. Être bon signifie vivant (les choses agissent et changent avec poids et timing), composé (chaque moment se lit comme une seule image, le texte à côté de ce qu'il nomme), vrai (le mouvement, les légendes et les nombres sont en accord à chaque instant) et fluide (il joue sans bégaiement, Firefox inclus).

Ce que l'image doit être dépend du livre et de l'utilisateur, donc le travail commence par une conversation qui se termine dans style.json : les mots de l'utilisateur, l'apparence qu'ils ont choisie, les voix, quel modèle fait quelle étape, et plus tard les chapitres approuvés. Chaque chapitre est fait en fonction de cela ; la façon dont chaque temps fort est disposé et chorégraphié vous appartient de juger par rapport à cela et aux chapitres approuvés. Les demandes de l'utilisateur remplacent les valeurs par défaut. Recréez les explications, les exemples et les dessins ; gardez les PDF sources, les images de page et le texte extrait en dehors du dossier de sortie statique et hors du contrôle de version (.gitignore : *.pdf, books/*/pages/). Un chapitre que la Compétence a fait est une première coupe : les cycles de révision et le visionnage par l'utilisateur précèdent sa publication.

Quel niveau

Lisez le premier fichier du niveau, puis seulement ce dont l'étape actuelle a besoin. Tous les fichiers ci-dessous sont liés à partir d'ici ; aucun n'a besoin d'un autre pour être trouvé.

Ce que l'utilisateur apporteNiveauCommencez parEnsuite, selon les besoins de l'étape
Un PDF de manuel (aussi un livre de cours)Leçonslessons.mdintake.md · authoring.md · diagrams.md (niveau 1) · scenes.md (niveau 2) · assets.md · maths.md (math.js, parties maths, LaTeX) · questions.md · figures.md (figures que le lecteur déplace) · checks.md · cover.md · courses.md (citations, banque d'items, SCORM : seulement quand le livre les appelle)
Une histoire, une blague, un conte de fées ou le PDF d'un livre d'histoires (ses propres images scannées : stories.md)Livres d'imagesstories.mdpuppets.md · painting.md (un aspect peint) · listen-and-find.md (un jeu de cherche-et-trouve pour les jeunes enfants)
Un livre, une idée ou un pan d'histoire à expliquer comme un film narréFilms : documentairefilms.mddocumentary.md
Un point à faire valoir en moins de trois minutes, vertical, pour un fil d'actualité mobile (YouTube Shorts, TikTok, Reels), ou un long film à remonterFilms : courts métragesfilms.mdshorts.md
Le matériel d'un film, ou une idée qui est surtout des cartes et des nombres, à lire au rythme du lecteur sur une page dont l'image change en défilant (une histoire à défilement)Films : page à défilementfilms.mdscroll.md
Un pan d'histoire à explorer sur une carte, année par année : des frontières qui changent, des personnes qui se déplacent (une page, son propre lecteur, pas le moteur)Pages à explorerexplore.md

Tous les niveaux partagent le noyau :

FichierCe qu'il contient
core/style.mdcomment interroger l'utilisateur, les étapes des modèles, les étapes payantes (clés, prix, registre, solde), style.json
core/publish.mdnew_book.py, langue, minutes, aperçu et livraison, export vidéo
core/sound.mdle fichier de narration, les voix, les niveaux, les effets, la musique, les sous-titres
core/review.mdvoir son propre travail en mouvement, les images, la fluidité, les cycles du réalisateur
core/team.mdfabriquer des chapitres avec des sous-agents, le coordinateur, les travailleurs en parallèle
core/engine.mdle lecteur et l'API de dessin, le timing, la caméra, la performance, les pièges

Commencez par la prise en charge du niveau chaque fois que books/<book>/style.json n'existe pas encore ; réutilisez les réponses et les approbations déjà données.

Livres de référence

Les livres de référence sont la référence : des niveaux à atteindre, pas des formats à copier. Chacun est le dossier site/<slug>/ du dépôt Papermorph (https://github.com/DozenTwelve/Papermorph), servi à https://papermorph.diamonddoge.org/<slug>/, donc sa source peut être lue dans une copie locale ou récupérée depuis l'une ou l'autre adresse lorsque la Compétence est installée seule. Les fichiers de niveau nomment le fichier dans un livre qui vaut la peine d'être ouvert pour une étape donnée.

NiveauLivres (slug)
Leçonsniveau 1 : Algebra élémentaire (elementary-algebra), Cahier de maths (math-notebook) ; niveau 2 : Science (science) ; un tableau lumineux avec de l'encre sombre : physics-notebook
Livres d'imagesLe petit cheval traverse la rivière (little-horse) et Le Petit Chaperon rouge (little-red-riding-hood) : tout en code, un casting doublé par ElevenLabs, un arrêt cherche-et-trouve, le plus récent et la référence ; Recueil de blagues (joke-collection) : décors peints, marionnettes en code, une série d'épisodes ; Des millions de chats (millions-of-cats, Wanda Gág, 1928) : les propres images d'un livre scanné relevées en décors et marionnettes (pas sur l'étagère)
DocumentairesFolie et déraison (madness, d'après Foucault, dix minutes), La pandémie (pandemic), Tirer sur un éléphant (shooting-an-elephant, un dans lequel le lecteur agit)
Courts métragesles courts métrages de Folie et déraison (madness-shorts ; l'épisode 1, Le navire, est l'exemple travaillé), les courts métrages de La pandémie (pandemic-shorts)

La tulipomanie (tulip-mania) est un film de test fabriqué par la seule Compétence, sans aucune aide au-delà de ces fichiers ; les fichiers citent ce qu'il a rencontré.

Structure du projet

books/<book>/                  privé : source, style.json, storyboards, art, review/ (les fichiers de niveau listent les leurs)
content/<book>/chNN/           narration.<lang>.json et le cache vocal
tools/<book>/                  tests, scripts audio, preuves
site/<book>/                   le livre statique (seul celui-ci est livré)
  index.html                   couverture et sommaire, ou page de série
  lib/                         le moteur (synchronisé par engine.py), lib/book.css (les réglages de ce livre), le kit du niveau, les propres pièces du livre
  img/                         les images du livre
  chNN/index.html, audio/<lang>/   un chapitre ou épisode, ses MP3 de temps forts et timings.js (films et livres d'images : audio/sfx/, audio/bgm/)

SKILL signifie le dossier absolu de cette compétence ; <book> est le slug du livre, <lang> son code de langue principale. new_book.py démarre un livre de n'importe quel niveau (core/publish.md).

Nécessite : uv, ffmpeg/ffprobe, accès réseau à Edge TTS (ou Kokoro, local), github.com pour engine.py lorsque le dossier engine/ du dépôt n'est pas à portée, une clé OpenRouter uniquement pour les étapes payantes choisies par l'utilisateur (paint.py, eleven.py, video.py ; paint_openai.py prend une clé OpenAI), et les navigateurs Playwright (uv run --with playwright playwright install chromium firefox ; si le Chromium de Playwright ne s'exécute pas, définissez CHROME sur un Chrome, Chromium, Brave ou Edge installé). Aperçu : python3 SKILL/scripts/serve.py 8765 site (pas de mise en cache du navigateur).

Scripts

Tous dans SKILL/scripts/ ; chacun affiche son utilisation avec --help lorsqu'il est exécuté avec le uv run --with … que ses premières lignes de docstring nomment (sans ses paquets même --help s'arrête sur l'import).

PourScripts
Chaque livrenew_book.py démarrer un dossier de livre · serve.py aperçu sans mise en cache · engine.py synchroniser le moteur dans les livres · tts.py narration et temps des mots · eleven.py la même chose depuis ElevenLabs (payant) · level.py égaliser le volume · lint.py vérifications statiques · check.py erreurs de page, avertissements console et longueurs des temps forts dans Chromium et Firefox · shot.py captures d'écran des temps forts · strip.py feuilles de storyboard et bandes de mouvement · still.py portions où rien ne bouge · playlog.py sons et sous-titres par rapport à l'image · perf.py temps d'image Firefox · export.py MP4 et .srt · sfx.py effets synthétisés
Leçonsoutline.py et split_pages.py carte des pages et texte du chapitre · check_blank.py ouvertures vides · overlap.py flèches à travers le texte · sprites.py étapes de traitement d'image · refs.py citations vérifiées · items.py banque de questions · scorm.py paquet LMS
Livres d'imagesmouths.py formes de bouche · join.py un clip par scène · bake_sets.py calques de décors · bake_puppets.py bitmaps de marionnettes · paint.py / paint_openai.py images de modèle d'image · painted.py les placer dans le livre · lift.py figures, décors et lettrage découpés des propres images d'un livre scanné · cutout.py images de modèle d'image sur une couleur clé découpées en pièces de marionnettes et accessoires
Pages à explorertopo.py le TopoJSON de la carte depuis Natural Earth · explore.py vérifications, captures, timing Firefox et le fichier de narration pour une carte explorable
Filmscommons.py images et enregistrements du domaine public avec leurs licences · prep.py traitements d'impression, de ligne et de pleine page · trace.py dessins qui se dessinent eux-mêmes · video.py un clip à partir d'une image fixe · frames.py un clip sous forme d'images traitées · geo.py les données du kit de carte depuis Natural Earth · music.py un morceau coupé pour le film, le lit dans les silences de la voix, et la musique, les lits et les effets par rapport à chaque ligne · safe.py mots en dehors de la zone de sécurité d'un film vertical

silence.py, ledger.py (le registre des coûts unique : date, chapitre, fichier, modèle, quoi, coût) et browsers.py sont des aides que les autres importent.

Contexte

  • Discutez avec l'utilisateur depuis la conversation principale : prise en charge, et chaque feuille et choix du pilote. Lorsque des sous-agents sont disponibles, les chapitres sont fabriqués en équipe, chaque étape sur le modèle choisi par l'utilisateur, avec la conversation principale comme coordinateur du pilote (core/team.md dit ce que cela permet) ; sans eux, exécutez les mêmes étapes dans l'agent actuel avec un état basé sur les fichiers.
  • Utilisez l'API du moteur et inspectez des fonctions individuelles si nécessaire ; copiez les fichiers du kit plutôt que de lire leur source complète comme instructions.
  • Gardez style.json à jour et court ; le statut des chapitres, les errata et les retours historiques restent dans chapters.md et chapters/chNN.md.

Skills associés