Feos a propósito. Y venden.
Un ugly ad es un video vertical que parece un story cualquiera: un clip de fondo (alguien entrenando, el producto, una toma de stock) y encima texto fijo con el fondo de colores de Instagram. Sin animaciones ni diseño de agencia. Funciona porque se mezcla con el contenido orgánico y el mensaje se lee de un vistazo.
El problema es armarlos: elegir el clip, escribir cada burbuja en Edits, acomodarlas para que no tapen la cara, buscar música y exportar. Multiplicalo por las variantes que necesitás para testear y se te va el día. Esta herramienta le da a Claude todo lo necesario para hacerlo solo, con los mismos colores, fuentes y emojis que usarías en Instagram.
Vos decidís qué decir. Claude arma el video.
Vos
Le contás la promo, le pasás la carpeta de videos y aprobás el copy y el preview.
Claude
Lee el contexto, escribe el copy, elige el clip, decide dónde va el texto y revisa que se lea.
Ugly Ads (MCP)
Dibuja las burbujas, recorta el clip a 9:16, suma la música y exporta el MP4.
Funciona para cualquier marca: cursos, gimnasios, ecommerce, servicios. El estilo sale de lo que le pidas y del contexto de tu proyecto.
No necesitás API key. La herramienta no llama a ninguna IA por su cuenta: todo lo que piensa (copy, elección del clip, ubicación del texto) lo hace tu propio Claude, con tu cuenta y tu plan. El video se arma en tu compu, así que no gasta créditos ni pasa por ningún servidor. Lo único que consume es uso normal de tu plan, porque Claude mira algunas imágenes (miniaturas y previews) en el proceso.
Primero el mensaje, después el video
Claude sigue siempre el mismo orden. Nunca arranca a renderizar sin que hayas aprobado lo que dice el anuncio.
Contexto
Junta lo que ya sabe: lo que hablaron en el chat, su memoria, los documentos del proyecto (promos vigentes, precios, reglas de marca) y lo que le pases. Si falta algo clave, te pregunta. No inventa precios ni fechas.
Copy
Te propone 3 versiones ya divididas en bloques: título, soporte, beneficios, oferta y llamado a la acción, con los cortes de línea y el color de cada burbuja. Elegís o ajustás.
Clip
Lee tu carpeta de Drive y mira una hoja con miniaturas numeradas de todos los videos. Elige el que mejor acompaña el mensaje y te dice por qué.
Corte
Los videos de gym o de stock suelen tener una previa larga hasta que pasa la acción. Claude recorre el clip entero (fotogramas con su segundo y cuánto movimiento hay en cada momento) y elige desde qué segundo hasta cuál se ve lo interesante: el ejercicio, el movimiento, el producto en uso. Ese tramo define cuánto dura el anuncio y te lo dice antes de seguir.
Ubicación
Analiza el clip cuadro por cuadro: dónde hay movimiento, dónde están las caras y qué partes tapa la interfaz de Instagram. Pone el texto en la zona más tranquila, con una sombra suave detrás para que se separe del video sin taparlo.
Preview
Genera una imagen del anuncio con las zonas de la interfaz marcadas en rojo y la revisa: que se lea en 2 segundos, que no tape nada importante, que no queden palabras sueltas. Te la muestra.
Render + música
Exporta el MP4 en 1080×1920 con un tema aleatorio del estilo que encaje (gym, hip hop, electrónica, épico, chill). ¿No te gusta? Pedís otro y cambia solo la música.
Cambios sin empezar de cero: cada video queda guardado con su configuración. Podés pedir "cambiá el precio", "otro clip", "más arriba" u "otra música" y Claude toca solo eso.
Tres cosas en tu compu
La herramienta corre en tu computadora (por eso no cobra el render). Necesita estos tres programas, todos gratis:
Node.js 18 o más
Hace andar la herramienta. Si ya usás Claude Code, probablemente lo tenés.
FFmpeg
Es el que arma el archivo de video: recorta, superpone el texto y mezcla la música.
Chrome o Edge
Se usa en modo invisible para dibujar las burbujas con las fuentes y emojis exactos.
- Abrí el menú Inicio, buscá PowerShell y pegá esto (clic derecho pega). Aceptá si te pide permiso.
$ winget install OpenJS.NodeJS.LTS $ winget install Gyan.FFmpeg
- Cerrá y volvé a abrir Claude para que encuentre lo que instalaste. Chrome o Edge ya vienen en casi todas las PCs con Windows.
- Abrí la Terminal. Si no tenés Homebrew, instalalo primero desde
brew.sh. Después:
$ brew install node ffmpeg
- Si no tenés Google Chrome, instalalo desde
google.com/chrome. Reiniciá Claude.
Instalá el MCP en tu Claude
Cada persona lo instala en su propio Claude y lo usa con su cuenta. Elegí dónde usás Claude. Si tenés Claude Code, andá por la primera opción: trae los comandos con /.
- Abrí Claude Code (en la terminal o en la app) y pegá estos dos comandos, uno por vez:
> /plugin marketplace add paidbyfacu/ugly-ads > /plugin install ugly-ads@paidbyfacu
- Reiniciá Claude Code (o escribí
/reload-plugins). - Verificá que todo esté bien con
/ugly-ads:setup. Te dice si falta FFmpeg o el navegador y cómo instalarlo.
$ claude plugin marketplace add paidbyfacu/ugly-ads $ claude plugin install ugly-ads@paidbyfacu
- En Claude Desktop andá a Settings → Developer → Edit Config. Se abre el archivo
claude_desktop_config.json. - Pegá esto (si ya tenías otros MCP, sumá solo el bloque
"ugly-ads"adentro demcpServers):
{
"mcpServers": {
"ugly-ads": {
"command": "npx",
"args": ["-y", "github:paidbyfacu/ugly-ads"]
}
}
}
- Guardá, cerrá Claude Desktop del todo y volvé a abrirlo. Los comandos aparecen en el botón + del chat, dentro de Ugly Ads.
- En Windows, si no arranca, cambiá
"command": "npx"por"command": "cmd"y los args por["/c", "npx", "-y", "github:paidbyfacu/ugly-ads"].
- Si preferís sumar solo el MCP a Claude Code, sin el plugin (no trae los comandos con
/ugly-ads:, pero se lo pedís con tus palabras):
$ claude mcp add ugly-ads -- npx -y github:paidbyfacu/ugly-ads
✳ Sirve igual para cualquier cliente compatible con MCP: el comando es npx -y github:paidbyfacu/ugly-ads por stdio.
✳ Así se ve cuando quedó bien instalado. Recreación ilustrativa de la interfaz.
Uno para crear, cinco para ajustar
Escribí /ugly-ads y aparecen todos. Después del comando podés agregar lo que quieras con tus palabras. También funciona sin comando: "haceme un ugly ad para..." y Claude usa la herramienta solo.
/ugly-ads:crear [promo + link de Drive]El flujo completo: contexto, 3 opciones de copy, elección del clip, ubicación del texto, preview y render con música.
/ugly-ads:texto [cambio]Cambia el copy del último ugly ad. Mantiene clip, colores y música.
/ugly-ads:video [nº, criterio o link]Otro clip de fondo ("alguien en barras", "el 7"): lo corta en la acción y reacomoda el texto.
/ugly-ads:musica [mood o tema]Vacío = otro tema al azar. También "hip hop", "épico" o el nombre de un tema.
/ugly-ads:estilo [cambio]Colores, fuente (Instagram o Poppins), tamaño o posición del texto.
/ugly-ads:variantes [cantidad]Versiones para test A/B: cambia una variable fuerte por versión (hook, clip o colores).
/ugly-ads:corte [momento o segundos]Cambia el tramo del video de fondo: "que arranque cuando levanta la pesa" o "del 0:12 al 0:24".
/ugly-ads:setupRevisa que estén FFmpeg, el navegador y las fuentes, y te dice cómo arreglar lo que falte.
Tu primer ugly ad, en 3 pasos
Prepará la carpeta de videos
Subí tus clips a una carpeta de Google Drive (pueden estar en subcarpetas). Clic derecho → Compartir → Acceso general: "Cualquier persona con el enlace" como Lector. Copiá el link. Mejor si son verticales, de 5 a 20 segundos y sin texto encima.
Pedile el anuncio
Abrí Claude en la carpeta de tu proyecto (así lee los docs de la marca) y escribí:
/ugly-ads:crear ugly ad para el curso de personal trainer con 30% OFF hasta el domingo, público gente que entrena y quiere vivir de esto. Videos: https://drive.google.com/drive/folders/...
Elegí el copy, mirá el preview y listo
Claude te muestra 3 opciones de copy, después el preview con las zonas de Instagram marcadas en rojo (no salen en el video final) y al final te pasa la ruta del MP4. Quedan en ~/UglyAds/fecha/.
✳ Así es el ida y vuelta. Recreación ilustrativa; los mensajes exactos varían.
C:\videos\gym".
Los mismos de Instagram, sin abrir Instagram
Tres tipos de bloque que se combinan de arriba hacia abajo. Las fuentes son Instagram Sans (si la tenés instalada; si no, Figtree, la más parecida) o Poppins, y los emojis salen como en iPhone.
Calistenia
titlePíldora con degradé. Para el producto o el hook.
ejercicios
bubbleEl fondo de texto clásico, con las líneas fusionadas.
Con certificado
plainTexto sin fondo, con sombra suave. Para zonas tranquilas.
Podés pedir los colores de tu marca ("burbujas con el rosa #fe006b"), cambiar el tamaño, mover el bloque, subir o bajar la sombra detrás del texto y elegir formato 9:16 (Reels y Stories), 4:5 o 1:1 (feed).
La música: vienen 25 temas de FreePD (Kevin MacLeod y otros), de dominio público (CC0): se pueden usar en anuncios sin dar créditos. Están recortados en su parte con más energía. Si querés usar los tuyos, poné los mp3 en ~/UglyAds/musica.
Prompts listos para copiar
Cambiá lo resaltado por tu caso.
/ugly-ads:crear ugly ad para el cyber monday: 40% OFF en todos los planes hasta el martes. Tono urgente, CTA a WhatsApp. Videos: [link de Drive]
/ugly-ads:variantes 4: una con hook de precio, una con hook de resultado, una con hook de miedo a perderse los cupos y una con otro clip.
/ugly-ads:estilo título con degradé #6001e2 → #ea0849, burbujas blancas y una sola burbuja en #fe006b para el precio. Fuente Poppins.
/ugly-ads:crear usá la promo vigente que tenés en los docs del proyecto y armá 3 ugly ads, uno por buyer persona. Videos en la carpeta de siempre.
/ugly-ads:texto sacá la línea del certificado, poné el precio en **negrita** y que el CTA diga "Escribinos ahora".
/ugly-ads:musica algo más épico y subile un poco el volumen.
Problemas comunes y cómo salir
Primer paso siempre: /ugly-ads:setup. Revisa todo y te dice qué falta.
Falta ffmpeg +
"La carpeta de Drive no es pública" +
Algunos clips salen "sin miniatura" +
Los colores del video salen lavados o grises +
El texto quedó chico +
La fuente no es la de Instagram +
¿Cómo actualizo a la última versión? +
¿Cómo lo desinstalo? +
¿Qué plan de Claude necesito? +
No aparecen los comandos /ugly-ads +
Los links que necesitás
Herramienta open source (MIT) de paidbyfacu. No está asociada a Meta, Instagram ni Anthropic. Instagram e Instagram Sans son marcas de Meta.