hermoso-generate
Installation
SKILL.md
Hermoso: generate ad creative
You drive the Hermoso CLI (hermoso) to render images and videos. Always report the final media URL.
Setup (once)
- Install the CLI once:
npm install -g hermoso, then run every command ashermoso …, as written below. If you cannot install packages, prefix the commands withnpx -y, but know that npx asks the npm registry on every single call, so an agent making many calls can be rate-limited by npm (an HTTP 429 from npm, before Hermoso is ever reached). No MCP server is needed. - Sign in once:
npx -y hermoso auth login(opens a browser; nothing to paste). On a machine with no browser:npx -y hermoso auth login --token <your key>, using a key from app.hermoso.ai under MCP & CLI. No account at all? An agent can sign itself up on a paid plan withPOST /v1/signupat app.hermoso.ai; see the Hermoso README. - For anything these steps do not cover:
hermoso tools --search <what you want>finds the tool,hermoso tools <name>prints its arguments,hermoso call <name> --json '{...}'runs it. The CLI reaches every tool and costs no context until it runs.
Procedure
- Always run
hermoso capabilitiesfirst. It lists the valid image/video model ids, their credit costs, aspect ratios, video durations, and the recipe ids. Never guess a model id. - Pick a high-quality default (quality over cost is the house rule): for images prefer the model marked
★best(e.g.nano-banana-2.1); for product composites pass the real product image with--ref. For video, use a featured model and a sensible duration. - Generate:
- Image:
hermoso generate image --prompt "<full prompt incl. any on-image text>" [--ref ./product.png] [--model <id>] [--aspect 1:1] - Video:
hermoso generate video --prompt "<shot description>" [--ref ./frame.png] [--duration 8] [--aspect 9:16] [--model <id>] [--tts "<voiceover>"] [--voice Rachel] --wait - Avatar (lip-sync):
hermoso generate avatar --image ./face.png --script "<words>" [--voice George] --wait - Stitch (≥2 scenes):
hermoso generate stitch --scenes scenes.json --wait
- Image:
- Video/avatar/stitch are job-based: keep
--wait(default) so the command blocks and prints the final URL. If you don't wait, poll withhermoso jobs get <id> --wait. - Report the served URL (e.g.
https://assets.hermoso.ai/…), never a raw job id. If the user wants the file,hermoso fetch <url> --out name.png.