← AdspirerCONTENT HISTORY
WHAT CHANGED
Update to Adspirer
Snapshot Oct 28, 2026 · 12:05 UTC · version 2.1.0
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save Adspirer and check future changes in Following.
Up to 10 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Create and manage Google Ads campaigns through Adspirer — Search, Performance Max, Demand Gen, YouTube, and Display. Use for Google Ads keywords, search terms, quality score, bid strategies, sitelinks and extensions, PMax asset groups, or anything on Google/AdWords. Covers the asset-bundle expiry and ad-group-id traps.",
"included_files": [
{
"relative_path": "references/bidding.md",
"size_in_bytes": 2162
},
{
"relative_path": "references/campaign-types.md",
"size_in_bytes": 2854
},
{
"relative_path": "references/extensions.md",
"size_in_bytes": 1918
},
{
"relative_path": "references/pmax-assets.md",
"size_in_bytes": 2272
}
],
"name": "adspirer-google-ads",
"skill_md_contents": "---\nname: adspirer-google-ads\ndescription: Create and manage Google Ads campaigns through Adspirer — Search, Performance Max, Demand Gen, YouTube, and Display. Use for Google Ads keywords, search terms, quality score, bid strategies, sitelinks and extensions, PMax asset groups, or anything on Google/AdWords. Covers the asset-bundle expiry and ad-group-id traps.\n---\n\n# Google Ads\n\nEverything on Google goes through the `google_ads` router. Follow `adspirer-mcp` for the\ntwo-step: `{\"action\": \"list_tools\"}` first, then `{\"action\": \"execute\", \"tool_name\": ..., \"arguments\": {...}}`.\n\nAccount parameter: `customer_id`, as a **string**. Hyphens are stripped for you.\nBudgets are in the **account's currency** as a decimal: 50 a day is `50.0`.\n\n## Creating a campaign\n\n**1. Pick the type.** If the user just said \"create a campaign,\" run `select_google_campaign_type`\nrather than guessing. Search, Performance Max, Demand Gen, YouTube, and Display solve different\nproblems — `references/campaign-types.md` has the decision tree and the budget each type actually\nneeds to learn.\n\n**2. Gather what's required.** Budget, final URL, locations, and the conversion goal. Resolve place\nnames with `resolve_google_locations` instead of guessing geo ids.\n\n**3. Prepare assets.** For Performance Max, run `discover_existing_assets` first — the account\nusually already has images and logos, and reusing them is faster and better than asking the user to\nupload. Then `validate_and_prepare_assets`.\n\n> **Asset bundles expire after one hour.** If more than an hour passed between preparing assets and\n> creating the campaign, re-run `validate_and_prepare_assets` and use the fresh bundle. A stale\n> bundle fails at create time.\n\n**4. Create.** The campaign comes back **paused**. It does not spend.\n\n**5. Add extensions. This is not optional for Search.** A Search campaign without extensions\nunderperforms badly and Google will tell you so. Add at least 4 sitelinks, 4–6 callouts, and\nstructured snippets before you call the build finished. See `references/extensions.md`.\n\n**6. Read it back.** List the campaign and confirm budget, status, and targeting match what you\nintended. Then tell the user it is paused and ask whether to resume.\n\n## Keywords and ads attach to ad groups, not campaigns\n\nAny tool that touches a keyword, a negative keyword, or an ad needs an `ad_group_id`. Run\n`get_campaign_structure` to get them. Do not pass a campaign id where an ad group id is expected.\n\nFor keyword research, `research_keywords` returns volume and competition from Google's own planner.\n`analyze_search_terms` shows what people actually typed — that's where the negatives come from.\n\n## Bidding\n\nDon't set a target CPA or ROAS on a campaign with no conversion history; it has nothing to learn\nfrom and will underdeliver. Start with maximize clicks or manual CPC, let conversions accumulate,\nthen move to a target. `references/bidding.md` has the thresholds.\n\n## Reading performance\n\n`get_campaign_performance` is a **direct, top-level tool** — do not route it through `google_ads`.\nIt renders a performance card. Pass `raw_data: true` when the user wants the numbers rather than\nthe summary.\n\nFor waste, `analyze_wasted_spend` finds spend with no conversions. For a sudden change,\n`explain_performance_anomaly` compares windows and attributes the delta.\n\n## Rate limits\n\nGoogle counts keyword operations, not calls: roughly 300/hour and 500/day at the keyword level.\nAdding two thousand keywords in one sitting will hit the ceiling. Batch large keyword work and tell\nthe user if you're pacing it.\n\n## References\n\n- `references/campaign-types.md` — which type to use, and the budget each needs\n- `references/bidding.md` — bid strategies and when each becomes viable\n- `references/pmax-assets.md` — Performance Max asset requirements\n- `references/extensions.md` — the mandatory extensions step\n"
}SHA-256 of public snapshot: 468df5b791ad7c40aca74af3c2933e79a1fc1c89c7abfe36a23a0bc475851a21