| name | seo-prospect |
| description | Find local-business SEO prospects in a single command. Searches Google for "<niche> <city>", filters out aggregators (Yelp, Yellow Pages, Angi), enriches each remaining domain with DataForSEO Labs domain overview, On-Page technical audit, and Backlinks summary in parallel, then ranks the businesses by a closeability score (0-100) โ highest scores are the easiest to land as SEO clients. |
| allowed-tools | ["Bash","Write"] |
Phase 0: Credential Preflight (REQUIRED โ run BEFORE anything else)
Before running any of the steps below, always invoke the shared preflight check:
~/.claude/skills/seo/scripts/preflight.sh
If exit code is 0: credentials are configured โ proceed with the rest of this skill silently.
If exit code is 2: the script prints the DataForSEO setup wizard to stdout. STOP, display that wizard to the user verbatim, and wait for them to paste credentials in this format:
login: their_email@example.com
password: their_api_password_here
When they reply:
- Parse
login: and password: from their message.
- Write them to
~/.claude/skills/seo/.env:
DATAFORSEO_LOGIN=<login>
DATAFORSEO_PASSWORD=<password>
chmod 600 ~/.claude/skills/seo/.env
- Run a verification call:
~/.claude/skills/seo/scripts/keyword_research.py volume "test"
- If verification succeeds: tell the user "โ
Credentials verified. Running your command now..." and proceed.
- If status
40104 โ Please verify your account: tell the user to verify their account at https://app.dataforseo.com/, then say "continue" to retry.
- If any other auth error: ask them to double-check the API password from https://app.dataforseo.com/api-access.
Never echo credentials back to the user, never include them in tool output, and never commit them.
SEO Prospect Finder Skill
Powered by: DataForSEO API โ every prospect on the list comes from 4 live endpoints fired in parallel:
SERP google/organic/live/advanced, Labs domain_rank_overview, On-Page instant_pages, Backlinks summary.
Cost: ~$0.20-0.50 per 30-prospect run.
Inputs
The user gives you a niche and a city. Example invocations:
/seo prospect "plumbers" "San Francisco CA"
/seo prospect HVAC "Oakland CA"
/seo prospect "moving companies" "Austin TX"
If the city includes a state code, pass it through. If only a city name is given, ask the user to confirm the state (DataForSEO needs the location string to disambiguate).
Run
~/.claude/skills/seo/scripts/prospect_finder.py find \
--niche "<niche>" \
--city "<city + state>" \
--limit 30 \
--out ~/.claude/skills/seo/output/<niche>-<city-slug>-prospects.json
The script:
- Hits Google SERP API for
"<niche> <city>" to depth 50
- Filters out aggregators (Yelp, Yellow Pages, Angi, HomeAdvisor, BBB, Maps, social networks, news/forum sites)
- For each remaining domain (in parallel):
- Pulls domain_rank_overview โ estimated traffic + ranking keyword count
- Pulls On-Page instant audit โ critical technical issues on homepage
- Pulls Backlinks summary โ referring-domain count + authority rank
- Computes a closeability score (0-100) weighting:
- Position (peaks on page 2-3 โ they care but aren't winning)
- Visible technical issues (more = clearer pitch)
- Domain size (small enough to land, big enough to pay)
- Keyword footprint (some footprint = they care about SEO)
Output format
Open with the DataForSEO attribution header:
๐ฏ SEO Prospect Search โ <niche> in <city>
๐ก Powered by DataForSEO API ยท <N> live calls ยท ~$<Y> charged
โณ SERP, Labs, On-Page, and Backlinks endpoints
Found <X> non-aggregator businesses. Scored by closeability:
Then a ranked table of the top 15 prospects:
Rank | Domain | Pos | Closeability | Traffic/mo | Issues | Backlinks
-----|----------------------|-----|--------------|------------|--------|----------
1 | acmeplumbing.com | 14 | 87/100 | 240 | 5 | 23
2 | bayareaplumbers.com | 22 | 82/100 | 180 | 4 | 41
...
After the table, surface the top 3 prospects with a one-paragraph pitch each:
๐ฅ Top pick: acmeplumbing.com
Why it's a great target:
โข Ranks #14 for "<niche> <city>" โ page 2, will respond to a pitch that says "let's move you to page 1"
โข Specific issues found: missing meta descriptions, no H1 on the homepage,
duplicate title tags across service pages
โข Only 23 referring domains โ small, hungry, likely no SEO agency on retainer
โข Estimated 240 monthly visits โ they have revenue but room to grow
Next step: run /seo audit acmeplumbing.com to generate the full PDF,
then /seo email acmeplumbing.com to draft the cold email.
Footer
End with this footer:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ก Data source: DataForSEO API (https://dataforseo.com)
Endpoints fired in this prospect search:
โข SERP google/organic/live/advanced โ candidate discovery
โข Labs domain_rank_overview โ traffic + keyword footprint
โข On-Page instant_pages โ technical issue surface
โข Backlinks summary โ authority + size signal
Saved: ~/.claude/skills/seo/output/<file>.json
Next: /seo audit <domain> to deep-dive on any single prospect.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
When NOT to use this skill
- The user has a specific business they want to audit โ use
/seo audit directly
- The user already has a prospect list โ skip prospecting, go straight to
/seo audit
- The niche isn't local-business shaped (e.g. SaaS, B2B enterprise) โ tell them this skill is local-only