Todas las fotos que ves en este blog — la persona sonriendo frente al portátil, el equipo en la reunión, el taller con la máquina láser — están generadas con IA. Ninguna salió de un banco de imágenes, ninguna costó dinero por unidad, y todas se generaron en mi propio PC.

Cuando rediseñé farp.dev necesitaba más de cien imágenes para el blog. Las opciones eran tres: banco de imágenes de pago (caro y con ese aire genérico que todos reconocemos a la primera), servicios de IA por suscripción (cómodos, pero pagas cada mes), o montar el flujo en mi propio equipo. Elegí lo tercero, y esta guía documenta exactamente cómo lo hago — incluido el hallazgo que marcó la diferencia entre "imagen que grita IA" e "imagen que parece foto": no está en el modelo, está en cómo escribes el prompt.
En pocas palabras: vas a montar un flujo para generar imágenes realistas con IA en tu ordenador, sin pagar por imagen, y dejarlas optimizadas para web (de ~1,3 MB a ~45 KB). Tiempo: 2-3 horas la primera vez (la mitad es descargar cosas); después, minutos por imagen. Nivel: principiante-intermedio — no hace falta programar salvo para el paso de optimización, que es copiar un snippet.
Antes de empezar
Para la vía local necesitas:
- Una GPU con al menos 8 GB de VRAM. Yo uso una RTX 4090, que genera una imagen en segundos, pero una RTX 3060 de 12 GB funciona perfectamente (tarda más, no falla). Sin GPU dedicada, la generación local es demasiado lenta para ser práctica.
- Unos 20-30 GB de disco entre ComfyUI y los modelos.
- Windows, Linux o Mac (en Mac con Apple Silicon funciona, más lento).
Cuándo NO te conviene la vía local:
- Si no tienes GPU, no la compres para esto. Usa un servicio de pago (Ideogram, Flux en algún proveedor de API, Midjourney) o generación por API con costo por imagen. Para 5-10 imágenes al mes, el servicio sale más barato que el hardware — la cuenta cambia cuando necesitas cientos, como fue mi caso.
- Si necesitas fotos de tu producto real o tu equipo real, la IA no te sirve: contrata una sesión de fotos. La IA genera personas y escenas genéricas creíbles, no TU tienda ni TU producto. Y si lo que te falta no son fotos sino piezas gráficas —portadas, carruseles, plantillas—, ese trabajo se resuelve mejor por otro camino: Canva para hacer marketing sin diseñador.
- Si tu marca exige consistencia estricta de personajes (la misma persona en 20 fotos), es posible pero requiere técnicas avanzadas que quedan fuera de esta guía.
Y una advertencia legal que no puedes saltarte: revisa la licencia del modelo antes de usarlo comercialmente. Algunos modelos abiertos permiten uso comercial sin restricciones, otros son solo para uso personal o exigen licencia de pago a partir de cierto tamaño de empresa. La licencia está siempre en la página del modelo (Hugging Face o la web del creador). Léela. En serio.
Paso 1: elegir la vía — local vs servicio
Mi criterio honesto después de generar más de cien imágenes:
| Local (ComfyUI) | Servicio (Midjourney, Ideogram, APIs) | |
|---|---|---|
| Costo | Gratis por imagen (pagas la luz) | Suscripción o pago por imagen |
| Privacidad | Total: nada sale de tu PC | Tus prompts van a un tercero |
| Velocidad de arranque | Horas de instalación | Minutos |
| Control fino | Máximo (workflows, semillas, modelos) | El que te dé la plataforma |
| Requisito | GPU ~8 GB+ | Solo navegador |
Si vas a generar imágenes de forma recurrente para tu blog y tienes la GPU, la vía local se paga sola en dos meses. Si es puntual, no montes nada: usa un servicio. El resto de la guía asume vía local, pero el paso 3 (los prompts) aplica igual a cualquier herramienta — es la parte más valiosa de esta guía uses lo que uses.
Paso 2: instalar ComfyUI y bajar un modelo
ComfyUI es la herramienta open source más flexible para generar imágenes en local. En Windows, la instalación es sorprendentemente simple:
- Ve al repositorio de ComfyUI en GitHub y descarga la versión portable para Windows (un .7z que se descomprime y listo, sin instalador).
- Descomprime donde quieras, por ejemplo
C:\ComfyUI. - Descarga un modelo open-weights desde Hugging Face. Busca modelos recientes orientados a fotorrealismo — los basados en Flux o en SDXL con fine-tuning fotográfico dan buenos resultados. El archivo (varios GB) va en
ComfyUI\models\checkpoints\. - Ejecuta
run_nvidia_gpu.bat. Se abre una interfaz en el navegador (http://127.0.0.1:8188).
La interfaz de ComfyUI es un editor de nodos que asusta la primera vez. No te asustes: carga el workflow por defecto (menú → Load Default), que ya conecta modelo → prompt → generación → guardado. Escribe tu prompt en el nodo de texto positivo, pulsa "Queue Prompt", y en segundos (o un par de minutos según tu GPU) tienes la imagen en ComfyUI\output\.
Para un blog no necesitas más que ese workflow básico. Los workflows complejos con veinte nodos vienen después, si algún día los necesitas.
Paso 3: el secreto del realismo — prompts de fotógrafo, no de banco de imágenes
Aquí está el 80% del resultado. Cuando empecé, escribía prompts como los que ves en todos los tutoriales:
professional photo of a business woman working on laptop,
8k, ultra detailed, masterpiece, high quality, sharp focus
El resultado: piel de plástico, iluminación de estudio irreal, sonrisa de catálogo. Ese aire de "esto lo hizo una IA" que se detecta a un kilómetro. El problema es que "professional, 8k, masterpiece" no describe una foto — describe la etiqueta de una foto. El modelo responde con el cliché visual asociado a esas etiquetas: el banco de imágenes.
El cambio que lo arregló: escribir como un fotógrafo describe su toma. Película, lente, luz, y un momento cazado en vez de posado:
candid photo of a woman in her 40s at a cluttered desk,
laughing at something off-screen, shot on Kodak Portra 400,
35mm lens, soft window light from the left, shallow depth
of field, slight motion blur on her hand, natural skin texture
Qué hace cada pieza:
shot on Kodak Portra 400— nombrar una película fotográfica concreta trae su colorimetría real: tonos de piel cálidos, grano sutil, contraste suave. Es el antídoto más potente contra la piel de plástico.35mm lens— un lente concreto define la perspectiva. 35mm da esa cercanía de reportaje; 85mm da retrato con fondo desenfocado.soft window light from the left— la luz direccional y con nombre (window light, golden hour, overcast day) produce sombras naturales. La IA sin instrucción de luz tiende a iluminar todo uniformemente, y eso es lo que se ve falso.candid,laughing at something off-screen,slight motion blur— el momento cazado. Las fotos reales tienen imperfección: alguien mirando fuera de cuadro, una mano movida, un escritorio desordenado. Lo posado y perfecto es lo que delata a la IA.
Comparación directa de un caso real de este blog:
MAL (look de stock):
professional photo of small business team meeting,
modern office, 8k, ultra detailed, high quality
BIEN (look de foto):
documentary style photo of three coworkers around a laptop
in a small office, one pointing at the screen, coffee cups
and papers on the table, shot on Fujifilm Superia,
natural afternoon light through blinds, unposed, film grain
Mi regla desde entonces: prohibido escribir "8k", "masterpiece", "ultra detailed" o "professional photo". Si el prompt no lo escribiría un fotógrafo en el pie de foto de su portafolio, fuera.
Paso 4: optimizar para web — de 1,3 MB a 45 KB
Los PNG que salen del generador pesan más de un megabyte. Subirlos tal cual a tu blog destroza la velocidad de carga, y la velocidad es uno de los factores que Google mide para posicionar. Mi flujo convierte todo a WebP de 1200 px de ancho con sharp, la librería de Node:
npm install sharp
// optimizar.js — node optimizar.js entrada.png salida.webp
const sharp = require("sharp");
const [src, out] = process.argv.slice(2);
sharp(src)
.resize({ width: 1200 })
.webp({ quality: 78 })
.toFile(out)
.then((info) => console.log(`OK: ${(info.size / 1024).toFixed(0)} KB`));
Con calidad 78 el resultado es visualmente indistinguible del original en el contexto de un blog, y el número real de mis imágenes: un PNG de ~1,3 MB queda en ~45 KB. Treinta veces menos. Para procesar una carpeta entera:
// lote.js — convierte todos los PNG de ./originales a ./optimizadas
const sharp = require("sharp");
const fs = require("fs");
const path = require("path");
const IN = "./originales";
const OUT = "./optimizadas";
fs.mkdirSync(OUT, { recursive: true });
for (const file of fs.readdirSync(IN).filter((f) => f.endsWith(".png"))) {
const out = path.join(OUT, file.replace(/\.png$/, ".webp"));
sharp(path.join(IN, file))
.resize({ width: 1200 })
.webp({ quality: 78 })
.toFile(out)
.then(() => console.log(`✓ ${file}`));
}
1200px de ancho cubre de sobra el cuerpo de un artículo; si tu tema muestra imágenes a pantalla completa, sube a 1600px.
Paso 5: SEO — la imagen también posiciona
Tres hábitos que aplico en cada imagen del blog y que Google agradece:
- Nombre de archivo = slug del post. La imagen de mi artículo sobre automatizar cotizaciones se llama
automatizar-cotizacion-n8n-3-horas.webp, exactamente como la URL del post. Nada deIMG_0042.webpniComfyUI_00317_.webp. - Texto alternativo descriptivo, en español, contando la escena. No "mujer con portátil" sino "Comercial de una pequeña empresa sonriendo frente al portátil mientras el sistema de cotización trabaja solo". El
altes accesibilidad primero y SEO después, y ambos quieren lo mismo: una descripción honesta de lo que se ve, conectada con el tema del artículo. El criterio completo, con los casos en que elaltdebe ir vacío, está en accesibilidad web: lo que tu empresa necesita saber. - Lazy loading en todas las imágenes que no estén en el primer pantallazo:
loading="lazy"en el HTML (los componentes de imagen de Next.js, Astro y similares lo hacen por defecto). La página carga el texto primero y las imágenes según haces scroll.
Problemas comunes
"Las manos salen mal." Sí. Las manos y el texto dentro de la imagen siguen siendo los puntos débiles de la generación de imágenes, incluso en modelos recientes. Mi solución pragmática: componer escenas donde las manos no sean protagonistas (sujetando una taza, sobre un teclado, fuera de cuadro) y revisar cada imagen antes de publicar. De cada tanda descarto las que tienen seis dedos o un cartel con letras inventadas. No publiques sin mirar; una mano deforme en tu blog es peor que ninguna foto.
"Se me acaba la VRAM / la generación falla." Reduce la resolución de generación (1024px de lado mayor es suficiente, luego escalas si hace falta) o usa una variante del modelo cuantizada para GPUs con menos memoria.
"Todas mis imágenes se parecen entre sí." Estás reutilizando el prompt cambiando dos palabras. Varía la película (Portra, Superia, Ektar), la luz (window light, golden hour, overcast), el ángulo y la escena. Y cambia la semilla (seed) entre generaciones.
"El WebP se ve borroso." Sube quality a 82-85. También revisa que no estés reduciendo una imagen ya pequeña: parte siempre del PNG original.
Preguntas frecuentes
¿Puedo usar estas imágenes comercialmente? Depende del modelo, no de ComfyUI. Cada modelo tiene su propia licencia: algunos permiten uso comercial libre, otros lo restringen a uso personal o exigen licencia según la facturación de tu empresa. Revisa la licencia en la página oficial del modelo antes de publicar nada en una web comercial. Es diez minutos de lectura que te evita un problema.
¿Debo avisar de que las imágenes son IA? La normativa sobre etiquetado de contenido generado por IA está evolucionando: en la UE, el Reglamento de IA introduce obligaciones de transparencia cuyo calendario conviene mirar con calma (qué debe hacer tu pyme antes de agosto de 2026). Al margen de lo legal, mi postura: no las presento como fotos de mi equipo ni de clientes reales — son ilustraciones editoriales, igual que lo sería una foto de banco de imágenes. Lo que nunca haría es usar IA para simular testimonios o casos que no existen.
¿Cuánto tarda generar una imagen? En mi RTX 4090, segundos por imagen. En una GPU de gama media (3060/4060), entre 30 segundos y 2 minutos según modelo y resolución. Lo que de verdad consume tiempo es iterar el prompt hasta que la escena es la que quieres: cuenta 5-15 minutos por imagen final publicable, incluyendo descartes.
Este flujo me ha dado más de cien imágenes de blog que no parecen de banco de imágenes ni de IA, a coste marginal cero. Si quieres montar algo parecido para tu web — o decidir si en tu caso conviene local, servicio o simplemente mejores fotos reales — en una consultoría 1:1 ($60) lo vemos con tu hardware, tu volumen y tu marca sobre la mesa.
Newsletter
¿Te fue útil este artículo?
Suscríbete y te aviso cuando publique algo que valga la pena leer. Sin correo basura y sin una frecuencia forzada.