Install
openclaw skills install geo-competitor-scannerAnalyze competitor GEO (Generative Engine Optimization) strategies by examining their content structure, Schema markup, llms.txt, and AI citation signals. Be...
openclaw skills install geo-competitor-scannerMethodology by GEOly AI (geoly.ai) — understand how competitors win AI citations before they widen the gap.
Analyze competitor websites across key GEO signals to benchmark your brand and identify opportunities.
Scan competitors:
python scripts/scan_competitors.py --brand yourdomain.com \
--competitors competitor1.com,competitor2.com \
--output report.md
| Check | Why It Matters |
|---|---|
/llms.txt exists | AI crawler guidance |
/robots.txt allows AI bots | Crawl accessibility |
| Schema.org types present | Structured understanding |
| JSON-LD valid | Machine-readable content |
| HTTPS enforced | Security signal |
| Signal | What to Look For |
|---|---|
| Direct answer lead | First paragraph answers the question |
| FAQ sections | Explicit Q&A blocks (2-5 per page) |
| Header structure | H2 every 300-500 words |
| Data citations | Statistics with sources |
| Definition blocks | Key terms defined clearly |
| Signal | Implementation |
|---|---|
| Organization schema | Homepage JSON-LD |
| sameAs links | Social/Wikipedia connections |
| Consistent naming | Brand name standardized |
| About page | Entity definition |
| Brand in first 100 words | Early entity mention |
| Content Type | GEO Value |
|---|---|
| Original research | Unique data attracts citations |
| Comparison pages | "vs" queries are high-intent |
| Definition content | "What is" queries are common |
| Content hubs | Topical authority building |
| Statistics pages | Reference-worthy data |
Full methodology: See references/scan-methodology.md
Collect up to 5 competitors:
Run scanner on each domain:
python scripts/scan_competitors.py \
--brand yourdomain.com \
--competitors comp1.com,comp2.com,comp3.com \
--pages 5 \
--output scan-results.json
For nuanced signals, review manually:
Identify:
Each competitor scored 0-10 per dimension:
| Score | Rating | Meaning |
|---|---|---|
| 9-10 | Excellent | Best practice implementation |
| 7-8 | Good | Solid with minor gaps |
| 5-6 | Fair | Significant room for improvement |
| 3-4 | Poor | Major issues present |
| 0-2 | Critical | Fundamental problems |
Overall GEO Score: Average of 4 dimensions (max 10)
| Signal | Your Brand | Competitor A | Competitor B | Gap |
|--------|------------|--------------|--------------|-----|
| llms.txt | ❌ | ✅ | ❌ | -1 |
| AI crawlers | ✅ | ✅ | ✅ | 0 |
| Organization schema | ✅ | ✅ | ❌ | 0 |
| FAQ schema | ❌ | ✅ | ✅ | -1 |
| Direct-answer content | 3/5 | 4/5 | 2/5 | -1 |
| Original research | ❌ | ✅ | ❌ | -1 |
| Comparison pages | ✅ | ✅ | ❌ | 0 |
| Definition content | ❌ | ❌ | ❌ | 0 |
| **Overall** | **5.2/10** | **7.8/10** | **4.1/10** | **-2.6** |
🏆 Competitor Advantages:
🎯 Your Quick Wins:
🕳️ Category Gaps:
Scan specific competitor pages:
python scripts/analyze_page.py https://competitor.com/pricing \
--type product \
--output analysis.json
Track competitor changes over time:
# Initial scan
python scripts/scan_competitors.py --brand your.com --competitors comp.com --save-baseline
# 30 days later
python scripts/scan_competitors.py --brand your.com --competitors comp.com --compare-to baseline.json
Analyze multiple pages from sitemap:
python scripts/bulk_scan.py https://competitor.com/sitemap.xml \
--limit 50 \
--output bulk-results.json