Skip to content
Marketing
Skill

/seo-ads

Paid-search competitive landscape for a domain or keyword. Pulls SE Ranking's PPC data — domain ad keyword footprint, ad copy patterns, who else bids on the same keywords, SERP shopping/ad-pack visibility — and produces a competitive ads brief plus a recommended bid-keyword

From plugin
seo-skills
19232 skills1 MCP

Claude Code

$ npx -y skills add seranking/seo-skills --skill seo-ads --agent claude-code

SKILL.md

seo-ads.SKILL.md
name: seo-ads
description: Paid-search competitive landscape for a domain or keyword. Pulls SE Ranking's PPC data — domain ad keyword footprint, ad copy patterns, who else bids on the same keywords, SERP shopping/ad-pack visibility — and produces a competitive ads brief plus a recommended bid-keyword shortlist. Use when the user asks "paid search analysis", "competitor ads", "PPC competitive", "ad copy intelligence", "shopping pack", "who bids on this keyword", or "paid keyword footprint".

> Example output: [examples/seo-ads-hostinger-com-20260514/ADS.md](../../examples/seo-ads-hostinger-com-20260514/ADS.md)

Paid-Search Intelligence (Ads)

Map a domain's paid-search footprint and the competitive landscape around its target keywords. Output: a brief on what the brand is bidding on, who else bids on the same terms, ad-copy patterns the leading competitors use, SERP ad+shopping presence per keyword, and a recommended bid-keyword shortlist.

Prerequisites

  • SE Ranking MCP server connected.
  • User provides: (a) a target domain OR a target keyword (skill detects which), (b) target country (default `us`).

Process

1. **Validate input & preflight**

  • Determine: domain mode (analyse a brand's paid footprint) or keyword mode (analyse the bidding landscape for one keyword).
  • `DATA_getCreditBalance` — surface remaining credits.

2. **Domain mode** `DATA_getDomainAdsByDomain`

  • Pull paid keywords the target domain bids on.
  • For each: keyword, search volume, CPC, position, ad copy (title + description), URL.
  • Sort by traffic-weighted score (`volume × CTR-by-paid-position × bid-share`).

3. **Keyword mode** `DATA_getDomainAdsByKeyword`

  • Pull all domains bidding on the target keyword.
  • For each: domain, ad position, ad copy, URL.
  • Surface the top 10 advertisers + their copy patterns.

4. **Intent enrichment** `DATA_getKeywordQuestions`

  • For the keyword(s) in scope, pull related questions.
  • Identifies question-phrased intent variants worth bidding on (often cheaper, higher conversion).

5. **SERP ad/shopping presence** `DATA_getSerpResults`

  • For top 5 keywords (domain mode) or the target keyword (keyword mode):
  • Use SERP-feature filters to detect ad-pack composition: `tads` (top ads above organic), `bads` (bottom ads below organic), `sads` (shopping ads / Google Shopping pack), `mads` (mobile/map-pack ads).
  • Top SERP ad slots (positions 1-4 above organic, 1-3 below).
  • Shopping pack presence (carousel of product cards).
  • Image pack, local pack — these displace ad inventory.
  • Capture which advertisers occupy those slots.

6. **Ad copy pattern analysis**

  • Cluster ad headlines + descriptions by recurring patterns.
  • Identify: USP language used by leaders, pricing/discount mentions, audience segmentation, CTA verbs.
  • Highlight outliers (advertisers doing something different).

7. **Paid-keyword gap (domain mode)** `DATA_getDomainKeywords` with `type: 'adv'`

  • Pull the user's domain's paid keywords using the `type: 'adv'` switch.
  • For each top competitor (from step 2 or `DATA_getDomainCompetitors` with `type: 'adv'`): pull their paid keywords with `type: 'adv'`.
  • Diff: paid keywords competitors bid on that the user's domain doesn't.
  • This becomes the highest-leverage portion of the bid-keyword shortlist (step 8).
  • Skip in keyword mode (no domain to gap against).

8. **Recommended bid-keyword shortlist**

  • For domain mode: paid-keyword gap from step 7 + adjacent question-intent variants.
  • For keyword mode: question-intent and long-tail variants that are likely cheaper than the head term.
  • Each row: keyword, est. CPC, est. volume, who else bids, why-recommended.

9. **Synthesise** `ADS.md`

Output format

Create a folder `seo-ads-{target-slug}-{YYYYMMDD}/` with:

seo-ads-{target-slug}-{YYYYMMDD}/
├── ADS.md                              (synthesised brief — primary deliverable; inlines paid footprint, bidding landscape, SERP ad/shopping pack, ad copy patterns, paid keyword gap)
├── recommended-keywords.csv            (bid-keyword shortlist — load-bearing CSV the PPC team pastes into bid tooling)
└── evidence/
    ├── 01-paid-footprint.md           (domain mode: brand's paid keywords — raw step output)
    ├── 02-bidding-landscape.md        (keyword mode: advertisers on the keyword — raw step output)
    ├── 03-question-variants.md        (DATA_getKeywordQuestions enrichment)
    ├── 04-serp-ad-shopping-pack.md    (SERP feature inventory per keyword)
    ├── 05-ad-copy-patterns.md         (clustered headline/description patterns)
    └── 06-paid-keyword-gap.md         (domain mode: type='adv' diff vs competitors)

Step files 01, 02, 04, 05, 06 are inlined as sections in `ADS.md`; the copies in `evidence/` preserve the raw step outputs for reproducibility.

`ADS.md` follows this shape:

# Paid-Search Intelligence: {target}

> Snapshot dated {YYYY-MM-DD} · Country: {country} · Mode: {domain | keyword}

## Footprint summary
- Paid keywords: {n}
- Estimated paid traffic: {n}/mo
- Average CPC: ${n}
- SERP slots covered: {n} of top-4 above organic across {n} target keywords

## Top 10 paid keywords (domain mode)

| Keyword | Volume | CPC | Position | Ad copy excerpt |
|---|---|---|---|---|
| {kw} | {n} | ${n} | {pos} | "{headline} — {snippet}" |
| ...

## Bidding landscape (keyword mode — for "{keyword}")

| Advertiser | Position | Ad copy excerpt | URL |
|---|---|---|---|
| {domain} | {pos} | "{headline} — {snippet}" | {url} |
| ...

## Ad copy patterns (top patterns observed)

1. **Pricing-led:** "{N}% off — start at ${X}/mo" — used by {n} advertisers.
2. **Outcome-led:** "Get {specific outcome} in {time}" — used by {n}.
3. **Trust-led:** "Trusted by {n} {audience}" — used by {n}.
4. ...

## SERP feature inventory

| Keyword | Top ads | Shopping pack | PAA | Image pack |
|---|---|---|---|---|
| {kw} | {advertiser list} | {✓/✗} | {✓/✗} | {✓/✗} |
| ...

## Recommended b
Read more
@seranking
Ships withseo-skills

Production-ready Claude Agent Skills for SEO, powered by the SE Ranking remote MCP.

19232 skills1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
192
Star history of seranking/seo-skills on GitHub, a chart by star-history.com

Other skills on seo-skills.

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag2w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about seo-ads.

Which coding agents can use seo-ads?
seo-ads installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.