Skill conversacional para fusionar (en memoria) partes NN_a/NN_b, validar, enriquecer reference_ids, importar lotes y generar dossier ChatGPT Project por saga.
Operar como orquestador conversacional entre NotebookLM, ChatGPT Project y la webapp:
library/_inbox/<book_title>/ cuentos completos NN.json o partes (NN_a/_b, NN_a1/_a2/_b1/_b2) y meta.json opcional.NN.json intermedio en _inbox).reference_ids faltantes antes de importar cuando exista meta.json.library/<book_rel_path>/NN.json con normalizaciones de importacion.library/<book_rel_path>/chatgpt_project_setup.md con setup y flujo operativo de imagen.library/_processed/<book_title>/<timestamp>/ cuando el lote se completa sin pendientes.Esta skill es 100% conversacional y .
Descubrimiento de entrada
library/_inbox/<book_title>/.NN con prioridad:
NN.jsonNN_a.json + NN_b.jsonNN_a1.json, NN_a2.json, NN_b1.json, NN_b2.jsonmeta.json es opcional..md/.pdf se ignoran con warning no bloqueante.Pregunta inicial de destino
book_rel_path una sola vez por lote.Resolucion por cuento (fusion en memoria)
NN.json válido, usarlo como fuente canónica del cuento.NN.json, intentar fusion por combinaciones válidas:
a + ba1 + a2 + ba + b1 + b2a1 + a2 + b1 + b2page_number por sufijo:
a: 1..8b: 9..16a1: 1..4a2: 5..8b1: 9..12b2: 13..161..N sin huecos.a;a1;Validacion estructural de lote
Enriquecimiento preimport de reference_ids
meta.json válido del lote, aplicar politica hibrida:
reference_ids ya presentes;cover y pages[].images.main.title, text, prompt;style_*/paleta en slots si se manejan como adjuntos globales del Project;meta.json, no bloquear por refs (warning operativo).Manejo de colisiones
library/<book_rel_path>/NN.json ya existe:
Importacion (solo si lote válido)
status = definitive.created_at si falta.updated_at siempre.story_id segun NN.library/<book_rel_path>/NN.json.Meta jerarquico
_inbox/<book_title>/meta.json:
library/<book_rel_path>/meta.jsonbook_rel_pathlibrary/meta.jsonmeta.json: warning no bloqueante.Dossier ChatGPT Project por saga (obligatorio tras import)
library/<book_rel_path>/chatgpt_project_setup.mdlibrary/<book_rel_path>/meta.json (anclas, reglas);library/<book_rel_path>/NN.json (prompts/slots por cuento y página).Archivado de inbox
library/_inbox/<book_title>/ a library/_processed/<book_title>/<timestamp>/.NN/parte falta o esta invalida.generado/actualizado),_processed o pendiente),NN)story_id, title, status, book_rel_path, created_at, updated_at, cover, pages.story_id:
NN, autocorregir a NN.pages:
page_number secuencial 1..N sin huecos;text string;images.main obligatorio.cover, images.main, images.secondary):
status, prompt (string), active_id, alternatives[];reference_ids[] opcional.id (ruta relativa dentro de images/, con extension),slug,asset_rel_path,mime_type,status,created_at,notes.NN_a/_b/...)NN_a.json, NN_b.json, NN_a1.json, NN_a2.json, NN_b1.json, NN_b2.json.pages[].page_number debe caer en su rango esperado por sufijo.input.pending_notebooklm.meta.jsoncollection.title,anchors[],updated_at.id, name, prompt, image_filenames[].status, active_id, alternatives[].style_rules,continuity_rules.style_*, char_*, env_*, prop_*, cover_*.coverpages[].images.mainstatus = not_required.meta.anchors[].image_filenames[].<uuid>_<slug>.<ext>) como convención principal.Usar este modo cuando ya existe library/<book_rel_path>/ y solo se quiere refrescar el setup de ChatGPT Project.
_inbox ni mover _processed.library/<book_rel_path>/meta.json y todos los NN.json del libro.library/<book_rel_path>/chatgpt_project_setup.md.meta.json o hay refs sin resolver).Si el lote es invalido:
NN afectado y/o parte (NN_a, NN_b, ...),Si el lote es válido:
Si hay colision:
NN.Usa esta plantilla al arrancar un libro nuevo:
Genera un lote de cuentos en JSON para ingesta automatica.
Destino de entrega: library/_inbox/<BOOK_TITLE>/
Formato requerido por cuento: NN.json (dos digitos)
- story_id, title, status, book_rel_path, created_at, updated_at, cover, pages
- pages[] con page_number secuencial 1..N
- text como string
- images.main obligatorio (slot completo)
- images.secondary opcional
- slot: status, prompt, active_id, alternatives[], reference_ids[] opcional
- alternativa: id(ruta relativa en images/), slug, asset_rel_path, mime_type, status, created_at, notes
Recomendado para flujo listo de imagen:
- meta.json con collection.title, anchors[], style_rules, continuity_rules, updated_at.
- reference_ids apuntando a anchors[].image_filenames.
No entregues .md ni .pdf para ingesta.
4+4)Se corto la respuesta de NotebookLM. Reentrega este cuento por bloques:
- NN_a1.json paginas 1..4
- NN_a2.json paginas 5..8
- NN_b1.json paginas 9..12
- NN_b2.json paginas 13..16
Mantener mismo contrato JSON completo en cada parte.
No usar markdown, no agregar texto fuera del JSON.
Voy a pasarte prompts desde NN.json/meta.json.
Genera imagenes manteniendo continuidad visual estable.
Usa naming legible sin UUID:
- anclas: anchors/<slug>.<ext>
- slots: <NN>/<NN>_<MM>_<slot>-<slug>.<ext>
No cambies la convención de nombres.
chatgpt_project_setup.md por sagaPlantilla reusable en: references/chatgpt_project_setup_template.md.
# ChatGPT Project Setup - <BOOK_TITLE>
## Nombre sugerido del Project
- `<BOOK_TITLE> - Generacion de imagenes`
## Objetivo
- Generar imagenes para portada y paginas de los cuentos `NN.json`, manteniendo continuidad visual por anclas.
## Fuentes de verdad
1. `library/<book_rel_path>/meta.json`
2. `library/<book_rel_path>/NN.json`
## Instrucciones maestras (copiar en ChatGPT Project)
1. Mantener continuidad estricta de personajes, vestuario, paleta y trazo.
2. Tratar `reference_ids` como contexto de escena (máximo 6), usando el pack global de anclas como base permanente.
3. No inventar cambios de estilo entre paginas.
4. Mantener encuadre y tono segun prompt del slot.
5. Entregar una imagen por iteracion para facilitar seleccion editorial.
## Style Prompt Maestro de la saga
1. Prompt canonico EN (pegar literal):
- `<STYLE_PROMPT_MAESTRO_EN_LITERAL>`
2. Resumen tecnico ES (operativo y breve):
- `<STYLE_PROMPT_MAESTRO_ES_RESUMEN>`
3. Regla de uso:
- reutilizar el style prompt maestro en cada turno;
- no sustituirlo por variaciones libres.
## Modificadores de composicion (por intencion del slot)
1. Full-bleed (ilustracion completa):
- `"Full-bleed composition, edge-to-edge illustration, cinematic 2D view"`.
2. Spot art (imagen suelta):
- `"Isolated spot art on a clean white background, no borders, centered"`.
3. Politica:
- aplicar modificador solo cuando el slot/prompt lo pida de forma explicita;
- no forzar composicion por paridad de pagina.
## Gate obligatorio de prompt (antes de generar)
1. El prompt de cada slot debe incluir los 8 bloques:
- `OBJETIVO DE ILUSTRACION`
- `CONTINUIDAD VISUAL OBLIGATORIA`
- `COMPOSICION Y ENCUADRE`
- `PERSONAJES Y ACCION`
- `ENTORNO, PALETA E ILUMINACION`
- `REFERENCIAS (reference_ids)`
- `RESTRICCIONES / NEGATIVOS`
- `FORMATO DE SALIDA`
2. Si falta algun bloque o el prompt es demasiado corto, NO generar imagen.
3. Solicitar delta a NotebookLM con el codigo correspondiente (`prompts.missing_sections` o `prompts.too_short`).
## Fase 1 obligatoria - anclas
1. Generar primero anclas de `meta.json` (especialmente `style_*`, `char_*`, `env_*`, `prop_*`, `cover_*`).
2. Validar continuidad base antes de producir paginas.
3. Registrar variantes utiles como alternativas del propio anchor.
## Fase 2 - portada y paginas
1. Abrir editor de portada: `/<book>/<NN>?editor=1`.
2. Para cada slot (cover/main/secondary):
- copiar prompt;
- copiar refs individuales;
- decidir composicion por intencion del slot/prompt (`full-bleed` o `spot art` solo si aplica);
- validar que el prompt cumpla los 8 bloques;
- generar en ChatGPT;
- pegar en webapp con "Pegar y guardar alternativa";
- activar alternativa elegida.
## QA rapido por pagina
1. Personajes: rasgos, edad aparente, ropa, proporciones.
2. Continuidad: objetos y escenario coherentes con paginas vecinas.
3. Composicion: accion principal clara y legible.
4. Paleta: consistente con anclas de estilo.
5. Slot correcto: imagen cargada en cover/main/secondary segun corresponda.
## Troubleshooting
1. Si falla copiar imagen desde webapp:
- abrir imagen individual y copiar manualmente.
2. Si falla leer portapapeles:
- confirmar HTTPS/contexto seguro o navegador compatible.
3. Si no hay refs del slot:
- revisar `reference_ids` en el JSON (no repetir style/paleta si ya están en adjuntos globales).
4. Si el prompt llega fuera de estandar:
- detener generacion y pedir delta a NotebookLM;
- no improvisar estilo fuera del contrato.
Correcciones de lote para reentrega:
<LISTA_DE_ERRORES_POR_NN>
Reentrega solo los NN afectados en library/_inbox/<BOOK_TITLE>/.
Mantener el resto sin cambios.
Contrato completo: references/contracts.md.
Plantilla de dossier: references/chatgpt_project_setup_template.md.