novel-art
Genera un conjunto de arte conceptual para series cortas de IA: escenas + accesorios narrativos. Premisa fundamental: esto es generado por IA, no filmado en la realidad —no hay búsqueda de locaciones, construcción de sets ni compras de utilería. El entorno y los accesorios son activos que deben generarse docenas de veces y verse iguales, por lo que la entrega se centra por completo en la consistencia:
| Entrega | ¿Qué resuelve? |
|---|---|
| Anclas de consistencia (3–5 por escena) | El espectador reconoce la escena gracias a ellas; el control de calidad verifica que los planos generados no varíen. |
| Variantes de iluminación | Cambiar el período de luz en IA es regenerar, no re-iluminar; cada estado se convierte en una indicación completa. |
| Indicaciones de paisaje vacío | El entorno y los personajes son activos separados; si la imagen de referencia incluye personas, la consistencia se pierde. |
| Mecanismo de variante (variantOf) | Generar una nueva escena es barato, pero reutilizar activos de la escena madre es más consistente. |
| Variantes de estado del accesorio | Una maleta cerrada y abierta son dos imágenes de referencia distintas: los accesorios tienen arcos de estado, las escenas no. |
| Referencia de escala del accesorio | La IA suele dibujar accesorios de mano del tamaño de muebles; las indicaciones deben incluir frases de escala. |
| Accesorio sobre fondo blanco sin manos | La imagen del accesorio debe poder recortarse para insertarse en varios planos; las manos que lo sostienen son la contaminación más común. |
{baseDir} = directorio donde se encuentra este archivo. El script {baseDir}/scripts/novel-art.mjs no tiene dependencias y se ejecuta directamente con node.
Límites (lo que no hace): No storyboards, no guión, no administra personajes (tarea de novel-characters), no organiza el esquema (tarea de novel-outline). Solo recoge accesorios narrativos (con primer plano, que aparecen en múltiples episodios y llevan la trama; normalmente 3–8 piezas). El mobiliario de la escena pertenece a las anclas de la escena; los accesorios de mano de un solo uso se resuelven con indicaciones a nivel de plano y no se crean activos separados.
Paso 0 — Determinar la entrada
Tres tipos de entrada, prioridad de mayor a menor:
- outline.json (salida de novel-outline) — óptimo: lista de escenas, episodios de aparición, puntos de impacto, esquemas de reutilización ya están listos.
- Texto original de la novela — deducir la lista de escenas (priorizar escenarios principales, siguiendo la idea de límite de escenarios principales de novel-outline: no abarcar demasiado).
- Lista de escenas escrita por el usuario.
Si hay cast.json (salida de novel-characters), también incluirlo — necesario para verificar que las indicaciones no contengan nombres de personajes.
Paso 1 — Esqueleto semilla (solo si hay outline.json)
node {baseDir}/scripts/novel-art.mjs seed <outline.json> > <workdir>/art.json
Traslado determinista: id de escena, nombre, marca de escenario principal, episodios de aparición, puntos de impacto. Las escenas con esquema de reutilización incluirán un seedNote que sugiere convertirlas en variantes. No permitir que el modelo reinvente estos hechos.
Sin outline.json, crear la lista manualmente según references/schema.md.
Paso 2 — Completar la configuración de cada escena y extraer accesorios narrativos
Una entrega por escena, se puede hacer en paralelo si es posible. Cada tarea recibe:
{baseDir}/references/scene-pass.mdy{baseDir}/references/schema.md(leerlos y seguirlos).- El esqueleto de esa escena + toda la información sobre ese espacio del texto original o del esquema.
- Los nombres de las otras escenas de la misma tanda (la atmósfera espacial debe diferenciarse; no escribir todo como 'deteriorado' de la misma manera).
Los requisitos principales están en scene-pass.md; los tres más importantes: las anclas deben ser dibujables, reconocibles y verificables ("toldo remendado" es un ancla; "ambiente antiguo" es un adjetivo); los estados de iluminación se deducen de los episodios, no se escriben listas completas que no se usarán; si se puede hacer una variante, no se crea una nueva escena.
Los accesorios narrativos tienen prioridad según el esquema: desde outline.json 1.1.0, incluye props; seed trasladará la tabla de accesorios junto con "qué transportan", "qué puntos de impacto sostienen", "en qué episodios aparecen". En este paso, solo se rellenan los campos de diseño (escala, anclas, variantes de estado, indicaciones de fondo blanco). Si el esquema no tiene props, se extraen del texto original; entonces es tarea del modelo: solo recoger aquellos con primer plano, que aparecen en múltiples episodios y transportan la trama; normalmente 3–8 piezas, similar en cantidad a los personajes principales. Cada una se completa según references/prop-pass.md: función dramática, anclas, variantes de estado, escala, indicación sin manos sobre fondo blanco. Una maleta que "sigue al personaje" pertenece aquí — no debe incluirse en las anclas de la escena ni en la ficha del personaje.
Paso 3 — Validación ⛔ No se puede omitir
node {baseDir}/scripts/novel-art.mjs validate <art.json> --cast <cast.json>
Las 10 puertas de calidad son todas código. Escenas + compartidas: 6 puertas: 3–5 anclas, ≥1 estado de iluminación, sin personas, indicaciones en inglés, sin nombres de personajes (solo si se proporciona --cast), referencias de variantes completas. Accesorios exclusivos: 4 puertas: ≥1 estado, frase de escala incluida en la indicación, palabras negativas que excluyan manos, fondo blanco puro en la imagen de referencia.
Corregir cada infracción una por una, volver a ejecutar hasta que pase.
Paso 4 — Salida e informe
cd <directorio_de_salida>
node {baseDir}/scripts/novel-art.mjs render <nombre-serie>-art.json --md > <nombre-serie>-art.md
node {baseDir}/scripts/novel-art.mjs render <nombre-serie>-art.json --html > art-report.html
La interfaz del informe es en chino por defecto; si el usuario la quiere en inglés, añadir --lang en (o escribir "lang": "en" en la raíz de art.json, --lang tiene prioridad). render busca imágenes por defecto en images/<slug>-sheet.png en el mismo nivel que art.json (tanto para escenas como para accesorios); si las imágenes están en otro lugar, usar --images <directorio> para indicarlo — este skill no genera estos archivos; una vez que el generador de imágenes las produzca, volver a ejecutar render para incrustarlas en el informe. El informe incluye: KPI, lista de escenas, tarjeta de configuración de escena, lista de accesorios, tarjeta de configuración de accesorio (con tabla de verificación de anclas / variantes de estado / paquete de indicaciones con botón de copia), panel de puertas de calidad, exportación JSON (descarga el art.json tal cual).
El informe debe resumir en una frase: cuántas escenas (principales/variantes, cuántas de cada), cuántos accesorios, total de anclas, ruta del informe; las puertas no aprobadas deben indicarse explícitamente.
No decir "imagen ya generada" — ese paso ya no existe; se entregan indicaciones.
Estructura final:
<directorio_de_salida>/
├── <nombre-serie>-art.json
├── <nombre-serie>-art.md
├── art-report.html ← Se abre con doble clic
└── images/ ← Este skill no escribe este directorio
└── <slug>-sheet.png ← El generador de imágenes coloca aquí; render lo recoge
Relevo de los tres skills
novel-outline → outline.json (qué: estructura y episodios)
novel-characters → cast.json (quién: activos de personaje)
novel-art → art.json (dónde + qué tienen en la mano: activos de arte)
seed consume las secciones de escenas y accesorios de outline.json (si el esquema no tiene props, los accesorios quedan vacíos y el modelo los extrae del texto original); --cast consume cast.json. Los informes de los tres JSON tienen botón de exportación; las modificaciones pueden volver a sus respectivos render/validate.
Límites
- La interfaz del informe tiene soporte incorporado para chino e inglés (
--lang, por defecto chino o según el campolangde art.json); las indicaciones de generación de imágenes siempre serán en inglés. - Este skill no genera imágenes.
image.sheetes una instrucción de maquetación para el generador de imágenes; las especificaciones están enreferences/sheet.md. - No hay límite superior en la cantidad de escenas — el límite lo gestiona la puerta de escenarios principales de novel-outline; aquí solo se controla la calidad de cada activo.
- Los accesorios solo recogen accesorios narrativos, 3–8 piezas es lo recomendado — cada pieza adicional añade mantenimiento de consistencia entre episodios.
Autodiagnóstico
node {baseDir}/scripts/selftest.mjs
151 aserciones, sin invocar modelos ni gastar créditos. Cada una de las 10 puertas de calidad tiene casos de prueba que las validan. Ejecutar esto después de modificar el script.
Ejemplo incluido
{baseDir}/examples/渡口-art.json: Configuración completa de tres escenas + dos accesorios narrativos (maleta vieja, tintero antiguo de la oficina del condado) para "渡口" (El Ferry). Todas las puertas de calidad pasan (incluyendo la verificación de nombres de personajes contra el cast de ejemplo de novel-characters). Sirve como referencia de calidad y como fixture de autodiagnóstico.