chatgpt-adslisted
Install: claude install-skill josephbedminster/indie-marketing-skills
# ChatGPT Ads (OpenAI Advertiser API)
There is no MCP server: everything goes through `https://api.ads.openai.com/v1`
(not `api.openai.com`). `scripts/ads.py` in this skill's folder (Python
stdlib only) covers the everyday operations and already handles the API's
traps: use it rather than hand-written `curl`. Read
`references/api-notes.md` (in this skill's folder) only when you need
something the script doesn't do.
## Before anything: the project config
1. Read `.claude/paid-ads-config.md` in the user's project. If it is missing,
run the `paid-ads-setup` skill of this plugin (template in
`../paid-ads-setup/references/config-template.md` relative to this
skill's folder), asking only the questions the ChatGPT section needs.
2. If `.claude/posthog-funnel-map.md` exists, read its **Business profile**
and **Project conventions**: report language and style, what "converted"
means, where reports go. They override this skill's defaults.
3. The script reads its settings from environment variables, falling back to
the first `.env.local` then `.env` found walking up from the current
directory. Run it from the project root. Never print a secret value.
| Variable | Needed for | Default |
|---|---|---|
| `OPENAI_ADS_API_KEY` | everything (secret) | |
| `OPENAI_ADS_PIXEL_ID` | `pixel-events` | |
| `OPENAI_ADS_LANDING_URL` | `create` without `--url` | |
| `OPENAI_ADS_UTM_SOURCE` | `create` | `chatgpt` |
| `OPENAI_ADS_UTM_CAMPAIGN_PREFIX` | `create` without `--utm` |