Las herramientas publicitarias son casi todas paneles, y eso las vuelve casi imposibles de automatizar. No puedes programar con cron un panel, no puedes enviar un panel a jq y no puedes pedirle a un agente de terminal que haga clic en uno. La CLI de Hermoso existe para que el ciclo publicitario deje de ser un lugar al que vas y se convierta en algo que puedes programar.
Instálala e inicia sesión:
npm install -g hermoso
hermoso auth login
auth login levanta un listener local y abre el navegador, el mismo patrón que usan gh y firebase, así que no hay nada que pegar. La clave generada se guarda en ~/.hermoso/config.json con permisos solo para el propietario (directorio 0700, archivo 0600), porque tiene autoridad de gasto real. Para CI, hermoso auth login --token <key> guarda una de forma no interactiva, y HERMOSO_TOKEN / HERMOSO_API_BASE reemplazan la configuración desde el entorno.
Los comandos
Cada comando acepta --json, que es lo que importa: la línea legible para humanos es una comodidad, y el JSON es el contrato.
| Comando | Qué hace |
|---|---|
hermoso capabilities | Ids de modelo válidos y sus costos exactos en créditos. Ejecútalo primero. Es gratuito y de solo lectura, y así dejas de adivinar nombres de modelos. |
hermoso credits | Saldo, uso de la sesión y llamadas recientes con costo. |
hermoso brand --domain example.com | Lee un sitio web y lo convierte en un perfil de marca (productos, paleta, logo, tono) en el que se basan los renders posteriores. |
hermoso competitors --domain example.com | Descubre rivales directos y marcas similares de las que vale la pena aprender. |
hermoso ads --company "Brand" | Extrae los anuncios reales en curso de ese anunciante de las bibliotecas de Meta, Google y LinkedIn, sin duplicados y ordenados. |
hermoso research "longest-running protein bar ads" | Investigación publicitaria en lenguaje natural en las bibliotecas más TikTok orgánico, y devuelve los anuncios que encontró. |
hermoso create --brand … --product … --format video | Convierte un brief en un concepto de anuncio terminado: variantes de copy más un concepto de imagen o un guion gráfico de video, con los ids de modelo para renderizarlo. |
hermoso generate image --prompt "…" --ref ./bottle.png | Renderiza y devuelve una URL servida. --ref integra tu producto real para que la etiqueta en pantalla sea tu SKU de verdad. |
hermoso jobs / hermoso fetch <url> | Revisa renders en curso; convierte cualquier recurso en una URL para ver y otra para descargar directamente. |
hermoso mcp | Sirve la superficie MCP completa de 922+ herramientas por stdio, las mismas que expone el servidor alojado. |
Dos superficies, un paquete, y por qué importa
Los agentes de terminal pagan por las herramientas dos veces: una vez en el manifiesto que cargan en el contexto, y otra vez en los tokens que cuesta cada llamada. Un manifiesto de más de 922 herramientas no es gratis. Por eso el mismo paquete incluye ambas superficies y deja que el agente elija:
- MCP (
hermoso mcp, o el endpoint alojadohttps://app.hermoso.ai/mcp) cuando quieres la superficie completa y argumentos tipados y ricos. - Comandos de subproceso cuando quieres la vía económica en tokens: el agente ejecuta comandos, lee JSON y nunca carga un manifiesto. Es el patrón que usan las skills de Claude incluidas.
Ambas llegan a la misma API, cobran los mismos créditos y escriben en la misma biblioteca, así que no queda nada varado en un lado.
Cosas que vale la pena programar
- Un barrido semanal de competidores.
hermoso competitorsalimenta ahermoso ads, compara con la semana anterior, y tienes un reporte permanente de lo que tu mercado empezó y dejó de publicar. - Creatividad en lote para un catálogo. Recorre los SKU, renderiza un anuncio basado en el producto para cada uno y recoge las URLs devueltas. Es el tipo de tarea que en una interfaz gráfica resulta realmente tediosa.
- Un guardia de créditos en CI.
hermoso credits --json | jq .balancey falla el pipeline antes de que empiece un lote largo con saldo cero. - Selección de modelo según el costo.
hermoso capabilities --jsonexpone los costos exactos por modelo, así que un script puede elegir el modelo más barato que cumpla el brief en lugar de fijar uno.
Publicación y campañas
Los subcomandos de la CLI cubren la investigación y la creación. La publicación, la programación y la gestión de campañas en Meta, Google Ads, Microsoft Advertising, Reddit Ads, LinkedIn, Pinterest, X Ads, TikTok Ads, Snapchat Ads, ChatGPT Ads, Apple Search Ads y AppLovin Ads viven en la superficie MCP, accesible desde el mismo paquete con hermoso mcp, desde el endpoint alojado o desde el estudio web. Los destinos de publicación son Facebook, Instagram, Threads, TikTok, YouTube, X, LinkedIn, Pinterest, Bluesky, Telegram y Google Business Profile.
Lo que no hará sin preguntar
Un agente con presupuesto solo es útil si el alcance de sus acciones está acotado, así que la autoridad de gasto se controla en el servidor y no en un prompt. Las campañas, conjuntos de anuncios y anuncios de Meta se crean PAUSED sin que quien llama pueda cambiarlo. Los interruptores de estado que pueden activar gasto real (uno en cada plataforma publicitaria: set_meta_campaign_status, set_google_ads_status, set_microsoft_ads_status, set_reddit_ads_status, set_linkedin_ads_status, set_pinterest_ads_status, set_x_ads_status y set_openai_ads_status, entre otros) se niegan a ejecutarse sin una marca de confirmación explícita, y esa misma barrera cubre crear un grupo de anuncios, un anuncio o una palabra clave habilitado de Google Ads bajo un padre ya habilitado, porque se muestra en la siguiente subasta. Los borrados también requieren confirmación. En la parte de generación, hermoso_capabilities publica el costo exacto en créditos de cada modelo antes de que se ejecute algo, y cada render reserva una estimación y luego cobra el costo real, así que un envío fallido se reembolsa en lugar de cobrarte en silencio.
¿Trabajas dentro de un agente y no en una shell? Consulta Marketing con Claude Code y la referencia completa de MCP y CLI.
Preguntas frecuentes
¿Existe una herramienta de línea de comandos para publicar anuncios?
Sí. npm install -g hermoso instala la CLI de Hermoso, que investiga anuncios de competidores en las bibliotecas de Meta, Google y LinkedIn, crea un perfil de marca a partir de un sitio web, planifica y renderiza anuncios terminados de imagen y video, e informa de créditos y trabajos, con salida --json en cada comando para automatizarlo. El mismo paquete también sirve el servidor MCP completo de 922+ herramientas por stdio.
¿Cómo me autentico en la CLI de Hermoso?
Ejecuta hermoso auth login. Abre un inicio de sesión en el navegador a través de un listener local (el mismo patrón que usan gh y firebase) y guarda la clave generada en ~/.hermoso/config.json con permisos solo para el propietario (directorio 0700, archivo 0600). Para CI, hermoso auth login --token <clave> guarda una de forma no interactiva, y HERMOSO_TOKEN y HERMOSO_API_BASE reemplazan la configuración desde el entorno.
¿Puedo enviar la salida a jq?
Sí. Cada comando acepta --json y devuelve un objeto estructurado. Ese es el contrato previsto; la línea legible para humanos es solo una comodidad. hermoso credits --json | jq .balance es una buena guardia de CI antes de un lote largo de renders.
¿Por qué usar la CLI en lugar del servidor MCP?
Por el costo en tokens. Un cliente MCP carga el manifiesto de herramientas en el contexto, y 922+ herramientas no son gratis. Un agente de terminal que ejecuta comandos de subproceso y lee JSON no carga ningún manifiesto. Ambas superficies llegan a la misma API, cobran los mismos créditos y escriben en la misma biblioteca, así que puedes combinarlas.
¿Puede la CLI publicar en Facebook o gestionar anuncios de Meta?
La publicación, la programación y la gestión de campañas en Meta, Google Ads, Microsoft Advertising, Reddit Ads, LinkedIn, Pinterest, X Ads, TikTok Ads, Snapchat Ads, ChatGPT Ads, Apple Search Ads y AppLovin Ads viven en la superficie MCP y no en los subcomandos de la CLI, accesible desde el mismo paquete con hermoso mcp, desde el endpoint alojado en https://app.hermoso.ai/mcp o desde el estudio web. Los destinos de publicación son Facebook, Instagram, Threads, TikTok, YouTube, X, LinkedIn, Pinterest, Bluesky, Telegram y Google Business Profile.
¿Funciona con un servidor local?
Sí. Define HERMOSO_API_BASE como tu propio origen (por ejemplo http://localhost:3000) y tanto la CLI como el servidor MCP apuntarán a él. Una base localhost no necesita token de autenticación.
Relacionado
Los renders se ejecutan como trabajos del servidor que consultas, y un envío que se reintenta es seguro aunque no se sepa el resultado del primer intento. Los detalles están en trabajos e idempotencia.
¿Lo prefieres dentro de Claude Code? Consulta Marketing con Claude Code.
Instala la CLI, inicia sesión desde tu navegador y tu primer barrido de competidores está a un comando de distancia. Cuenta gratis, con más de 250 créditos gratis que puedes ganar, sin tarjeta.
Empieza gratis → Lee la documentación de MCP →