SEO opportunity finder

Find quick-win SEO content opportunities by comparing your site's existing content against competitor keyword rankings.

How to use it

  1. Hit Copy SKILL.md — or use the Claude Code line below to get every file.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/seo/composites/seo-opportunity-finder#main ~/.claude/skills/seo-opportunity-finder

For one project only, change the path to .claude/skills/seo-opportunity-finder. This skill also uses robots.txt — copying SKILL.md alone won't be enough. See the folder on GitHub.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text150 lines
seo-opportunity-finder/SKILL.md150 lines5.6 KBpushed 96d agoRawView on GitHub

SEO Opportunity Finder

Identify the highest-leverage content gaps between your site and competitors. Combines a crawl of your existing content with competitor keyword/traffic analysis to surface a prioritized list of posts worth writing.

Core principle: Don't start from a blank keyword list. Start by knowing what you have, then find what competitors have that you don't — and pick the gaps most likely to convert.

When to Use

  • "Find SEO content gaps vs our competitors"
  • "What topics should we write about to rank?"
  • "We're starting a blog — where should we focus first?"
  • "What keywords are [competitor] ranking for that we're missing?"

Phase 0: Intake

  1. Your website URL (e.g., https://yourcompany.com)
  2. 2-3 competitor URLs to compare against
  3. Primary ICP — who are you trying to attract? (This filters for commercial intent vs. general traffic)
  4. Any topics/keyword themes that are definitely in scope? (Optional — helps prioritize output)

Phase 1: Catalog Your Existing Content

Build an inventory of the target site's current pages and posts:

  1. Fetch sitemap.xml (check /sitemap.xml, /sitemap_index.xml, robots.txt for Sitemap: directives)
  2. Fall back to RSS feeds (/feed, /blog/feed) or blog index crawl if no sitemap
  3. Extract: all blog post titles and URLs, inferred topics/themes per post, estimated content age

This prevents recommending content you've already written.

Phase 2: Analyze Competitor SEO Footprint

For each competitor domain, pull SEO metrics:

  1. Domain overview — authority score, organic traffic estimate, top ranking keywords (via Apify Semrush scraper if APIFY_API_TOKEN is set)
  2. Top pages — highest-traffic pages and their primary keywords
  3. Keyword categories — which topic clusters they're winning in

If Apify data is limited, supplement with web search probes:

  • site:[competitor] for indexed page count
  • Search target keywords and note which competitors rank where
  • SimilarWeb free tier for traffic estimates

Phase 3: Identify Gaps

Compare your content inventory (Phase 1) against competitor keyword/topic coverage (Phase 2):

Gap Classification

Type Definition Priority
Hard gap Competitor has a page/post on topic, you have nothing High
Soft gap You have content on topic but it's thin (< 500 words, old, no depth) Medium
Positioning gap Competitor owns a keyword cluster that maps to your ICP's exact problem High
Informational gap High traffic, low commercial intent — good for awareness, not conversion Low

Commercial Intent Filter

For each gap topic, score commercial intent (1-5):

  • 5 — Directly maps to your product (e.g., "best AI SDR tools for startups")
  • 4 — Problem-aware but not product-specific (e.g., "how to scale outbound SDR")
  • 3 — Adjacent pain point (e.g., "cold email open rates benchmark 2026")
  • 2 — Educational, tangential (e.g., "what is lead scoring")
  • 1 — Generic traffic, low conversion potential

Prioritize gaps with score ≥ 3.

Phase 4: Synthesize & Output

Produce a prioritized opportunity table + editorial brief starters:

# SEO Opportunity Report — [Your Company] vs [Competitors]
Generated: [DATE]

## Your Content Snapshot
- Total indexed pages: [N]
- Blog posts: [N]
- Main topic clusters: [list]

## Competitor Benchmarks
| Domain | DR | Est. Monthly Organic Traffic | Top Keyword Clusters |
|--------|----|-----------------------------|----------------------|
| [comp1] | [X] | [X] | [topics] |
| [comp2] | [X] | [X] | [topics] |

## Top 10 Content Opportunities

### 1. [Topic/Title Suggestion]
- **Keyword target:** [keyword phrase]
- **Why it matters:** [what problem it solves for ICP]
- **Competitor owning it:** [competitor URL]
- **Est. monthly searches:** [range]
- **Commercial intent score:** [1-5]
- **Recommended format:** [listicle / how-to / comparison / landing page]
- **Estimated effort:** [hours or word count target]

### 2. [Topic/Title Suggestion]
...

## Quick Wins (update existing posts)

| Your Post | Issue | What to Add |
|-----------|-------|-------------|
| [URL] | [thin/outdated] | [recommendation] |

## Recommended Content Calendar (Next 90 Days)

| Month | Post | Intent Score | Est. Traffic Potential |
|-------|------|-------------|----------------------|
| Month 1 | [post 1] | [score] | [range] |
| Month 1 | [post 2] | [score] | [range] |
| Month 2 | [post 3] | [score] | [range] |
...

Save to the current working directory or wherever the user prefers.

Cost

Component Cost
Site content catalog Free (sitemap crawl)
SEO domain analyzer (per competitor) ~$1-3 (Apify Semrush scraper)
Traffic analyzer (supplement) ~$0.10-0.50 (web search probes)
Total per run ~$3-10 for 3 competitors

Tools Required

  • Apify API tokenAPIFY_API_TOKEN env var (for Semrush/Ahrefs data; free web search probes work without it)
  • Web search and web fetch capabilities

Trigger Phrases

  • "Find our SEO content gaps"
  • "What should we write about to rank?"
  • "Compare our content coverage to [competitor]"
  • "Run SEO opportunity finder for [client]"
1---
2name: seo-opportunity-finder
3description: >
4 Find quick-win SEO content opportunities by comparing your site's existing content
5 against competitor keyword rankings. Chains site-content-catalog and seo-domain-analyzer
6 to build a content inventory, then identifies gaps — topics competitors rank for that
7 you don't cover yet. Outputs a prioritized list of posts to write or update.
8 Use when a seed/Series A team wants to start winning organic traffic without guessing.
9tags: [seo]
10---
11 
12# SEO Opportunity Finder
13 
14Identify the highest-leverage content gaps between your site and competitors. Combines a crawl of your existing content with competitor keyword/traffic analysis to surface a prioritized list of posts worth writing.
15 
16**Core principle:** Don't start from a blank keyword list. Start by knowing what you have, then find what competitors have that you don't — and pick the gaps most likely to convert.
17 
18## When to Use
19 
20- "Find SEO content gaps vs our competitors"
21- "What topics should we write about to rank?"
22- "We're starting a blog — where should we focus first?"
23- "What keywords are [competitor] ranking for that we're missing?"
24 
25## Phase 0: Intake
26 
271. Your website URL (e.g., `https://yourcompany.com`)
282. 2-3 competitor URLs to compare against
293. Primary ICP — who are you trying to attract? (This filters for commercial intent vs. general traffic)
304. Any topics/keyword themes that are definitely in scope? (Optional — helps prioritize output)
31 
32## Phase 1: Catalog Your Existing Content
33 
34Build an inventory of the target site's current pages and posts:
35 
361. Fetch sitemap.xml (check `/sitemap.xml`, `/sitemap_index.xml`, `robots.txt` for `Sitemap:` directives)
372. Fall back to RSS feeds (`/feed`, `/blog/feed`) or blog index crawl if no sitemap
383. Extract: all blog post titles and URLs, inferred topics/themes per post, estimated content age
39 
40This prevents recommending content you've already written.
41 
42## Phase 2: Analyze Competitor SEO Footprint
43 
44For each competitor domain, pull SEO metrics:
45 
461. **Domain overview** — authority score, organic traffic estimate, top ranking keywords (via Apify Semrush scraper if `APIFY_API_TOKEN` is set)
472. **Top pages** — highest-traffic pages and their primary keywords
483. **Keyword categories** — which topic clusters they're winning in
49 
50If Apify data is limited, supplement with web search probes:
51- `site:[competitor]` for indexed page count
52- Search target keywords and note which competitors rank where
53- SimilarWeb free tier for traffic estimates
54 
55## Phase 3: Identify Gaps
56 
57Compare your content inventory (Phase 1) against competitor keyword/topic coverage (Phase 2):
58 
59### Gap Classification
60 
61| Type | Definition | Priority |
62|------|------------|----------|
63| **Hard gap** | Competitor has a page/post on topic, you have nothing | High |
64| **Soft gap** | You have content on topic but it's thin (< 500 words, old, no depth) | Medium |
65| **Positioning gap** | Competitor owns a keyword cluster that maps to your ICP's exact problem | High |
66| **Informational gap** | High traffic, low commercial intent — good for awareness, not conversion | Low |
67 
68### Commercial Intent Filter
69 
70For each gap topic, score commercial intent (1-5):
71- **5** — Directly maps to your product (e.g., "best AI SDR tools for startups")
72- **4** — Problem-aware but not product-specific (e.g., "how to scale outbound SDR")
73- **3** — Adjacent pain point (e.g., "cold email open rates benchmark 2026")
74- **2** — Educational, tangential (e.g., "what is lead scoring")
75- **1** — Generic traffic, low conversion potential
76 
77Prioritize gaps with score ≥ 3.
78 
79## Phase 4: Synthesize & Output
80 
81Produce a prioritized opportunity table + editorial brief starters:
82 
83```markdown
84# SEO Opportunity Report — [Your Company] vs [Competitors]
85Generated: [DATE]
86 
87## Your Content Snapshot
88- Total indexed pages: [N]
89- Blog posts: [N]
90- Main topic clusters: [list]
91 
92## Competitor Benchmarks
93| Domain | DR | Est. Monthly Organic Traffic | Top Keyword Clusters |
94|--------|----|-----------------------------|----------------------|
95| [comp1] | [X] | [X] | [topics] |
96| [comp2] | [X] | [X] | [topics] |
97 
98## Top 10 Content Opportunities
99 
100### 1. [Topic/Title Suggestion]
101- **Keyword target:** [keyword phrase]
102- **Why it matters:** [what problem it solves for ICP]
103- **Competitor owning it:** [competitor URL]
104- **Est. monthly searches:** [range]
105- **Commercial intent score:** [1-5]
106- **Recommended format:** [listicle / how-to / comparison / landing page]
107- **Estimated effort:** [hours or word count target]
108 
109### 2. [Topic/Title Suggestion]
110...
111 
112## Quick Wins (update existing posts)
113 
114| Your Post | Issue | What to Add |
115|-----------|-------|-------------|
116| [URL] | [thin/outdated] | [recommendation] |
117 
118## Recommended Content Calendar (Next 90 Days)
119 
120| Month | Post | Intent Score | Est. Traffic Potential |
121|-------|------|-------------|----------------------|
122| Month 1 | [post 1] | [score] | [range] |
123| Month 1 | [post 2] | [score] | [range] |
124| Month 2 | [post 3] | [score] | [range] |
125...
126```
127 
128Save to the current working directory or wherever the user prefers.
129 
130## Cost
131 
132| Component | Cost |
133|-----------|------|
134| Site content catalog | Free (sitemap crawl) |
135| SEO domain analyzer (per competitor) | ~$1-3 (Apify Semrush scraper) |
136| Traffic analyzer (supplement) | ~$0.10-0.50 (web search probes) |
137| **Total per run** | **~$3-10 for 3 competitors** |
138 
139## Tools Required
140 
141- **Apify API token**`APIFY_API_TOKEN` env var (for Semrush/Ahrefs data; free web search probes work without it)
142- Web search and web fetch capabilities
143 
144## Trigger Phrases
145 
146- "Find our SEO content gaps"
147- "What should we write about to rank?"
148- "Compare our content coverage to [competitor]"
149- "Run SEO opportunity finder for [client]"
150 

Discussion

Alternatives

Also in SEO & keywords