Skip to content
Marketing
Skill

/demand-gen-audit

Google Ads Demand Gen audit — audience strategy, creative format diversity, creative freshness, placements, CPA vs goal

From plugin
claude-code-marketing-skills
10251 skills
Install
$ npx -y skills add cognyai/claude-code-marketing-skills --skill demand-gen-audit --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/demand-gen-audit

Context preview

The summary Claude sees to decide when to auto-load this skill.

Google Ads Demand Gen audit — audience strategy, creative format diversity, creative freshness, placements, CPA vs goal

SKILL.md

demand-gen-audit.SKILL.md
name: demand-gen-audit
description: Google Ads Demand Gen audit — audience strategy, creative format diversity, creative freshness, placements, CPA vs goal
version: "1.0.0"
author: Cogny AI
requires: cogny-mcp
platforms: [google-ads]
user-invocable: true
argument-hint: "[campaign name or id]"
allowed-tools:
  - mcp__cogny__google_ads__tool_list_accessible_accounts
  - mcp__cogny__google_ads__tool_execute_gaql
  - mcp__cogny__google_ads__tool_get_gaql_doc
  - mcp__cogny__google_ads__tool_get_reporting_view_doc
  - mcp__cogny__create_finding
  - WebFetch
  - WebSearch

Demand Gen Audit

A deep audit of your Demand Gen campaigns — Google's visual, social-style campaign type running across Discover, Gmail, YouTube feeds and Shorts. Demand Gen lives or dies on audiences and creative, so that's where this audit spends its time.

**Requires:** Cogny Agent subscription ($9/mo) — [Sign up](https://cogny.com/agent)

Prerequisites Check

If `mcp__cogny__google_ads__tool_execute_gaql` is not available, print the Cogny sign-up instructions (see `/google-ads-audit`) and stop.

Usage

`/demand-gen-audit` — audit every Demand Gen campaign in the account `/demand-gen-audit Prospecting - Q2` — audit one campaign by name or id

Why Demand Gen needs its own audit

Demand Gen has no keywords and no search intent. It's an interruption channel — you win by showing the right **audience** the right **creative**. The audit checks audience strategy, creative format spread, creative fatigue, and whether CPA is tracking toward goal.

Steps

1. Find the Demand Gen campaigns

SELECT campaign.id, campaign.name, campaign.status,
  campaign.bidding_strategy_type, campaign.target_cpa.target_cpa_micros,
  campaign_budget.amount_micros, metrics.cost_micros, metrics.conversions,
  metrics.conversions_value, metrics.clicks, metrics.impressions
FROM campaign
WHERE campaign.advertising_channel_type = 'DEMAND_GEN'
  AND segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC

Compute CPA and compare to the campaign's target CPA. Flag campaigns running >50% over target.

2. Ad group & audience strategy

SELECT ad_group.name, ad_group.status, campaign.name,
  metrics.cost_micros, metrics.conversions, metrics.clicks
FROM ad_group
WHERE campaign.advertising_channel_type = 'DEMAND_GEN'
  AND segments.date DURING LAST_30_DAYS
SELECT ad_group.name, ad_group_criterion.type,
  ad_group_criterion.user_list.user_list,
  ad_group_criterion.audience.audience
FROM ad_group_criterion
WHERE campaign.advertising_channel_type = 'DEMAND_GEN'
  AND ad_group_criterion.status = 'ENABLED'

Flag:

  • Ad groups with **no audience** attached (running fully broad — burns budget)
  • Only broad/affinity audiences, no first-party signal (customer match, website

visitors) and no lookalike segments

  • Prospecting and remarketing audiences mixed in one ad group — they need different

creative and different bids

  • A single ad group per campaign (no audience testing)

3. Creative format diversity

SELECT ad_group.name, ad_group_ad.ad.id, ad_group_ad.ad.type,
  ad_group_ad.ad_strength, ad_group_ad.status,
  metrics.impressions, metrics.clicks, metrics.conversions
FROM ad_group_ad
WHERE campaign.advertising_channel_type = 'DEMAND_GEN'
  AND segments.date DURING LAST_30_DAYS

Demand Gen ad types: single image, carousel, and video responsive. Flag:

  • **Single-format** ad groups — image-only campaigns miss YouTube/Shorts inventory;

add video

  • Ad strength `POOR` / `AVERAGE`
  • Fewer than 2–3 ads per ad group (nothing to optimize between)
  • Zero video creative when the budget is >$3K/mo

4. Creative fatigue

For each enabled ad, look at the CTR / conversion-rate trend over the last 30 days vs the prior 30. Flag:

  • Ads live >60 days with a falling CTR (classic fatigue)
  • Ad groups where every ad launched the same day and none has refreshed since

5. Placement & exclusions

Flag:

  • No content/placement exclusions — Demand Gen can serve next to anything
  • Conversions concentrated in one surface while budget spreads evenly (consider

surface-specific campaigns)

6. Conversion goal alignment

Demand Gen is upper/mid funnel. Flag campaigns optimizing to a hard bottom-funnel action (purchase) with too few conversions to learn — a softer goal (lead, signup, add-to-cart) often suits the funnel stage better.

7. Score and report

Demand Gen Audit — [Account Name]
Demand Gen Score: X/100  ·  30-day spend: [X]  ·  Conv: [X]  ·  CPA vs target: [X]

| Campaign | Ad groups | Audiences | Formats | Avg ad strength | CPA |
|----------|-----------|-----------|---------|-----------------|-----|

🔴 Critical   — no audiences, no conversions, CPA far over target
🟡 Important  — single-format creative, fatigue, no first-party signal
🟢 Optimization — add lookalikes, placement exclusions, creative refresh

Top 3 Actions:
1. [Highest $ impact]
2. ...
3. ...

8. Record findings

{
  "title": "Demand Gen 'Prospecting - Q2' runs image-only — missing YouTube & Shorts",
  "body": "All 4 ads in the campaign are single-image. Demand Gen serves video inventory on YouTube feed and Shorts that image ads can't reach. The campaign spends $110/day. Add 2-3 vertical video creatives to open that inventory.",
  "action_type": "creative_refresh",
  "expected_outcome": "Access to video inventory; lower CPM and broader reach",
  "estimated_impact_usd": 900,
  "priority": "medium"
}

Action types: `creative_refresh`, `audience_refinement`, `campaign_optimization`, `bidding_strategy`, `placement_exclusion`.

Critical rules

1. **Audiences and creative are the whole game.** Demand Gen has no keyword lever — spend the audit there. 2. **Always check for video.** Image-only Demand Gen leaves the best inventory unused. 3. **Quote real numbers**: format counts, audience types, CPA vs target. 4. **Read-only.** Recommend audience and creative changes; never make them.

Read more
Ships withclaude-code-marketing-skills

AI marketing skills for Claude Code, Cursor, Windsurf, and other AI coding tools. Audit SEO, analyze ads, research competitors, qualify leads — all from your terminal. Free skills need no account. Premium skills connect your real data for $9/mo.

Get the whole plugin
Stats
102
Stars
12
Forks
Maintained
Maintenance
HTML
Language
3mo ago
Last commit
5mo ago
Created

Repo: cognyai/claude-code-marketing-skills