En el artículo anterior construiste un agente que genera copy on-brand con memoria y contexto. Pero un post en redes sin imagen es un post invisible.
El problema: un diseñador cobra $500-$1500/mes. Las herramientas cloud de IA (DALL-E, Midjourney) cuestan $20-$60/mes cada una y no entienden tu marca. Cada imagen que generas se ve distinta.
La solución: Stable Diffusion corriendo en tu infraestructura, con LoRAs que aprenden tu identidad visual. Cuesta $0 adicional por imagen y produce resultados con consistencia de marca.
¿Por Qué Stable Diffusion en Vez de DALL-E o Midjourney?
| Comparación | DALL-E / Midjourney | Stable Diffusion Self-Hosted |
|---|---|---|
| Costo | $20-60/mes | $0/imagen (GPU que ya tienes) |
| API para automatizar | Sí | Sí (ComfyUI) |
| Consistencia visual | Baja (prompts sueltos) | Alta (LoRAs de marca) |
| Privacidad de datos | Tus imágenes van a OpenAI | Todo en tu servidor |
| Control técnico | Limitado | Total (prompts, modelos, dimensiones) |
Stable Diffusion convierte texto en imagen. ComfyUI lo convierte en API automatizable. Las LoRAs convierten resultados genéricos en contenido de marca.
Paso 1: Habilitar ComfyUI en Modo API
# Instalación con soporte GPU (NVIDIA)
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
pip install -r requirements.txt
# Descarga un modelo base (SDXL recomendado para calidad)
# Coloca el archivo .safetensors en ComfyUI/models/checkpoints/
# Iniciar en modo API (sin interfaz gráfica)
python main.py --listen 0.0.0.0 --port 8188 --api
ComfyUI expone endpoints REST:
-
POST /api/prompt— ejecuta un workflow -
GET /api/history/{prompt_id}— obtiene resultado -
GET /api/view?filename={name}— descarga la imagen
Paso 2: Estructura de un Prompt que Vende
Un buen prompt para redes sociales no es "una imagen bonita de tecnología". Es una instrucción técnica precisa:
(quality_tags) subject_description, style_directive,
lighting_setup, color_palette, camera_framing,
negative_prompt
Ejemplo real para un post de Guayoyo Tech:
masterpiece, best quality, 8k, professional photo of a
modern developer workspace with multiple monitors showing
code and dashboards, clean minimalist desk, warm ambient lighting
from desk lamp, blue and teal accent colors (#1A73E8 #22D3EE),
shallow depth of field, 1080x1080 square composition
Negative: lowres, bad anatomy, text, watermark, blurry,
oversaturated, people, hands, messy desk, dark shadows
Tags de calidad universal:
masterpiece, best quality, 8k, highres, sharp focus,
intricate details, professional lighting
Estilos por tipo de contenido:
-
Técnico/DevOps:
isometric view, clean technical diagram, blueprint aesthetic, dark mode UI -
Empresarial:
corporate photography, glass office, professional atmosphere, natural window light -
Abstracto/Conceptual:
digital art, abstract geometry, tech wave, gradient mesh, minimal
Paleta de colores Guayoyo Tech:
blue and teal accents (#1A73E8, #22D3EE) on dark background (#0b1120)
Paso 3: LoRAs — La Magia de la Consistencia Visual
Un LoRA (Low-Rank Adaptation) es un mini-modelo que se acopla a Stable Diffusion para enseñarle un concepto específico: tu logotipo, tu estilo visual, tu paleta de colores.
Opción A: Usar LoRAs públicas (gratis)
Hay miles en Civitai.com. Para un estilo tech/moderno:
# Descarga LoRAs populares
wget https://civitai.com/api/download/models/XXXXX -O ComfyUI/models/loras/tech-style.safetensors
En el prompt: <lora:tech-style:0.8> modern developer workspace...
Opción B: Entrenar tu propio LoRA (~$2 en GPU cloud)
Con 10-15 imágenes de referencia de tu marca (capturas de tu web, posts anteriores, paleta de colores):
# Con Kohya SS (herramienta open-source)
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
# Entrena con 10-15 imágenes de referencia → ~30 min en GPU T4
Un LoRA entrenado con tus assets produce imágenes que parecen hechas por tu equipo de diseño.
Paso 4: Workflow de ComfyUI como API JSON
ComfyUI usa workflows en JSON. Exportas uno desde la UI y lo envías por API:
{
"3": {
"class_type": "KSampler",
"inputs": {
"seed": 42,
"steps": 25,
"cfg": 7.5,
"sampler_name": "euler_ancestral",
"scheduler": "normal",
"denoise": 1.0,
"model": ["4", 0],
"positive": ["6", 0],
"negative": ["7", 0],
"latent_image": ["5", 0]
}
},
"4": { "class_type": "CheckpointLoaderSimple", "inputs": { "ckpt_name": "sd_xl_base_1.0.safetensors" }},
"5": { "class_type": "EmptyLatentImage", "inputs": { "width": 1080, "height": 1080, "batch_size": 1 }},
"6": { "class_type": "CLIPTextEncode", "inputs": { "text": "YOUR PROMPT HERE", "clip": ["4", 1] }},
"7": { "class_type": "CLIPTextEncode", "inputs": { "text": "YOUR NEGATIVE HERE", "clip": ["4", 1] }},
"8": { "class_type": "VAEDecode", "inputs": { "samples": ["3", 0], "vae": ["4", 2] }},
"9": { "class_type": "SaveImage", "inputs": { "filename_prefix": "guayoyo_post", "images": ["8", 0] }}
}
Nodo HTTP Request en n8n para disparar generación:
POST http://localhost:8188/api/prompt
Headers: Content-Type: application/json
Body: { "prompt": {{ $json.comfyui_workflow }} }
// Respuesta: { "prompt_id": "abc-123" }
// Esperar y obtener resultado:
GET http://localhost:8188/api/history/abc-123
// Descargar imagen:
GET http://localhost:8188/api/view?filename={{ $json.filename }}
Paso 5: Dimensiones por Plataforma
| Plataforma | Formato | Dimensiones |
|---|---|---|
| Instagram Feed (cuadrado) | 1:1 | 1080×1080 |
| Instagram Feed (vertical) | 4:5 | 1080×1350 |
| Instagram Story / Reel | 9:16 | 1080×1920 |
| TikTok | 9:16 | 1080×1920 |
| Facebook / LinkedIn | 1.91:1 | 1200×630 |
En el JSON de ComfyUI, cambias width y height en el nodo EmptyLatentImage según la plataforma.
Paso 6: Validación Automática de Calidad
No todas las imágenes salen bien. Un nodo de validación con Python Pillow:
from PIL import Image
import io, requests
# Descargar imagen generada
img = Image.open(io.BytesIO(requests.get(image_url).content))
# Checks mínimos
width, height = img.size
if width < 1000 or height < 1000:
raise ValueError("Imagen demasiado pequeña")
# Detectar imágenes completamente negras o blancas
pixels = list(img.getdata())
avg_brightness = sum(sum(p[:3])/3 for p in pixels) / len(pixels)
if avg_brightness < 10 or avg_brightness > 245:
raise ValueError("Imagen completamente negra o blanca")
# Detectar bajo contraste (borroso)
# Si < 20% de píxeles tienen desviación >30 del promedio → probablemente borroso
Si la validación falla, el flujo reintenta automáticamente con otra seed.
El Nodo de Imagen en tu Pipeline
Tu flujo de n8n ahora tiene 3 nuevos nodos después del agente:
Agente (copy) → ComfyUI Prompt Builder → POST ComfyUI API
→ Esperar 10s → GET Resultado → Validación →
├─ OK → Preview WhatsApp (Artículo 4)
└─ Fallo → Reintentar (seed + 1000)
En ~30 segundos tienes una imagen on-brand, validada, lista para preview. Sin diseñador. Sin watermark. Sin suscripción.
¿Quieres un pipeline de contenido auto-hospedado que genere imágenes con la consistencia visual de tu marca? En Guayoyo Tech diseñamos e implementamos la solución completa — con tu infraestructura, tus datos, tu control.
Top comments (0)