novel-art
Gere um livro de arte conceitual para curtas-metragens de IA: cenários + objetos narrativos. Premissa fundamental: isto é geração por IA, não filmagem real — sem locações, sem cenografia, sem compras. Ambientes e objetos serão gerados dezenas de vezes e precisam ter a mesma aparência, portanto todas as entregas giram em torno de consistência:
| Entrega | O que resolve |
|---|---|
| Âncoras de consistência (3–5 por cena) | O espectador as usa para reconhecer o cenário; o controle de qualidade as usa para verificar se a geração não "derrapou" |
| Variações de horário de iluminação | A IA troca de horário regerando, não reacendendo; cada estado vira um prompt completo |
| Prompts de cena vazia | Ambiente e personagens são dois ativos separados; se a imagem de referência incluir pessoas, a consistência é destruída |
| Mecanismo de variante (variantOf) | Gerar um novo cenário é barato, mas reutilizar ativos do cenário mãe como variante é mais consistente |
| Variações de estado do objeto | Uma mala fechada e aberta são duas imagens de referência — objetos têm arco de estado, cenários não |
| Referência de escala do objeto | A IA frequentemente desenha objetos de mão do tamanho de móveis; o prompt precisa incluir uma frase de escala |
| Objeto em fundo branco sem mãos | A imagem do objeto será colada em vários planos; precisa ser recortável; a mão segurando o objeto é a contaminação mais comum |
{baseDir} = diretório deste arquivo. Script {baseDir}/scripts/novel-art.mjs, zero dependências, execute com node.
Limites (o que não fazemos) : não faz storyboard, não escreve roteiro, não gerencia personagens (tarefa de novel-characters), não organiza o esboço (novel-outline). Apenas objetos narrativos (com close-up, que aparecem em vários episódios, que carregam a trama; normalmente 3–8 itens) — objetos de cena pertencentes ao cenário vão para as âncoras do cenário; objetos de mão descartáveis são resolvidos com prompts ao nível do plano, não como ativos separados.
Step 0 — Definir entrada
Três tipos de entrada, prioridade da mais alta para a mais baixa:
- outline.json (saída de novel-outline) — ideal: lista de cenários, episódios de aparição, pontos de virada, planos de reutilização já estão prontos
- Texto original do romance — extraia a lista de cenários (priorize os cenários principais, consulte a ideia de limite de cenários principais do novel-outline: não exagere)
- Lista de cenários escrita pelo usuário
Se houver cast.json (saída de novel-characters), inclua-o — será usado para verificar se os prompts não contêm nomes de personagens.
Step 1 — seed do esqueleto (apenas se houver outline.json)
node {baseDir}/scripts/novel-art.mjs seed <outline.json> > <workdir>/art.json
Transferência determinística: ID do cenário/nome/marca de cenário principal/episódios de aparição/pontos de virada; cenários com plano de reutilização recebem seedNote sugerindo criá-los como variante. Esses fatos não devem ser repensados pelo modelo.
Se não houver outline.json, crie a lista manualmente seguindo references/schema.md.
Step 2 — Preencher configurações por cenário + extrair objetos narrativos
Cada cenário é uma tarefa; execute em paralelo se possível. Cada tarefa recebe:
{baseDir}/references/scene-pass.mde{baseDir}/references/schema.md(leia-os e siga-os)- O esqueleto do cenário + todas as informações sobre aquele espaço do texto original/esboço
- Os nomes dos outros cenários do mesmo lote (a atmosfera espacial deve ser distinta; não faça todos parecerem do mesmo tipo de degradado)
Os requisitos principais estão no scene-pass.md; os três mais pesados: âncoras devem ser desenháveis, reconhecíveis e verificáveis ("toldo remendado" é uma âncora; "atmosfera velha" é um adjetivo); estados de iluminação deduzidos a partir dos episódios, sem listar estados que nunca serão usados; se puder ser variante, não crie um novo cenário.
Objetos narrativos priorizam o esboço: outline.json a partir da versão 1.1.0 inclui props; seed transfere a tabela de objetos junto com "o que carregam", "quais pontos de virada sustentam", "em quais episódios aparecem"; nesta etapa, preencha apenas os campos de design (escala, âncoras, variações de estado, prompt de fundo branco). Se o esboço não tiver props, extraia do texto original — nesse caso, a etapa é responsabilidade do modelo: inclua apenas objetos com close-up, que aparecem em vários episódios e carregam a trama, normalmente 3–8 itens, da mesma ordem de grandeza que o número de protagonistas. Cada um deve ser preenchido seguindo references/prop-pass.md: função dramática, âncoras, variações de estado, escala, prompt de fundo branco sem mãos. Uma mala que "segue o personagem" deve estar aqui — colocá-la nas âncoras do cenário ou na ficha do personagem estaria errado.
Step 3 — Validação ⛔ Não pule
node {baseDir}/scripts/novel-art.mjs validate <art.json> --cast <cast.json>
As 10 portas de qualidade são todas código. Cenários compartilham 6 portas: âncoras 3–5, estados de iluminação ≥1, sem pessoas, prompts em inglês, sem nomes de personagens (apenas se --cast for fornecido), referências de variante completas. Objetos têm 4 portas exclusivas: estados ≥1, frase de escala incluída no prompt, palavra negativa proibindo mãos, fundo de definição puramente branco.
Corrija cada violação uma a uma, reexecute até passar.
Step 4 — Saída e relatório
cd <diretoriode saída>
node {baseDir}/scripts/novel-art.mjs render <nome-da-série>-art.json --md > <nome-da-série>-art.md
node {baseDir}/scripts/novel-art.mjs render <nome-da-série>-art.json --html > art-report.html
A interface do relatório é em chinês por padrão; se o usuário quiser interface em inglês, adicione --lang en (ou escreva "lang": "en" no topo do art.json; --lang tem prioridade). render procura imagens por padrão em images/<slug>-sheet.png no mesmo diretório do art.json (para cenários e objetos); se as imagens estiverem em outro lugar, use --images <diretório> para apontar — este skill não gera esses arquivos; depois que a ferramenta downstream gerar as imagens, execute render novamente para incorporá-las ao relatório. O relatório inclui: KPIs, lista de cenários, fichas de cenário, lista de objetos, fichas de objeto (lista de verificação de âncoras / variações de estado / pacotes de prompt com botões de cópia), painel de portas de qualidade, exportação JSON (o download é o art.json original).
O resumo diz em uma frase: quantos cenários (principais/variantes), quantos objetos, total de âncoras, caminho do relatório; portas não aprovadas são mencionadas explicitamente.
Não diga "imagens geradas" — esta etapa não existe mais; a entrega são prompts.
Estrutura final:
<diretoriode saída>/
├── <nome-da-série>-art.json
├── <nome-da-série>-art.md
├── art-report.html ← abra com duplo clique
└── images/ ← este skill não cria este diretório
└── <slug>-sheet.png ← a ferramenta downstream coloca aqui; render coletará
Integração dos três skills
novel-outline → outline.json (o quê: estrutura e episódios)
novel-characters → cast.json (quem: ativos de personagem)
novel-art → art.json (onde + o que seguram: ativos de arte)
seed consome as partes de cenário e objeto do outline.json (se o esboço não tiver props, os objetos ficam vazios e o modelo os extrai do texto original); --cast consome cast.json. Os três JSONs têm relatórios com botão de exportação; depois de editados, podem ser realimentados em seus respectivos render/validate.
Limites
- A interface do relatório é bilingue (chinês/inglês) (
--lang; padrão chinês, ou segue o campolangdo art.json); prompts de geração são sempre em inglês - Este skill não gera imagens.
image.sheeté uma instrução de layout para a ferramenta downstream; as especificações de layout estão emreferences/sheet.md - Número de cenários não tem limite máximo — o limite é definido na porta de cenários principais do novel-outline; aqui a responsabilidade é a qualidade de cada ativo
- Apenas objetos narrativos, 3–8 itens é o ideal — cada item extra exige mais manutenção de consistência entre episódios
Autoteste
node {baseDir}/scripts/selftest.mjs
151 asserções, sem chamar modelo, sem gastar créditos. Cada uma das 10 portas de qualidade tem casos de teste de violação. Execute após modificar o script.
Exemplo incluído
{baseDir}/examples/渡口-art.json: configuração completa de três cenários + dois objetos narrativos (mala velha, tinteiro antigo do tribunal) de "渡口" (A Travessia), todas as portas de qualidade aprovadas (incluindo verificação de nomes de personagens contra o cast.json de exemplo de novel-characters). Serve como referência de qualidade e como fixture de autoteste.