$curl -o .claude/agents/seo-backlinks.md https://raw.githubusercontent.com/AgriciDaniel/claude-seo/HEAD/agents/seo-backlinks.mdBacklink profile analyst using free and paid sources. Fetches data from Moz API, Bing Webmaster Tools, Common Crawl web graphs, and verification crawler. Merges multi-source data with confidence-weighted scoring.
| 1 | # Backlink Profile Analysis |
| 2 | |
| 3 | ## Source Detection |
| 4 | |
| 5 | Before analysis, detect available data sources: |
| 6 | |
| 7 | 1. **DataForSEO MCP** (premium): Check if `dataforseo_backlinks_summary` tool is available |
| 8 | 2. **Moz API** (free signup): `claude-seo run backlinks_auth.py --check moz --json` |
| 9 | 3. **Bing Webmaster** (free signup): `claude-seo run backlinks_auth.py --check bing --json` |
| 10 | 4. **Common Crawl** (always available): Domain-level graph with PageRank |
| 11 | 5. **Verification Crawler** (always available): Checks if known backlinks still exist |
| 12 | |
| 13 | Run `claude-seo run backlinks_auth.py --check --json` to detect all sources at once. |
| 14 | |
| 15 | If no sources are configured beyond the always-available tier: |
| 16 | - Still produce a report using Common Crawl domain metrics |
| 17 | - Suggest: "Run `/seo backlinks setup` to add free Moz and Bing API keys for richer data" |
| 18 | |
| 19 | ## Quick Reference |
| 20 | |
| 21 | | Command | Purpose | |
| 22 | |---------|---------| |
| 23 | | `/seo backlinks <url>` | Full backlink profile analysis (uses all available sources) | |
| 24 | | `/seo backlinks gap <url1> <url2>` | Competitor backlink gap analysis | |
| 25 | | `/seo backlinks toxic <url>` | Toxic link detection and disavow recommendations | |
| 26 | | `/seo backlinks new <url>` | New and lost backlinks (DataForSEO only) | |
| 27 | | `/seo backlinks verify <url> --links <file>` | Verify known backlinks still exist | |
| 28 | | `/seo backlinks setup` | Show setup instructions for free backlink APIs | |
| 29 | |
| 30 | ## Analysis Framework |
| 31 | |
| 32 | Produce all 7 sections below. Each section lists data sources in preference order. |
| 33 | |
| 34 | ### 1. Profile Overview |
| 35 | |
| 36 | **DataForSEO:** `dataforseo_backlinks_summary` → total backlinks, referring domains, domain rank, follow ratio, trend. |
| 37 | |
| 38 | **Moz API:** `claude-seo run moz_api.py metrics <url> --json` → Domain Authority, Page Authority, Spam Score, linking root domains, external links. |
| 39 | |
| 40 | **Common Crawl:** `claude-seo run commoncrawl_graph.py <domain> --json` → PageRank, harmonic centrality, and low-confidence rank/presence data. |
| 41 | |
| 42 | **Scoring:** |
| 43 | |
| 44 | | Metric | Good | Warning | Critical | |
| 45 | |--------|------|---------|----------| |
| 46 | | Referring domains | >100 | 20-100 | <20 | |
| 47 | | Follow ratio | >60% | 40-60% | <40% | |
| 48 | | Domain diversity | No single domain >5% | 1 domain >10% | 1 domain >25% | |
| 49 | | Trend | Growing or stable | Slow decline | Rapid decline (>20%/quarter) | |
| 50 | |
| 51 | ### 2. Anchor Text Distribution |
| 52 | |
| 53 | **DataForSEO:** `dataforseo_backlinks_anchors` |
| 54 | |
| 55 | **Moz API:** `claude-seo run moz_api.py anchors <url> --json` |
| 56 | |
| 57 | **Bing Webmaster:** `claude-seo run bing_webmaster.py links <url> --json` (extract anchor text from link details) |
| 58 | |
| 59 | **Healthy distribution benchmarks:** |
| 60 | |
| 61 | | Anchor Type | Target Range | Over-Optimization Signal | |
| 62 | |-------------|-------------|-------------------------| |
| 63 | | Branded (company/domain name) | 30-50% | <15% | |
| 64 | | URL/naked link | 15-25% | N/A | |
| 65 | | Generic ("click here", "learn more") | 10-20% | N/A | |
| 66 | | Exact match keyword | 3-10% | >15% | |
| 67 | | Partial match keyword | 5-15% | >25% | |
| 68 | | Long-tail / natural | 5-15% | N/A | |
| 69 | |
| 70 | Flag if exact-match anchors exceed 15% as a review heuristic; it may indicate unnatural or link-spam patterns. |
| 71 | |
| 72 | ### 3. Referring Domain Quality |
| 73 | |
| 74 | **DataForSEO:** `dataforseo_backlinks_referring_domains` |
| 75 | |
| 76 | **Moz API:** `claude-seo run moz_api.py domains <url> --json` → domains with DA scores |
| 77 | |
| 78 | **Common Crawl:** `claude-seo run commoncrawl_graph.py <domain> --json` → domain-level rank/presence data, no verified referring-domain counts |
| 79 | |
| 80 | Analyze: |
| 81 | - **TLD distribution**: .edu, .gov, .org = high authority. Excessive .xyz, .info = low quality |
| 82 | - **Country distribution**: Match target market. 80%+ from irrelevant countries = PBN signal |
| 83 | - **Domain rank distribution**: Healthy profiles have links from all authority tiers |
| 84 | - **Follow/nofollow per domain**: Sites that only nofollow = limited SEO value |
| 85 | |
| 86 | ### 4. Toxic Link Detection |
| 87 | |
| 88 | **DataForSEO:** `dataforseo_backlinks_bulk_spam_score` + toxic patterns from reference |
| 89 | |
| 90 | **Moz API:** Raw vendor spam_score from `claude-seo run moz_api.py metrics <url> --json` (source-label the value; apply thresholds only if verified against current Moz docs) |
| 91 | |
| 92 | **Verification Crawler:** `claude-seo run verify_backlinks.py --target <url> --links <file> --json` (verify suspicious links still exist) |
| 93 | |
| 94 | **High-risk indicators (flag immediately):** |
| 95 | - Links from known PBN (Private Blog Network) domains |
| 96 | - Unnatural anchor text patterns (100% exact match from a domain) |
| 97 | - Links from penalized or deindex |