Hermoso

Ejecuta toda una operación de marketing desde tu agente de IA: investiga los anuncios que ya están ganando, genera anuncios de video e imagen terminados, publica en 10 canales sociales y gestiona campañas en 11 plataformas de anuncios.

Documentación

Hermoso: MCP, CLI y Skills

El agente de marketing con IA con un generador de anuncios con IA integrado, ejecutable desde cualquier agente de IA: Claude Code, Claude.ai, Cursor, Codex, o tus propios scripts. Investiga los anuncios que ya están ganando en un mercado, genera anuncios de imagen y video terminados (tu producto real compuesto, copia + CTA incluidos), publícalos en tus propios canales sociales, y construye y gestiona las campañas publicitarias detrás de ellos, todo a través de herramientas MCP, una CLI, o skills instalables de Claude.

906 herramientas. tools/list es siempre el conjunto autoritativo; hermoso_capabilities (gratis) devuelve el catálogo de modelos en vivo con costos exactos de créditos por renderizado más el mapa completo de capacidades.

También una extensión de Chrome. Hermoso: guarda y clona anuncios guarda cualquier anuncio en tu swipefile con un clic, lo clona para tu marca, y extrae los anuncios de cualquier empresa desde su sitio web.

La mayor parte no cuesta nada. Publicar y programar publicaciones, construir y gestionar campañas pagadas, analítica e insights, comentarios y DMs, conectores, perfiles y asientos de equipo son gratis en todos los planes, sin tarifa por publicación o por canal y sin precio por asiento. Los créditos se gastan solo al ejecutar un modelo de IA (imagen, video, voz, texto, planificación, postproducción) y en investigación de Ad Spy, y publicar un anuncio que ya renderizaste nunca es un segundo cargo. La única excepción es X (Twitter), donde publicar y leer factura unos pocos créditos por llamada porque X cobra por solicitud de API.

A qué se conecta. Plataformas publicitarias: Meta, Google Ads, TikTok Ads, LinkedIn Ads, Reddit Ads, X Ads, Pinterest Ads, Snapchat Ads, Microsoft Advertising, Apple Search Ads, ChatGPT Ads y AppLovin Ads, además de feeds de productos en Google Merchant Center. Publicación y programación — once canales: Facebook, Instagram, Threads, TikTok, YouTube, X, LinkedIn, Pinterest, Bluesky, Telegram y Google Business Profile. Mensajería: WhatsApp (le envías un mensaje a una persona, por lo que no es un duodécimo canal de publicación) y automatizaciones de DM en Instagram, Facebook Pages y Messenger, y X (un comentario con palabra clave, un DM, una respuesta a historia o un enlace ig.me / m.me recibe una respuesta automática). Investigación publicitaria: las bibliotecas de anuncios de Meta, Google y LinkedIn más TikTok orgánico, Instagram, YouTube, Threads y Reddit. Analítica: Google Analytics 4, Google Search Console y los insights de publicaciones y campañas de cada plataforma conectada. Archivos: Google Drive, Sheets, Docs y OneDrive.

No es todo o nada. Investigación, creación, publicación/programación y gestión de anuncios son cuatro áreas independientes — ninguna herramienta requiere que hayas usado otra primero. Publica o programa creativos que ya tienes y no generes nada aquí (upload_file convierte cualquier archivo local o externo en una URL que toda herramienta de publicación, programación y construcción de anuncios acepta); construye y lee campañas en tus propias cuentas publicitarias con tus propios creativos; investiga competidores sin una marca redactada y sin canal conectado; o genera un archivo sin nada conectado y simplemente descárgalo. Usa la pieza que necesites, o todo junto.

Instalar en un comando

Este repositorio es a la vez un marketplace de plugins, una extensión de Gemini CLI y un paquete de skills, por lo que un agente de codificación toma Hermoso en una línea. Cada instalación trae las mismas cinco skills (hermoso-research, hermoso-generate, hermoso-ad-from-brand, hermoso-product-photoshoot, hermoso-marketing), y las skills impulsan la CLI hermoso a través de npx. No se carga ninguna lista de herramientas en tu sesión: un comando CLI no cuesta nada hasta que se ejecuta, y llega a todas las herramientas. La primera vez, tu agente ejecuta npx -y hermoso auth login, que abre un navegador para iniciar sesión.

Claude Code:

claude plugin marketplace add hermoso-ai/hermoso && claude plugin install hermoso@hermoso

