New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Plan, validate, and safely publish Google Ads assets

Google Ads Asset Planner

by nowork-studio · MIT license · ★ 3,853 on GitHub · updated Sep 24

Google Ads Asset Planner cover

Plan, validate, and safely publish Google Ads assets, including sitelinks, callouts, structured snippets, image assets, and Performance Max asset briefs. Use when asked for Google Ads assets, ad extensions, sitelinks, callouts,…

---
name: google-ads-assets
description: Plan, validate, and safely publish Google Ads assets, including sitelinks, callouts, structured snippets, image assets, and Performance Max asset briefs. Use when asked for Google Ads assets, ad extensions, sitelinks, callouts, snippets, image assets, Performance Max assets, PMax creative, or an asset audit.
argument-hint: "<campaign, asset group, or 'build an asset brief'>"
---

# Google Ads Asset Planner

Turn approved business evidence into an asset manifest that can be reviewed and, only where the connected MCP supports it, published safely.

## Setup

Read and follow `../shared/preamble.md` and `../shared/analysis-principles.md`. Read `{data_dir}/business-context.json` and `{data_dir}/personas/{accountId}.json` before proposing assets. If either is missing or stale, hand off to `/google-ads-audit`; an ungrounded asset pack is generic inventory.

Read `../shared/policy-registry.json` before PMax or policy-sensitive work. If its PMax entry is stale, verify the relevant Google policy or platform requirement before stating a current rule.

## Build from evidence, not filler

Overview

Turn approved business evidence into an asset manifest that can be reviewed and, only where the connected MCP supports it, published safely.

Manual install (npx, ZIP)
Claude Codenpx skills add nowork-studio/notfair-plugin --skill google-ads-assets -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/nowork-studio/notfair-plugin/tar.gz/5229d2163795 \ | tar -xz -C ~/.claude/skills --strip-components=2 notfair-plugin-5229d2163795/google-ads/assets
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/8f31eafb4924bdcef9b5/assets.zip" -OutFile "$env:TEMP\assets.zip"; Expand-Archive "$env:TEMP\assets.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md4.1 KB
  • evals/1 file · 1.5 KB
Read the files here
nowork-studio/5229d212 files
Shared references3SKILL.md reads these from elsewhere in the repo. Not in the ZIP.Get them on GitHub ↗
SKILL.md
Show the full text58 lines

Google Ads Asset Planner

Turn approved business evidence into an asset manifest that can be reviewed and, only where the connected MCP supports it, published safely.

Setup

Read and follow ../shared/preamble.md and ../shared/analysis-principles.md. Read {data_dir}/business-context.json and {data_dir}/personas/{accountId}.json before proposing assets. If either is missing or stale, hand off to /google-ads-audit; an ungrounded asset pack is generic inventory.

Read ../shared/policy-registry.json before PMax or policy-sensitive work. If its PMax entry is stale, verify the relevant Google policy or platform requirement before stating a current rule.

Build from evidence, not filler

Pull the existing campaign, ad group, and asset coverage using available read capabilities before recommending new assets. Use search terms, converting ads, landing-page content, approved offers, and customer language as source material. Do not infer ratings, pricing, guarantees, availability, or product attributes.

For each proposed asset, produce this reviewable manifest:

Field Required content
Asset family Callout, sitelink, structured snippet, image, or PMax brief
Scope Account, campaign, ad group, or named PMax asset group
Concept ID Persona × motivation × angle
Copy or creative direction Exact approved text, or a production-ready visual brief
Evidence and claim status Source for every factual claim; mark unsupported claims needs_substantiation
Landing destination Final URL and message-match note when applicable
Status ready_for_review, blocked, or approved_to_publish

Keep the brief deliberately varied: each concept should test a different motivation or visual hook, not a cosmetic rewrite. Ask for missing proof instead of inventing it.

