← ClaudeAtlas

insightslisted

Analyze OpenAI ChatGPT Ads performance in natural language — spend, impressions, clicks, CTR/CPC/CPM, best and worst performers, daily trends. Use when the user asks "how are my chatgpt ads doing", "which ad performs best", "spend this week", "show CTR by campaign", or any performance question about OpenAI/ChatGPT ads.
AvyanshKatiyar/openai-ads-mcp · ★ 0 · AI & Automation · score 70
Install: claude install-skill AvyanshKatiyar/openai-ads-mcp
# OpenAI ChatGPT Ads — Insights Answer performance questions via the `get_insights` tool. ## Request The user's question: $ARGUMENTS ## How the insights API thinks - **level** picks the scope path: `ad_account` (whole account), or `campaign` / `ad_group` / `ad` with an `entity_id`. - **aggregation_level** picks the row granularity *within* that scope — the ranking trick: `level="ad_account", aggregation_level="ad", sort_field="clicks", limit=5` = top 5 ads account-wide. - **time_granularity**: `"none"` for totals, `"daily"` for trend rows. - **since/until**: YYYY-MM-DD. Metrics: impressions, clicks, spend, ctr, cpc, cpm. ## Workflow 1. `get_ad_account` once for currency and account name. 2. Map the question to one or two `get_insights` calls (scope → aggregation → time range → sort). "Best/worst X" → sort by the metric they care about; default clicks. 3. Resolve names: insights rows carry ids — when the user thinks in names, cross-reference `list_campaigns`/`list_ads`. 4. Answer in plain language first (one sentence with the number that answers the question), then a compact table. State the date range you actually queried. Flag low-volume rows (<100 impressions) as too thin to compare. ## Anti-patterns - Dumping raw JSON instead of answering the question asked. - Comparing CTRs across rows with wildly different impression counts without saying so. - Inventing metrics the API doesn't return (no conversions in insights today — that's the Conversions API, not yet covere