Dentro de una sesión, lo mismo es /plugin marketplace add hermoso-ai/hermoso y luego /plugin install hermoso@hermoso.

Codex CLI (lee el mismo archivo de marketplace):

codex plugin marketplace add hermoso-ai/hermoso && codex plugin add hermoso@hermoso

Gemini CLI:

gemini extensions install https://github.com/hermoso-ai/hermoso

Grok (xAI) viene en tres formas, y cada una se conecta de manera diferente:

  • grok.com y las apps de Grok usan el conector alojado: abre Plugins → Connectors → New Connector → Custom (o ve directamente a grok.com/connectors), pega https://app.hermoso.ai/mcp e inicia sesión con tu cuenta de Hermoso.

  • Grok Bot: agrega la plantilla de Hermoso Marketing Bot. Llega conectado a Hermoso y pide una clave, que creas en la app bajo MCP & CLI → Terminal & API keys.

  • Grok Build, el agente de terminal de xAI, ejecuta un servidor MCP local. Inicia sesión una vez, luego agrégalo:

    npx -y hermoso auth login
    grok mcp add hermoso -- npx -y hermoso mcp
    

Cursor, OpenCode, GitHub Copilot, Windsurf y unos 75 agentes más, a través del instalador de skills abierto:

npx skills add hermoso-ai/hermoso

Pregunta en qué agentes instalar; -a opencode (o cursor, github-copilot, windsurf) elige uno, y --skill hermoso-research instala una sola skill. Los plugins de agente de VS Code también pueden tomar este repositorio completo: ejecuta Chat: Install Plugin From Source y pega https://github.com/hermoso-ai/hermoso.

ChatGPT y Claude.ai se ejecutan en un navegador y no pueden ejecutar una CLI, por lo que usan el conector alojado en su lugar (ver abajo). La app de escritorio de ChatGPT y los administradores del espacio de trabajo de ChatGPT también pueden leer el .claude-plugin/marketplace.json de este repositorio, que instala las skills.

¿Sin navegador en la máquina? Crea una clave en la app bajo MCP & CLI y ejecuta npx -y hermoso auth login --token <key>.

¿Qué superficie debería usar tu agente?

Dos formas, y la correcta se decide por lo que tu cliente puede hacer, no por cuál preferimos.

Tu clienteUsaPor qué
Se ejecuta en un navegador: Claude.ai, ChatGPT, Claude Desktopel conector alojado https://app.hermoso.ai/mcpNo puede generar un proceso local, por lo que una URL es la única forma que tiene. Nada que instalar, sin clave que pegar, y el conjunto completo de herramientas llega con tu contexto de marca guardado. Esta es la respuesta correcta para estos clientes, no una menor.
Puede ejecutar un shell: Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, Hermes, tus propios scriptsla instalación de un comando anterior, o la propia CLI (npm install -g hermoso)Se carga un manifiesto de herramientas en cada sesión, se llame o no a una herramienta. Un comando de shell no cuesta nada hasta que se ejecuta, y llega a todas las herramientas en lugar de la lista predeterminada.

La CLI responde las preguntas que un manifiesto de herramientas respondería, bajo demanda y solo cuando se le pregunta:

npx -y hermoso tools --search reddit   # every matching tool, name + one line
npx -y hermoso tools plan_ad           # one tool's full argument schema
npx -y hermoso call plan_ad --json '{"product":"…"}'   # run it

tools y tools <name> leen un registro incluido en el paquete (sin clave, sin red, sin inicio de sesión), por lo que un agente puede explorar todo el producto antes de que alguien inicie sesión. Solo call gasta, y solo eso necesita hermoso auth login una vez.

¿Quieres las herramientas también en la propia lista de tu agente de codificación? Ese es el servidor MCP, y es opcional. Un hermoso auth login cubre la CLI y permite que claude mcp add hermoso -- npx -y hermoso mcp tome la clave sin bloque env, por lo que el agente puede recurrir a una herramienta nativa cuando quiera resultados estructurados y usar el shell cuando quiera amplitud. Cuesta contexto en cada sesión, así que agrégalo cuando una sesión se asiente en un área y haga muchas llamadas allí; enable_tools({groups:['ads']}) entonces activa la gestión de campañas en una sola llamada gratuita.

Tu agente puede registrarse solo

Un agente sin cuenta de Hermoso puede aprovisionar una, obtener su propia clave y estar renderizando anuncios en la misma sesión. Sin humano en un navegador, sin ticket, sin espera.

