Cómo hacer que Claude genere imágenes
Claude no crea imágenes nativamente, pero puede generarlas vía código (SVG, matplotlib) o integrando APIs externas.

- Cuenta en Anthropic Console (console.anthropic.com) con API key
- Python 3.9+ instalado
- Librería anthropic instalada (pip install anthropic)
- Créditos de API activos
- Por qué Claude no genera imágenes directamente y qué sí puede hacer
- Cómo pedirle a Claude que genere gráficos SVG listos para usar
- Cómo usar Claude para escribir código Python (matplotlib) que produce imágenes
- Cómo orquestar Claude con una API de generación de imágenes real
- Errores comunes al esperar imágenes de un modelo de texto
Entender qué puede y qué no puede hacer Claude
Antes de escribir código, aclaremos algo clave: Claude (incluido claude-opus-4-8) es un modelo de lenguaje con visión. Puede LEER y analizar imágenes que le envías, pero NO produce archivos PNG/JPG directamente como lo haría DALL-E, Midjourney o Stable Diffusion. Esto confunde a muchos principiantes en España y LATAM que esperan pedir 'dibújame un gato' y recibir una foto. Lo que Claude SÍ hace excelente es generar el CÓDIGO que crea imágenes: SVG vectorial, gráficos con matplotlib, diagramas con HTML/CSS, o texto tipo ASCII art. Además, puede actuar como orquestador: escribir el prompt perfecto y llamar a una API de imágenes externa por ti. En este tutorial cubrimos las tres vías reales. Elige según tu caso: SVG para logos e íconos simples, matplotlib para gráficos de datos, y APIs externas para imágenes fotorrealistas.
Configurar tu cliente de Claude
Instala la librería oficial y configura tu API key. Ve a console.anthropic.com, entra en 'API Keys' y crea una nueva. Guárdala como variable de entorno para no exponerla en tu código (buena práctica de seguridad). En Linux/macOS usa export en la terminal; en Windows usa set. Nunca subas tu key a GitHub. Con esto listo, verificamos que la conexión funciona antes de generar nada.
# Terminal
pip install anthropic
export ANTHROPIC_API_KEY='sk-ant-tu-key-aqui'
# archivo test.py
import anthropic
client = anthropic.Anthropic()
mensaje = client.messages.create(
model="claude-opus-4-8",
max_tokens=100,
messages=[{"role": "user", "content": "Responde 'conexión OK'"}]
)
print(mensaje.content[0].text)Generar una imagen SVG con Claude
El SVG es formato vectorial basado en texto (XML), perfecto para que Claude lo genere directamente. Le pedimos que devuelva SOLO el código SVG y lo guardamos en un archivo que puedes abrir en cualquier navegador. Ideal para íconos, logos simples, ilustraciones geométricas o diagramas. Aquí generamos un ícono de sol. Después de guardar el archivo .svg, ábrelo con doble clic o conviértelo a PNG con herramientas como Inkscape o una web como cloudconvert.
import anthropic, re
client = anthropic.Anthropic()
prompt = "Genera un icono SVG de un sol amarillo con rayos, 200x200px. Devuelve SOLO el codigo SVG, sin explicaciones ni markdown."
resp = client.messages.create(
model="claude-opus-4-8",
max_tokens=2000,
messages=[{"role": "user", "content": prompt}]
)
texto = resp.content[0].text
# Extraer el bloque SVG por si incluye texto extra
match = re.search(r"<svg.*?</svg>", texto, re.DOTALL)
svg = match.group(0) if match else texto
with open("sol.svg", "w", encoding="utf-8") as f:
f.write(svg)
print("Guardado en sol.svg — abrelo en tu navegador")Crear gráficos de datos con matplotlib
Para visualizaciones de datos (barras, líneas, tortas), Claude escribe código Python con matplotlib que genera un PNG real. Este es el caso más útil para informes y dashboards. Le pasamos los datos, Claude devuelve el script, y lo ejecutamos para obtener el archivo de imagen. Necesitas instalar matplotlib primero. Aquí generamos un gráfico de ventas ficticias.
# pip install matplotlib
import anthropic, matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
client = anthropic.Anthropic()
prompt = ("Escribe SOLO codigo Python con matplotlib que dibuje un grafico de barras "
"de ventas: Enero 120, Febrero 150, Marzo 90, Abril 200. Titulo 'Ventas Q1'. "
"Guardalo con plt.savefig('ventas.png'). Sin explicaciones ni markdown.")
resp = client.messages.create(model="claude-opus-4-8", max_tokens=1000,
messages=[{"role":"user","content":prompt}])
codigo = resp.content[0].text.replace("```python","").replace("```","").strip()
exec(codigo)
print("Grafico guardado en ventas.png")Generar imágenes reales usando Claude + una API externa
Para imágenes fotorrealistas o artísticas necesitas un modelo de difusión. Aquí Claude brilla como generador de prompts: le describes tu idea en español, él la convierte en un prompt optimizado en inglés, y luego llamas a una API de imágenes (ejemplo con OpenAI DALL-E; funciona igual con Stability AI o Replicate). Necesitas una key del proveedor de imágenes elegido. Claude mejora enormemente la calidad del prompt final.
# pip install anthropic openai
import anthropic, openai, requests
claude = anthropic.Anthropic()
idea = "un mercado de frutas colorido en Ciudad de Mexico al atardecer"
# 1) Claude optimiza el prompt
r = claude.messages.create(model="claude-opus-4-8", max_tokens=300,
messages=[{"role":"user","content":f"Convierte esta idea en un prompt detallado en ingles para un generador de imagenes. Solo el prompt: {idea}"}])
prompt_img = r.content[0].text.strip()
print("Prompt:", prompt_img)
# 2) Generar imagen con DALL-E
oa = openai.OpenAI() # requiere OPENAI_API_KEY
img = oa.images.generate(model="dall-e-3", prompt=prompt_img, size="1024x1024", n=1)
url = img.data[0].url
open("mercado.png","wb").write(requests.get(url).content)
print("Imagen guardada en mercado.png")Elegir la vía correcta y automatizar
Ya dominas las tres estrategias. Ahora decide según tu necesidad: SVG para gráficos vectoriales editables y ligeros; matplotlib para datos y reportes; API externa para imágenes realistas. Puedes combinar: por ejemplo, un flujo donde Claude analiza un CSV, genera el gráfico matplotlib y escribe una descripción. Envuelve tu lógica en funciones reutilizables y maneja errores con try/except para producción. Guarda las salidas con nombres únicos (timestamp) para no sobrescribir. Con esto tienes un pipeline completo de generación visual asistida por Claude.
import time
def generar_svg(descripcion, client):
try:
r = client.messages.create(model="claude-opus-4-8", max_tokens=2000,
messages=[{"role":"user","content":f"Genera SOLO codigo SVG de: {descripcion}"}])
nombre = f"img_{int(time.time())}.svg"
with open(nombre,"w",encoding="utf-8") as f:
f.write(r.content[0].text)
return nombre
except Exception as e:
print("Error:", e)
return None
# uso
import anthropic
c = anthropic.Anthropic()
print(generar_svg("un logo minimalista de una montana azul", c))Ahora entiendes que Claude no genera imágenes como archivo binario, pero sí es una herramienta poderosa para producirlas por tres vías: generando código SVG vectorial listo para navegador, escribiendo scripts matplotlib para gráficos de datos, y actuando como optimizador de prompts que se conecta con APIs de generación de imágenes reales como DALL-E o Stability. Tienes código funcional y reutilizable para cada caso.
Los programas de certificación en español te llevan de principiante a builder profesional con Claude y su API.
Ver todos los programas