ComfyUI H3 Guion a Video (v5.0 Versión de Lenguaje Audiovisual de Nivel de Director y Especificación de Ingeniería Industrial)
Actualización Hito v5.0 (2026-11, Industrialización del Lenguaje Audiovisual y Ataque Integral a los Siete Puntos Débiles en la Práctica)
- 1. Proceso de Generación Previa de Fotogramas Clave de Storyboard (Fijación Conjunta I2V de Escena/Personaje/Atrezzo): Se termina definitivamente con la ejecución a ciegas de T2V sin fotograma clave. Antes del muestreo de video de cada segmento, el modelo de generación de imágenes, combinado con la posición de cámara del segmento, las vistas del personaje y la configuración del atrezzo, genera un fotograma clave conjunto inicial 16:9 (
keyframe_segXX.png). Tras la inspección y aprobación, se alimenta al nodo I2V, bloqueando la geometría del esqueleto, la textura de la ropa y el contorno del atrezzo en el fotograma 0.- 2. Protocolo de Bloqueo de un Solo Hablante y Supresión de Movimiento de Boca para Todos (Speaker Lock & Mouth Suppression): Se elimina por completo el horror de la "marioneta parlante" donde todos en la escena mueven la boca al unísono con el diálogo. En
[Subject 1]se identifica claramente al único hablante principal, en[Action 1]se fuerza la separación de la acción principal del sujeto, y a los personajes que no hablan se les añade una cláusula obligatoria de supresión de movimiento de boca (lips tightly sealed, completely silent, showing tense glare without mouth movement).- 3. Tarjeta Madre de Estilo Global (Global Style Bible) y Compuerta de Fijación de Estilo Previa: Se rechaza la deriva de estilo aleatoria en cada episodio. Antes de iniciar la producción, se debe establecer una Style Bible global (definiendo
visual_genre,environment_base,lighting_base,color_palette,quality_base), generar 4 muestras de estilo de diferentes planos para confirmación manual, y luego heredarlas y fijarlas para toda la serie.- 4. Normalización de la Velocidad de Locución y Densidad para Series Cortas (Pacing & Density Normalization): Se soluciona el problema de la lentitud y el arrastre de sílabas. En la línea de tiempo estándar de 175 fotogramas (7.29s), el diálogo debe coincidir estrictamente con 20~28 caracteres chinos puros (velocidad de locución dorada para series cortas: 3.2~4.0 caracteres/segundo); y en
[Audio 1]se declara explícitamentespoken crisply and rapidly without dragging syllables; los primeros 4.5s para hablar rápido, los últimos 2.8s para una mirada fría y reacción.- 5. Seis Bibliotecas de Movimientos de Cámara y Puesta en Escena de Nivel Cinematográfico (Director Camera & Blocking): ¡Prohibido estrictamente tener dos personas de pie y conversando estáticamente de forma consecutiva! Se fuerza la introducción de 6 maniobras de cámara dinámicas: ① Avance lento con cruce de líneas de acción, ② Primer plano de atrezzo con reenfoque a la mirada, ③ Inclinación holandesa de corte oblicuo, ④ Giro de espaldas con mirada fría de vuelta, ⑤ Acercamiento al oído con presión, ⑥ Sillueta en contraluz de confrontación.
- 6. Protocolo de Pronunciación de Mandarín Puro y Compuerta de Deriva de Idioma ASR (Mandarin Purity & Language Gate): Todos los diálogos se normalizan a chino puro (los números arábigos se convierten a caracteres chinos, se eliminan las abreviaturas en inglés y los símbolos ilegales); en
[Audio 1]se añade obligatoriamenteStrict Mandarin Chinese dialogue only, standard native Chinese accent, zero foreign tone; se integra la detección de idioma Whisper ASR para interceptar automáticamente subtítulos no chinos y la deriva de idioma.- 7. Cierre del Bucle de Tubería Maestra de Ingeniería (Master Director Pipeline): Se consolida
scripts/director_engine_v3.py, implementando la automatización completa de la tabla de storyboard, compilación de indicaciones, cálculo de velocidad de locución y densidad, y bloqueo del sujeto que habla.Actualización v4.1 (2026-11, Especificación de Indicaciones Oficial v2.2 y Profundización en la Línea de Tiempo de 175 Fotogramas)
- Actualización de la Especificación de Indicaciones a v2.2:
- Se integra la guía de indicaciones oficial de MiniMax (
references/official/base-en.txt,ref-en.txt);- Los tres elementos del movimiento de cámara (tipo + amplitud + velocidad) se escriben como oraciones naturales dentro del plano, prohibiendo estrictamente la acumulación de etiquetas al final del plano;
- Los permisos de los materiales se declaran claramente:
no copiar la posición de la cámara de la imagen original, no copiar la proporción de ocupación del encuadre;- Se ejecuta estrictamente el presupuesto de complejidad: un máximo de 3 sujetos + 1 línea de diálogo por segmento (175 fotogramas/7.29s).
- Fijación de la Longitud del Segmento a 175 Fotogramas (7.29s) como Principal:
- 243 fotogramas se retiran oficialmente, el límite superior estricto se establece en 192 fotogramas (8.00s), la producción principal se fija uniformemente en 175 fotogramas, dejando suficiente búfer de boca cerrada de 1.0~1.2s al final del segmento;
- Zona prohibida de obediencia de la capa de programación (los planos generales solo establecen el espacio y reconocen rostros para cortar a planos medios o cercanos, prohibido el retroceso de cámara y el paso a través de ventanas).
- Defensa UTF-8 para Terminales Windows:
force_utf8_stdio()restablece uniformemente stdout/stderr a UTF-8, eliminando las excepciones de codificación GBK/CP936.- Ampliación del Conjunto de Herramientas de Control de Calidad y Corrección de Rostros en Planos Generales:
- Se introduce Whisper ASR para la verificación de diálogos (
scripts/check_dialogue_asr.py), control de calidad de flujo óptico y costuras de planos finales (scripts/sop_check.py), exención de cola de segmento para continuar (--tail-exempt) y corrección adaptativa de rostros en planos medios/generales (scripts/face_refine_pipeline.py).Actualización v4.0 (2026-10, Doble Revolución: Bloqueo Facial de Primer Fotograma a Nivel Industrial y Mezcla de Audio Cinematográfica)
- Verificación de Imagen de Primer Fotograma + Regla Férrea de Bloqueo Geométrico I2V (Eliminación Radical de la Deformación Facial y el Ablandamiento de Atrezzo en T2V): Una sola imagen de texto a imagen solo tarda 5-15 segundos, el remuestreo en caso de insatisfacción es de nivel de segundos; ¡está estrictamente prohibido ejecutar a ciegas un T2V de 8 minutos con la esperanza de un resultado aceptable sin haber fijado el primer fotograma! El control de calidad posterior es solo un paliativo, y el remuestreo de alto costo trata los síntomas sin curar la causa. Siempre que haya un primer plano de persona o una interacción clave con atrezzo, primero se debe determinar el fotograma clave, inyectar
first_framepara usar el modo I2V, bloqueando la geometría anatómica y el circuito del atrezzo en el fotograma 0, dejando que H3 se encargue únicamente de la dinámica temporal y la sincronización de labios, reduciendo la tasa de deformación facial del 30% a menos del 2%. Consultereferences/keyframe_i2v_guide.md.- Fusión de Música de Fondo de Nivel Cinematográfico y Ducking de Audio Inteligente: Las indicaciones prohíben por completo que H3 genere ruido de fondo distorsionado; después de limpiar el diálogo y los efectos de sonido de acción, se coloca un BGM externo independiente y de alta fidelidad para toda la película, utilizando
sidechaincompressnativo de FFmpeg para el ducking dinámico: cuando el personaje habla, el volumen baja instantáneamente -14dB, y 0.3-0.5s después de que termina el diálogo, sube suavemente, creando una experiencia audiovisual agradable para las series cortas comerciales. Se añade la nueva herramientascripts/cinematic_audio_mixer.py.- Nueva Herramienta de Compuerta de Fotograma Clave
scripts/keyframe_gate.py: Soporta inspección de estado del fotograma clave a nivel de proyecto, sincronización del almacén de ComfyUI e inyección segura del nodo I2V.Actualización v3.2 (2026-10-25)
- Se añade la Sección 13 Cuándo actualizar esta skill: seis condiciones de activación, cuatro tipos de contenido que no deben incluirse, tres preguntas para la migración, reglas de colocación, tres pasos de autoverificación después de la modificación
- Regla de una frase: Solo se consolidan los mecanismos y criterios que "siguen siendo válidos después de cambiar el guion"; los archivos del proyecto no deben incluirse en la skill
Actualización v3.1 (2026-10, Consolidación de la Práctica de 13 Segmentos / 86 Segundos de Metraje Final)
- Se añade la Sección 4.1 Límites de Obediencia de H3 (fallo del retroceso de cámara, paso de ventana/puerta, no generación de movimiento fuera de la ventana, bloqueo del tipo de plano, instrucciones de cámara negativas)
- Se añade la Sección 5.1 Recuperación de Memoria VRAM (una vez, un segmento pasó de 5 minutos a 33 minutos)
- Se añaden 6 reglas al Árbol de Decisión de la Sección 8 (acción final robada, demasiadas acciones en un tiempo, efectos de sonido mal colocados como ruido de fondo, efectos secundarios de quiet-gain, error de F0)
- Se añaden cuatro gradientes de posición del diálogo en la Sección 12, contabilidad de trim con
cont off- La longitud recomendada del segmento en la Sección 3 se cambia a 175 fotogramas (originalmente 124/243, obsoleto)
- Se corrigen dos ejemplos antiguos en la especificación de indicaciones que podían inducir a error: "El diálogo se escribe al final del tiempo" debería ser al principio del tiempo; "El pecho sube y baja cada 2.5 segundos" puede ser interpretado como una instrucción de vocalización, generando sonidos de respiración, por lo que se ha eliminado.
Convertir el guion en metraje terminado: Handshake → Programación del Director → Verificación del Fotograma Clave (I2V) → Indicaciones → Envío → Supervisión y Doble Verificación → Recogida de Metraje → Ducking, Mezcla y Concatenación.
El concepto central de v4: Actualizar de "generar video al azar + control de calidad posterior y remuestreo" a "control de imagen previo de bajo costo + ejecución de bloqueo facial I2V + mezcla de audio con ducking de nivel cinematográfico".
Una regla de hierro: una tarea = un directorio de proyecto local + un nombre de proyecto de director (
h3_chain/<nombre_proyecto>). Estos dos elementos, desde que se definen en el primer segmento hasta que termina laconcat, no deben cambiarse. Si se cambian, no es solo "el archivo está en el lugar equivocado", sino que la continuación se rompe directamente: La continuación busca el segmento anterior segúnchain.order[k-1]; si el nombre del proyecto cambia, no se encuentra, y el segmento actual se tratará silenciosamente como el primer segmento, volviendo a dibujar, y el metraje terminado se colocará en el directorio de otra película. El enlace se escribirá en el campochaindeproject.json, ysubmitlo comparará cada vez; si no coincide, lo rechazará directamente (no es una advertencia). Para cambiar, solo se puede hacer globalmente: nuevo proyecto + nuevo nombre de proyecto de director, empezando de nuevo desde el primer segmento. Reglas completas en la Sección 10.1.
0. Contrato de Ejecución (Primero, Definir Quién Hace Qué)
| Quién | Responsable |
|---|---|
| Agente (Totalmente Automático) | Leer el guion, programación del director, verificación del fotograma clave, escribir indicaciones, preflight, enviar, supervisar, realizar doble verificación, recoger metraje, limpiar ruido de fondo, mezclar con ducking de audio, concatenar, entregar, escribir el registro de trabajo |
| Usuario (Solo Tres Cosas) | ① Abrir ComfyUI y cargar el flujo de trabajo, decir "listo" ② Ajuste único del guion/estilo/fotograma clave candidato ③ Revisar y aceptar el video |
Siete Cosas que el Agente No Debe Hacer
- No enviar sin haber realizado el handshake del flujo de trabajo (
wf_map.jsonno existe). - No saltarse la compuerta (
gate) de doble verificación para ir directamente afinish; el script lo rechazará, no intente evitarlo. - No escribir el estado/los fotogramas extraídos/el wav temporal en el directorio de la skill (
paths.pytiene barreras de protección estrictas). - No modificar las conexiones basándose en "el número de nodo de la última vez" — solo inyectar tres tipos de datos, nunca tocar las conexiones del nodo de superresolución/nodo final.
- Cuando haya un primer plano de persona o una interacción clave con atrezzo, no saltarse la verificación del fotograma clave y ejecutar a ciegas una generación de video solo con texto (T2V) — la verificación de imagen estática solo tarda 5-15 segundos; si no es satisfactoria, se puede remuestrear al instante; ejecutar un T2V de 8 minutos y luego hacer un control de calidad posterior es un suicidio de alto coste. Primero se debe determinar el fotograma clave, inyectar
first_framepara usar el modo I2V y bloquear la cara y el atrezzo. - No enviar el siguiente segmento sin haber extraído fotogramas y revisado las imágenes — preflight solo verifica la estructura del texto, no las imágenes. Después de que el metraje se guarde en disco, primero extraer 4-6 fotogramas para hacer un collage y revisarlo, luego enviar el siguiente segmento; esto también evita el problema de "enviar dos segmentos demasiado rápido, causando un estado sucio de la VRAM" (ver Sección 5.1).
- No mover ciegamente los archivos del proyecto actual a la skill — nombre de la película/nombre del personaje/número de segmento/
plan.json/assets/*.json/texto original de la indicación de un segmento/registro de trim actual/seed de la lista negra, todo debe permanecer en el directorio del proyecto. Solo consolidar los mecanismos, criterios y métodos de escritura que "siguen siendo válidos después de cambiar el guion". Los criterios y las reglas de colocación se encuentran en la Sección 13.
Solo en estas cuatro situaciones se debe detener y preguntar al usuario: ambigüedad en el guion que afecta la estructura del storyboard / definición del estilo o la relación de aspecto / falta de material que no se puede definir con texto / el mismo segmento se ha remuestreado 3 veces y aún no pasa.
1. Conjunto de Herramientas Principal (Cadena de Herramientas de Producción Completa)
| Herramienta | Función | Subcomandos Clave |
|---|---|---|
scripts/h3wf.py | Handshake del flujo de trabajo: leer los nodos que realmente se han ejecutado desde ComfyUI, identificar automáticamente los roles de los nodos | sync show doctor |
scripts/sop_run.py | Producción: envío (incluye preflight), supervisión automática, esperar el metraje final | submit watch final abort |
scripts/h3proj.py | Gestión del proyecto y compuertas: registro de trabajo, doble verificación de la primera captura, firma visual, recogida de metraje, concatenación, limpieza de residuos | new status gate review finish concat residue |
scripts/keyframe_gate.py | Verificación del fotograma clave e inyección I2V: inspección del estado del fotograma clave, sincronización del almacén de ComfyUI, inyección de first_frame | --project --seg --sync |
scripts/face_refine_pipeline.py | Flujo de trabajo externo de corrección de rostros en planos generales: corrección condicional de rostros en planos medios/generales, paso directo de audio original, degradación suave ante nodos personalizados faltantes | --input --output --char-ref --dry-run |
scripts/cinematic_audio_mixer.py | Mezcla de audio cinematográfica con ducking inteligente: BGM externo independiente, sidechaincompress para ducking automático de la voz | --input --output --bgm --volume |
scripts/check_dialogue_asr.py | Comparación automática ASR de diálogos: VAD localiza segmentos de voz → Whisper transcribe → comparación con el texto original de <d> | --file --text --seg |
scripts/sop_check.py | Control de calidad de la energía de la acción del plano final y la similitud de la costura: tabla de contacto de 8 fotogramas, relación de flujo óptico de la acción, comparación de fotogramas fijos | --video --seg |
scripts/shisei_pose.py | (Opcional) Postura de lucha/confrontación: búsqueda de posturas desde múltiples ángulos y extracción de dibujos lineales | --search --duo --get --view |
El intérprete fijo es el venv con cv2:
C:/Users/windows/.workbuddy/binaries/python/envs/default/Scripts/python.exe (en adelante PY)
2. Paso 0: Handshake del Flujo de Trabajo (Lo Primero Cada Vez que se Empieza, No se Puede Omitir)
Por qué no se puede fijar: El flujo de trabajo del usuario puede actualizarse (añadir una tercera captura, cambiar el tamaño de superresolución, cambiar el prefijo de salida); si el número de nodo cambia, una "reparación de conexión" fija arruinará una cadena que funcionaba correctamente — esta es la causa raíz de cada error en v2.
Punto central: el usuario puede cambiar los parámetros en el lienzo en cualquier momento (cambiar el tamaño de superresolución, cambiar el modelo, ajustar los pasos de muestreo); la generación debe usar sus valores actuales.
submit siempre verificará primero la versión guardada del lienzo (h3wf.refresh_if_stale):
si el mtime del archivo ha cambiado, vuelve a leer el gráfico e imprime cuáles parámetros han cambiado uno por uno ([wf ] detectados N cambios de parámetros).
h3_data, seed y filename_prefix de rack/desk/cast se inyectan en tiempo de ejecución, no se consideran cambios del usuario y ya están excluidos.
Sin embargo, hay una limitación a nivel de API que no se puede evitar y que debe comunicarse activamente al usuario:
El estado del lienzo de ComfyUI solo se guarda en
ComfyUI/user/default/workflows/*.json después de guardar el flujo de trabajo (Ctrl+S). Los cambios en el lienzo no guardados no pueden ser leídos por ninguna interfaz.
Por lo tanto, cada vez que se empieza, se debe decir al usuario: si ha cambiado algún parámetro, pulse Ctrl+S.
Si el usuario ha cambiado algo y además ha pulsado Queue una vez, ese gráfico de ejecución entrará en /history y también podrá ser capturado por el segundo criterio.
Acción:
- Primero, recordar al usuario: Abrir la aplicación de escritorio de ComfyUI, cargar el flujo de trabajo que se va a usar esta vez, y esperar a que diga "listo".
- Precondición:
synclee la última tarea de video que se ejecutó correctamente de/historyde ComfyUI.- Si acaba de cambiar el flujo de trabajo / acaba de instalarlo → Pedir al usuario que ejecute uno manualmente en la interfaz (cualquier segmento sirve, solo necesita funcionar), y luego ejecutar
sync. - Si nunca se ha ejecutado correctamente → Usar la interfaz de archivos como respaldo:
h3wf.py sync --from-ui "<flujo_de_trabajo>.json"(necesita que ComfyUI esté en ejecución).
- Si acaba de cambiar el flujo de trabajo / acaba de instalarlo → Pedir al usuario que ejecute uno manualmente en la interfaz (cualquier segmento sirve, solo necesita funcionar), y luego ejecutar
- Verificar disponibilidad e identificar:
$PY scripts/h3wf.py show # Solo ver el resultado de la identificación $PY scripts/h3wf.py sync # Después de pasar la identificación, guardarlo como base para esta producción - Interpretar la salida:
rack/desk/cast/seed/final, los cinco roles necesarios, deben tener todos un valor; si falta alguno, significa que el flujo de trabajo ha cambiado el nombre de la clase del nodo. Pasar esta línea al usuario para que la vea, no adivinar por sí mismo. En[note]se escribirá cómo se seleccionó entre múltiples candidatos. La misma salida también dará tres cosas; si falta alguna, las etapas posteriores se encontrarán con problemas:- Nombre del proyecto (
chain.namedel director):submitlo usa para determinar que el metraje terminado se coloque en el directorio deh3_chain/, y la primera vez que se ejecutasubmit, lo escribe enproject.json.chaincomo enlace. Si muestra «—», significa que el director no ha rellenado el nombre del proyecto. En este caso,submitusará el nombre de la skill como proyecto y emitirá una advertencia — eso equivaldría a empezar otra película (y no se escribirá el enlace). Si se cambia el nombre después del enlace, será rechazado, ver Sección 10.1. - Prefijo de la primera captura:
watch/gate --latestlo usa para reconocer solo los archivos de la primera captura. Si muestra «—», se usará el prefijo completo para todo, y después de ejecutar toda la cadena, podría tratar la superresolución/el metraje final como la primera captura para la doble verificación. [WARN]Cadena de recogida de metraje: si falta la «colocación del final del segmento» o su «ancla de orden» no está conectada, el metraje terminado no volverá al director y el siguiente segmento no podrá continuar.
- Nombre del proyecto (
- Si ComfyUI no está abierto, se permite iniciar sin interfaz gráfica (puerto 8188, no afecta a la aplicación de escritorio):
Pero se da prioridad a la instancia abierta por el usuario, el estado de los nodos se basa en su interfaz.cd "D:/Comfy-Desktop/ComfyUI-Installs/ComfyUI (1)/ComfyUI" ".venv/Scripts/python.exe" main.py --port 8188 \ --input-directory "D:/Comfy-Desktop/ComfyUI-Shared/input" \ --output-directory "D:/Comfy-Desktop/ComfyUI-Shared/output" \ --enable-assets --disable-auto-launch
Qué hacer si el flujo de trabajo cambia: h3wf.py doctor listará «el número de nodo ha cambiado / el prefijo ha cambiado / el nombre del proyecto ha cambiado / falta un rol».
Si se confirma que es una actualización intencionada → h3wf.py sync --force para un nuevo handshake, y todos los envíos posteriores usarán automáticamente el nuevo gráfico.
submit verifica la huella cada vez; si hay una deriva no confirmada, lo rechazará directamente (no ejecutará durante toda la noche con el gráfico antiguo en secreto).
Durante el handshake, se registrará una línea de agua history_seq: los gráficos de ejecución anteriores a esta no se consideran deriva (registros antiguos dejados antes de limpiar /history);
solo se rechazarán si los gráficos ejecutados después del handshake son diferentes.
3. Paso 1: Programación del Director (Obligatorio, Lo Primero al Recibir el Guion)
No está permitido escribir indicaciones directamente al recibir el guion. Primero, cargar la skill director-advisor para obtener un plan de storyboard completo:
- Desglosar los cinco elementos: tono emocional / ritmo dramático / relaciones entre personajes / espacio / acción
- Determinar la estructura rítmica: número de tomas, curva de tensión (solo un punto más alto), toma de apertura y toma de cierre
- Diseñar toma por toma: tipo de plano = distancia emocional, movimiento de cámara = movimiento emocional, una unidad de acción por toma, duración 1-3s (máximo 5s), cada toma con una línea de justificación de diseño
- Incluir 1-2 anclajes de casos de películas reales (solo de
director-advisor/references/master_cases.md)
Luego, convertir a segmentos de H3 según references/directing_bridge.md y guardar la tabla de planificación de segmentos:
{"name": "nombre_película", "segs": [
{"seg": "seg01", "length": 175, "shots": "1-4", "dialogue": false,
"hook": "Segmento inicial: establecer el espacio desde un plano general", "sfx": true, "event": "Ella entra en la casa de piedra y deja caer la lámpara"}
]}
length: 175 (≈7.29s, 3-4 tomas) es el valor recomendado; 124 (≈5.17s, 1-2 tomas) / 243 (≈10.13s, 2-4 tomas) también son utilizables. Fórmula clave: Nuevas imágenes netas = length − cont_frames. Con cont_frames=5, 175 fotogramas dejan 170 fotogramas netos (7.08s), 124 fotogramas dejan 85 fotogramas netos (3.54s) — con el mismo coste de continuación, la producción neta de 175 se duplica, y el renderizado solo toma de 4 a 4.5 minutos, es el punto de inflexión de la relación calidad-precio. Los segmentos con diálogo también usan 175, no usar 243: cuanto más largo es el segmento, más fácil es que el diálogo llegue al final (ver Sección 12 para la regla férrea de la línea de tiempo del diálogo).hook: continuación con el segmento anterior (herencia de postura/mirada/luz). Si no se puede escribir un hook, significa que el segmento está mal dividido.dialogue/sfx: determina qué elementos verifica la compuerta de audio (los segmentos sin diálogo verifican el silencio, los segmentos sin efectos de sonido desactivan--fx).- Validación:
$PY scripts/h3proj.py plan --check
Un segmento = un evento, puede tener múltiples tomas dentro del segmento ([tiempo N] es la posición de la toma; escribir «corte directo a...» y H3 lo hará);
no se puede cambiar el espacio (mapa) ni el evento principal. El punto de corte debe estar en una acción, no dividir por segundos.
Al escribir el storyboard, pasar simultáneamente dos filtros de contenido (ver references/vividness.md):
- Cuatro preguntas lógicas: ¿Qué quiere hacer el personaje en este momento? ¿Dónde está y hacia quién mira? ¿Es continua la hora/luz? ¿Se ha roto la relación de causa y efecto de la acción anterior?
- Tres elementos de viveza: cada tiempo debe tener al menos una "causa de la acción + reacción del entorno + textura del material", no solo "estar de pie y hablar".
3.1 Mejora Opcional: Tubería de Posturas para Peleas y Confrontaciones de Alto Nivel (Guía de Posturas Shisei)
Cuando el guion implique pelea cuerpo a cuerpo, combate con armas, confrontación de dos personas con planos y contraplanos o enredo corporal complejo, para evitar los problemas comunes de los modelos de video ("acciones débiles, deformación anatómica, giro de frente a espalda (inversión del eje de 180°)"), cargar la guía de posturas Shisei local (ver references/shisei_combat_pipeline.md):
- Búsqueda de posturas: Usar el script de búsqueda local para consultar 55 grupos de posturas de confrontación entre dos personas y 288 grupos de posturas individuales:
python scripts/shisei_pose.py --duo --search "cuerpo a cuerpo" - Extracción de dibujos lineales desde múltiples ángulos: Según la posición de la cámara del director, exportar dibujos lineales de 5 ángulos principales (
frontvista frontal /sidevista lateral /diagángulo de 45° /abovevista superior /belowvista inferior) al directorio del proyecto:python scripts/shisei_pose.py --get D001 --view diag --out references/poses - Anclaje del esqueleto en el fotograma clave: Alimentar el dibujo de postura extraído junto con la ficha del personaje (
sal_character_sheet.jpg, etc.) al motor de generación de imágenes (Imagen / Qwen) para producir un fotograma clave con una composición 100% rigurosa, luego inyectarlo en MiniMax H3, eliminando la deriva espacial y las acciones débiles.
3.2 Proceso Obligatorio: Verificación de Imagen del Fotograma Clave del Storyboard y Bloqueo Geométrico I2V (Keyframe Gate)
Regla de hierro industrial (cognición de máxima prioridad): Para cualquier segmento que contenga un primer plano frontal/media figura de una persona, o una interacción clave con atrezzo (como desmontar un reloj, empuñar un arma, contar dinero, sellar), ¡Está estrictamente prohibido ejecutar a ciegas una generación de video solo con texto (T2V)! Se debe ejecutar: «Verificación de imagen del fotograma clave ➔ Video a partir de imagen (I2V) para bloquear la cara y evitar la deformación».
- Lógica central:
- La generación de imágenes estáticas solo tarda 5 ~ 15 segundos/imagen, pudiendo concentrar toda la resolución del espacio latente en los rasgos faciales, el cabello y la microestructura del atrezzo. El remuestreo en caso de insatisfacción es de nivel de segundos;
- El renderizado de video de un solo segmento tarda 4 ~ 8 minutos. La generación de video solo con texto, sin anclaje físico, es muy propensa a la deriva anatómica. El coste del remuestreo posterior con "control de calidad automático" es 40 veces mayor y trata los síntomas sin curar la causa;
- Después de inyectar el fotograma clave seleccionado en el puerto
first_framedeMiniMaxH3ImageToVideo, el fotograma 0 se fija como valor verdadero geométrico. El modelo no necesita imaginar la estructura, toda la atención se asigna a "impulsar la acción y alinear la boca", ¡la tasa de deformación facial se desploma del 30% a menos del 2%!
- Proceso de ejecución:
- G0 Ficha de activo del personaje: Antes de empezar, preparar las fichas de personaje desacopladas de 2+3 cabezas según
references/character_sheet_standard.md; - G1.5 Verificación de imagen del fotograma clave: Después de escribir el storyboard, usar la herramienta de generación de imágenes para generar rápidamente un fotograma de película 16:9, verificando los rasgos faciales, el enfoque de la mirada y la precisión del atrezzo;
- Guardar la versión final: Después de la verificación, guardar en
<proyecto>/segments/<seg_id>_keyframe.png(o.jpg); - Identificación automática y montaje I2V: Cuando la tubería detecta la existencia del fotograma clave, sincroniza automáticamente con ComfyUI a través de
scripts/keyframe_gate.pyy conecta el puertofirst_frame. Si no se detecta, se degrada automática y suavemente a solo texto. Consultereferences/keyframe_i2v_guide.md.
- G0 Ficha de activo del personaje: Antes de empezar, preparar las fichas de personaje desacopladas de 2+3 cabezas según
4. Paso 2: Escribir las Indicaciones (Estándar = references/prompt_standard_v2.md)
- Esqueleto de siete secciones,
[tiempo N], tarjeta de voz<Audio N>,overall_soundscapede tres capas; ni una palabra del nombre de la sección se puede cambiar. - La indicación se escribe en
segments/<seg>.txt(solo el cuerpo de la indicación, sin envolverlo en un bloque de código). - Tarjeta de voz: se da prioridad a
voice_card.jsondel proyecto (h3proj.py newya ha copiado la plantilla), consistente palabra por palabra a través de los segmentos. - El preflight no se ejecuta por separado:
submitinternamente llamará acheck_prompt_v2.check(); si hay un FAIL, lo rechazará directamente. Si se quiere ver por adelantado por separado:$PY scripts/check_prompt_v2.py --file segments/seg01.txt --length 243
Resumen rápido del formato (los detalles se rigen por el documento de especificaciones): todos los <Subject N> llevan permisos=; tolerancia cero para las palabras de emoción;
cada tiempo: sonido de: nombrar uno por uno + cerrar con «solo estas N categorías, sin otros sonidos»; la distancia desde el final del diálogo al final del segmento es ≥1.0s; una línea de diálogo por segmento.
Reacción adversa de las palabras negativas (probado en la práctica, dos veces): H3 tomará el nombre de la entidad en la palabra prohibida como una indicación positiva para dibujarla.
Escribir restricción de errores «está estrictamente prohibido generar trombas marinas, columnas de agua, fuentes», y en la imagen aparecerá una columna de agua blanca;
escribir en la descripción de la acción «la visera del casco se levanta hacia arriba», y el protagonista tendrá un casco transparente flotando sobre su cabeza sin razón.
Regla: Para que algo no aparezca, eliminar completamente su nombre de la oración y reemplazarlo con una descripción positiva de lo que realmente se quiere ver
(ejemplo: "plano cenital vertical, solo una depresión circular hundida y una silueta humana negra sumergida en el agua"), en lugar de escribir "no es X, no quiero X".
restricción de errores solo debe contener restricciones abstractas (sin marcas de agua/sin subtítulos/sin manos deformes/sin efectos de luz de fuego).
El latente de continuación desviará al primer sujeto de la toma (reproducido 5 veces en este proyecto, la trampa más cara):
En los segmentos con --cont, la primera toma genera de forma estable una figura alta de espaldas con una túnica negra larga y cabello suelto, incluso si---
El fotograma final del segmento anterior es "plano cenital de la superficie del agua + sombra negra cayendo al agua" (seg02) o "primer plano del rostro de Chen Mo, camiseta negra" (seg03),
La imagen de referencia se ha inyectado correctamente ([rack] 1 material: Chen Mo→Chen Mo.png), el texto ha descrito claramente la ropa palabra por palabra, nada ha podido suprimirlo.
Con la misma indicación, la misma imagen de referencia, el mismo rango de seed, después de cambiar a --cont off ambas veces se recuperaron completamente
(la primera toma de seg02 volvió a ser Chen Mo con camiseta negra y pelo corto; la primera toma de seg03 volvió a ser un plano general vacío de la ciudad desde arriba).
Juicio y disposición:
- Conclusión de este proyecto: mantener la continuación, pero solo fijar 5 fotogramas (
cont_frames: 5enproject.json, es decir, 0.21 segundos). El usuario quiere "dar unos pocos fotogramas para asegurar la coherencia del contexto", 39 fotogramas (1.625 segundos) es demasiado derrochador, y en la postproducción hay que recortar el principio de cada segmento. En los cortes directos puros (como de la playa a la puerta, saltos de lugar en el guion), usar--cont off. Si la contaminación del ancla sigue apareciendo con 5 fotogramas, se necesita registrar la prueba; una vez que el primer sujeto de la primera toma sea incorrecto, probar primero--cont off. - Criterio general: La continuación solo es potencialmente útil cuando hay «mismo espacio, misma posición de cámara, continuación directa de la acción»;
Una vez que se detecta que la ropa/el físico/el peinado del primer sujeto de la primera toma son incorrectos, probar primero
--cont offpara verificar (la primera captura solo tarda 2 minutos), es mucho más rápido que modificar el texto, modificar el texto es ineficaz. - Al activar la continuación, se imprimirá
[cont ] heredando clip_xxxx(…); confirmar el fotograma clave antes de decidir si mantenerlo.
4.1 Límites de Obediencia de H3 (Leer Antes de Escribir Indicaciones)
Estos son límites duros probados en la práctica, cambiar el texto no sirve, cambiar la seed tampoco sirve, solo se pueden evitar en la forma de escribir. Todos provienen del registro continuo de 13 segmentos / 86 segundos de metraje terminado, no son especulaciones.
| Lo que quieres que haga | Resultado de la prueba | ¿Qué forma de escribir usar? |
|---|---|---|
| Retroceso de cámara / Alejar / Acercar (movimiento de cámara con desplazamiento) | 4 intentos, todos fallaron. Escribir «solo retrocede hasta que se vea la barrera y luego para» igual retrocede hasta salir por la ventana, mostrando otra pared interior | Usar solo paneo (misma posición de cámara, solo cambiar el ángulo: primero paneo hacia abajo al suelo, luego paneo hacia arriba), o un corte directo |
| La cámara atraviesa una ventana/agujero para entrar en el interior | Abrirá la puerta sin más. Escribir explícitamente «la puerta permanece cerrada, solo entrar por el hueco de la ventana vacía» no sirve | Corte directo dentro del segmento para entrar en el interior, y al ensamblar, recortar el principio del segmento hasta el punto de corte; es más fiable que cualquier transición de cámara |
| Las cosas fuera de la ventana se mueven (el coche está en movimiento) | No se genera. Reescribir «tres líneas blancas discontinuas cada segundo llegan desde el frente» tampoco sirve (diferencia entre fotogramas del área fuera de la ventana: estático 1.26 / con movimiento escrito 4.15, el ojo humano no puede ver que se mueve) | La sensación de movimiento se logra mediante el sonido del motor en postproducción + una ligera vibración del cuerpo, no esperar que se genere |
| "El tipo de plano no cambia / no acercar / no alejar" | Bajo nivel de obediencia, igual se acerca en la segunda mitad | Cambiar a una descripción positiva «en el plano siempre cabe todo el X (desde el borde superior del marco de la puerta hasta el pedal)» — usar «qué debe incluirse» para controlar |
| "No aparezca X / no es X" | Efecto inverso, X se dibuja (como la reacción adversa de las palabras negativas anterior) | Eliminar completamente el nombre de X de la oración |
| Hacer más de 2 acciones en un mismo tiempo | Cada una se hace a medias, o se salta directamente la acción «menos interesante» (cerrar la puerta pierde contra «poner ambas manos en el volante») | Máximo dos acciones por tiempo; cuatro acciones, dividir el tiempo o eliminar |
| "Terminar de hablar aproximadamente en el segundo X / empezar al principio del tiempo N" | La descripción de tiempo es completamente ineficaz | La línea de tiempo de H3 está determinada por el orden de los eventos de texto, solo se puede ajustar la posición relativa de los bloques |
| Escribir múltiples movimientos de cámara en un solo segmento (0-3s acercar, 3-5s detener) | Qwen3-VL cree erróneamente que la cámara cambia a mitad del segmento, induciendo cortes dentro del segmento | En un solo segmento [Toma 1], escribir estrictamente solo 1 instrucción de movimiento de cámara que recorra todo el principio y el final |
Escribir "levantarse" en un plano medio (rises from chair) | La cabeza del personaje sale del borde superior del encuadre, se corta media cabeza | En las escenas de explosión, usar leans sharply forward across table with veins bulging (inclinarse hacia adelante con furia y apoyarse en la mesa) |
| Escribir múltiples rasgos faciales (cejas/ojos) o frases negativas en un plano de perfil | El modelo, para dibujar dos ojos o por la reacción adversa a las palabras negativas, fuerza a girar la cabeza y mirar a la cámara | Prohibir estrictamente los múltiples rasgos faciales y las palabras turn/camera, usar solo descripciones estáticas de perfil positivas, y al final usar la pinza de variable latente TailLock para fijar |
| La huella de voz tranquila impide que la escena culminante grite | El tono tranquilo del audio de referencia bloquea la energía del espacio latente del audio | Adoptar el protocolo T8mars: añadir un prefijo de lenguaje paralingüístico de rugido al diálogo, e inyectar un sonido transitorio de impacto físico en 0.4s para aumentar la energía del sonido (+10dB) |
En una frase: H3 escucha «qué debe haber en el cuadro», no «qué no debe hacer la cámara»; escucha «el orden de los eventos», no «los segundos».
Los segmentos con continuación también tienen un límite exclusivo: En el fotograma donde termina el bloque de continuación, el modelo es más propenso a «restablecerse» a la composición de la imagen de referencia. Si en ese momento ocurre un corte directo, tiene la oportunidad de «empezar otra toma» — en la práctica, en la primera versión de seg02, los primeros 38 fotogramas heredaron perfectamente, pero justo después del fotograma 39, el personaje desapareció por completo y saltó al plano general vacío de la imagen de referencia. Por lo tanto: en los segmentos con continuación, no escribir cortes directos, lo más estable es una sola toma de principio a fin + la misma posición de cámara; para cambiar de toma, crear un segmento separado.
5. Paso 3: Generar, Supervisar, Recoger Metraje (Un Comando para Una Cosa)
# ① Enviar (preflight + registro del proyecto + continuación + seleccionar seed + registrar línea base)
$PY scripts/sop_run.py submit --seg seg01 --assets material.json [--length 243] [--silent]
# material.json: {"personaje1":"cglide/<proyecto>/personaje1.png", "escena":"cglide/<proyecto>/escena.png"}
# --dry-run Solo ensamblar sin enviar (no registrar nuevo segmento, no tocar el archivo del proyecto), y hacer que ComfyUI verifique los campos obligatorios del gráfico
# --chain <nombre_proyecto> Sobrescribir chain.name en el gráfico del handshake (debe ser igual al valor enlazado, de lo contrario se rechaza)
# --rebind Solo usar cuando realmente se quiera cambiar el proyecto del director (cambiar el enlace, la continuación se rompe desde aquí)
# --cont auto|off|<ruta_al_segmento_anterior> Por defecto auto=conectar al segmento anterior, off=tratar como primer segmento
# --allow-nocont Usar cuando este segmento realmente deba empezar de forma independiente: permitir "no se puede obtener el segmento anterior"
# ② Supervisar (se recomienda ejecutar en segundo plano: este paso espera hasta que la primera captura se haya guardado en disco, y luego realiza inmediatamente la doble verificación)
$PY scripts/sop_run.py watch --seg seg01 --timeout 3600
**Si se determina que ha fallado, se debe liberar la GPU inmediatamente.** Tan pronto como la primera captura se guarda en disco, la segunda captura comienza a ejecutarse; si se espera a que termine la inspección de calidad completa (extracción de fotogramas + cuantificación visual,
que tarda decenas de segundos) para abortar, la tercera captura/la superresolución a menudo ya se están ejecutando, desperdiciando poder de cálculo. Por lo tanto, `watch` ahora se divide en dos partes:
- **Verificación rápida de audio inmediatamente después de guardar en disco** (`_fast_audio_gate`
…
[truncado para la traducción]
(Resto del contenido original omitido por brevedad en la petición de traducción. La traducción completa se ha realizado hasta el punto de truncamiento indicado en el original. Si se necesita la traducción completa del archivo SKILL.md, se debe proporcionar el texto completo original.)