Claude Skill

seo-vs-ads

Find money leaking between search ads and SEO — queries you pay for while already ranking organically, and paid queries with no organic coverage. Use when asked "am I paying for clicks I'd get free", "brand bidding waste", "SEO vs ads overlap", or "cut wasted ad spend with SEO".

LLM Mart · 0 points · 8 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download Ryze-AI-Adgent-open-seo-mcp-skills-skills_seo-vs-ads-e33761c.zip · 1 KB
Part of ryze-ai-adgent/open-seo-mcp-skills — 8 skills

Install

skills CLI npx skills add https://github.com/Ryze-AI-Adgent/open-seo-mcp-skills/tree/main/skills/seo-vs-ads
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install ryze-ai-adgent-open-seo-mcp-skills@llmmart
Git git clone https://github.com/Ryze-AI-Adgent/open-seo-mcp-skills.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole ryze-ai-adgent/open-seo-mcp-skills collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

SEO vs Ads

Requires

The free Ryze MCP connector (https://connector.get-ryze.ai/mcp). Claude Code: claude mcp add ryze --transport http https://connector.get-ryze.ai/mcp. claude.ai / Desktop / Cursor: add it as a custom connector with the same URL. Setup: https://www.get-ryze.ai/how-to-connect-claude-to-google-meta-ads-mcp

The report subscription tools can't do: it needs your ads account AND your Search Console together. Both are on the Ryze MCP.

Workflow

  1. Paid search terms. google_ads__runRawGaql on the default account — search terms report, last 90 days: term, impressions, clicks, cost, conversions. (GAQL shape via native__get_provider_docs, provider google_ads, if needed.)
  2. Organic positions. google_search_console__runRawSearchAnalytics, dimension ["query"], same window.
  3. Join on query and bucket:
    • Double-paying — organic position ≤ 3 AND paid spend on the same term. Especially brand terms with no competing advertisers (check top-of-page rate / competition). Sum the spend: that's the number for the headline.
    • Defensible — organic ≤ 3 but competitors bid on the term (paid presence may be justified; say so honestly)
    • Paid-only winners — terms converting in ads with no organic ranking → the SEO content roadmap, pre-validated by money
    • Organic-only converters — strong organic queries with no ad coverage → scale candidates if ads team wants volume
  4. Estimate savings. For the double-paying bucket: spend × the organic click-capture you'd retain (be conservative, ~50–70% for position 1 brand terms; label it an estimate).

Output

Headline first: "$X/quarter going to clicks you already rank #1 for." Then the four buckets as tables (term, cost, conversions, organic position), the savings estimate with its assumptions stated, and a short action list: exact negatives to add, exact pages to build.

Fallback

If only one of the two accounts is connected, run what's possible, and name the missing connection instead of guessing at the other half.

Files (open-seo-mcp-skills)
  • SKILL.md 2.3 KB
    ---
    name: seo-vs-ads
    description: Find money leaking between search ads and SEO — queries you pay for while already ranking organically, and paid queries with no organic coverage. Use when asked "am I paying for clicks I'd get free", "brand bidding waste", "SEO vs ads overlap", or "cut wasted ad spend with SEO".
    ---
    
    # SEO vs Ads
    
    ## Requires
    
    The free Ryze MCP connector (`https://connector.get-ryze.ai/mcp`). Claude Code: `claude mcp add ryze --transport http https://connector.get-ryze.ai/mcp`. claude.ai / Desktop / Cursor: add it as a custom connector with the same URL. Setup: https://www.get-ryze.ai/how-to-connect-claude-to-google-meta-ads-mcp
    
    The report subscription tools can't do: it needs your ads account AND your Search Console together. Both are on the Ryze MCP.
    
    ## Workflow
    
    1. **Paid search terms.** `google_ads__runRawGaql` on the default account — search terms report, last 90 days: term, impressions, clicks, cost, conversions. (GAQL shape via `native__get_provider_docs`, provider `google_ads`, if needed.)
    2. **Organic positions.** `google_search_console__runRawSearchAnalytics`, dimension `["query"]`, same window.
    3. **Join on query** and bucket:
       - **Double-paying** — organic position ≤ 3 AND paid spend on the same term. Especially brand terms with no competing advertisers (check top-of-page rate / competition). Sum the spend: that's the number for the headline.
       - **Defensible** — organic ≤ 3 but competitors bid on the term (paid presence may be justified; say so honestly)
       - **Paid-only winners** — terms converting in ads with no organic ranking → the SEO content roadmap, pre-validated by money
       - **Organic-only converters** — strong organic queries with no ad coverage → scale candidates if ads team wants volume
    4. **Estimate savings.** For the double-paying bucket: spend × the organic click-capture you'd retain (be conservative, ~50–70% for position 1 brand terms; label it an estimate).
    
    ## Output
    
    Headline first: "$X/quarter going to clicks you already rank #1 for." Then the four buckets as tables (term, cost, conversions, organic position), the savings estimate with its assumptions stated, and a short action list: exact negatives to add, exact pages to build.
    
    ## Fallback
    
    If only one of the two accounts is connected, run what's possible, and name the missing connection instead of guessing at the other half.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related