# 1. Start a signup. This call takes no credential, because the credential is what it creates.
curl -sX POST https://app.hermoso.ai/v1/signup \
  -H 'content-type: application/json' \
  -d '{"plan":"pro","period":"mo","email":"you@yourcompany.com"}'
# -> { "id": "cs_...", "checkout_url": "https://checkout.stripe.com/...", "claim_token": "hsc_...", "email": { "address": "you@yourcompany.com", "verified": false } }
# email = the human behind the account. A verification link goes there; the account works before it is clicked.
# It is a contact mailbox only, never a sign-in. GET /v1/account/email reports the state; POST /v1/account/email/resend re-sends or changes it.

# 2. Pay at checkout_url. Store claim_token first: it is returned only in that response.

# 3. Claim it. Poll until status is "ready".
curl -sX POST https://app.hermoso.ai/v1/signup/cs_.../claim \
  -H 'content-type: application/json' \
  -d '{"claim_token":"hsc_..."}'
# -> { "status": "ready", "api_key": "hmk_...", "credits": 3000 }

Esa clave hmk_ es la misma credencial que acepta todo lo demás en esta página: /v1, el servidor MCP, la CLI. Apunta tu cliente hacia ella y toda la superficie está abierta.

Pagar es algo que un agente con capacidad de navegador ya puede hacer por sí mismo. El checkout es la página alojada de Stripe, por lo que Claude en Chrome y clientes similares lo completan sin supervisión hoy. Todo lo demás es una transferencia de un clic: envía checkout_url a quien tenga la tarjeta. La misma forma te cubre más tarde, una vez que estés en marcha: buy_credits y upgrade_plan generan un enlace listo para pagar por más créditos o un plan más grande, y billing_status lee el saldo en cualquier momento.

Un agente con su propia credencial de pago puede pagar sin ningún humano. POST /api/billing/machine-payment con {"packId": "pack-1k"} responde HTTP 402 con un desafío WWW-Authenticate: Payment (Stripe, a través del Machine Payments Protocol); paga el desafío y reintenta, y el mismo paquete de créditos llega al mismo saldo. GET /api/billing/config lista los paquetes bajo machinePayments. Mismos paquetes, mismos precios, sin facturación por llamada.

El camino agéntico requiere un plan de pago. Cualquiera de ellos. El plan gratuito existe para una persona que se registra en app.hermoso.ai, y solicitarlo aquí devuelve una negativa que lo dice. Nada se crea hasta que el pago se completa, por lo que un registro no pagado no deja cuenta atrás y no cobra nada.

Una cosa todavía quiere a una persona, y vale la pena saberlo de antemano. Conectar una cuenta social o publicitaria significa una pantalla de consentimiento OAuth, y una pantalla de consentimiento no se puede completar sin cabeza en ninguna plataforma. list_connectors muestra lo que ya está conectado y lo que no. Todo lo demás se ejecuta sin navegador: investigación, generación, publicación en un canal ya conectado, construcción de campañas, informes.

Las formas completas de solicitud y respuesta, más todos los demás endpoints, están en el documento OpenAPI en app.hermoso.ai/openapi.json, servido en vivo desde la misma tabla que monta las rutas.

Instantáneo: el conector alojado de Claude.ai

Pega https://app.hermoso.ai/mcp?src=readme en Claude → Customize → Connectors → Add → Add custom connector, presiona Continue, elige Sign in now bajo Authentication (el detector de Claude preselecciona "No sign-in" porque nuestro handshake de descubrimiento es abierto, y con eso tu primera solicitud vuelve "Authentication required"), presiona Add y Connect, aprueba con tu cuenta de Hermoso, y listo: el conjunto completo de herramientas con tu contexto de marca guardado, facturado a tu plan.

Inicio rápido para Claude Code (un comando)

  1. Obtén una cuenta en app.hermoso.ai. El nivel gratuito está incluido; los planes y créditos son los mismos que usa el Studio web. O salta el navegador por completo y deja que tu agente se registre solo en un plan de pago con POST /v1/signup (arriba).
  2. Instala el plugin. Agrega las cinco skills de Hermoso, que impulsan la CLI hermoso a través de npx:
claude plugin marketplace add hermoso-ai/hermoso && claude plugin install hermoso@hermoso

