Automatizar ComfyUI con PHP: De los errores a la solución

ComfyUI no es una herramienta de línea de comandos nativa, pero su arquitectura basada en API permite ejecutar workflows desde PHP. En este artículo, analizamos el proceso de automatización: cómo configurar un script para tomar una imagen y pasarla por un pipeline complejo sin tocar la interfaz gráfica.

A digital illustration of a server environment with flowing data streams representing automated workflows.
La arquitectura de automatización de ComfyUI en un entorno de servidor moderno.

El primer tropiezo: IDs numéricos y estructuras rotas

Al escribir el script inicial, encontramos un error de tipo inmediatamente. El código intentaba acceder a los nodos del workflow como si fueran enteros simples:

$workflow["prompt"]["579"]["inputs"]["image"] = "ruta.png";

Esto provocó un TypeError, ya que la API esperaba objetos con metadatos esenciales como class_type. El error indicaba claramente que la estructura de los nodos estaba incompleta, perdiendo información crítica al intentar acceder a índices numéricos sin definir sus claves.

A close-up view of a monitor showing prominent red error indicators and text labels for debugging technical issues.
Una pantalla de ordenador mostrando errores técnicos rojos y códigos de depuración durante el proceso.

El segundo tropiezo: La trampa del formato de archivo JSON

Ajustamos el acceso a los nodos, pero surgió un nuevo problema. ComfyUI guarda sus workflows en diferentes formatos; al cargar el archivo estándar de la interfaz, el código PHP lo envió con una capa extra de anidación:

$data = ["prompt" => $workflow];

Esto generó un error missing_node_type. Al inspeccionar el JSON, descubrimos que la raíz del archivo ya contenía el objeto prompt, por lo que el script estaba duplicando la estructura. La solución fue simple pero crítica: acceder directamente al contenido de la primera clave para evitar el nivel extra.

$workflow = json_decode(file_get_contents("workflow.json"), true);
$data = ["prompt" => $workflow["prompt"]];

El resultado final

Una vez corregidas ambas capas de la estructura, el script funcionó correctamente. Ahora el pipeline toma una imagen desde la línea de comandos y la procesa a través del workflow completo sin intervención manual.

An illustration showing a green success indicator and a seamless data flow representing a resolved technical problem.
El resultado final exitoso de la automatización con un flujo de datos verde y fluido.

La lección principal es que, aunque la automatización parece directa, requiere una validación estricta del formato de archivo y la estructura de los datos. Con estas correcciones, el flujo se convierte en una herramienta potente para ejecutar tareas complejas desde la terminal.