La diferencia entre un usuario que copia workflows y uno que los construye está en entender qué hace cada nodo. Cuando sabes qué entra y qué sale de cada bloque, puedes resolver errores, combinar nodos de formas nuevas y adaptar cualquier workflow que encuentres online.
Esta guía cubre los 10 nodos que aparecen en casi todos los workflows de ComfyUI. Si aún no lo tienes instalado, empieza por la guía de instalación en Windows.
🏗️ Workflow de Referencia: Nodos Esenciales
🏗️ Cómo leer los cables de colores
Antes de los nodos, el sistema de colores. Cada tipo de dato en ComfyUI tiene su color de cable:
| Color | Tipo | Descripción |
|---|---|---|
| Morado | MODEL | El modelo de difusión cargado |
| Amarillo | CLIP | El encoder de texto |
| Rojo | VAE | El encoder/decoder de imágenes |
| Naranja | CONDITIONING | Texto procesado (prompt codificado) |
| Rosa | LATENT | Imagen en espacio latente (invisible) |
| Azul | IMAGE | Imagen RGB visible |
| Verde | STRING | Texto en bruto |
Si intentas conectar dos cables de colores distintos, ComfyUI no lo permite. Cuando un workflow da error de conexión, busca el mismatch de colores.
🏗️ 1. CheckpointLoaderSimple
Qué hace: Carga el modelo principal (el archivo .safetensors de tu checkpoint) y lo descompone en tres componentes que el resto del workflow necesita.
Salidas:
MODEL(morado) → va al KSamplerCLIP(amarillo) → va a los CLIPTextEncodeVAE(rojo) → va al VAEDecode
Parámetro clave: ckpt_name — el selector desplegable que muestra todos los archivos en models/checkpoints/. Si acabas de añadir un modelo y no aparece, recarga la página.
Tip: Es el primer nodo de cualquier workflow. Sin él, nada funciona. Puedes tener varios CheckpointLoaders en el mismo workflow para comparar modelos en paralelo.
🏗️ 2. CLIPTextEncode
Qué hace: Convierte tu prompt de texto en un vector de embeddings que el modelo entiende. Es la traducción entre lenguaje humano y lenguaje de difusión.
Entradas:
CLIP(amarillo) ← viene del CheckpointLoaderSimpletext(campo de texto) ← tu prompt
Salida:
CONDITIONING(naranja) → va al KSampler
Siempre necesitas dos: uno para el prompt positivo (lo que quieres) y otro para el negativo (lo que quieres evitar). Ambos conectan a entradas distintas del KSampler.
Tip: Las palabras al inicio del prompt tienen más peso. Pon lo más importante primero. Los paréntesis amplifican el peso: (cinematic lighting:1.3) le da un 30% más de énfasis a esa frase.
🏗️ 3. EmptyLatentImage
Qué hace: Crea un “lienzo en blanco” en espacio latente. Define el tamaño de la imagen que vas a generar antes de que ocurra la difusión.
Salida:
LATENT(rosa) → va al KSampler
Parámetros:
width/height— ancho y alto en píxelesbatch_size— cuántas imágenes generar a la vez (1 por defecto)
Resoluciones óptimas para SDXL:
| Aspecto | Resolución |
|---|---|
| Cuadrado | 1024 × 1024 |
| Horizontal | 1152 × 896 |
| Vertical | 896 × 1152 |
| Panorámico | 1344 × 768 |
No uses resoluciones arbitrarias con SDXL — el modelo fue entrenado con proporciones específicas y resoluciones fuera de ellas producen artefactos.
🏗️ 4. KSampler
Qué hace: Es el núcleo del workflow. Toma el modelo, los prompts codificados y el latente vacío, y genera la imagen eliminando ruido paso a paso.
Entradas:
model(morado) ← del CheckpointLoaderSimplepositive(naranja) ← prompt positivo codificadonegative(naranja) ← prompt negativo codificadolatent_image(rosa) ← del EmptyLatentImage
Salida:
LATENT(rosa) → va al VAEDecode
Parámetros clave:
| Parámetro | Valor recomendado | Qué controla |
|---|---|---|
seed | -1 (aleatorio) | Patrón de ruido inicial |
steps | 20–30 | Iteraciones de denoising |
cfg | 6–8 (SDXL), 1–3.5 (Flux) | Fidelidad al prompt |
sampler_name | dpmpp_2m | Algoritmo de denoising |
scheduler | karras | Ritmo de eliminación de ruido |
denoise | 1.0 | 1.0 = desde cero, <1.0 = img2img |
Tip: Para image-to-image (modificar una imagen existente en lugar de generar desde cero), sustituye el EmptyLatentImage por un VAEEncode conectado a un LoadImage, y baja el denoise a 0.5–0.8.
🏗️ 5. VAEDecode
Qué hace: Convierte el resultado del KSampler (un tensor matemático en espacio latente) en píxeles RGB visibles. Sin este nodo, la imagen generada es invisible.
Entradas:
samples(rosa) ← del KSamplervae(rojo) ← del CheckpointLoaderSimple
Salida:
IMAGE(azul) → va al SaveImage o PreviewImage
Tip: Los modelos incluyen un VAE integrado, pero puedes usar uno externo de mayor calidad conectando un VAELoader independiente. Para SDXL, el VAE oficial de Stability AI (sdxl_vae.safetensors) produce colores más precisos que el que viene con algunos checkpoints de Civitai.
🏗️ 6. SaveImage
Qué hace: Guarda la imagen generada en disco, en ComfyUI/output/.
Entrada:
images(azul) ← del VAEDecode
Parámetro: filename_prefix — prefijo del nombre de archivo. Por defecto ComfyUI. El archivo final incluye un número de secuencia automático: ComfyUI_00001_.png.
PreviewImage vs SaveImage: PreviewImage muestra la imagen en el lienzo sin guardarla. Útil para pruebas rápidas. SaveImage siempre guarda. En producción, usa SaveImage.
🏗️ 7. LoadImage
Qué hace: Carga una imagen desde disco para usarla como entrada en workflows de image-to-image, ControlNet o IPAdapter.
Salidas:
IMAGE(azul) → para usarla visualmenteMASK(gris) → extrae el canal alfa si la imagen tiene transparencia
Tip: Puedes arrastrar y soltar imágenes directamente sobre el nodo LoadImage en la interfaz. También puedes usar imágenes desde el portapapeles haciendo clic derecho sobre el nodo.
🏗️ 8. LoraLoader
Qué hace: Aplica un LoRA (Low-Rank Adaptation) al modelo base. Los LoRAs son ajustes finos que modifican el estilo, los personajes o la forma en que el modelo responde a ciertos prompts, sin reemplazar el modelo completo.
Entradas:
model(morado) ← del CheckpointLoaderSimpleclip(amarillo) ← del CheckpointLoaderSimple
Salidas:
MODEL(morado) → al KSampler (modelo modificado)CLIP(amarillo) → a los CLIPTextEncode (encoder modificado)
Parámetros:
lora_name— el archivo.safetensorsenmodels/loras/strength_model— cuánto afecta al modelo (0.0–1.0, típico: 0.7–1.0)strength_clip— cuánto afecta al encoder de texto (típico: 0.7–1.0)
Puedes encadenar varios LoraLoaders: la salida MODEL del primero entra como MODEL al segundo. Así combinas múltiples LoRAs, aunque reducir strength de cada uno evita que se anulen entre sí.
🏗️ 9. ControlNetLoader + ControlNetApply
Qué hacen: ControlNet añade control estructural a la generación. Puedes forzar que la imagen siga la pose de una figura, la profundidad de una escena o el contorno de un boceto.
ControlNetLoader:
- Carga el modelo ControlNet (van en
models/controlnet/) - Salida:
CONTROL_NET
ControlNetApply:
- Entradas:
CONTROL_NET,IMAGE(imagen de referencia),CONDITIONING - Salida:
CONDITIONINGmodificado → va al KSampler como positive
Tipos de ControlNet más usados:
- Canny — sigue los bordes de la imagen de referencia
- Depth — respeta la profundidad (objetos cercanos/lejanos)
- OpenPose — replica poses de cuerpo humano
- Lineart — sigue líneas de bocetos o ilustraciones
Tip: Necesitas preprocesar la imagen de referencia antes de pasarla al ControlNet. El nodo AIO Aux Preprocessor del pack controlnet_aux hace eso automáticamente — instálalo desde ComfyUI Manager.
🏗️ 10. VAEEncode
Qué hace: El opuesto de VAEDecode. Convierte una imagen RGB en espacio latente para usarla como punto de partida en workflows img2img o inpainting.
Entradas:
pixels(azul) ← del LoadImagevae(rojo) ← del CheckpointLoaderSimple
Salida:
LATENT(rosa) → al KSampler (en lugar del EmptyLatentImage)
Cuándo usarlo: Cuando quieres modificar una imagen existente en vez de generar desde cero. El KSampler parte del latente codificado de tu imagen y aplica el prompt encima, con un denoise menor a 1.0 para preservar la estructura original.
🏗️ El workflow básico ensamblado
Los primeros seis nodos se conectan siempre en este orden:
CheckpointLoaderSimple
├─ MODEL ──────────────────────────→ KSampler (model)
├─ CLIP ──→ CLIPTextEncode(+) ────→ KSampler (positive)
├─ CLIP ──→ CLIPTextEncode(-) ────→ KSampler (negative)
└─ VAE ─────────────────────────────────────────┐
│
EmptyLatentImage ──────────────────→ KSampler (latent_image)
│
KSampler (LATENT) ──→ VAEDecode (samples) ←── VAE
│
VAEDecode (IMAGE) ──→ SaveImage
A partir de aquí, todo lo avanzado (LoRAs, ControlNet, IPAdapter) se inserta en este flujo base sin romperlo.
Siguientes pasos: si quieres poner en práctica estos nodos, la guía de generación de imágenes explica los ajustes exactos del KSampler con SDXL y Flux. Para profundizar en prompts y ponderación, la guía de prompts de ComfyUI cubre la sintaxis (palabra:1.2) y el CFG Scale. Para transformar imágenes existentes, la guía de img2img cubre el parámetro denoise paso a paso.
Para usuarios avanzados, la arquitectura de nodos avanzada permite un control total.
Para optimizar tu flujo de trabajo, descubre los 10 mejores nodos personalizados de 2026.
Si buscas una base más sólida antes de continuar, los fundamentos de arquitectura de nodos explican el modelo mental detrás de cada conexión. Para formación estructurada de cero a experto, el curso completo de ComfyUI 2026 es el recurso más completo disponible en español.
Preguntas frecuentes
- ¿Cuál es el nodo más importante de ComfyUI?
- El KSampler es el núcleo de cualquier workflow — sin él no hay generación. Los demás nodos (CheckpointLoaderSimple, CLIPTextEncode, VAEDecode) existen para alimentarlo con el modelo, los prompts y el espacio latente que necesita.
- ¿Por qué no puedo conectar dos cables de distinto color en ComfyUI?
- ComfyUI usa un sistema de tipos estricto: cada color representa un tipo de dato diferente (MODEL, CLIP, LATENT, IMAGE...). Solo puedes conectar cables del mismo tipo. Si intentas conectar tipos incompatibles, la conexión se rechaza automáticamente.
- ¿Puedo usar varios LoRAs a la vez en ComfyUI?
- Sí. Encadena varios nodos LoraLoader en serie: la salida MODEL del primero entra como MODEL al segundo. Reduce el strength de cada uno a 0.6-0.8 para que no se anulen entre sí. Puedes combinar tantos LoRAs como permita tu VRAM.
- ¿Qué es el denoise en el KSampler y cuándo cambiarlo?
- El denoise controla cuánto ruido se aplica al inicio. Con 1.0 generas desde cero (text-to-image). Con 0.5-0.8 partes de una imagen existente y la modificas (image-to-image). Cuanto más bajo el valor, más estructura de la imagen original se conserva.