¿Ya estás dentro de una sesión? /plugin marketplace add hermoso-ai/hermoso, luego /plugin install hermoso@hermoso. Codex, Gemini CLI y el resto están en Instalar en un comando. 3. Inicia sesión una vez. npx -y hermoso auth login abre tu navegador; tu agente también lo ejecuta por sí mismo la primera vez que necesita Hermoso. En una máquina sin navegador, usa npx -y hermoso auth login --token hmk_… con una clave de la pestaña MCP & CLI, bajo Terminal & API keys (Settings → API keys, o https://app.hermoso.ai/?tab=api-keys, ve directo allí). 4. Pide lo que quieras, en tus indicaciones normales. Claude Code elige la skill de Hermoso para el trabajo y ejecuta los comandos. Tú no escribes ninguno.

¿Prefieres instalar la CLI manualmente? npm install -g hermoso pone el mismo comando hermoso en tu PATH, y las skills lo usan cuando está allí.

La URL alojada también funciona en Claude Code, pero el plugin es el camino más ligero allí porque no carga ninguna lista de herramientas en tus sesiones. Si quieres el conector: claude mcp add --transport http hermoso "https://app.hermoso.ai/mcp?src=readme", y claude mcp list reporta ! Needs authentication hasta que ejecutas claude mcp login hermoso una vez y apruebas en tu navegador (--no-browser imprime el enlace en una máquina sin cabeza). Medido contra Claude Code 2.1.282 el 2026-09-25.

Tu agente ahora tiene el estudio completo con el contexto de tu perfil: los detalles de marca, productos, logotipos y memoria aprendida que configuraste en la app web se aplican automáticamente (get_brand muestra lo que está guardado; omite brand en plan_ad/plan_variations para usarlo). Los renders facturan tus créditos de Hermoso, a los mismos precios que el Studio. Solo las ejecuciones de modelos de IA y la investigación de Ad Spy gastan créditos; publicar, programar, gestión de anuncios y analítica son gratis en todos los planes (publicar en X y leer datos de X son la única excepción por llamada, gestionar anuncios de X es gratis).

1. Servidor MCP (stdio), opcional en un agente de codificación

hermoso mcp ejecuta un servidor MCP stdio que expone el conjunto completo de herramientas, para un cliente que quiera las herramientas de Hermoso en su propia lista. El paquete publicado hermoso significa que no hay clonación: npx -y hermoso mcp lo descarga y lo ejecuta. Inicia sesión una vez con la CLI y ninguna clave va a la configuración de ningún cliente, porque hermoso mcp lee el bearer hermoso auth login almacenado:

npm install -g hermoso && hermoso auth login && claude mcp add hermoso -- npx -y hermoso mcp

En una máquina sin navegador, omite el inicio de sesión y pasa la clave al cliente en su lugar:

claude mcp add hermoso -e HERMOSO_TOKEN=hmk_… -- npx -y hermoso mcp

Cursor / Codex: inicia sesión de la misma manera, luego agrega a mcp.json (Codex usa el equivalente TOML). Elimina el bloque env por completo si iniciaste sesión arriba; está ahí para CI, donde el proceso no puede leer tu directorio de inicio:

{ "mcpServers": { "hermoso": { "command": "npx", "args": ["-y", "hermoso", "mcp"],
  "env": { "HERMOSO_API_BASE": "https://app.hermoso.ai", "HERMOSO_TOKEN": "<your token>" } } } }

Luego pregúntale a tu agente: "Genera un anuncio de imagen con Hermoso."

Qué cubren las 906 herramientas

Espionaje / investigación de anuncios — find_competitors, competitor_teardown, pull_competitor_ads, research_ads; las bibliotecas de anuncios de Meta / Google / LinkedIn (search_meta_ads, search_google_ads, search_linkedin_ads); redes sociales orgánicas (search_tiktok, search_instagram, search_youtube, search_reddit, search_threads); fetch_social_data, mine_angles, analyze_video, check_ad_policy, list_skills / get_skill.

Crear — draft_brand → plan_ad → render_ad (el pipeline de calidad de Studio: texto compuesto, voz limpia, música, tarjeta final de marca), o generate_image / generate_video / generate_avatar (creadores UGC + sincronización de labios). El elenco guardado del espacio de trabajo es reutilizable: list_creators devuelve cada creador guardado con su URL de retrato, save_creator agrega uno, delete_creator elimina uno — vuelve a pasar un retrato a generate_avatar / generate_video / recast_motion y la MISMA persona protagoniza cada anuncio, en lugar de una cara nueva en cada renderizado. También make_template_ad (formatos de anuncios HTML nativos), make_explainer, product_sizzle, make_thumbnail, clone_static, recast_motion, reframe_video, upscale_video, dub_video, change_voice, finish_video, fix_beat, stitch_video, clip_video, post_edit, más plan_variations + score_ad para distribuir y clasificar. La duración la defines tú: pasa durationSeconds a plan_ad y el guion gráfico se crea para esa duración — una duración que cabe en un clip del modelo de renderizado se renderiza como una sola toma continua; las más largas se unen a partir de actos (en un modelo de clips de 15 s, 40 s = 15+15+10), nunca comprimidas en el tiempo. Lo que cabe en un clip es el máximo del propio modelo, no un número fijo: la mayoría de los modelos de video limitan un clip a 15 segundos y el de clip más largo toma 30 segundos en una sola toma ininterrumpida con audio sincronizado nativo. hermoso_capabilities es la lista en vivo — duraciones, resoluciones y el costo exacto en créditos de cada nivel — y nombrar ese modelo en model es cómo lo obtienes, ya que un renderizado sin nombre se enruta por un grupo automático más limitado.

Ads Studio (make_static_ads): elige productos y una cantidad y obtén un lote de anuncios estáticos terminados en una sola llamada, cada uno con un ángulo de venta diferente y un diseño diferente, con tu foto de producto real y tu logotipo superpuestos. El catálogo de productos del que se nutre (list_products, add_product, refresh_products, update_product, remove_product) es una caché de la página en vivo de cada producto, por lo que los nombres, las fotos y los precios provienen de la propia página.

Intercambia a una persona en cualquier video (recast_hook, recast_motion): mantén la escena, los cortes y el sonido y cambia quién está en pantalla, usando tu propia foto, un creador guardado o una persona de IA (en el Studio web puedes describir a un presentador con palabras). Las caras reales de tus propias fotos requieren un plan de pago; las personas de IA funcionan en todos los planes.

Campo de pruebas de modelos en bruto — el catálogo completo (más de 30 modelos de imagen / video / voz / escritura, cada uno con su costo exacto de crédito por renderizado) sin marco publicitario: generate_image / generate_video con useBrand:false, generate_voice, generate_text. El valor predeterminado de imagen es Nano Banana 2.1.

Publica en tus propios canales — once de ellos: Facebook, Instagram y Threads (post_to_meta), TikTok (post_to_tiktok), YouTube (post_to_youtube + update_youtube_video, youtube_video_insights, lectura/respuesta de comentarios), X (post_to_x, x_post_metrics, x_post_insights, x_mentions, list_x_dms, send_x_dm), perfil de LinkedIn y páginas de empresa (post_to_linkedin, post_to_linkedin_page), Pinterest (post_to_pinterest + tableros), Bluesky (post_to_bluesky, delete_bluesky_post, bluesky_post_metrics, más list_bluesky_convos / read_bluesky_dm / send_bluesky_dm) y Telegram (post_to_telegram, delete_telegram_message, list_telegram_chats) y Google Business Profile (abajo). schedule_post / list_scheduled / cancel_scheduled te dan un calendario de contenido único sobre exactamente ese conjunto. upload_file trae cualquier medio externo o local, no solo renderizados de Hermoso. La publicación en X factura créditos por llamada a la API (X cobra por solicitud); una publicación con un enlace cuesta 13× una sin él. Google Business Profile es el panel que una empresa muestra en Google Search y Maps. post_to_google_business publica una publicación con texto, opcionalmente una foto y un botón de llamada a la acción (Google no acepta video en las publicaciones, por lo que un horario con solo un video se rechaza para ese canal); list_google_business_posts y delete_google_business_post gestionan lo que se muestra. list_google_business_reviews encuentra las reseñas sin respuesta aún y reply_to_google_business_review responde una como la empresa. google_business_insights informa impresiones de búsqueda y Maps, llamadas, clics en el sitio web y solicitudes de indicaciones, y google_business_search_keywords las palabras que la gente buscó para encontrar la ficha. list_business_locations, get_business_location y update_business_location leen y editan la propia ficha: horarios, teléfono, sitio web, descripción, categorías. Las preguntas y respuestas de Business Profile no se ofrecen: Google las retiró el 2025-11-03.

Envía mensajes a clientes en WhatsApp — mensajería, no un duodécimo canal de publicación: le envías un mensaje a una persona, y nada de esto publica en un feed. list_whatsapp_accounts encuentra la cuenta comercial y sus números, list_whatsapp_templates / create_whatsapp_template / delete_whatsapp_template gestionan las plantillas que Meta revisa, y send_whatsapp_message envía una — con confirmación obligatoria, porque llega a un teléfono real y Meta factura a la empresa por la conversación. Dos límites que son hechos permanentes de la API de Meta en lugar de algo pendiente: Hermoso no recibe webhooks de WhatsApp, por lo que no hay historial de mensajes para leer — no es una superficie de bandeja de entrada y list_inbox no lo cubre — y fuera de la ventana de 24 horas que se abre cuando el cliente envía el primer mensaje, WhatsApp acepta una plantilla APROBADA y nada más.

Automatiza los DMs de Instagram — save_instagram_dm_automation configura una regla que responde a las personas por la marca: un comentario con una palabra clave en una publicación, la siguiente publicación o cualquier publicación recibe una respuesta privada, y un DM, una respuesta a una historia o un enlace ig.me recibe una respuesta, con botones de enlace opcionales, una respuesta pública al comentario, un filtro de seguimiento y una prueba en seco. test_instagram_dm_automation muestra exactamente lo que un comentario o DM de muestra enviaría sin enviarlo, y list_instagram_dm_automations / delete_instagram_dm_automation leen las estadísticas y el registro de envíos de cada regla o la eliminan. Cada persona recibe una respuesta por publicación, Meta permite una respuesta privada dentro de los 7 días posteriores al comentario, y no se ejecuta IA en la ruta de envío, por lo que no cuesta créditos.

Automatiza los DMs en Facebook y X también — save_dm_automation (con test_dm_automation, list_dm_automations y delete_dm_automation) toma un channel: instagram, facebook (un comentario con palabra clave en una publicación de la página o un anuncio recibe una respuesta privada en Messenger; una palabra clave de Messenger o un enlace m.me recibe una respuesta) o x (una mención con palabra clave o una respuesta debajo de tu publicación recibe una respuesta pública; una palabra clave de DM recibe un DM de vuelta). X solo permite un DM automatizado después de que la persona te haya enviado un DM, y un DM que diga STOP excluye a esa persona. Facebook es gratis como Instagram. X nos factura por llamada, por lo que una automatización de X se cobra en créditos por cada mención, respuesta o DM que X entregue, más cada respuesta o DM enviado, y quedarse sin créditos detiene sus reglas de X.

Publicación automática (set_post_refill, get_post_refill, run_post_refill): di con qué frecuencia, dónde y sobre qué ("2 publicaciones al día en Instagram y Bluesky sobre nuestra rutina de mañana lenta, déjame revisar primero") y Hermoso crea nuevas publicaciones desde tu marca y llena tu calendario. Elige revisar primero (cada lote espera tu aprobación, edición o rehacer) o publicar automáticamente (directamente en el horario, aún retirable). Sigue las notas que dejas y escribe a partir de lo que ha funcionado en cada canal. Los créditos se usan solo cuando se hace una publicación.

Ejecuta los anuncios — árboles de campaña completos, creados en pausa y leídos antes de que se informe cualquier cosa, con cada cambio de gasto con confirmación obligatoria, en doce plataformas: Meta, Google Ads, LinkedIn Ads, Reddit Ads, Pinterest Ads, Microsoft Advertising, ChatGPT Ads (API de anunciantes de OpenAI), X Ads, TikTok Ads, Snapchat Ads, Apple Ads (Apple Search Ads en la App Store) y AppLovin Ads (informes y el píxel del sitio web en las claves que tiene cada cuenta; construcción de campañas una vez que AppLovin habilita el acceso a la API de gestión de campañas en la cuenta, y eventos de conversión del lado del servidor con la clave de API de conversión que AppLovin emite a pedido). Cada una tiene herramientas de lista + informe + crear + presupuesto/estado (por ejemplo, list_google_ads_campaigns, google_ads_report, create_google_ads_campaign, set_google_ads_budget, set_google_ads_status). Snapchat necesita un paso adicional que las demás no: un anuncio apunta a un CREATIVO, y cada creativo de Snapchat debe llevar un ID de perfil público — constrúyelo con upload_snapchat_ads_creative.

Alimenta las superficies de compras — Google Merchant Center es el catálogo que anuncia una campaña minorista de Performance Max o Shopping (create_google_ads_performance_max_campaign toma un merchantCenterId), y lo gestionas desde aquí: cuentas y estado de cuentas, fuentes de datos, inserción / actualización / eliminación de productos, inventario por región, cuota, merchant_report para rendimiento a nivel de producto, notificaciones y fuentes de conversión, más el bucle de desaprobación — list_merchant_issues dice qué está mal y merchant_issue_help devuelve la solución documentada de Google. Las promociones requieren la inscripción del propio comerciante en el programa de promociones de Google; sin ella, Google rechaza esa sub-API por completo. Microsoft Merchant Center está cubierto con la misma forma (tiendas, catálogos, productos, problemas) para Bing Shopping.

Mide lo que lograron los anuncios — Google Analytics 4 cierra el ciclo. Cada otro conector aquí informa lo que un anuncio costó; este es el que informa lo que hizo. analytics_report desglosa sesiones, usuarios, conversiones e ingresos por canal, fuente/medio, campaña, página de destino, país, dispositivo o fecha, para que la campaña que Hermoso creó y los ingresos que generó estén en una sola conversación. analytics_realtime muestra quién está en el sitio ahora mismo. Comienza en list_analytics_properties — las herramientas toman un ID de propiedad numérico, no el ID de medición G-XXXXXXXXX de tu fragmento de seguimiento, y esto es lo que resuelve uno a partir del otro. También escribe además de leer: create_analytics_key_event marca un evento que GA4 ya recopila como evento clave — que es lo que lo hace importable en Google Ads como conversión — y create_analytics_custom_dimension registra un parámetro de evento para que los informes puedan desglosar por él, con list_analytics_definitions mostrando lo que la propiedad ya mide. Inicia sesión con la misma cuenta de Google que Google Ads, YouTube y Drive, pero es su propia conexión. Solo GA4 — la API no tiene superficie de Universal Analytics. Una dimensión personalizada se puede archivar pero nunca eliminar, y una propiedad contiene 50 con ámbito de evento.

Archivos — CRUD de Google Drive (save_to_drive, list_drive_files, update_drive_file, delete_drive_file, create_drive_folder), Google Sheets (create_sheet, append_to_sheet, read_sheet), Google Docs (create_doc, append_to_doc) y OneDrive (save_to_onedrive + CRUD completo). Espacio de trabajo y cuenta — perfiles (list_brands, create_brand, use_brand, update_brand, delete_brand; una cuenta contiene muchos perfiles, cada uno es una marca, un cliente, un creador o un espacio de trabajo personal, por lo que una agencia gestiona a cada cliente desde aquí), memoria (remember, forget, list_memory), habilidades personalizadas (save_skill, get_skill, list_skills, delete_skill — la biblioteca única, que absorbió las antiguas personas de AI-Employee), equipo (list_team, invite_member, remove_member, set_role), configuración (get_settings, update_settings — incluido el idioma en el que se escriben cada anuncio, guion y plan), conectores (list_connectors, list_connector_accounts, set_connector_accounts, disconnect_connector) y facturación (hermoso_credits, billing_status, buy_credits, upgrade_plan, set_auto_reload), además de list_jobs / get_job para renderizados asíncronos.

Las cuentas de conector se eligen, no se adivinan. Una persona suele administrar varias páginas de Facebook, clientes de Google Ads o páginas de empresa de LinkedIn. Solo las cuentas marcadas para un perfil son utilizables — se aplica en el servidor, y una selección vacía no comparte nada. Vincular una cuenta nueva es el único paso que no es headless (es una pantalla de consentimiento OAuth, por lo que el usuario lo hace en la aplicación).

Los trabajos de renderizado se ponen en cola en el servidor y se consultan hasta completarse, devolviendo una URL servida.

2. CLI: la ruta sin contexto para agentes de terminal

bin/hermoso.mjs expone el conjunto completo de herramientas MCP como comandos de subproceso, para que un agente pueda ejecutar comandos externos en lugar de llevar un manifiesto de herramientas pesado.

npm install -g hermoso                             # installs `hermoso`
hermoso capabilities                               # valid model ids + costs (run first)
hermoso create --brand "YourBrand" --product "your best-selling product" --format image
hermoso generate image --prompt "…" --ref ./product.png --wait
hermoso generate video --prompt "…" --duration 8 --wait
hermoso competitors yourbrand.com
hermoso research "Liquid Death’s longest-running ads"

Añade --json a cualquier comando para obtener salida de máquina.

Esos atajos son la ruta común, no el límite. Cada herramienta que tiene el servidor MCP también es accesible aquí, incluidos los grupos de campañas publicitarias y análisis que un conector deja fuera de su lista predeterminada:

hermoso tools                          # every tool, grouped, name + one line
hermoso tools --group ads --search reddit   # narrow it
hermoso tools create_meta_campaign     # that tool's full argument schema
hermoso call create_meta_campaign --json '{"name":"…"}'   # run it
hermoso create_meta_campaign --name "…"                   # same thing, shorter

call pasa por el mismo manejador, la misma validación de argumentos y las mismas compuertas de confirmación/gasto que usa el servidor MCP, por lo que no hay una segunda implementación que pueda desviarse. tools y tools <name> leen un registro incluido en el paquete, por lo que no necesitan clave, red ni inicio de sesión.

3. Habilidades: lo que instala un agente de codificación

skills/ contiene cinco habilidades instalables:

HabilidadQué hace
hermoso-researchEncuentra competidores, extrae sus anuncios reales en ejecución, destaca los ganchos que vale la pena copiar
hermoso-generateUn prompt para una imagen, video, clip de avatar o corte cosido terminado
hermoso-ad-from-brandUna marca o dominio para un anuncio terminado y on-brand, con concepto y copia incluidos
hermoso-product-photoshootUna foto de producto real compuesta en escenas de estudio, estilo de vida o héroe
hermoso-marketingEl ciclo completo: investigar, crear, publicar y programar, campañas pagadas, medir

Son lo que añade cada instalación de un comando en la parte superior de esta página, en Claude Code, Codex, Gemini CLI y a través de npx skills add. Desde un clon, copiar también funciona:

cp -r skills/* ~/.claude/skills/

Luego invoca /hermoso-ad-from-brand an ad for yourbrand.com, our hero product.

Pídelo con tus propias palabras

Las habilidades se eligen solas. Estos son prompts completos, no comandos:

  • Encuentra mis 5 principales competidores para [producto + URL], extrae sus mejores anuncios de Meta y TikTok de los últimos 90 días, y dime los 3 ganchos y 2 formatos que vale la pena copiar, con la evidencia.
  • Haz los anuncios de esta semana para [marca]: dos ganchos en dos formatos, uno UGC y uno visual de producto, 9:16. Califícalos y verifica las políticas antes de que los envíe.
  • Aquí hay un anuncio de un competidor: [enlace]. Desglosa por qué funciona, luego reconstruye la estructura con mi producto, mi marca y un gancho nuevo.
  • Llena mi cola social para los próximos 7 días en Instagram, TikTok, X y LinkedIn, reutilizando mi mejor publicación, con subtítulos por canal.
  • Toma al ganador de la semana pasada y crea una campaña de prueba de $20/día en Meta y TikTok, tres conjuntos de anuncios, un ángulo cada uno. Déjala en pausa y lee el árbol de vuelta para que pueda revisarla.
  • Extrae el rendimiento de la campaña del mes pasado en todas las plataformas. ¿Cuáles dos creativos ganaron, por qué, y qué debería decir el brief del próximo mes?

Configuración

EnvSignificado
HERMOSO_API_BASEEl origen de la API de Hermoso (por defecto https://app.hermoso.ai — establece http://localhost:3000 si ejecutas la aplicación tú mismo)
HERMOSO_TOKENClave de agente Bearer (hmk_…) — requerida contra la aplicación alojada
HERMOSO_PROFILEID de perfil, para cuentas con múltiples perfiles
HERMOSO_OWNERSolo para un perfil que otra cuenta compartió contigo (un espacio de trabajo de equipo): el ID de la cuenta propietaria. Establécelo junto con HERMOSO_PROFILE, y establece HERMOSO_PROFILE al profileUuid de ese espacio de trabajo (se rechaza el slug corto de un perfil). Ejecuta list_brands (o hermoso list_brands desde la CLI) para imprimir ambos valores para cada espacio de trabajo al que puedas entrar. El servidor reautoriza el par en cada solicitud, por lo que un valor incorrecto se rechaza, nunca se confía.

mcp/http.mjs es el transporte de conector remoto alojado (pega una URL en Claude.ai → Conectores). Se incluye en este repositorio por transparencia y se niega a montarse sin identidad autenticada — sin gasto anónimo, nunca.

Licencia

MIT © Hermoso