Platform-aware execution

  • Validate copy and destination fields against the current connected tool metadata before creating anything. Do not trust memorized limits or silently truncate assets.
  • Only create/link callouts, sitelinks, structured snippets, or image assets after the user approves the exact manifest. Use a supported capability, record any operation identifiers returned, and verify the resulting entity.
  • Verify image ownership, landing-page rights, and policy-sensitive claims before an image asset is uploaded. A generated image is a production input, not proof that the claim in it is allowed.
  • Check the live connection for the requested asset-library or PMax asset-group operation. If it is unavailable, deliver a brief for completion in Google Ads without claiming it was applied.

PMax brief

For a PMax request, produce a cross-placement production brief rather than a generic list of slogans:

  1. State the product or feed scope, conversion goal, audience signal, and landing destination.
  2. Provide 3–5 concept cards, each with a visual hook, on-screen message, proof source, CTA, and placement-safe adaptation notes.
  3. Identify the missing inputs explicitly: approved logo, image/video source files, feed readiness, rights, or substantiation.
  4. Keep Search RSA language complementary to PMax text assets; avoid duplicating the same promise without a reason.
  5. Flag PMax/Search overlap and brand-exclusion questions for /google-ads before scaling.

Guardrails

  1. Never publish an unsupported claim, a destination you did not validate, or an asset with unknown rights.
  2. Never call a production brief an uploaded asset. Separate ready_for_review from published.
  3. Confirm scope and exact asset count before every write; check and explain the available reversal path.
  4. Defer bid, budget, keyword, and campaign-structure changes to /google-ads; defer RSA testing to /google-ads-copy.
1---
2name: google-ads-assets
3description: Plan, validate, and safely publish Google Ads assets, including sitelinks, callouts, structured snippets, image assets, and Performance Max asset briefs. Use when asked for Google Ads assets, ad extensions, sitelinks, callouts, snippets, image assets, Performance Max assets, PMax creative, or an asset audit.
4argument-hint: "<campaign, asset group, or 'build an asset brief'>"
5---
6 
7# Google Ads Asset Planner
8 
9Turn approved business evidence into an asset manifest that can be reviewed and, only where the connected MCP supports it, published safely.
10 
11## Setup
12 
13Read and follow `../shared/preamble.md` and `../shared/analysis-principles.md`. Read `{data_dir}/business-context.json` and `{data_dir}/personas/{accountId}.json` before proposing assets. If either is missing or stale, hand off to `/google-ads-audit`; an ungrounded asset pack is generic inventory.
14 
15Read `../shared/policy-registry.json` before PMax or policy-sensitive work. If its PMax entry is stale, verify the relevant Google policy or platform requirement before stating a current rule.
16 
17## Build from evidence, not filler
18 
19Pull the existing campaign, ad group, and asset coverage using available read capabilities before recommending new assets. Use search terms, converting ads, landing-page content, approved offers, and customer language as source material. Do not infer ratings, pricing, guarantees, availability, or product attributes.
20 
21For each proposed asset, produce this reviewable manifest:
22 
23| Field | Required content |
24|---|---|
25| Asset family | Callout, sitelink, structured snippet, image, or PMax brief |
26| Scope | Account, campaign, ad group, or named PMax asset group |
27| Concept ID | Persona × motivation × angle |
28| Copy or creative direction | Exact approved text, or a production-ready visual brief |
29| Evidence and claim status | Source for every factual claim; mark unsupported claims `needs_substantiation` |
30| Landing destination | Final URL and message-match note when applicable |
31| Status | `ready_for_review`, `blocked`, or `approved_to_publish` |
32 
33Keep the brief deliberately varied: each concept should test a different motivation or visual hook, not a cosmetic rewrite. Ask for missing proof instead of inventing it.
34 
35## Platform-aware execution
36 
37- Validate copy and destination fields against the current connected tool metadata before creating anything. Do not trust memorized limits or silently truncate assets.
38- Only create/link callouts, sitelinks, structured snippets, or image assets after the user approves the exact manifest. Use a supported capability, record any operation identifiers returned, and verify the resulting entity.
39- Verify image ownership, landing-page rights, and policy-sensitive claims before an image asset is uploaded. A generated image is a production input, not proof that the claim in it is allowed.
40- Check the live connection for the requested asset-library or PMax asset-group operation. If it is unavailable, deliver a brief for completion in Google Ads without claiming it was applied.
41 
42## PMax brief
43 
44For a PMax request, produce a cross-placement production brief rather than a generic list of slogans:
45 
461. State the product or feed scope, conversion goal, audience signal, and landing destination.
472. Provide 3–5 concept cards, each with a visual hook, on-screen message, proof source, CTA, and placement-safe adaptation notes.
483. Identify the missing inputs explicitly: approved logo, image/video source files, feed readiness, rights, or substantiation.
494. Keep Search RSA language complementary to PMax text assets; avoid duplicating the same promise without a reason.
505. Flag PMax/Search overlap and brand-exclusion questions for `/google-ads` before scaling.
51 
52## Guardrails
53 
541. Never publish an unsupported claim, a destination you did not validate, or an asset with unknown rights.
552. Never call a production brief an uploaded asset. Separate `ready_for_review` from `published`.
563. Confirm scope and exact asset count before every write; check and explain the available reversal path.
574. Defer bid, budget, keyword, and campaign-structure changes to `/google-ads`; defer RSA testing to `/google-ads-copy`.
58 
View all files on GitHub →

