Identifies where your own keywords and campaigns are competing against each other in Google Ads auctions. Finds duplicate keywords across campaigns, overlapping match types that trigger the same queries, and ad groups stealing traffic from each other — all of which inflate your CPCs and mess up your data. Platform: Google.
npx skills add https://github.com/irinabuht12-oss/marketing-skills --skill keyword-cannibalization-check
Identifies where your own keywords and campaigns are competing against each other in Google Ads auctions. Finds duplicate keywords across campaigns, overlapping match types that trigger the same queries, and ad groups stealing traffic from each other — all of which inflate your CPCs and mess up your data.
Claude cross-references your keyword lists across all campaigns and ad groups, maps search term overlap, and identifies where multiple keywords or campaigns are entering the same auctions. It then looks at which one Google is choosing to serve (and whether it's the one you'd want), and calculates the CPC impact of the internal competition.
Your account has "project management software" as an exact match in Campaign A ($28 CPC, 4.2% CVR) and as a broad match in Campaign B ($41 CPC, 2.1% CVR). Campaign B's broad match is cannibalizing 35% of the exact match traffic at nearly double the CPC and half the conversion rate. Claude also finds 23 other keyword pairs with similar overlap issues. Total estimated waste from cannibalization: $2,800/month in inflated CPCs plus conversion data split across campaigns making optimization harder.
This skill works best with live account data. Connect the free Ryze MCP once and Claude reads your Google Ads, Meta Ads, GA4 and Search Console directly:
https://connector.get-ryze.ai/mcpclaude mcp add ryze --transport http https://connector.get-ryze.ai/mcpSetup guide: https://www.get-ryze.ai/how-to-connect-claude-to-google-meta-ads-mcp
Take irinabuht12-oss/keyword-cannibalization-check from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.