| name | marketing-serp |
| description | DataForSEO SERP analysis for geo-targeted search result analysis. See who ranks for keywords in specific locations (Australia, US, UK, etc.), identify content gaps, analyze SERP features (featured snippets, PAA), and find competitor domains. Supports --dry-run to preview costs. Triggers on "who ranks for", "SERP analysis", "search results for", "Google results for [keyword]", "competitors for [keyword]", "featured snippet", "people also ask", "ranking domains", "top 10 for", or "SERP features". |
SERP Data (DataForSEO)
Geo-targeted SERP analysis CLI using DataForSEO APIs. Unlike WebFetch, this provides accurate local search results (e.g., Australia-specific rankings).
Setup: Set the DATAFORSEO_API_KEY environment variable. The value is the base64 encoding of your DataForSEO login:password pair (it is sent as an HTTP Basic auth header):
echo -n 'login:pass' | base64
API calls retry automatically on transient errors (HTTP 429/503/504): 3 attempts, 2s/4s backoff. Shared client code is in dataforseo.py, synced from scripts/shared/dataforseo.py in the repo — edit the canonical copy, not the synced one.
CLI Location
<skill-dir>
Why This Skill?
WebFetch cannot search by local geography. This skill solves that by using DataForSEO's SERP API to:
- Get accurate Australian SERP rankings
- See who ranks for target keywords
- Identify content gaps and opportunities
- Analyze SERP features (featured snippets, PAA)
Quick Start
cd <skill-dir>
uv run python cli.py balance
uv run python cli.py serp "voidable transaction australia" --location au
uv run python cli.py bulk "liquidator" "doca" "voluntary administration"
uv run python cli.py features "what is voluntary administration"
uv run python cli.py gaps example-site.com "liquidator" "rocap form" "form 507"
Commands
1. serp - Single keyword SERP analysis
Get organic rankings and SERP features for one keyword.
cd <skill-dir>
uv run python cli.py serp "rocap form"
uv run python cli.py serp "liquidator" --location au
uv run python cli.py serp "liquidator" --location us
uv run python cli.py serp "voluntary administration" --depth 20
uv run python cli.py serp "unfair preference" -a
uv run python cli.py serp "form 507" -j
Cost: ~$0.003 per 10 results
2. bulk - Multi-keyword competitor analysis
Analyze multiple keywords and identify which domains rank across them.
cd <skill-dir>
uv run python cli.py bulk "liquidator" "voluntary administration" "doca" "winding up"
uv run python cli.py bulk "form 507" "rocap form" "asic forms" "form 505"
Output: Competitor ranking summary showing domains that rank for multiple keywords.
Cost: ~$0.003 per keyword
3. features - SERP feature opportunities
Deep analysis of SERP features including featured snippets, People Also Ask, related searches.
cd <skill-dir>
uv run python cli.py features "what is voluntary administration"
uv run python cli.py features "voidable transaction australia"
uv run python cli.py features "relation back day meaning"
Output:
- Featured snippet holder (if any)
- People Also Ask questions
- Related searches
- Knowledge graph presence
- Optimization recommendations
Cost: ~$0.004 per 10 results
4. gaps - Content gap analysis
Find keywords where a target domain doesn't rank but competitors do.
cd <skill-dir>
uv run python cli.py gaps example-site.com "liquidator" "doca" "form 507" "rocap"
uv run python cli.py gaps svpartners.com.au "voidable transaction" "unfair preference"
Output:
- Keywords where domain doesn't rank in top 20
- Current rankings for keywords where domain does rank
- Top competitor for each gap keyword
Cost: ~$0.003 per keyword
5. balance - Check account balance (FREE)
cd <skill-dir> && uv run python cli.py balance
6. costs - Show cost estimates (FREE)
cd <skill-dir> && uv run python cli.py costs
7. locations - List location shortcuts (FREE)
cd <skill-dir> && uv run python cli.py locations
Options
| Option | Description |
|---|
--location, -l | Location shortcut (au, us, uk, ca, nz) or code |
--depth, -d | Number of results (default: 10 or 20) |
--device | desktop or mobile (default: desktop) |
--advanced, -a | Include all SERP features |
--output, -o | Save results to CSV file |
--json-output, -j | Also save raw JSON response |
--dry-run | Preview cost before executing |
Location Shortcuts
| Shortcut | Code | Country |
|---|
| au | 2036 | Australia |
| us | 2840 | United States |
| uk | 2826 | United Kingdom |
| ca | 2124 | Canada |
| nz | 2554 | New Zealand |
Cost Reference
| Command | Cost |
|---|
serp (regular) | $0.003 per 10 results |
serp -a (advanced) | $0.004 per 10 results |
bulk | $0.003 per keyword (10 results) |
features | $0.004 per 10 results |
gaps | $0.003 per keyword |
balance, costs, locations | FREE |
Example session costs:
- Single keyword analysis: ~$0.003
- 10 keyword competitor scan: ~$0.03
- 50 keyword gap analysis: ~$0.15
Auto-Save
All results are automatically saved to:
<skill-dir>/results/
Filenames: {command}_{keyword}_{location}_{timestamp}.csv
Examples:
serp_voidable-transaction-australia_au_2026-02-05_143022.csv
bulk_liquidator_au_2026-02-05_144155.csv
gaps_example-site.com_au_2026-02-05_145230.csv
Example: Australian Insolvency SERP Research
cd <skill-dir>
uv run python cli.py balance
uv run python cli.py bulk "liquidator" "voluntary administration" "doca" "winding up" "insolvent trading"
uv run python cli.py serp "rocap form" --location au -a
uv run python cli.py serp "form 507 asic" --location au -a
uv run python cli.py features "what is a voidable transaction"
uv run python cli.py features "voluntary administration meaning"
uv run python cli.py gaps example-site.com \
"liquidator" "doca" "voluntary administration" \
"form 507" "rocap form" "unfair preference" \
"insolvent trading" "winding up" "relation back day"
Workflow: SERP Analysis for Content Strategy
Step 1: Competitor Discovery
uv run python cli.py bulk "liquidator" "voluntary administration" "doca" \
"winding up" "insolvent trading" "rocap form" "form 507"
Step 2: SERP Feature Opportunities
uv run python cli.py features "what is voluntary administration"
uv run python cli.py features "what is a voidable transaction"
uv run python cli.py features "how to fill form 507"
Step 3: Gap Analysis
uv run python cli.py gaps yourdomain.com [list of target keywords]
Step 4: Update Strategy Document
Use results to update SERP Analysis section in STRATEGY.md with actual Australian ranking data.
Integration with marketing-keyword-data Skill
Use both skills together for complete SEO research:
cd <marketing-keyword-data-skill-dir>
uv run python cli.py suggestions "insolvency" --limit 100
uv run python cli.py volume "liquidator" "doca" "voluntary administration"
cd <skill-dir>
uv run python cli.py bulk "liquidator" "doca" "voluntary administration"
uv run python cli.py features "liquidator"
uv run python cli.py gaps example-site.com "liquidator" "doca"
Output Fields
serp/bulk
| Field | Description |
|---|
| rank | Position in SERP (1 = top) |
| domain | Ranking domain |
| title | Page title |
| url | Full URL |
| description | Meta description snippet |
features
Returns structured data for:
- Featured snippets (domain, title, content)
- People Also Ask questions
- Related searches
- Knowledge graph
- Organic rankings
gaps
| Field | Description |
|---|
| keyword | Search term |
| domain_rank | Your rank (null if not ranking) |
| top_competitor | Domain ranking #1 |
| top_rank | Competitor's rank |