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 apporte | Niveau | Commencez par | Ensuite, selon les besoins de l'étape |
|---|---|---|---|
| Un PDF de manuel (aussi un livre de cours) | Leçons | lessons.md | intake.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'images | stories.md | puppets.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 : documentaire | films.md | documentary.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 à remonter | Films : courts métrages | films.md | shorts.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éfilement | films.md | scroll.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 à explorer | explore.md |
Tous les niveaux partagent le noyau :
| Fichier | Ce qu'il contient |
|---|---|
| core/style.md | comment interroger l'utilisateur, les étapes des modèles, les étapes payantes (clés, prix, registre, solde), style.json |
| core/publish.md | new_book.py, langue, minutes, aperçu et livraison, export vidéo |
| core/sound.md | le fichier de narration, les voix, les niveaux, les effets, la musique, les sous-titres |
| core/review.md | voir son propre travail en mouvement, les images, la fluidité, les cycles du réalisateur |
| core/team.md | fabriquer des chapitres avec des sous-agents, le coordinateur, les travailleurs en parallèle |
| core/engine.md | le 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.
| Niveau | Livres (slug) |
|---|---|
| Leçons | niveau 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'images | Le 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) |
| Documentaires | Folie 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étrages | les 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).
| Pour | Scripts |
|---|---|
| Chaque livre | new_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çons | outline.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'images | mouths.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 à explorer | topo.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 |
| Films | commons.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 danschapters.mdetchapters/chNN.md.