O que papermorph faz?
O Papermorph cria três níveis de livros em um único motor:
- Lições, a partir de um PDF didático: cada capítulo é um curto filme de lição animado onde a imagem carrega a explicação, a narração a diz, e verificações rápidas e prática acontecem dentro da imagem.
- Livros ilustrados, a partir de uma história, piada ou conto de fadas: curtas-metragens de fantoches de papel em frente a cenários, desenhados em código ou pintados por um modelo de imagem, com vozes, efeitos e música.
- Filmes, a partir de um livro, uma ideia ou o argumento do usuário: documentários narrados com imagens de domínio público encontradas, palavras e mapas movidos em sincronia com a voz, e curtas verticais para feed de celular que fazem um ponto em menos de três minutos.
Todos são um palco SVG (1600×900, ou 900×1600 para um curta) mais um player; batidas combinam clipes de narração com ações temporizadas. Bom significa vivo (coisas agem e mudam com peso e ritmo), composto (cada momento se lê como uma imagem, texto ao lado do que nomeia), verdadeiro (movimento, rótulos e números concordam a cada momento) e suave (toca sem gaguejar, inclusive no Firefox).
O que a imagem deve ser depende do livro e do usuário, então o trabalho começa com uma conversa que termina em style.json: as palavras do usuário, a aparência escolhida, as vozes, qual modelo faz qual etapa, e depois os capítulos aprovados. Cada capítulo é feito contra ele; como cada batida é planejada e coreografada é seu julgamento contra ele e os capítulos aprovados. Solicitações do usuário substituem padrões. Recrie explicações, exemplos e desenhos; mantenha PDFs fonte, imagens de página e texto extraído fora da pasta de saída estática e fora do controle de versão (.gitignore: *.pdf, books/*/pages/). Um capítulo que a Skill fez é um primeiro corte: rodadas de revisão e a visualização do usuário vêm antes da publicação.
Qual nível
Leia o primeiro arquivo do nível, então apenas o que o passo atual precisa. Cada arquivo abaixo está linkado a partir daqui; nenhum precisa de outro para ser encontrado.
| O usuário traz | Nível | Comece com | Então, conforme o passo necessitar |
|---|---|---|---|
| Um PDF didático (também um livro de curso) | Lições | lessons.md | intake.md · authoring.md · diagrams.md (nível 1) · scenes.md (nível 2) · assets.md · maths.md (math.js, partes de matemática, LaTeX) · questions.md · figures.md (figuras que o leitor move) · checks.md · cover.md · courses.md (citações, banco de questões, SCORM: apenas quando o livro as requisitar) |
| Uma história, piada, conto de fadas ou o PDF de um livro de histórias (suas próprias imagens escaneadas: stories.md) | Livros ilustrados | stories.md | puppets.md · painting.md (um visual pintado) · listen-and-find.md (um jogo de encontrar para crianças pequenas) |
| Um livro, uma ideia ou um período da história para explicar como um filme narrado | Filmes: documentário | films.md | documentary.md |
| Um ponto a ser feito em menos de três minutos, na vertical, para feed de celular (YouTube Shorts, TikTok, Reels), ou um longa-metragem para reeditar | Filmes: curtas | films.md | shorts.md |
| O material de um filme, ou uma ideia que é principalmente mapas e números, para ler no ritmo do leitor em uma página cuja imagem muda conforme rola (uma história de rolagem) | Filmes: página de rolagem | films.md | scroll.md |
| Um período da história para explorar em um mapa, ano a ano: fronteiras que mudam, pessoas que se movem (uma página, seu próprio player, não o motor) | Páginas para explorar | explore.md |
Cada nível compartilha o núcleo:
| Arquivo | O que contém |
|---|---|
| core/style.md | como perguntar ao usuário, as etapas dos modelos, as etapas pagas (chaves, preços, livro-razão, saldo), style.json |
| core/publish.md | new_book.py, idioma, minutos, pré-visualização e entrega, exportação de vídeo |
| core/sound.md | o arquivo de narração, vozes, níveis, efeitos, música, legendas |
| core/review.md | ver seu próprio trabalho em movimento, quadros, suavidade, rodadas do diretor |
| core/team.md | fazer capítulos com subagentes, o coordenador, trabalhadores em paralelo |
| core/engine.md | a API do player e desenho, temporização, câmera, desempenho, armadilhas |
Comece com a captação do nível sempre que books/<book>/style.json ainda não existir; reutilize respostas e aprovações já dadas.
Livros de referência
Os livros de referência são a referência: níveis a alcançar, não formatos a copiar. Cada um é a pasta site/<slug>/ do repositório Papermorph (https://github.com/DozenTwelve/Papermorph), servido em https://papermorph.diamonddoge.org/<slug>/, então seu código-fonte pode ser lido em uma cópia local ou obtido de qualquer um dos endereços quando a Skill estiver instalada em seu próprio ambiente. Os arquivos de nível nomeiam o arquivo em um livro que vale a pena abrir para uma determinada etapa.
| Nível | Livros (slug) |
|---|---|
| Lições | nível 1: Elementary Algebra (elementary-algebra), Math Notebook (math-notebook); nível 2: Science (science); um quadro claro com tinta escura: physics-notebook |
| Livros ilustrados | The Little Horse Crosses the River (little-horse) e Little Red Riding Hood (little-red-riding-hood): tudo em código, um elenco dublado por ElevenLabs, uma parada de ouvir e encontrar, o mais novo e a referência; Joke Collection (joke-collection): cenários pintados, fantoches em código, uma série de episódios; Millions of Cats (millions-of-cats, Wanda Gág, 1928): as próprias imagens de um livro escaneado elevadas a cenários e fantoches (não na estante) |
| Documentários | Madness and Civilization (madness, baseado em Foucault, dez minutos), The Pandemic (pandemic), Shooting an Elephant (shooting-an-elephant, um no qual o leitor atua) |
| Curtas | os curtas de Madness and Civilization (madness-shorts; episódio 1, The Ship, é o exemplo trabalhado), os curtas de The Pandemic (pandemic-shorts) |
Tulip Mania (tulip-mania) é um filme de teste feito apenas pela Skill, sem ajuda além destes arquivos; os arquivos citam o que ele enfrentou.
Estrutura do projeto
books/<book>/ privado: fonte, style.json, storyboards, arte, revisão/ (arquivos de nível listam os seus próprios)
content/<book>/chNN/ narração.<lang>.json e o cache de voz
tools/<book>/ testes, scripts de áudio, evidência
site/<book>/ o livro estático (apenas este é entregue)
index.html capa e sumário, ou uma página de série
lib/ o motor (sincronizado por engine.py), lib/book.css (configurações deste livro), o kit do nível, as peças próprias do livro
img/ as imagens do livro
chNN/index.html, audio/<lang>/ um capítulo ou episódio, seus MP3s de batida e timings.js (livros ilustrados e filmes: audio/sfx/, audio/bgm/)
SKILL significa a pasta absoluta desta skill; <book> é o slug do livro, <lang> seu código de idioma principal. new_book.py inicia um livro de qualquer nível (core/publish.md).
Precisa de: uv, ffmpeg/ffprobe, acesso de rede ao Edge TTS (ou Kokoro, local), github.com para engine.py quando a pasta engine/ do repositório não estiver disponível, uma chave OpenRouter apenas para as etapas pagas que o usuário escolher (paint.py, eleven.py, video.py; paint_openai.py aceita uma chave OpenAI), e navegadores Playwright (uv run --with playwright playwright install chromium firefox; onde o Chromium do Playwright não funcionar, defina CHROME para um Chrome, Chromium, Brave ou Edge instalado). Visualização: python3 SKILL/scripts/serve.py 8765 site (sem cache de navegador).
Scripts
Todos em SKILL/scripts/; cada um imprime seu uso com --help quando executado com uv run --with … que as primeiras linhas de sua docstring nomeiam (sem seus pacotes, mesmo --help para na importação).
| Para | Scripts |
|---|---|
| Todo livro | new_book.py iniciar uma pasta de livro · serve.py visualizar sem cache · engine.py sincronizar o motor nos livros · tts.py narração e tempos das palavras · eleven.py o mesmo a partir do ElevenLabs (pago) · level.py nivelar volume · lint.py verificações estáticas · check.py erros de página, avisos de console e durações de batida no Chromium e Firefox · shot.py capturas de tela de batida · strip.py folhas de storyboard e tiras de movimento · still.py trechos onde nada se move · playlog.py sons e legendas contra a imagem · perf.py tempos de quadro no Firefox · export.py MP4 e .srt · sfx.py efeitos sintetizados |
| Lições | outline.py e split_pages.py mapa de páginas e texto do capítulo · check_blank.py aberturas vazias · overlap.py setas através do texto · sprites.py etapas de processamento de imagem · refs.py citações verificadas · items.py banco de questões · scorm.py pacote LMS |
| Livros ilustrados | mouths.py formas de boca · join.py um clipe por cena · bake_sets.py camadas de cenário · bake_puppets.py bitmaps de fantoches · paint.py / paint_openai.py imagens de modelo de imagem · painted.py colocá-las no livro · lift.py figuras, cenários e letras recortados das próprias imagens de um livro escaneado · cutout.py imagens de modelo de imagem em uma cor-chave recortadas em peças de fantoches e adereços |
| Páginas para explorar | topo.py o TopoJSON do mapa a partir do Natural Earth · explore.py verificações, capturas, temporização Firefox e arquivo de narração para um mapa explorável |
| Filmes | commons.py imagens e gravações de domínio público com suas licenças · prep.py tratamentos impressos, lineares e sangrados · trace.py desenhos que se desenham sozinhos · video.py um clipe a partir de uma imagem parada · frames.py um clipe como quadros tratados · geo.py dados do kit de mapa a partir do Natural Earth · music.py uma faixa cortada para o filme, o fundo nas lacunas da voz, e a música, fundos e efeitos contra cada linha · safe.py palavras fora da área segura de um filme vertical |
silence.py, ledger.py (o único livro-razão de custo: data, capítulo, arquivo, modelo, o quê, custo) e browsers.py são auxiliares que os outros importam.
Contexto
- Converse com o usuário a partir da conversa principal: captação, e cada folha e escolha do piloto. Quando subagentes estiverem disponíveis, os capítulos são feitos como uma equipe, cada etapa no modelo que o usuário escolheu, com a conversa principal como coordenador do piloto (core/team.md diz o que isso permite); sem eles, execute as mesmas etapas no agente atual com estado baseado em arquivo.
- Use a API do motor e inspecione funções individuais quando necessário; copie arquivos de kit em vez de ler seu código-fonte completo como instruções.
- Mantenha
style.jsonatualizado e conciso; status do capítulo, erratas e feedback histórico permanecem emchapters.mdechapters/chNN.md.