Ingeniería de Material (Canalización Ejecutable)
Posición: Este es un skill que trabaja, no un documento de reglas: ejecuta evaluación, comandos y verificación en un solo flujo. La fuente real de las reglas completas está en
remotion-assembly/references/broll.md(detalles de prioridad de cuatro niveles / obligación de lista de materiales por caso / especificaciones de referencia), en caso de conflicto prevalece ese documento.
Cuándo Invocar
- Cuando en el paso 2 del taller de segmentación se determina un «segmento de material real» (escenas de experiencia de producto: escritura/generación/interfaz/demostración/operación)
- Durante la recopilación de la lista de materiales antes de la finalización del plan de ensamblaje (1 captura de pantalla del producto o 5s de grabación de pantalla por caso, el AI se auto-abastece, no espera suministro)
- Cuando el usuario proporciona grabaciones de pantalla o material real para incrustar en el metraje principal
Canalización de Ejecución (Cada Paso Tiene Verificación, Avanzar Paso a Paso)
① Clasificación: Elegir ruta según prioridad de cuatro niveles: grabación propia del usuario > video oficial > captura de pantalla web > tarjeta de simulación de UI. Para casos con sitio web oficial o canal oficial público, no se permite caer directamente al nivel 4.
② Adquisición
- Video oficial:
yt-dlp --print "%(channel)s | %(title)s | %(duration)ss | %(id)s" "ytsearch8:<nombre del producto> official"identificar canal oficial →yt-dlp -f "bv*[height<=1080][vcodec^=avc1]+ba[ext=m4a]/b[vcodec^=avc1]/b" -o "public/broll/<nombre>.mp4" <url>([vcodec^=avc1]filtra AV1 por defecto, igual que HEVC no se almacena, ver broll.md 2c); si 403, probar UA /--cookies-from-browser/ proxy. - Captura de pantalla web:
node_modules/.remotion/chrome-headless-shell/*/chrome-headless-shell*/chrome-headless-shell --headless --screenshot=<out.png> --window-size=1920,1080 --virtual-time-budget=10000 <url>.
③ Verificación (No Omitible): file <archivo> para evitar «PNG que es HTML»; para video ffprobe verificar códec, HEVC primero convertir a H.264 (evitar pantalla negra); lectura visual de la captura para confirmar que no es pantalla de inicio de sesión/ventana de cookies.
④ Selección: ffmpeg -vf fps=0.5 extraer fotogramas y crear hoja de contactos, leer fotograma por fotograma, elegir segmento de 3-8s sincronizado con el significado de la narración (entrada → acción → espera → resultado), registrar segundos de inicio y fin.
⑤ Incrustación: Dentro del takeover <Sequence from={beat(x)}> + <OffthreadVideo muted src={staticFile('broll/….mp4')} startFrom={F(segundo inicio)}> (muted obligatorio); takeover sin PiP (lo decide el usuario); capturas de pantalla usar ShotCard/WindowCard. Secuencia que contiene medios agregar premountFor≈fps para evitar primer fotograma negro, pero esa Secuencia no puede tener layout="none" (después de quitar la capa envolvente, premount falla); si la capa exterior tiene return null para controlar la visibilidad del contenedor, null debe abrirse antes ≥premountFor fotogramas (prueba seg06: contenedor frame<enterAt-30 return null con interior premountFor={30}), de lo contrario el padre null elimina la ventana de precarga, premount se vuelve inútil.
⑥ Unificación de Color: Agregar a la capa de material filter: brightness(0.9-0.92) saturate(0.95) (ajustar según brillo del metraje principal), color original directo da sensación de pegatina (error #18); segmento takeover usar valores fijos brightness(.92) saturate(.95) (probado y fijado en seg06, no ajustar visualmente por segmento).
⑦ Edición: Donde se enfatiza, hacer punch-in (crop+scale a la zona clave, altura de fuente de la oración clave ≥40px), seleccionar fotogramas, cambiar velocidad; para referencias usar dos pasos: «tarjeta completa 2-3s → punch-in oración clave». La ventana takeover debe ajustarse a la duración natural del material, priorizar velocidad natural — si el material es más corto que la ventana, acortar la ventana + fundido anticipado, no ralentizar para llenar la ventana; playbackRate<1 solo para desplazamiento de interfaz y cuando la ventana no se puede acortar, como última opción (≥0.7). Material con resaltados/traducciones quemados sin fotogramas limpios → usar método de máscara de revelado (máscara blanca scaleX 1→0 revelando), y al ingresar al almacén, registrar en SOURCES.md «con método de máscara de revelado», ver broll.md 8.5.
⑧ Verificación de Renderizado del Segmento: Renderizar solo ese segmento --frames=a-b, extraer fotogramas y leer para verificar: sensación de pegatina (color), legibilidad (≥16px), superposición (margen de seguridad de pizarra blanca), sincronización con narración.
Reglas de Almacenamiento
Video en public/broll/; capturas de pantalla en public/assets/; faltantes escribir en el plan de ensamblaje y solicitar al usuario que proporcione. Ámbito de derechos de autor: material promocional oficial para videos de comentario.
Nombres de Personas Deben Tener Retrato (Decisión de Usuario 2026-07-22, Regla de Hierro)
Cuando la narración menciona un nombre específico, el círculo de avatar de la tarjeta de persona debe contener una foto real de esa persona cuando sea posible, no usar monograma de inicial como sustituto (palabras del usuario: «Cuando se menciona un nombre, pon una imagen en lo posible, puedes buscar en internet la imagen más representativa de esa persona y ponerla en el círculo del avatar»). Monograma/icono solo como último recurso si no se consigue imagen.
Ámbito de obtención de imágenes (dos categorías, no mezclar):
- Figura pública (Jobs, Musk, etc.): El AI obtiene la imagen por sí mismo, pero solo de fuentes con licencia de uso comercial clara — primero elegir Wikimedia Commons con CC BY / CC BY-SA / Dominio Público, luego material de comunicados de prensa oficiales. Prohibido tomar imágenes directamente de buscadores (la mayoría son fotografía comercial con derechos no claros; el video del usuario se publicará). Después de obtener la imagen, registrar en
public/broll/<nombre del video>/SOURCES.md: nombre de archivo / URL de origen / tipo de licencia / atribución del fotógrafo. Si CC BY-SA requiere atribución en créditos o descripción, informar al usuario al entregar. - Persona no pública (como profesor, amigo, colega mencionado en la narración): El AI no debe buscar imágenes en internet por sí mismo — no se puede confirmar que sea la persona, ni hay autorización. Seguir el proceso «mencionar nombre = solicitar material» al usuario; si el usuario no proporciona, mantener la tarjeta con monograma dibujado, y explicar el motivo al entregar.
Esta regla reemplaza el criterio anterior: La redacción anterior de «prohibir retrato de Jobs, solo usar chip de texto/icono» era una medida conservadora por derechos de autor. Ahora, según decisión del usuario, se cambia a «usar fotos reales con licencia clara», el problema de derechos se resuelve eligiendo fuentes con licencia en lugar de no poner fotos.
Collage B-roll Generado por IA (Escenas Emocionales/Metafóricas Sin Material Real, 0722-01 Tipo Fijo)
Cuando no hay nada en los cuatro niveles de material real y se necesita una imagen emocional o metáfora abstracta (repetición, cirugía, uso de teléfono, fragmentación de atención — escenas que no se pueden grabar ni tienen video oficial), seguir este proceso: Codex image_gen genera fotograma estático → Grok image_to_video anima → incrustar en metraje principal. La ejecución sigue el skill gbro-collage-broll con tres compuertas (Gate1 metáfora / Gate2 fotograma estático / Gate3 video), pero el ritmo, la contención y la composición se rigen por esta sección (anula los valores predeterminados de gbro).
① Contención: Por defecto tarjeta en la zona derecha, no pantalla completa. El B-roll se coloca en la tarjeta de evidencia de la zona derecha del diseño de tres columnas (16:9 proporcional objectFit:contain mostrando completo, sin recortar — decisión del usuario «reducir proporcionalmente»), la persona permanece en escena, la zona izquierda conserva la barra lateral + HUD de línea de tiempo. El takeover de pantalla completa solo se usa cuando «no hay información que necesite estar junto al material» (regla de A-roll: pantalla completa es el único lugar donde se puede quitar a la persona, ver layout §2). El componente de contención consultar src/koubo/scenes-0722-01/CollageBroll.tsx (tarjeta + OffthreadVideo, borde sigue el color del capítulo). No asumir pantalla completa por defecto — 0722-01 hizo pantalla completa por error y fue rechazado por el usuario, hubo que rehacerlo.
② Ritmo: Una imagen por frase oral, el corte da ritmo, no depender de revelado dentro del plano. En narración densa, cada imagen vive solo 1-3s, prohibida la animación de ensamblaje desde vacío (empezar desde vacío y completar solo en el último fotograma = la información siempre va tarde, choca con la curva de velocidad del habla; 8 videos descartados por esto). Buscar «animación» — el fotograma estático ya está completo en el fotograma 0, Grok solo superpone movimiento continuo sutil (papel flotando/engranaje girando/banda de luz deslizándose/niebla fluyendo), la composición no debe cambiar ni un fotograma.
③ Reglas de Composición de Fotograma Estático (Codex image_gen):
- Tipos de proporción (aplicar una regla única causa fallos): Metáfora impulsada por objeto (cama de hospital/pastillas/calendario/fragmentos/montón de libros — la persona es solo un elemento) la persona ocupa 45-60% de altura; Metáfora impulsada por persona (trabajando/sentado erguido/presionando botón/mirando al vacío — la persona es el sujeto) debe ser primer plano 65-80%, plano general falla directamente.
- Línea roja: Sin letras falsas/letras o números legibles/logo/marca de agua/UI; revisar también los cuatro bordes (Codex revisa por sí mismo pero puede pasar por alto letras falsas en los bordes; la sesión principal debe usar ffmpeg para recortar los cuatro bordes, ampliar y verificar por separado).
- Imagen de referencia de identidad especificada por el usuario (0722-01 usó
my-face-studio-default.JPG); expresión según narrativa, en segmentos bajos usar más siluetas/cabeza baja/tumbado para evitar la falta de naturalidad, ni sonrisa ni tristeza. - Después de cada lote generado, usar
md5para deduplicar, evitar archivos duplicados.
④ Tres Errores de Animación con Grok (Detalles en Error #39):
- Resolución: El CLI de grok
image_to_videotieneresolution_namesolo dos opciones: 480p/720p, no 1080p (confirmado en prueba 2026-07-24, solicitar 1080p retrocede a 720p); la API de xAI grok-imagine-video-1.5 soporta 1080p i2v (documentación oficial). Pantalla completa necesita 1080p = CLI no puede: usar API de xAI 1.5, cambiar a material real u otros generadores (Sora 2 / Veo / Kling / Seedance; ChatCut MCP incluye Seedance/Kling). Las instrucciones deben escribir explícitamente la resolución para obtener el nivel completo — si no se escribe, por defecto cae a 736×400 (más borroso). ¿720p es suficiente según el modo de contención?: En tarjeta/picture-in-picture (área de visualización a menudo <720px) 720p sobra, es nítido; pantalla completa ocupando 1920×1080 con 720p ampliado 1.5× se ve suave. El producto final es 1080p, el B-roll no necesita 4K (no se nota, a menos que se haga un zoom fuerte). - Crecimiento morph: Elementos que tienden a deformarse (engranajes/círculos/calendarios) agregar restricción fija al final del prompt (mantener tamaño original único/número de celdas y color sin cambios/círculo continuo sin romperse).
- Relleno forzado: «Elementos escasos + fondo vacío grande + figura humana hueca + fragmentos de rostro» desencadenan que el modelo llene el espacio vacío/rellene agujeros/complete rostros, cambiando la composición en lugar de solo agregar prohibiciones.
- Llamada: headless necesita
--always-approve --permission-mode bypassPermissions --max-turns 10; múltiples agentes compartiendo cwd deshabilitargrok --continue(mezclaría sesiones, escribiendo el producto de A en la ruta de B); antes de entregar, deduplicar todo el lote con md5.
⑤ Requisito Previo de Entorno: El proyecto de Codex debe crearse dentro de su directorio de trabajo escribible (local = bajo ~/Documents/remotion剪辑/); si se crea bajo ~/hyperframes-projects/, image_gen tendrá éxito pero el guardado será rechazado; para tareas con múltiples elementos, enviar un agente por elemento en paralelo, no dejar que un agente haga todo en serie (podría terminar a medio hacer y darse por finalizado).