Agent skill
seo-opportunity-finder
Find quick-win SEO content opportunities by comparing your site's existing content against competitor keyword rankings.
Filed under Content and SEO and CRM and RevOps.
From edupegoretti/fluidz-skills · 116 skills · 0 · pushed 2026-03-11
What it does when it runs
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.
Read from the skill and the 1 file bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- APIFY_API_TOKEN
- Hosts it reaches
- yourcompany.com
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It does act, so it runs under whatever permissions your session already grants. - Actions present in the files
- shellwrites files
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/edupegoretti/fluidz-skills.git /tmp/fluidz-skills git -C /tmp/fluidz-skills sparse-checkout set "skills/composites/seo-opportunity-finder" mkdir -p ~/.claude/skills/seo-opportunity-finder cp -R "/tmp/fluidz-skills/skills/composites/seo-opportunity-finder/." ~/.claude/skills/seo-opportunity-finder/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
Before you install: this skill will not complete its job on a bare agent. It needs APIFY_API_TOKEN, which you have to obtain separately.
The skill
Source on GitHub ↗Reproduced in full from edupegoretti/fluidz-skills/blob/a2cf697e2e8ec2ea517d85496e2d5c7f5dc44cd3/skills/composites/seo-opportunity-finder/SKILL.md, which is licensed MIT (repository). 796 words, 21 headings.
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
- Your website URL (e.g.,
https://yourcompany.com) - 2-3 competitor URLs to compare against
- Primary ICP — who are you trying to attract? (This filters for commercial intent vs. general traffic)
- Any topics/keyword themes that are definitely in scope? (Optional — helps prioritize output)
Phase 1: Catalog Your Existing Content
Run site-content-catalog to build an inventory of your current pages and posts:
python3 skills/site-content-catalog/scripts/catalog_site.py \
--url <your_site_url> \
--output json
Extract from results:
- All blog post titles and URLs
- Inferred topics/themes per post
- Estimated content age (from URL slugs or metadata if available)
This prevents recommending content you've already written.
Phase 2: Analyze Competitor SEO Footprint
Run seo-domain-analyzer for each competitor:
# Uses Apify Semrush/Ahrefs scrapers
node skills/seo-domain-analyzer/src/cli.js analyze --domain <competitor_domain>
Collect for each competitor:
- Top ranking keywords (by estimated traffic volume)
- Top pages by organic traffic
- Domain authority / DR score
- Keyword categories they're winning in
If seo-domain-analyzer returns limited data (low-traffic competitor), supplement with seo-traffic-analyzer:
python3 skills/seo-traffic-analyzer/scripts/analyze_seo.py \
--url <competitor_url> \
--output summary
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 clients/<client-name>/intelligence/seo-opportunities-[YYYY-MM-DD].md.
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_TOKENenv var - Upstream skills:
site-content-catalog,seo-domain-analyzer,seo-traffic-analyzer
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]"
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- ai-seo by coreyhaines31 · 45,947
- programmatic-seo by coreyhaines31 · 45,947
- seo-audit by coreyhaines31 · 45,947
- seo-ops by ericosiu · 3,449
- reddit-opportunity-research by onvoyage-ai · 1,291
- write-seo-geo-content by onvoyage-ai · 1,291
- geo-query-finder by OpenClaudia · 664
- programmatic-seo by OpenClaudia · 664
Need help setting it up?
This page tells you what seo-opportunity-finder does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.