hermoso
Run marketing from your agent — research winning ads, make finished image and video ads, publish, schedule and run ad campaigns.
Hermoso
@hermoso-dev
Install
$ openclaw skills install @hermoso-dev/hermosoHermoso — the marketing MCP
Hermoso is an AI ad studio an agent operates end to end: research the ads already winning in any market, create finished on-brand image and video ads (including UGC-style talking-head spots with native speech), publish or schedule to the user's own channels, and build and read ad campaigns on eleven ad platforms. 366 tools over one MCP server; every area works on its own — nothing requires another step first.
Connect (once)
- The user creates a free account at https://app.hermoso.ai and makes an agent key under Settings → Agents & API
(it starts with
hmk_). Free accounts start with credits; renders are quoted before they run. - Add Hermoso as an MCP server in OpenClaw (Settings → MCP → Add server), either transport:
- Streamable HTTP: URL
https://app.hermoso.ai/mcp, headerAuthorization: Bearer hmk_… - Stdio: command
npx, args-y hermoso mcp, environmentHERMOSO_TOKEN=hmk_…
- Streamable HTTP: URL
- Verify it answers:
openclaw mcp doctor hermoso --probe. Then callhermoso_capabilities(free) once — it returns the live model catalog with exact credit costs, which is what to quote before any render.
The tools, by job
- Research:
find_competitors,pull_competitor_ads,research_ads,search_meta_ads,search_google_ads,search_linkedin_ads,search_tiktok,search_instagram,search_youtube,mine_angles,analyze_video. Nearly free. Report the strongest hooks and angles and quote the real headlines. - Create:
draft_brand(onboard a brand from its website once) →plan_ad→render_ad(the Studio pipeline: brand, product photo, storyboard, native audio, read-back of the delivered file).generate_image/generate_videofor raw model runs,make_template_adfor native formats,make_explainerfor narrated explainers. Video renders take 2–6 minutes:render_adreturns a job id — keep callingget_jobuntil it reports done, and never describe a video before that. - Publish & schedule:
post_to_meta(Facebook + Instagram + Threads),post_to_x,post_to_linkedin,post_to_tiktok,post_to_youtube,post_to_pinterest,post_to_reddit,post_to_bluesky,post_to_telegram,post_to_google_business;schedule_post,list_scheduled,reschedule_post,cancel_scheduled.upload_fileturns any local or external file into a URL these accept. Channels are connected by the user in the app (OAuth needs a browser);list_connectorssays which are live. - Ads management:
create_meta_campaign/_adset/_ad,create_google_ads_campaign/_ad_group/_ad, and the TikTok, LinkedIn, Pinterest, Reddit, Microsoft, X and ChatGPT equivalents;meta_insights,google_ads_reportand the per-platform reports. Everything is created paused and read back from the platform before it is described. Only theset_*_ads_statustools withconfirm:truecan make money move — never passconfirmunless the user asked to go live.
Shell shortcuts (same account, via exec)
npx -y hermoso auth login --token hmk_…, then: hermoso competitors <domain>, hermoso ads pull --company "<name>",
hermoso research "<request>", hermoso brand draft --domain <domain>, hermoso create --brand <name> --product "<product>" --format video,
hermoso generate image --prompt "…", hermoso jobs get <id> --wait, hermoso credits, hermoso capabilities. Add --json for machine output.
Rules the agent should keep
- Quote credits (from
hermoso_capabilities) before a render or a campaign build; the user pays per render, not per seat. - A render is finished when its URL comes back — not before.
- If a tool answers "not connected", ask the user to connect that channel in the app; the agent cannot complete OAuth.
- Nothing here spends ad budget without the explicit confirm flag.
Top skills in this category
Nano Banana Pro
@steipeteGenerate/edit images with Nano Banana Pro (Gemini 3 Pro Image). Use for image create/modify requests incl. edits. Supports text-to-image + image-to-image; 1K/2K/4K; use --input-image.
AdMapix
@fly0pantsAdMapix raw data layer for ad creatives, apps, rankings, downloads/revenue, and market metadata. Returns structured JSON from the AdMapix API; the calling ag...
YouTube Watcher
@michaelgatharaFetch and read transcripts from YouTube videos. Use when you need to summarize a video, answer questions about its content, or extract information from it.
SuperDesign
@mpociotExpert frontend design guidelines for creating beautiful, modern UIs. Use when building landing pages, dashboards, or any user interface.
Video Frames
@steipeteExtract frames or short clips from videos using ffmpeg.