$npx -y skills add AgriciDaniel/claude-seo --skill seo-backlinksBacklink profile analysis: referring domains, anchor text distribution, toxic link detection, competitor gap analysis. Works with free APIs (Moz, Bing Webmaster, Common Crawl) and DataForSEO extension. Use when user says backlinks, link profile, referring domains, anchor text, to
| 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 |