ads-creativelisted
Install: claude install-skill devaimani/openai-ads-mcp
# Ad copy
## Limits
| Field | Limit |
|---|---|
| `title` | **3–50 characters** |
| `body` | **up to 100 characters** |
The figures 35 and 67 that circulate are wrong. They come from a repository
without a source and contradict the OpenAPI spec.
Check every draft:
```bash
uv run python scripts/validate_creative.py \
--title "..." --body "..." --brand "YourBrand"
```
The validator counts visible characters, not code points. With composed
characters — German umlauts in NFD form, emoji, flags — `len()` miscounts and
rejects valid copy.
## The reading situation
The ad appears mid-conversation as a small card. The reader is not searching;
they are occupied with something else. The logo is displayed automatically.
Three consequences:
1. **The brand name does not belong in the headline.** The logo already carries
it. Spend those six to ten characters on substance.
2. **The first clause carries the ad.** What follows a comma often goes unread.
3. **Concrete beats general.** "In 4 weeks" works; "fast" does not.
## What works
**Contrast.** Makes the difference visible in few characters.
"Automation without an IT department" (35)
**Proof.** A number, a name, a deadline.
"Prototype in 4 weeks" (20)
**Imperative.** Verb first, reads quickly.
"Get a quote in 48 hours" (23)
**Compressed promise.** Subject, verb, outcome. No filler.
"Invoices that file themselves" (29)
**Question.** Works when it names a pain the reader recognises.
"Still writing quotes by hand?" (29)
#