Communitygithub.com

comfy-h3-video-producer

Tubería de producción automática de videos de script a video con ComfyUI (MiniMax H3). Se usa cuando el usuario proporciona un guion para producir storyboards con ComfyUI, o menciona términos como "primera captura/segunda captura/superresolución/suite monitor/CSGlide/flujo de trabajo para generar video". Cubre: handshake del flujo de trabajo, planificación del director y segmentación, indicaciones H3, envío y supervisión automática, compuerta de doble verificación de la primera captura, recogida de metraje, limpieza de ruido de fondo, mezcla de audio, concatenación y reanudación de producción.

¿Qué es comfy-h3-video-producer?

Esta habilidad es una tubería de producción de video altamente profesional e industrializada, diseñada para convertir guiones de series cortas en videos completos utilizando ComfyUI y el modelo MiniMax H3. Su objetivo principal es transformar un proceso de "generación de video aleatoria + control de calidad posterior costoso" en un flujo de trabajo de "control de imagen previo de bajo costo + bloqueo facial I2V + mezcla de audio con ducking de nivel cinematográfico". La tubería maneja todo el proceso, desde la interpretación del guion, la planificación del director, la verificación de fotogramas clave, la redacción de indicaciones, el envío a ComfyUI, la supervisión de la tarea, la doble verificación de calidad, la recogida de metraje, la limpieza de audio de fondo, la mezcla con ducking de audio, la concatenación final del video, hasta la entrega. Está diseñada para plataformas como Claude Code, Cursor y Codex, y opera bajo el principio fundamental de que una tarea equivale a un directorio de proyecto local más un nombre de proyecto de director, garantizando la continuidad de la producción y evitando problemas de archivos huérfanos. La habilidad incluye herramientas como `scripts/h3wf.py` para el handshake del flujo de trabajo, `scripts/sop_run.py` para envío y supervisión, `scripts/h3proj.py` para gestión de proyectos y compuertas de calidad, `scripts/keyframe_gate.py` para verificación de fotogramas clave e inyección I2V, y `scripts/cinematic_audio_mixer.py` para mezcla de audio profesional. La habilidad impone estrictas reglas de comportamiento al agente, prohibiendo saltarse verificaciones, modificar conexiones de nodos fijas o mover archivos de proyecto al directorio de la habilidad, garantizando así la robustez y repetibilidad del proceso de producción.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/abserari/drama-production-skills/tree/HEAD/skills/comfy-h3-video-producer

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

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ícitamente spoken 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 obligatoriamente Strict 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_frame para 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%. Consulte references/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 sidechaincompress nativo 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 herramienta scripts/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 la concat, 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ún chain.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 campo chain de project.json, y submit lo 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énResponsable
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

  1. No enviar sin haber realizado el handshake del flujo de trabajo (wf_map.json no existe).
  2. No saltarse la compuerta (gate) de doble verificación para ir directamente a finish; el script lo rechazará, no intente evitarlo.
  3. No escribir el estado/los fotogramas extraídos/el wav temporal en el directorio de la skill (paths.py tiene barreras de protección estrictas).
  4. 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.
  5. 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_frame para usar el modo I2V y bloquear la cara y el atrezzo.
  6. 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).
  7. 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)

