diagnose-underperforme…
Diagnose why a specific Google Ads or Meta Ads campaign / ad set / ad is underperforming and prescribe the next concrete action. Use when the user says…
Launch a complete Google Ads Search campaign — campaign, ad group, responsive search ads, keywords, sitelinks, callouts, and negatives — built paused and ready to review. Use when the user wants to spin up a new Search campaign on Google Ads.
$ npx -y skills add markifact/markifact-mcp --skill launch-google-search --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/launch-google-searchContext preview
The summary Claude sees to decide when to auto-load this skill.
Launch a complete Google Ads Search campaign — campaign, ad group, responsive search ads, keywords, sitelinks, callouts, and negatives — built paused and ready to review. Use when the user wants to spin up a new Search campaign on Google Ads.
name: launch-google-search description: Launch a complete Google Ads Search campaign — campaign, ad group, responsive search ads, keywords, sitelinks, callouts, and negatives — built paused and ready to review. Use when the user wants to spin up a new Search campaign on Google Ads.
Stand up a production-ready Google Ads Search campaign in one workflow. Always start **paused** so the user reviews before spending.
1. Account name (substring match) — required. 2. Campaign objective (Leads / Sales / Website traffic) and conversion action to optimize for — required if Smart Bidding is requested. 3. Daily budget — required. 4. Bidding strategy — `MAXIMIZE_CONVERSIONS`, `TARGET_CPA`, `TARGET_ROAS`, `MAXIMIZE_CLICKS`, or `MANUAL_CPC`. Default: `MAXIMIZE_CLICKS` if no conversion data exists yet, else `MAXIMIZE_CONVERSIONS`. 5. Geo + language — required. 6. Final URL — required for RSAs. 7. Keyword themes (3–10 tightly-grouped concepts) — required. 8. Brand name + 1-line offer — required for RSA generation.
If the user gave a brief in the slash argument, parse it first and only ask for what's missing.
1. **Discover required ops once** with `find_operations`. Look for IDs containing: `gads_select_accounts`, `gads_create_campaign`, `gads_create_ad_group`, `gads_create_responsive_search_ad`, `gads_add_keyword_to_ad_group`, `gads_create_sitelinks`, `gads_create_callouts`, `gads_create_structured_snippets`, `gads_add_negative_keywords_to_campaigns`, `gads_search_geo_targets`. 2. **Inspect each** with `get_operation_inputs` before first use — never guess Google Ads input shapes. 3. **Resolve account**: `gads_select_accounts` with the user-given name as substring; if multiple match, ask user to disambiguate. 4. **Resolve geo IDs**: `gads_search_geo_targets` for each location string the user provided. 5. **Create campaign** (PAUSED) → returns `campaign_id`. Set `advertising_channel_type=SEARCH`, the chosen bidding strategy, daily budget, geo + language targeting. 6. **Create ad group** under that `campaign_id` → returns `ad_group_id`. 7. **Generate RSA assets** following the rules below, then `gads_create_responsive_search_ad` with `ad_group_id` and the final URL. 8. **Add keywords** with `gads_add_keyword_to_ad_group`. Default match types: phrase + exact for the same theme; avoid pure broad unless the user is on Smart Bidding with sufficient conversion data. 9. **Add extensions** in order: sitelinks → callouts → structured snippets. All optional — skip silently if the user didn't ask for them, but suggest it once at the end. 10. **Add account-level brand-protection negatives** (competitor names if any) and obvious junk negatives (`free`, `jobs`, `careers`, `download`, `crack`, etc. — adjust to vertical) via `gads_add_negative_keywords_to_campaigns`. 11. **Confirm to user**: campaign ID, ad group ID, ad strength, keyword count, link to review in Google Ads UI. Remind they're paused.
Use the `safe-write-operations` skill for every step from #5 onward — each is a write. Batch into a single approval request when possible.
A short table:
| Item | Value | |---|---| | Account | <name> (id) | | Campaign | <name> (id, PAUSED) | | Ad group | <name> (id) | | RSAs created | <n> | | Keywords added | <n> (phrase=<a>, exact=<b>) | | Extensions | sitelinks=<n>, callouts=<n>, snippets=<n> | | Negatives added | <n> |
End with: *"Review in Google Ads, then unpause when ready. Ask me to `/markifact:diagnose-underperformer` after 7 days of data."*
Manage Google Ads, Meta Ads, TikTok Ads, LinkedIn Ads, Microsoft Ads, Reddit Ads, Pinterest Ads, Snapchat Ads, Amazon Ads, DV360, GA4, BigQuery, Google Search Console, Google Business Profile, Google Merchant Center, Facebook, Instagram, LinkedIn, Shopify,
Diagnose why a specific Google Ads or Meta Ads campaign / ad set / ad is underperforming and prescribe the next concrete action. Use when the user says…
Edit a Meta ad's creative content — landing page URL, primary text, headline, description, CTA, link description — across one ad or many. Use when the user…
Launch a complete Meta Ads campaign — campaign, ad set, and ad(s) — built paused and ready to review. Use when the user wants a new Facebook/Instagram campaign.
Launch a Google Ads Performance Max campaign with a complete asset group, audience signals, and (for ecom) listing groups. Built paused for review. Use when…
Senior performance-marketing operator with hands-on access to the user's ad accounts via Markifact. Use proactively for anything Google Ads, Meta / Facebook /…
Reference — what Markifact is, what the MCP server exposes, and the discover→inspect→run pattern. Always loaded into the performance-marketer agent.