Saltar al contenido
Todos los proyectos
HackathonIdealizer3 min de lectura

Idealizer: un solo canvas con IA para imágenes, video y texto

Hacer una sola pieza de contenido obliga a saltar entre seis herramientas que no se hablan. Idealizer junta imágenes, video, voz y texto en un canvas infinito, con un agente de IA que ve todo y construye sobre ello. Lo hice solo en el Cursor AI Hackathon Hamburg y ganó dos tracks.

Landing de Idealizer: 'Your Creative Infinite Canvas' en blanco y rosa sobre fondo oscuro, con tarjetas de generación de imágenes, creación de video y redacción de contenido

El problema

Quien vive de crear contenido reparte un solo post entre seis herramientas: una para imágenes, otra para video, otra para la voz, un documento para el guion, una carpeta con los colores de la marca y un chat para pedir ayuda con todo lo anterior. Ninguna está conectada. Descargas de una, subes a la otra y vuelves a explicar el contexto cada vez.

Las herramientas de IA no lo resuelven por sí solas. Cada una hace bien lo suyo, pero ninguna sabe lo que hiciste en las demás, así que la persona sigue siendo el pegamento entre todas.

Qué construí

Idealizer lo junta todo en un lugar: un canvas infinito, tipo Miro, donde todo lo que haces queda a la vista, con un asistente de IA que puede verlo todo y construir sobre ello. Lo hice solo, en menos de 24 horas, en el Cursor AI Hackathon de Hamburgo, organizado por la comunidad AI BEAVERS: más de 400 personas y unos 100 proyectos en un fin de semana. Había entrado desde la lista de espera y el viaje era largo, así que fui sin expectativas.

Qué hace

  • Cada asset tiene nombre. En cuanto una imagen, un video o un texto cae en el canvas recibe una etiqueta: @image_1, @video_2, @content_3, @branding_1. Escribes "anima @image_3 con el tono de @branding_1" y el agente sabe exactamente de qué dos cosas hablas.
  • Tags cortos eligen la herramienta. @create genera una imagen, @edit la modifica, @combine junta hasta ocho, @merge une videos.
  • Imágenes, video, voz y texto desde un solo chat. El agente lee tu mensaje, resuelve las etiquetas y encadena las llamadas: genera una imagen, la convierte en clip, le pone voz y escribe el texto del post.
  • Brand kits. Colores y tono guardados como un asset más, para que cada pieza nueva los siga.
  • Edición con máscara. Pintas sobre una parte de la imagen y cambias solo esa parte.
Canvas de Idealizer con tarjetas de imagen y de marca etiquetadas, y un chat donde el agente responde dos veces "I'm not sure how to handle that request"
Primera iteración. El canvas y las etiquetas funcionaban; el agente todavía se encogía de hombros ante casi todo.

Por qué estas herramientas

Las etiquetas son lo que hace que el canvas le sirva a un modelo. En un tablero lleno de imágenes, "haz un video con esa" no significa nada; @image_3 significa una sola cosa. Los tags llegaron después por algo práctico: dejar que el modelo adivinara la herramienta parecía más ingenioso, pero los tags eran la única forma de que se comportara igual dos veces seguidas.

Detrás del chat hay un agente de LangChain, porque todo el producto consiste en que un pedido se convierta en varias llamadas a herramientas en el orden correcto, y para eso están los agentes de LangChain. Cada herramienta llama al proveedor que mejor hace ese trabajo: FLUX para imágenes, MiniMax Hailuo para video cinematográfico, Hera para videos tipo infografía, ElevenLabs para la voz, y OpenAI y Gemini para texto, investigación y lectura de imágenes. Supabase guarda los assets, con una tabla por tipo. El frontend es React, con React Flow para el canvas.

Cursor con el README de Idealizer abierto a la izquierda y el panel del agente a la derecha escribiendo ImageMaskEditor.tsx y un componente slider
Así se vio casi todo el fin de semana: el plan de un lado, el agente de Cursor escribiendo el siguiente componente del otro.

Lo difícil

El sábado en la noche todo vivía en un solo archivo del backend de 859 líneas, y cada proveedor nuevo lo empeoraba: tocar el código de imágenes podía romper el de video. De madrugada dejé de agregar features y lo separé en un archivo por proveedor, con una tabla propia en la base de datos para cada tipo de asset. Me costó tres horas de features y valió la pena: cerca del mediodía podía arreglar un proveedor sin preocuparme por los demás.

El otro problema era la espera. Un trabajo de FLUX no siempre vuelve rápido, y una demo frente al jurado no puede quedarse colgada. Así que cada llamada de imagen recibió un temporizador: si FLUX no responde en 30 segundos, el backend manda la misma petición a un respaldo (FLUX a través de fal.ai, o el modelo de imágenes de MiniMax). El usuario nunca ve el cambio; simplemente recibe su imagen.

const imageUrl = await pollFluxResult(job.id, apiKey, {
  fallback: { label: "fal.ai", handler: () => generateFalFluxImage(prompt), afterMs: 30000 },
});

Está simplificado del código real. No es elegante, pero mantuvo la demo funcionando.

En qué se convirtió

Idealizer ganó dos tracks (Best use of LangChain, Best use of MiniMax) entre unos 100 proyectos, hecho en menos de 24 horas. La landing sigue online, y esta es la demo que grabé:

El video demo: el canvas, las etiquetas y el agente trabajando.

Gracias a Alexander Zakharov, Vladyslav Nyzhashchyy y Ramin Azhdari por organizarlo, a la comunidad AI BEAVERS y a los sponsors (Cursor, Manus AI, Hume AI, ElevenLabs, Google, n8n, OpenAI, LangChain, Runway, Miro, v0 y MiniMax, entre otros). Un fin de semana así no pasa sin ellos.