DEV Community

jesus manrique
jesus manrique

Posted on • Originally published at guayoyo.tech

Imágenes que Venden: Generación Multimedia Sin Diseñador y Con Consistencia de Marca — Parte 3 de 5

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í (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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Tags de calidad universal:

masterpiece, best quality, 8k, highres, sharp focus, 
intricate details, professional lighting
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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] }}
}
Enter fullscreen mode Exit fullscreen mode

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 }}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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)