HerramientaFunciónSubcomandos Clave
scripts/h3wf.pyHandshake del flujo de trabajo: leer los nodos que realmente se han ejecutado desde ComfyUI, identificar automáticamente los roles de los nodossync show doctor
scripts/sop_run.pyProducción: envío (incluye preflight), supervisión automática, esperar el metraje finalsubmit watch final abort
scripts/h3proj.pyGestión del proyecto y compuertas: registro de trabajo, doble verificación de la primera captura, firma visual, recogida de metraje, concatenación, limpieza de residuosnew status gate review finish concat residue
scripts/keyframe_gate.pyVerificació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.pyFlujo 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.pyMezcla 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.pyComparació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.pyControl 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:

  1. 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".
  2. Precondición: sync lee la última tarea de video que se ejecutó correctamente de /history de 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).
  3. 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
    
  4. 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.name del director): submit lo usa para determinar que el metraje terminado se coloque en el directorio de h3_chain/, y la primera vez que se ejecuta submit, lo escribe en project.json.chain como enlace. Si muestra «—», significa que el director no ha rellenado el nombre del proyecto. En este caso, submit usará 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 --latest lo 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.
  5. Si ComfyUI no está abierto, se permite iniciar sin interfaz gráfica (puerto 8188, no afecta a la aplicación de escritorio):
    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
    
    Pero se da prioridad a la instancia abierta por el usuario, el estado de los nodos se basa en su interfaz.

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:

  1. Desglosar los cinco elementos: tono emocional / ritmo dramático / relaciones entre personajes / espacio / acción
  2. 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
  3. 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
  4. 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 (front vista frontal / side vista lateral / diag ángulo de 45° / above vista superior / below vista 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».

  1. 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_frame de MiniMaxH3ImageToVideo, 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%!
  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.py y conecta el puerto first_frame. Si no se detecta, se degrada automática y suavemente a solo texto. Consulte references/keyframe_i2v_guide.md.

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_soundscape de 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.json del proyecto (h3proj.py new ya ha copiado la plantilla), consistente palabra por palabra a través de los segmentos.
  • El preflight no se ejecuta por separado: submit internamente llamará a check_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: 5 en project.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 off para 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 hagaResultado 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 interiorUsar 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 interiorAbrirá la puerta sin más. Escribir explícitamente «la puerta permanece cerrada, solo entrar por el hueco de la ventana vacía» no sirveCorte 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 mitadCambiar 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 tiempoCada 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 ineficazLa 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 segmentoEn 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 cabezaEn 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 perfilEl 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ámaraProhibir 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 griteEl tono tranquilo del audio de referencia bloquea la energía del espacio latente del audioAdoptar 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.)

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

comfy-h3-render-core

短剧工业化管线·第 3 工序:H3 物理视频渲染与防翻车调度。负责与本地 ComfyUI 服务交互,调度 MiniMax H3 进行 Turbo 8-step 视频生成。硬核沉淀:Windows WDDM 驱动锁防御、潜空间 32 整除铁律、单人发音锁定与全员闭嘴抑制指令装配、首帧 I2V 安全注入、分镜间显存防泄漏。

drama-audio-soundstage

短剧工业化管线·第 4 工序:声音工程与智能避让配乐。负责 H3 视频生成后的声音精修。硬核沉淀:谱减法音频门控(消灭风噪/电流床音)、Whisper ASR 纯普通话语种漂移拦截、FFmpeg 原生侧链动态避让混音(Sidechain Ducking,台词开口 BGM 瞬降 -14dB,闭嘴扬起)。

drama-director-staging

短剧工业化管线·第 1 工序:编剧与导演分镜调度。负责将剧情大纲或小说文本转化为符合短剧视听规律的工业级分镜。内置:6 大动态运镜轮换决策树、台词纯中文汉字归一化(数字大写)、短剧快节奏 20~28 字密度调控、单人发言与旁观者闭嘴标注。

drama-finishing-upscaler

短剧工业化管线·第 5 工序:终期成片与 1080p 超分增强。负责全集分镜无损拼接与院线级 1080p 超分辨率放大。硬核沉淀:FFmpeg concat 零损耗直拼、RealESRGAN x2plus GPU 独占 FP16 批量超分(~4.8fps)、原生高质量避让音轨无损混流、ffprobe 工业级物理参数验收。

drama-keyframe-forge

短剧工业化管线·第 2 工序:分镜定帧与资产一致性。负责在视频渲染前,建立全局风格母卡 (Style Bible),并为每个分镜前置生成“场景+人物+道具”三合一的 16:9 高清定帧垫图。彻底根治 T2V 盲跑带来的人脸变形、角色换脸、场景变色与道具软化。

Skills relacionados