Communitygithub.com

DozenTwelve/papermorph

Crie ou edite livros web animados, narrados e interativos a partir de PDFs de referência, livros ilustrados animados (filmes de fantoches de papel) a partir de uma história, piada ou conto de fadas, documentários narrados sobre um livro ou uma ideia, construídos a partir de imagens de domínio público, curtas verticais para feed de celular que fazem um ponto em menos de três minutos, histórias de rolagem cuja imagem muda conforme o leitor rola, e mapas para explorar, onde um período da história se desenrola ano a ano e o leitor clica nas pessoas e lugares nele.

O que é papermorph?

O Papermorph é uma skill projetada para agentes de IA (como Claude Code, Cursor ou Codex) que permite criar e editar livros web animados e interativos em três níveis distintos: lições a partir de PDFs didáticos, livros ilustrados a partir de histórias ou contos, e filmes narrados (documentários, curtas verticais para feeds, e histórias de rolagem). Cada produção é construída sobre um motor SVG (palco 1600×900 ou 900×1600 para curtas) e um player, onde ‘batidas’ (beats) combinam clipes de narração com ações temporizadas. A skill valoriza produções ‘vivas, compostas, verdadeiras e suaves’, e começa com uma conversa que gera um arquivo `style.json` definindo o estilo visual, vozes e modelo a ser usado. O Papermorph suporta múltiplos agentes trabalhando em paralelo para criar capítulos, e oferece uma ampla gama de scripts para síntese de fala, edição de áudio, verificação de desempenho e exportação de vídeo.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

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 trazNívelComece comEntão, conforme o passo necessitar
Um PDF didático (também um livro de curso)Liçõeslessons.mdintake.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 ilustradosstories.mdpuppets.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 narradoFilmes: documentáriofilms.mddocumentary.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 reeditarFilmes: curtasfilms.mdshorts.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 rolagemfilms.mdscroll.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 explorarexplore.md

Cada nível compartilha o núcleo:

ArquivoO que contém
core/style.mdcomo perguntar ao usuário, as etapas dos modelos, as etapas pagas (chaves, preços, livro-razão, saldo), style.json
core/publish.mdnew_book.py, idioma, minutos, pré-visualização e entrega, exportação de vídeo
core/sound.mdo arquivo de narração, vozes, níveis, efeitos, música, legendas
core/review.mdver seu próprio trabalho em movimento, quadros, suavidade, rodadas do diretor
core/team.mdfazer capítulos com subagentes, o coordenador, trabalhadores em paralelo
core/engine.mda 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ívelLivros (slug)
Liçõesnível 1: Elementary Algebra (elementary-algebra), Math Notebook (math-notebook); nível 2: Science (science); um quadro claro com tinta escura: physics-notebook
Livros ilustradosThe 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áriosMadness and Civilization (madness, baseado em Foucault, dez minutos), The Pandemic (pandemic), Shooting an Elephant (shooting-an-elephant, um no qual o leitor atua)
Curtasos 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).

ParaScripts
Todo livronew_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çõesoutline.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 ilustradosmouths.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 explorartopo.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
Filmescommons.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.json atualizado e conciso; status do capítulo, erratas e feedback histórico permanecem em chapters.md e chapters/chNN.md.

Habilidades Relacionadas