Details

Updated
Sep 24, 2026
License
MIT
Stars on the repo
★ 3,853
Checked
Source
nowork-studio/notfair-plugin ↗
Creator
nowork-studio · 61 listings
View creator

Similar skills

See all →
SkillGoogle Ads management skill with API integrationivangfalco/ads-skills · by ivangfalcoGoogle Ads management skill with API integration. Covers campaign creation, optimization, keyword management, performance analysis, and search term auditing via Python scripts that connect to the Google Ads API. MANDATORY TRIGGERS: Google Ads, Google campaign, Google search ads, Google PMax, Performance Max, Google Display, Google Shopping, Google ad performance, Google keyword, search terms, Google RSA, Google bidding, Google Ads API★ 275 GitHub starsSkillWrites paid ad copy for Facebook and Instagram AdsAd copy generatormarcosmodly/marketing-skill · by marcosmodlyWrites paid ad copy for Facebook and Instagram (Meta) Ads, Google Search Ads (RSA headlines and descriptions), and LinkedIn Ads: multiple variants per platform, each testing a different hook angle and sized to that platform's character limits, ready for A/B testing. Use when the user asks for ad copy, ad headlines, ad variants, PPC or paid social copy, Facebook ad text, Google Ads headlines, or A/B test copy for a paid campaign.★ 42 GitHub starsPromptGenerate compelling and effective title copy for Google AdsGoogle ads title copywriterf/prompts.chat · by SEM MetaxgtseoGenerate compelling and effective title copy for Google Ads campaigns, tailored to your target audience and objectives.New listingSkillHelp with paid advertising campaigns on Google Ads, Meta Paid adsdavila7/claude-code-templates · by davila7When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms. Also use when the user mentions 'PPC,' 'paid media,' 'ad copy,' 'ad creative,' 'ROAS,' 'CPA,' 'ad campaign,' 'retargeting,' or 'audience targeting.' This skill covers campaign strategy, ad creation, audience targeting, and optimization.★ 32.3k GitHub starsSkillAudit Google Ads measurement, Search, ShoppingGoogle Ads AuditAgriciDaniel/claude-ads · by AgriciDanielAudit Google Ads measurement, Search, Shopping, Performance Max, Demand Gen, YouTube-linked inventory, keywords and search terms, negative-keyword generation or review, creative assets, bidding, budgets, settings, and policy. Use for Google Ads, AdWords, Search campaigns, search terms reports, broad negatives, Shopping, Performance Max, PMax, Demand Gen, GAQL, Google conversion tracking, or Google campaign optimization.★ 9.5k GitHub starsSkillPaste what you're selling and share your MicrosoftMicrosoft Advertising AuditAgriciDaniel/claude-ads · by AgriciDanielPaste what you're selling and share your Microsoft Advertising numbers; get back a plain-English report on what's wasting money and what to fix first.★ 9.5k GitHub stars

