New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Find quick-win SEO content opportunities by comparing

SEO opportunity finder

by gooseworks-ai · MIT license · ★ 1,220 on GitHub · updated Sep 21

SEO opportunity finder cover

Find quick-win SEO content opportunities by comparing your site's existing content against competitor keyword rankings. Chains site-content-catalog and seo-domain-analyzer to build a content inventory, then identifies gaps — topics…

---
name: seo-opportunity-finder
description: >
  Find quick-win SEO content opportunities by comparing your site's existing content
  against competitor keyword rankings. Chains site-content-catalog and seo-domain-analyzer
  to build a content inventory, then identifies gaps — topics competitors rank for that
  you don't cover yet. Outputs a prioritized list of posts to write or update.
  Use when a seed/Series A team wants to start winning organic traffic without guessing.
tags: [seo]
---

# 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

Overview

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.

Manual install (npx, ZIP)
Claude Codenpx skills add gooseworks-ai/goose-skills --skill seo-opportunity-finder -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \ | tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/seo/composites/seo-opportunity-finder
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/978caf97015d76786cdc/seo-opportunity-finder.zip" -OutFile "$env:TEMP\seo-opportunity-finder.zip"; Expand-Archive "$env:TEMP\seo-opportunity-finder.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md5.6 KB
  • skill.meta.json370 B
Read the files here
gooseworks-ai/615c6852 files
SKILL.md
Show the full text150 lines

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 token — APIFY_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 
View all files on GitHub →

Details

Updated
Sep 21, 2026
License
MIT
Stars on the repo
★ 1,220
Checked
Source
gooseworks-ai/goose-skills ↗
Creator
gooseworks-ai · 206 listings
View creator

Made with seo-opportunity-finder

SEO opportunity finder — CleanShot 2026-07-13 at 20 16 54@2x (from the gooseworks-ai/goose-skills README)
SEO opportunity finder — CleanShot 2026-07-13 at 20 16 54@2x (from the gooseworks-ai/goose-skills README)

by gooseworks-ai

Similar skills

See all →
SkillThe Lighthouse Agentic Browsing fractionAgentic Browsing ReadinessAgriciDaniel/claude-seo · by AgriciDanielAudit and fix agent readiness: the Lighthouse Agentic Browsing fraction, accessibility tree for agents, robots.txt and Content-Signal for AI agents, WAF treatment of agent traffic, llms.txt, Markdown delivery, ai-catalog.json, /.well-known discovery files, and WebMCP tools. Exclude AI citability and brand signals (seo-geo) and commerce protocol depth (seo-ecommerce).★ 17.4k GitHub starsSkillReferring domains, anchor text distributionBacklink Profile AnalysisAgriciDaniel/claude-seo · by AgriciDanielBacklink profile analysis: referring domains, anchor text distribution, toxic link detection, competitor gap analysis. Works with free APIs (Moz, Bing Webmaster, Common Crawl) and DataForSEO extension. Use when user says backlinks, link profile, referring domains, anchor text, toxic links, link gap, link building, disavow, or backlink audit.★ 17.4k GitHub starsSkillConnect a CMS to notfair SEO tools/setup-cmsnowork-studio/notfair-plugin · by nowork-studioConnect a CMS to notfair SEO tools. Guides users through configuring WordPress, Strapi, Contentful, or Ghost — tests the connection, and writes credentials to .env.local. Once set up, seo-analysis automatically cross- references CMS content against Google Search Console data. Use whenever the user says "connect my CMS", "set up WordPress", "configure Strapi", "add Contentful", "connect Ghost", or "CMS setup". Also trigger if the user asks why no CMS data appears in a seo-analysis report.★ 3.9k GitHub starsSkillBacklink profile for any domainBacklink checkRyze-AI-Adgent/open-seo-mcp-skills · by Ryze-AI-AdgentBacklink profile for any domain — referring domains, authority, anchors, new/lost links, and a side-by-side vs a competitor. Use when asked "check my backlinks", "backlink profile of X", "who links to them", or "link gap vs competitor".★ 3.1k GitHub starsSkillOptimize Core Web Vitals for better page experienceCore Web Vitals optimizationaddyosmani/web-quality-skills · by addyosmaniOptimize Core Web Vitals (LCP, INP, CLS) for better page experience using field and lab evidence. Use when asked to "improve Core Web Vitals", "fix LCP", "reduce CLS", "optimize INP", "page experience optimization", or "fix layout shifts".★ 2.8k GitHub starsSkillRun an SEO page observation-action-review loopRun the SEO page looptsingyuai/growth-lab · by tsingyuaiRun an SEO page observation-action-review loop with persistent Memory by coordinating demand research, page creation, adversarial review, image generation, IndexNow submission, and performance review. Use when taking an SEO page from opportunity discovery through publication, measurement, iteration, or continuing a previous SEO loop from Memory.★ 2k GitHub stars

More from gooseworks-ai

SkillMine the highest-converting ad angles from customer reviewsAd angle minergooseworks-ai/goose-skills · by gooseworks-aiMine the highest-converting ad angles from customer reviews, Reddit complaints, support tickets, and competitor ads. Extracts actual pain language, competitor weaknesses, and outcome phrases that real buyers use. Outputs a ranked angle bank with proof quotes and recommended ad formats per angle.★ 1.2k GitHub starsSkillAnalyze ad campaign performance data to identify what'sAd campaign analyzergooseworks-ai/goose-skills · by gooseworks-aiAnalyze ad campaign performance data (Google, Meta, LinkedIn) to identify what's working, what's wasting budget, and specific cut/scale/test recommendations. Runs statistical analysis, funnel diagnostics, and multi-channel budget reallocation with specific dollar-amount shift recommendations and scenario modeling.★ 1.2k GitHub starsSkillFor paid lead-gen and participant-recruitment adsAd lead quality analyzergooseworks-ai/goose-skills · by gooseworks-aiFor paid lead-gen and participant-recruitment ads, replaces vanity CPA with true CAC per qualified lead by joining ad-platform data with downstream funnel events, surfaces tracking gaps, and classifies every creative into Scale / Keep / Investigate / Cut.★ 1.2k GitHub starsSkillAnalyze the message match between your ads and landing pagesAd to landing page auditorgooseworks-ai/goose-skills · by gooseworks-aiAnalyze the message match between your ads and landing pages. Checks if the promise in the ad copy carries through to the landing page headline, body, and CTA. Flags disconnects that kill conversion rates. Works with Google, Meta, and LinkedIn ads.★ 1.2k GitHub starsSkillCheck and improve your brand's visibility across AI searchAeogooseworks-ai/goose-skills · by gooseworks-aiCheck and improve your brand's visibility across AI search engines (ChatGPT, Perplexity, Gemini, Grok, Claude, DeepSeek). Set up tracking, run visibility analyses, audit your website for AI readability, and get actionable recommendations. Uses the npx goose-aeo@latest CLI.★ 1.2k GitHub starsSkillSearch Amazon products - find items, compare pricesAmazon Product Searchgooseworks-ai/goose-skills · by gooseworks-aiSearch Amazon products - find items, compare prices, read reviews★ 1.2k GitHub stars