spy-competitor-adslisted
Install: claude install-skill novoads/claude-code-ads
# Spy Competitor Ads
Find what a competitor is actually running, and put the files on disk. That is the whole job.
It ranks what it finds, on evidence the Ad Library actually publishes — how long a creative has
run and how many audiences it runs against. It does **not** judge craft, explain "why it's
winning", or write a brief; it has not watched these ads and neither have you. What you do with
them belongs to `clone-image-ad`, which turns a static into your own ads, a reusable template,
or both.
The mechanics are one HTTP call per competitor. Everything that makes a run good or bad is
judgement: which competitors, which media mode, and which of the returned ads are actually the
brand's rather than somebody else's.
## Before anything: this runs on a Novoads account
- **Base URL:** `https://api.novoads.ai/v1` (host overridable with `NOVOADS_BASE_URL` — host
only, you append `/v1`).
- **Auth:** `Authorization: Bearer $NOVOADS_API_KEY`, read from `.env` at the repo root. The key
is `novo_` plus 64 hex.
- **Check:** `./scripts/check-novoads-env.sh`
- **Never** print API keys, commit `.env`, or paste a key into `MASTER_CONTEXT.md`.
> **REST key required. A Novoads MCP connector is not a substitute.** If
> `NOVOADS_API_KEY` is missing or still the placeholder, stop before any
> generation work and tell the user: "Before continuing, create an API key at
> <https://novoads.ai/dashboard/settings?tab=api> and paste it into `.env`."
> That holds even when `mcp__novoads__*` too