More from nowork-studio

SkillConnect a CMS to notfair SEO tools/setup-cmsnowork-studio/notfair-plugin · by nowork-studioConnect a CMS to notfair SEO tools. Guides users through configuring WordPress, Strapi, Contentful, or Ghost — tests the connection, and writes credentials to .env.local. Once set up, seo-analysis automatically cross- references CMS content against Google Search Console data. Use whenever the user says "connect my CMS", "set up WordPress", "configure Strapi", "add Contentful", "connect Ghost", or "CMS setup". Also trigger if the user asks why no CMS data appears in a seo-analysis report.★ 3.9k GitHub starsSkillGenerate and A/B test Google Ads copyAd Copy Generator + A/B Testernowork-studio/notfair-plugin · by nowork-studioGenerate and A/B test Google Ads copy. Use when asked to write ad copy, headlines, descriptions, create ad variants, test ad messaging, improve CTR, or generate RSA (Responsive Search Ad) components. Trigger on "ad copy", "write ads", "headlines", "descriptions", "RSA", "responsive search ad", "ad text", "ad creative", "improve CTR", "ad A/B test", "ad variants", "write me an ad", "ad variation experiment", or when the user wants to improve click-through rate on existing ads.★ 3.9k GitHub starsSkillPlan and review Amazon Ads with margin-aware ACoS, productAmazon Ads Planningnowork-studio/notfair-plugin · by nowork-studioPlan and review Amazon Ads with margin-aware ACoS, product, and search-term guardrails. Use for Amazon advertising, Sponsored Products, Sponsored Brands, Sponsored Display, ASIN targeting, Amazon ACoS, or Amazon Ads performance exports.★ 3.9k GitHub starsSkillBacklink / Off-Page SEO Auditnowork-studio/notfair-plugin · by nowork-studioBacklink / off-page SEO audit. Works WITHOUT a paid tool by default — it uses the Google Search Console Links report (your top linking sites, most-linked pages, and anchor text) plus any backlink export the user provides (Ahrefs / Semrush / Majestic / DataForSEO CSV). Analyzes referring-domain profile, anchor-text distribution (over-optimized / spammy patterns), most-linked pages vs. money pages (internal-linking opportunity), toxic/spam link signals, and link-building priorities. Use this skill when the user asks about backlinks, link building, off-page SEO, referring domains, anchor text, toxic/spam links, disavow, or their link profile. Trigger on: "backlinks", "backlink audit", "link building", "off- page SEO", "referring domains", "anchor text", "toxic links", "spam links", disavow file", "who links to me", "link profile", "domain authority". NOTE: rich third-party metrics (DR/DA, full link index) require a paid data source; this skill is explicit about what it can and can't see without one.★ 3.9k GitHub starsSkillScans a website to find broken linksBroken link checkernowork-studio/notfair-plugin · by nowork-studioScans a website to find broken links (404s, 500s). Crawls internal pages, identifies broken outbound links, and reports source pages for easy fixing. Use this when the user asks to "check for broken links", "find 404s", audit my links", or "is my site healthy".★ 3.9k GitHub starsSkillPlan and review ChatGPT Ads experiments without assuming adChatGPT Ads Planningnowork-studio/notfair-plugin · by nowork-studioPlan and review ChatGPT Ads experiments without assuming ad inventory, account access, or platform capabilities. Use for ChatGPT advertising, OpenAI ads, conversational ad concepts, ChatGPT campaign plans, or performance reviews from a verified export.★ 3.9k GitHub stars