Cinematógrafo
Lee references/cinematography.md (gramática fílmica, look) y references/models.md (modelos) una vez por sesión.
Piensa en escenas, no en tomas
Investigación (Higgsfield Popcorn, Wan 3.0 / Seedance 2.0 multi-shot): los modelos de IA mantienen la continuidad cuando una escena se genera junta, y la pierden cuando cada toma se genera por separado. Por lo tanto:
- Escena = un lugar, un momento continuo, ≤ 15 s, 2–5 tomas de 2–5 s cada una.
- Storyboard = UNA imagen de cuadrícula por escena (todos los paneles en una generación) → dividir en paneles.
- Video = UNA generación multi-toma por escena (
Toma 1 [0-3s] … Corte duro. Toma 2 [3-6s] …), comenzando en el primer panel de la escena, con referencias de personajes, escenario y voz. - Un episodio de 20 s suele tener 2 escenas → 2 imágenes de cuadrícula + 2 generaciones de video, todas ejecutadas en paralelo.
shotlist.json
"scenes": [
{ "id": "A", "summary": "una línea: lo que sucede", "shots": ["s01","s02","s03"],
"blocking": "Milo se sienta en la SILLA IZQUIERDA de la mesa redonda mirando a la derecha, papel frente a él; Rex se sienta en la SILLA DERECHA mirando a la izquierda; Ana no está en la habitación." }
],
"shots": [ { "id": "s01", "duration": 3, "characters": ["milo","rex"], "framing": "plano medio de dos", "lens": "lente de 35 mm", "camera": "cámara fija",
"image": "momento congelado para el panel de storyboard", "motion": "lo que cambia en esta toma",
"dialogue": [{ "char": "milo", "text": "…", "delivery": "…" }], "sfx": "…" } ]
Hoja de bloqueo (escríbela antes de las tomas)
Para cada escena: la posición de cada personaje (qué silla, izquierda/derecha del encuadre), su dirección de mirada, postura, accesorios en mano, y cualquier movimiento con su temporización ("en s03 Rex se levanta y se dirige a la puerta"). Si un personaje se mueve, la siguiente toma comienza donde terminó. El texto de bloqueo se inserta textualmente en el prompt de la cuadrícula del storyboard y en el prompt del video.
Cobertura que mantiene la continuidad
- Anclar con el plano de dos. El diálogo entre dos personajes sentados se desarrolla principalmente en un plano medio de dos; acércate para reacciones y remates.
- Los planos individuales muestran la geografía: un plano cercano de un personaje mantiene la mesa y el hombro o borde del otro en el encuadre (plano over-the-shoulder), contra la misma pared de fondo cada vez.
- Regla de 180°: los lados de pantalla nunca se invierten. Escribe "Milo izquierda del encuadre, Rex derecha del encuadre" en cada toma que tenga ambos.
- Nombra la cámara en cada toma ("cámara fija", "push-in lento"). Las cámaras sin nombre hacen que Wan corte por su cuenta.
- Comedia física en el plano general, para que toda la acción se lea.
- Corta en acción o en la palabra del remate; mantén el tiempo de reacción (0,5–1 s) después de la línea.
- Sin saltos imposibles: un personaje no puede estar en la mesa en s02 y en medio de la habitación en s03 a menos que una toma lo muestre moviéndose.
Antes de entregar
- Cada escena ≤ 15 s con 2–5 tomas; el total coincide con la duración del guion.
- Cada toma tiene encuadre, lente, cámara, imagen, movimiento, diálogo (o ninguno) y efectos de sonido.
node engine/gen.mjs estimate <slug>.
Lógica de continuidad (reglas estrictas, aplicadas por engine/continuity.mjs)
- Cada escena declara
seats. Cada personaje tiene un lugar y un lado de pantalla:{ "rex": { "place": "el COJÍN DERECHO del sofá", "side": "derecha" } }. Los prompts lo repiten como un BLOQUEO DE ASIENTO en cada toma, incluidos los planos generales. - Nadie cambia de lugar fuera de cámara.
- Si la historia necesita que un personaje esté en otro lugar, añade una toma cuyo
movesindique a dónde y cómo, y cuya acción muestre el movimiento:"moves": { "rex": { "to": "la alfombra", "side": "derecha", "how": "salta del sofá" } }. - La verificación del plan falla si una escena posterior comienza con un personaje en un lugar nuevo sin esa toma.
- Si la historia necesita que un personaje esté en otro lugar, añade una toma cuyo
- Los planos individuales son planos sucios. Cuando los personajes comparten mobiliario, un primer plano mantiene el borde del compañero (pelaje, oreja, hombro) en su lado de pantalla. El asiento junto al sujeto nunca está vacío.
- Después de filmar, ejecuta
node engine/continuity.mjs <slug>.- Un juez de visión lee un fotograma por toma y lo compara con el plan: mobiliario/piso, lado, teletransportaciones, día o noche, asiento vacío del compañero, habitación, vestuario.
- Una toma que falla no se puede cortar (
edit.mjsla rechaza). Vuelve a generarla con una nota que nombre la violación.