[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C2S5D2EXR59TPZMZB3W7M3":3,"skill-same:01M6C2S5D2EXR59TPZMZB3W7M3":91},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":16,"sourceHtmlUrl":17,"categories":18,"keywords":29,"publishedAt":55,"linkOnly":56,"markdownContent":57,"markdownBody":58,"frontMatter":59,"refName":66,"commitSha":67,"skillDirectory":68,"forksCount":14,"repositoryHtmlUrl":69,"repositoryHomepageUrl":6,"ownerHtmlUrl":70,"ownerBlogUrl":6,"ownerDescription":71,"updatedAt":72,"install":73,"resources":85},"01M6C2S5D2EXR59TPZMZB3W7M3","seo-backlinks",null,"Backlink 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, toxic links, link gap, link building, disavow, or backlink audit.","noirelab\u002Flinux-setup","noirelab","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F142925921?v=4","01M6C29R3FEDGFAXAT0KXY28QX","Kaíque M. Lima","01M6C29R811WX04B0GYHTH1XV6",0,"MIT","https:\u002F\u002Fgithub.com\u002Fnoirelab\u002Flinux-setup\u002Fblob\u002Fmain\u002Fconfigs\u002Fcommon\u002Fopencode\u002Fskills\u002Fseo-backlinks\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fnoirelab\u002Flinux-setup\u002Fblob\u002Fmain\u002Fconfigs\u002Fcommon\u002Fopencode\u002Fskills\u002Fseo-backlinks\u002FSKILL.md",[19,24],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000019","营销推广","SCENARIO","使用场景",{"categoryNo":25,"categoryName":26,"taxonomyType":27,"taxonomyTypeDesc":28},"01JBSEEDCAT000000000000035","市场营销","PROFESSION","适用职业",[30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],"seo","backlinks","seo backlinks","crawl","when","backlink audit","link building","links","bing","URL","domains","free","webmaster","distribution","signup","audit","use","profile","user","common","text","verify","api","analysis","detection","2026-11-10 10:12:30",false,"---\nname: seo-backlinks\ndescription: \"Backlink 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, toxic links, link gap, link building, disavow, or backlink audit.\"\nuser-invocable: true\nargument-hint: \"\u003Curl>\"\nlicense: MIT\ncompatibility: \"Free: Common Crawl + verify always available. Optional: Moz API, Bing Webmaster (free signup). Premium: DataForSEO extension.\"\nmetadata:\n  author: AgriciDaniel\n  version: \"2.2.4\"\n  category: seo\n---\n\n# Backlink Profile Analysis\n\n## Source Detection\n\nBefore analysis, detect available data sources:\n\n1. **DataForSEO MCP** (premium): Check if `dataforseo_backlinks_summary` tool is available\n2. **Moz API** (free signup): `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run backlinks_auth.py --check moz --json`\n3. **Bing Webmaster** (free signup): `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run backlinks_auth.py --check bing --json`\n4. **Common Crawl** (always available): Domain-level graph with PageRank\n5. **Verification Crawler** (always available): Checks if known backlinks still exist\n\nRun `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run backlinks_auth.py --check --json` to detect all sources at once.\n\nIf no sources are configured beyond the always-available tier:\n- Still produce a report using Common Crawl domain metrics\n- Suggest: \"Run `\u002Fseo backlinks setup` to add free Moz and Bing API keys for richer data\"\n\n## Quick Reference\n\n| Command | Purpose |\n|---------|---------|\n| `\u002Fseo backlinks \u003Curl>` | Full backlink profile analysis (uses all available sources) |\n| `\u002Fseo backlinks gap \u003Curl1> \u003Curl2>` | Competitor backlink gap analysis |\n| `\u002Fseo backlinks toxic \u003Curl>` | Toxic link detection and disavow recommendations |\n| `\u002Fseo backlinks new \u003Curl>` | New and lost backlinks (DataForSEO only) |\n| `\u002Fseo backlinks verify \u003Curl> --links \u003Cfile>` | Verify known backlinks still exist |\n| `\u002Fseo backlinks setup` | Show setup instructions for free backlink APIs |\n\n## Analysis Framework\n\nProduce all 7 sections below. Each section lists data sources in preference order.\n\n### 1. Profile Overview\n\n**DataForSEO:** `dataforseo_backlinks_summary` → total backlinks, referring domains, domain rank, follow ratio, trend.\n\n**Moz API:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run moz_api.py metrics \u003Curl> --json` → Domain Authority, Page Authority, Spam Score, linking root domains, external links.\n\n**Common Crawl:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run commoncrawl_graph.py \u003Cdomain> --json` → PageRank, harmonic centrality, and low-confidence rank\u002Fpresence data.\n\n**Scoring:**\n\n| Metric | Good | Warning | Critical |\n|--------|------|---------|----------|\n| Referring domains | >100 | 20-100 | \u003C20 |\n| Follow ratio | >60% | 40-60% | \u003C40% |\n| Domain diversity | No single domain >5% | 1 domain >10% | 1 domain >25% |\n| Trend | Growing or stable | Slow decline | Rapid decline (>20%\u002Fquarter) |\n\n### 2. Anchor Text Distribution\n\n**DataForSEO:** `dataforseo_backlinks_anchors`\n\n**Moz API:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run moz_api.py anchors \u003Curl> --json`\n\n**Bing Webmaster:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run bing_webmaster.py links \u003Curl> --json` (extract anchor text from link details)\n\n**Healthy distribution benchmarks:**\n\n| Anchor Type | Target Range | Over-Optimization Signal |\n|-------------|-------------|-------------------------|\n| Branded (company\u002Fdomain name) | 30-50% | \u003C15% |\n| URL\u002Fnaked link | 15-25% | N\u002FA |\n| Generic (\"click here\", \"learn more\") | 10-20% | N\u002FA |\n| Exact match keyword | 3-10% | >15% |\n| Partial match keyword | 5-15% | >25% |\n| Long-tail \u002F natural | 5-15% | N\u002FA |\n\nFlag if exact-match anchors exceed 15% as a review heuristic; it may indicate unnatural or link-spam patterns.\n\n### 3. Referring Domain Quality\n\n**DataForSEO:** `dataforseo_backlinks_referring_domains`\n\n**Moz API:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run moz_api.py domains \u003Curl> --json` → domains with DA scores\n\n**Common Crawl:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run commoncrawl_graph.py \u003Cdomain> --json` → domain-level rank\u002Fpresence data, no verified referring-domain counts\n\nAnalyze:\n- **TLD distribution**: .edu, .gov, .org = high authority. Excessive .xyz, .info = low quality\n- **Country distribution**: Match target market. 80%+ from irrelevant countries = PBN signal\n- **Domain rank distribution**: Healthy profiles have links from all authority tiers\n- **Follow\u002Fnofollow per domain**: Sites that only nofollow = limited SEO value\n\n### 4. Toxic Link Detection\n\n**DataForSEO:** `dataforseo_backlinks_bulk_spam_score` + toxic patterns from reference\n\n**Moz API:** Raw vendor spam_score from `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run moz_api.py metrics \u003Curl> --json` (source-label the value; apply thresholds only if verified against current Moz docs)\n\n**Verification Crawler:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run verify_backlinks.py --target \u003Curl> --links \u003Cfile> --json` (verify suspicious links still exist)\n\n**High-risk indicators (flag immediately):**\n- Links from known PBN (Private Blog Network) domains\n- Unnatural anchor text patterns (100% exact match from a domain)\n- Links from penalized or deindexed domains\n- Mass directory submissions (50+ directory links)\n- Link farms (sites with 10K+ outbound links per page)\n- Paid link patterns (footer\u002Fsidebar links across all pages of a domain)\n\n**Medium-risk indicators (review manually):**\n- Links from unrelated niches\n- Reciprocal link patterns\n- Links from thin content pages (\u003C100 words)\n- Excessive links from a single domain (>50 backlinks from 1 domain)\n\nLoad `..\u002Fseo\u002Freferences\u002Fbacklink-quality.md` for the full 30 toxic patterns and disavow criteria.\n\n### 5. Top Pages by Backlinks\n\n**DataForSEO:** `dataforseo_backlinks_backlinks` with target type \"page\"\n\n**Moz API:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run moz_api.py pages \u003Cdomain> --json`\n\nFind:\n- Which pages attract the most backlinks\n- Pages with high-authority links (link magnets)\n- Pages with zero backlinks (internal linking opportunities)\n- 404 pages with backlinks (redirect opportunities to reclaim link equity)\n\n### 6. Competitor Gap Analysis\n\n**DataForSEO:** `dataforseo_backlinks_referring_domains` for both domains, then compare\n\n**Bing Webmaster:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run bing_webmaster.py compare \u003Curl1> \u003Curl2> --json`\nonly when both properties are registered and accessible to the same Bing API\naccount. For arbitrary competitors, use DataForSEO, Moz, or Common Crawl.\n\n**Moz API:** Compare DA\u002FPA between domains via `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run moz_api.py metrics \u003Curl> --json` for each\n\nOutput:\n- Domains linking to competitor but NOT to target = link building opportunities\n- Domains linking to both = validate existing relationships\n- Domains linking only to target = competitive advantage\n- Top 20 link building opportunities with domain authority\n\n### 7. New and Lost Backlinks\n\n**DataForSEO only:** `dataforseo_backlinks_backlinks` with date filters for 30\u002F60\u002F90 day changes\n\n**Verification Crawler:** For known links, verify current status with `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run verify_backlinks.py --target \u003Curl> --links \u003Cfile> --json`\n\n**Note:** Free sources cannot track new\u002Flost links over time. If this section is requested without DataForSEO, inform the user: \"Link velocity tracking requires the DataForSEO extension. Free sources provide point-in-time snapshots only.\"\n\n**Red flags:**\n- Sudden spike in new links (possible negative SEO attack)\n- Sudden loss of many links (site penalty or content removal)\n- Declining velocity over 3+ months (content not attracting links)\n\n## Backlink Health Score\n\nCalculate a 0-100 score. When mixing sources, apply confidence weighting:\n\n| Factor | Weight | Sources (preference order) | Confidence |\n|--------|--------|---------------------------|------------|\n| Referring domain count | 20% | DataForSEO > Moz | 1.0 \u002F 0.85 |\n| Domain quality distribution | 20% | DataForSEO > Moz DA distribution | 1.0 \u002F 0.85 |\n| Anchor text naturalness | 15% | DataForSEO > Moz > Bing anchors | 1.0 \u002F 0.85 \u002F 0.70 |\n| Toxic link ratio | 20% | DataForSEO > Moz spam score | 1.0 \u002F 0.85 |\n| Link velocity trend | 10% | DataForSEO only | 1.0 |\n| Follow\u002Fnofollow ratio | 5% | DataForSEO > Bing details | 1.0 \u002F 0.70 |\n| Geographic relevance | 10% | DataForSEO > Bing country | 1.0 \u002F 0.70 |\n\n**Data sufficiency gate:** Count how many of the 7 factors have at least one data source available.\n- **4+ factors with data:** Produce a numeric 0-100 score (redistribute missing weights proportionally)\n- **Fewer than 4 factors:** Do NOT produce a numeric score. Instead display:\n  ```\n  Backlink Health Score: INSUFFICIENT DATA (X\u002F7 factors scored)\n  ```\n  Show individual factor scores that ARE available with their source and confidence.\n  Recommend: \"Configure Moz API (free) for a scoreable profile. Run `\u002Fseo backlinks setup`\"\n\nWhen only CC is available, do not produce a numeric score; report low-confidence rank\u002Fpresence data only.\nA numeric score with fewer than 4 data sources is **misleading**, it implies poor health when\nthe reality is we simply lack data.\n\n## Output Format\n\n### Backlink Health Score: XX\u002F100 (or INSUFFICIENT DATA)\n\n| Section | Status | Score | Data Source |\n|---------|--------|-------|-------------|\n| Profile Overview | pass\u002Fwarn\u002Ffail | XX\u002F100 | Moz (0.85) |\n| Anchor Distribution | pass\u002Fwarn\u002Ffail | XX\u002F100 | Moz (0.85) |\n| Referring Domain Quality | pass\u002Fwarn\u002Ffail | XX\u002F100 | CC (0.50) |\n| Toxic Links | pass\u002Fwarn\u002Ffail | XX\u002F100 | Moz Spam (0.85) |\n| Top Pages | info | N\u002FA | Moz (0.85) |\n| Link Velocity | pass\u002Fwarn\u002Ffail | XX\u002F100 | DataForSEO only |\n\n### Critical Issues (fix immediately)\n### High Priority (fix within 1 month)\n### Medium Priority (ongoing improvement)\n### Link Building Opportunities (top 10)\n\n## Error Handling\n\n| Error | Cause | Resolution |\n|-------|-------|-----------|\n| No sources configured | No API keys, no DataForSEO | Run `\u002Fseo backlinks setup` |\n| Moz rate limit | Free tier: 1 req\u002F10s | Wait 10 seconds, retry. Built into script. |\n| Bing site not verified | Site not verified in Bing | Verify at https:\u002F\u002Fwww.bing.com\u002Fwebmasters |\n| CC download timeout | Large graph file, slow connection | Use `--timeout 180` flag |\n| DataForSEO unavailable | Extension not installed | Run `.\u002Fextensions\u002Fdataforseo\u002Finstall.sh` |\n| No backlink data returned | Domain too new or very small | Note: small sites may have \u003C10 backlinks |\n\n**Fallback cascade:**\n1. DataForSEO available? → Use as primary (confidence: 1.0)\n2. Moz configured? → Use for DA\u002FPA\u002Fspam\u002Fanchors (confidence: 0.85)\n3. Bing configured? → Use for registered-property links and comparison only\n   when both properties are accessible (confidence: 0.70)\n4. Always: Common Crawl for domain-level metrics (confidence: 0.50)\n5. Always: Verification crawler for known link checks (confidence: 0.95)\n6. Nothing works? → \"Run `\u002Fseo backlinks setup` to configure free APIs\"\n\n## Pre-Delivery Review (MANDATORY)\n\nBefore presenting any backlink analysis to the user, run this checklist internally.\nDo NOT skip this step. Fix any issues found before showing the report.\n\n### Fact-Check Every Claim\n- [ ] **Schema claims**: Did parse_html return `@type` for each block? If any `@type` is missing,\n      re-check, it may use `@graph` wrapper (valid JSON-LD, not malformed).\n- [ ] **\"link_removed\" findings**: Is the page JS-rendered? If `unverifiable_js`, say so, never\n      report a JS-rendered page as \"link removed\" (that's a false negative).\n- [ ] **H1 findings**: Are any H1s in the `h1_suspicious` list? If so, note they are likely\n      counters\u002Fstats, not semantic headings.\n- [ ] **Reciprocal links**: If site A links to site B AND B links back to A, flag it as a\n      reciprocal link pattern. Check outbound links against verified inbound sources.\n- [ ] **Health score**: Are 4+ of 7 factors scored? If not, report INSUFFICIENT DATA, never\n      show a misleading numeric score.\n\n### Verify Data Source Labels\n- [ ] Every metric in the report has a source label (e.g., \"Parsed (0.95)\", \"CC (0.50)\")\n- [ ] Every \"not found\" result distinguishes between \"not crawled\" vs \"below threshold\" vs \"error\"\n- [ ] Social media pages flagged as `unverifiable_js` (not `link_removed`)\n\n### Cross-Check Consistency\n- [ ] Platform detection matches actual signals (check for wp-content, shopify CDN, etc.)\n- [ ] Referring domain count in summary matches the actual verified links list\n- [ ] No claim is presented without a data source backing it\n\nIf ANY check fails, fix the finding before presenting. Never present inferred data as fact.\n\n## Post-Analysis\n\nAfter completing any backlink analysis command, always offer:\n\"Generate a professional PDF report? Use `\u002Fseo google report`\"\n\n## Reference Documentation\n\nLoad on demand (do NOT load at startup):\n- `skills\u002Fseo\u002Freferences\u002Fbacklink-quality.md` -- Detailed toxic link patterns and scoring methodology (shared reference, load when analyzing toxic links or spam scores)\n- `skills\u002Fseo\u002Freferences\u002Ffree-backlink-sources.md` -- Source comparison, confidence weighting, setup guides (shared reference, load when configuring free backlink APIs)\n","# Backlink Profile Analysis\n\n## Source Detection\n\nBefore analysis, detect available data sources:\n\n1. **DataForSEO MCP** (premium): Check if `dataforseo_backlinks_summary` tool is available\n2. **Moz API** (free signup): `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run backlinks_auth.py --check moz --json`\n3. **Bing Webmaster** (free signup): `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run backlinks_auth.py --check bing --json`\n4. **Common Crawl** (always available): Domain-level graph with PageRank\n5. **Verification Crawler** (always available): Checks if known backlinks still exist\n\nRun `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run backlinks_auth.py --check --json` to detect all sources at once.\n\nIf no sources are configured beyond the always-available tier:\n- Still produce a report using Common Crawl domain metrics\n- Suggest: \"Run `\u002Fseo backlinks setup` to add free Moz and Bing API keys for richer data\"\n\n## Quick Reference\n\n| Command | Purpose |\n|---------|---------|\n| `\u002Fseo backlinks \u003Curl>` | Full backlink profile analysis (uses all available sources) |\n| `\u002Fseo backlinks gap \u003Curl1> \u003Curl2>` | Competitor backlink gap analysis |\n| `\u002Fseo backlinks toxic \u003Curl>` | Toxic link detection and disavow recommendations |\n| `\u002Fseo backlinks new \u003Curl>` | New and lost backlinks (DataForSEO only) |\n| `\u002Fseo backlinks verify \u003Curl> --links \u003Cfile>` | Verify known backlinks still exist |\n| `\u002Fseo backlinks setup` | Show setup instructions for free backlink APIs |\n\n## Analysis Framework\n\nProduce all 7 sections below. Each section lists data sources in preference order.\n\n### 1. Profile Overview\n\n**DataForSEO:** `dataforseo_backlinks_summary` → total backlinks, referring domains, domain rank, follow ratio, trend.\n\n**Moz API:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run moz_api.py metrics \u003Curl> --json` → Domain Authority, Page Authority, Spam Score, linking root domains, external links.\n\n**Common Crawl:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run commoncrawl_graph.py \u003Cdomain> --json` → PageRank, harmonic centrality, and low-confidence rank\u002Fpresence data.\n\n**Scoring:**\n\n| Metric | Good | Warning | Critical |\n|--------|------|---------|----------|\n| Referring domains | >100 | 20-100 | \u003C20 |\n| Follow ratio | >60% | 40-60% | \u003C40% |\n| Domain diversity | No single domain >5% | 1 domain >10% | 1 domain >25% |\n| Trend | Growing or stable | Slow decline | Rapid decline (>20%\u002Fquarter) |\n\n### 2. Anchor Text Distribution\n\n**DataForSEO:** `dataforseo_backlinks_anchors`\n\n**Moz API:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run moz_api.py anchors \u003Curl> --json`\n\n**Bing Webmaster:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run bing_webmaster.py links \u003Curl> --json` (extract anchor text from link details)\n\n**Healthy distribution benchmarks:**\n\n| Anchor Type | Target Range | Over-Optimization Signal |\n|-------------|-------------|-------------------------|\n| Branded (company\u002Fdomain name) | 30-50% | \u003C15% |\n| URL\u002Fnaked link | 15-25% | N\u002FA |\n| Generic (\"click here\", \"learn more\") | 10-20% | N\u002FA |\n| Exact match keyword | 3-10% | >15% |\n| Partial match keyword | 5-15% | >25% |\n| Long-tail \u002F natural | 5-15% | N\u002FA |\n\nFlag if exact-match anchors exceed 15% as a review heuristic; it may indicate unnatural or link-spam patterns.\n\n### 3. Referring Domain Quality\n\n**DataForSEO:** `dataforseo_backlinks_referring_domains`\n\n**Moz API:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run moz_api.py domains \u003Curl> --json` → domains with DA scores\n\n**Common Crawl:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run commoncrawl_graph.py \u003Cdomain> --json` → domain-level rank\u002Fpresence data, no verified referring-domain counts\n\nAnalyze:\n- **TLD distribution**: .edu, .gov, .org = high authority. Excessive .xyz, .info = low quality\n- **Country distribution**: Match target market. 80%+ from irrelevant countries = PBN signal\n- **Domain rank distribution**: Healthy profiles have links from all authority tiers\n- **Follow\u002Fnofollow per domain**: Sites that only nofollow = limited SEO value\n\n### 4. Toxic Link Detection\n\n**DataForSEO:** `dataforseo_backlinks_bulk_spam_score` + toxic patterns from reference\n\n**Moz API:** Raw vendor spam_score from `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run moz_api.py metrics \u003Curl> --json` (source-label the value; apply thresholds only if verified against current Moz docs)\n\n**Verification Crawler:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run verify_backlinks.py --target \u003Curl> --links \u003Cfile> --json` (verify suspicious links still exist)\n\n**High-risk indicators (flag immediately):**\n- Links from known PBN (Private Blog Network) domains\n- Unnatural anchor text patterns (100% exact match from a domain)\n- Links from penalized or deindexed domains\n- Mass directory submissions (50+ directory links)\n- Link farms (sites with 10K+ outbound links per page)\n- Paid link patterns (footer\u002Fsidebar links across all pages of a domain)\n\n**Medium-risk indicators (review manually):**\n- Links from unrelated niches\n- Reciprocal link patterns\n- Links from thin content pages (\u003C100 words)\n- Excessive links from a single domain (>50 backlinks from 1 domain)\n\nLoad `..\u002Fseo\u002Freferences\u002Fbacklink-quality.md` for the full 30 toxic patterns and disavow criteria.\n\n### 5. Top Pages by Backlinks\n\n**DataForSEO:** `dataforseo_backlinks_backlinks` with target type \"page\"\n\n**Moz API:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run moz_api.py pages \u003Cdomain> --json`\n\nFind:\n- Which pages attract the most backlinks\n- Pages with high-authority links (link magnets)\n- Pages with zero backlinks (internal linking opportunities)\n- 404 pages with backlinks (redirect opportunities to reclaim link equity)\n\n### 6. Competitor Gap Analysis\n\n**DataForSEO:** `dataforseo_backlinks_referring_domains` for both domains, then compare\n\n**Bing Webmaster:** `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run bing_webmaster.py compare \u003Curl1> \u003Curl2> --json`\nonly when both properties are registered and accessible to the same Bing API\naccount. For arbitrary competitors, use DataForSEO, Moz, or Common Crawl.\n\n**Moz API:** Compare DA\u002FPA between domains via `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run moz_api.py metrics \u003Curl> --json` for each\n\nOutput:\n- Domains linking to competitor but NOT to target = link building opportunities\n- Domains linking to both = validate existing relationships\n- Domains linking only to target = competitive advantage\n- Top 20 link building opportunities with domain authority\n\n### 7. New and Lost Backlinks\n\n**DataForSEO only:** `dataforseo_backlinks_backlinks` with date filters for 30\u002F60\u002F90 day changes\n\n**Verification Crawler:** For known links, verify current status with `\u002Fhome\u002Fnoirelab\u002F.config\u002Fopencode\u002Fskills\u002Fseo\u002Fbin\u002Fclaude-seo run verify_backlinks.py --target \u003Curl> --links \u003Cfile> --json`\n\n**Note:** Free sources cannot track new\u002Flost links over time. If this section is requested without DataForSEO, inform the user: \"Link velocity tracking requires the DataForSEO extension. Free sources provide point-in-time snapshots only.\"\n\n**Red flags:**\n- Sudden spike in new links (possible negative SEO attack)\n- Sudden loss of many links (site penalty or content removal)\n- Declining velocity over 3+ months (content not attracting links)\n\n## Backlink Health Score\n\nCalculate a 0-100 score. When mixing sources, apply confidence weighting:\n\n| Factor | Weight | Sources (preference order) | Confidence |\n|--------|--------|---------------------------|------------|\n| Referring domain count | 20% | DataForSEO > Moz | 1.0 \u002F 0.85 |\n| Domain quality distribution | 20% | DataForSEO > Moz DA distribution | 1.0 \u002F 0.85 |\n| Anchor text naturalness | 15% | DataForSEO > Moz > Bing anchors | 1.0 \u002F 0.85 \u002F 0.70 |\n| Toxic link ratio | 20% | DataForSEO > Moz spam score | 1.0 \u002F 0.85 |\n| Link velocity trend | 10% | DataForSEO only | 1.0 |\n| Follow\u002Fnofollow ratio | 5% | DataForSEO > Bing details | 1.0 \u002F 0.70 |\n| Geographic relevance | 10% | DataForSEO > Bing country | 1.0 \u002F 0.70 |\n\n**Data sufficiency gate:** Count how many of the 7 factors have at least one data source available.\n- **4+ factors with data:** Produce a numeric 0-100 score (redistribute missing weights proportionally)\n- **Fewer than 4 factors:** Do NOT produce a numeric score. Instead display:\n  ```\n  Backlink Health Score: INSUFFICIENT DATA (X\u002F7 factors scored)\n  ```\n  Show individual factor scores that ARE available with their source and confidence.\n  Recommend: \"Configure Moz API (free) for a scoreable profile. Run `\u002Fseo backlinks setup`\"\n\nWhen only CC is available, do not produce a numeric score; report low-confidence rank\u002Fpresence data only.\nA numeric score with fewer than 4 data sources is **misleading**, it implies poor health when\nthe reality is we simply lack data.\n\n## Output Format\n\n### Backlink Health Score: XX\u002F100 (or INSUFFICIENT DATA)\n\n| Section | Status | Score | Data Source |\n|---------|--------|-------|-------------|\n| Profile Overview | pass\u002Fwarn\u002Ffail | XX\u002F100 | Moz (0.85) |\n| Anchor Distribution | pass\u002Fwarn\u002Ffail | XX\u002F100 | Moz (0.85) |\n| Referring Domain Quality | pass\u002Fwarn\u002Ffail | XX\u002F100 | CC (0.50) |\n| Toxic Links | pass\u002Fwarn\u002Ffail | XX\u002F100 | Moz Spam (0.85) |\n| Top Pages | info | N\u002FA | Moz (0.85) |\n| Link Velocity | pass\u002Fwarn\u002Ffail | XX\u002F100 | DataForSEO only |\n\n### Critical Issues (fix immediately)\n### High Priority (fix within 1 month)\n### Medium Priority (ongoing improvement)\n### Link Building Opportunities (top 10)\n\n## Error Handling\n\n| Error | Cause | Resolution |\n|-------|-------|-----------|\n| No sources configured | No API keys, no DataForSEO | Run `\u002Fseo backlinks setup` |\n| Moz rate limit | Free tier: 1 req\u002F10s | Wait 10 seconds, retry. Built into script. |\n| Bing site not verified | Site not verified in Bing | Verify at https:\u002F\u002Fwww.bing.com\u002Fwebmasters |\n| CC download timeout | Large graph file, slow connection | Use `--timeout 180` flag |\n| DataForSEO unavailable | Extension not installed | Run `.\u002Fextensions\u002Fdataforseo\u002Finstall.sh` |\n| No backlink data returned | Domain too new or very small | Note: small sites may have \u003C10 backlinks |\n\n**Fallback cascade:**\n1. DataForSEO available? → Use as primary (confidence: 1.0)\n2. Moz configured? → Use for DA\u002FPA\u002Fspam\u002Fanchors (confidence: 0.85)\n3. Bing configured? → Use for registered-property links and comparison only\n   when both properties are accessible (confidence: 0.70)\n4. Always: Common Crawl for domain-level metrics (confidence: 0.50)\n5. Always: Verification crawler for known link checks (confidence: 0.95)\n6. Nothing works? → \"Run `\u002Fseo backlinks setup` to configure free APIs\"\n\n## Pre-Delivery Review (MANDATORY)\n\nBefore presenting any backlink analysis to the user, run this checklist internally.\nDo NOT skip this step. Fix any issues found before showing the report.\n\n### Fact-Check Every Claim\n- [ ] **Schema claims**: Did parse_html return `@type` for each block? If any `@type` is missing,\n      re-check, it may use `@graph` wrapper (valid JSON-LD, not malformed).\n- [ ] **\"link_removed\" findings**: Is the page JS-rendered? If `unverifiable_js`, say so, never\n      report a JS-rendered page as \"link removed\" (that's a false negative).\n- [ ] **H1 findings**: Are any H1s in the `h1_suspicious` list? If so, note they are likely\n      counters\u002Fstats, not semantic headings.\n- [ ] **Reciprocal links**: If site A links to site B AND B links back to A, flag it as a\n      reciprocal link pattern. Check outbound links against verified inbound sources.\n- [ ] **Health score**: Are 4+ of 7 factors scored? If not, report INSUFFICIENT DATA, never\n      show a misleading numeric score.\n\n### Verify Data Source Labels\n- [ ] Every metric in the report has a source label (e.g., \"Parsed (0.95)\", \"CC (0.50)\")\n- [ ] Every \"not found\" result distinguishes between \"not crawled\" vs \"below threshold\" vs \"error\"\n- [ ] Social media pages flagged as `unverifiable_js` (not `link_removed`)\n\n### Cross-Check Consistency\n- [ ] Platform detection matches actual signals (check for wp-content, shopify CDN, etc.)\n- [ ] Referring domain count in summary matches the actual verified links list\n- [ ] No claim is presented without a data source backing it\n\nIf ANY check fails, fix the finding before presenting. Never present inferred data as fact.\n\n## Post-Analysis\n\nAfter completing any backlink analysis command, always offer:\n\"Generate a professional PDF report? Use `\u002Fseo google report`\"\n\n## Reference Documentation\n\nLoad on demand (do NOT load at startup):\n- `skills\u002Fseo\u002Freferences\u002Fbacklink-quality.md` -- Detailed toxic link patterns and scoring methodology (shared reference, load when analyzing toxic links or spam scores)\n- `skills\u002Fseo\u002Freferences\u002Ffree-backlink-sources.md` -- Source comparison, confidence weighting, setup guides (shared reference, load when configuring free backlink APIs)\n",{"name":5,"license":15,"metadata":60,"description":7,"argument-hint":63,"compatibility":64,"user-invocable":65},{"author":61,"version":62,"category":30},"AgriciDaniel","2.2.4","\u003Curl>","Free: Common Crawl + verify always available. Optional: Moz API, Bing Webmaster (free signup). Premium: DataForSEO extension.",true,"main","d8378e461d60315bd1ca8a6e71716df39b6abe4a","configs\u002Fcommon\u002Fopencode\u002Fskills\u002Fseo-backlinks","https:\u002F\u002Fgithub.com\u002Fnoirelab\u002Flinux-setup","https:\u002F\u002Fgithub.com\u002Fnoirelab","Artificial Intelligence Researcher |\r\nComputer Science majoring at UTFPR","2026-11-11 09:12:51",{"source":8,"skillName":5,"commands":74,"prompt":84,"zipAvailable":65},[75,78,81],{"tool":76,"command":77},"npx","npx skills add noirelab\u002Flinux-setup --skill seo-backlinks",{"tool":79,"command":80},"bunx","bunx skills add noirelab\u002Flinux-setup --skill seo-backlinks",{"tool":82,"command":83},"pnpm","pnpm dlx skills add noirelab\u002Flinux-setup --skill seo-backlinks","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fnoirelab\u002Flinux-setup\u002Fblob\u002Fmain\u002Fconfigs\u002Fcommon\u002Fopencode\u002Fskills\u002Fseo-backlinks\u002FSKILL.md",[86],{"path":87,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":90,"sourceHtmlUrl":16},"LICENSE.txt","LICENSE","许可证",143,[92,122,156,181,201,217],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":96,"licenseFileUrl":97,"sourceHtmlUrl":98,"categories":99,"keywords":103,"publishedAt":55},"01M6C2Q1S6HCS7Y9TBQ2PJ2NAM","skill-creator","Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fnoirelab\u002Flinux-setup\u002Fblob\u002Fmain\u002Fconfigs\u002Fcommon\u002Fclaude\u002Fskills\u002Fsynced\u002Ffcfa9261-0073-49cb-8312-19eea68f0c58_391f3767-a35d-4280-81a1-363cd861a8e6\u002Fskill-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fnoirelab\u002Flinux-setup\u002Fblob\u002Fmain\u002Fconfigs\u002Fcommon\u002Fclaude\u002Fskills\u002Fsynced\u002Ffcfa9261-0073-49cb-8312-19eea68f0c58_391f3767-a35d-4280-81a1-363cd861a8e6\u002Fskill-creator\u002FSKILL.md",[100],{"categoryNo":101,"categoryName":102,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000023","Skill与智能体开发",[104,105,106,107,108,109,110,111,112,53,113,114,46,115,116,117,118,119,120,34,121],"skill creator","creator","performance","run evals","test","variance analysis","create","run","benchmark","improve","edit","evals","optimize","existing skill","for","accuracy","scratch","new",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":96,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":55},"01M6C2ZRGJ9HN4N9BP24DPNCR4","returns-reverse-logistics","Codified expertise for returns authorization, receipt and inspection, disposition decisions, refund processing, fraud detection, and warranty claims management. Informed by returns operations managers with 15+ years experience. Includes grading frameworks, disposition economics, fraud pattern recognition, and vendor recovery processes. Use when handling product returns, reverse logistics, refund decisions, return fraud detection, or warranty claims.","https:\u002F\u002Fgithub.com\u002Fnoirelab\u002Flinux-setup\u002Fblob\u002Fmain\u002Fconfigs\u002Fcommon\u002Fopencode_home\u002Fskills\u002Freturns-reverse-logistics\u002FSKILL.md",[],[129,130,131,132,133,134,135,136,137,54,138,139,140,141,142,143,46,144,145,146,147,148,149,150,151,152,118,153,154,34,155],"returns","returns reverse logistics","reverse logistics","reverse","github","code","product","https","authorization","fraud","recovery","decisions","management","operations","vendor","claims management","frameworks","fraud detection","pattern","grading","processing","economics","managers","claims","expertise","refund","inspection",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":96,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":55},"01M6C2ZGWSNZGZZQ5VCFWHD2QT","quality-nonconformance","Codified expertise for quality control, non-conformance investigation, root cause analysis, corrective action, and supplier quality management in regulated manufacturing. Informed by quality engineers with 15+ years experience across FDA, IATF 16949, and AS9100 environments. Includes NCR lifecycle management, CAPA systems, SPC interpretation, and audit methodology. Use when investigating non-conformances, performing root cause analysis, managing CAPAs, interpreting SPC data, or handling supplier quality issues.","https:\u002F\u002Fgithub.com\u002Fnoirelab\u002Flinux-setup\u002Fblob\u002Fmain\u002Fconfigs\u002Fcommon\u002Fopencode_home\u002Fskills\u002Fquality-nonconformance\u002FSKILL.md",[],[163,164,133,165,166,134,167,136,45,168,169,170,53,171,141,46,172,173,174,175,176,177,178,179,118,153,180,34],"quality","quality nonconformance","root cause analysis","interpretation","issues","data","methodology","lifecycle","investigation","fda","across","manufacturing","environments","corrective action","supplier quality management","action","conformance","root cause",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":96,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":187,"publishedAt":55},"01M6C2Z8VQ9AYZYKPZW1KD9DX5","production-scheduling","Codified expertise for production scheduling, job sequencing, line balancing, changeover optimization, and bottleneck resolution in discrete and batch manufacturing. Informed by production schedulers with 15+ years experience. Includes TOC\u002Fdrum-buffer-rope, SMED, OEE analysis, disruption response frameworks, and ERP\u002FMES interaction patterns. Use when scheduling production, resolving bottlenecks, optimizing changeovers, responding to disruptions, or balancing manufacturing lines.","https:\u002F\u002Fgithub.com\u002Fnoirelab\u002Flinux-setup\u002Fblob\u002Fmain\u002Fconfigs\u002Fcommon\u002Fopencode_home\u002Fskills\u002Fproduction-scheduling\u002FSKILL.md",[],[188,189,190,133,134,191,136,192,53,193,194,46,195,196,145,197,198,199,174,200,118,153,34],"Production","production scheduling","scheduling","batch","Optimization","erp","bottleneck","toc","patterns","line","interaction","sequencing","buffer",{"skillNo":202,"name":203,"nameZh":6,"description":204,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":96,"licenseFileUrl":6,"sourceHtmlUrl":205,"categories":206,"keywords":207,"publishedAt":55},"01M6C2YR01NNN2Z1G18RN7F9MP","logistics-exception-management","Codified expertise for handling freight exceptions, shipment delays, damages, losses, and carrier disputes. Informed by logistics professionals with 15+ years operational experience. Includes escalation protocols, carrier-specific behaviors, claims procedures, and judgment frameworks. Use when handling shipping exceptions, freight claims, delivery issues, or carrier disputes.","https:\u002F\u002Fgithub.com\u002Fnoirelab\u002Flinux-setup\u002Fblob\u002Fmain\u002Fconfigs\u002Fcommon\u002Fopencode_home\u002Fskills\u002Flogistics-exception-management\u002FSKILL.md",[],[141,208,133,134,209,167,210,136,211,46,145,212,213,214,215,152,118,153,216,34],"logistics exception management","shipping","protocols","escalation","delivery","claude-code","judgment","with","freight",{"skillNo":218,"name":219,"nameZh":6,"description":220,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":96,"licenseFileUrl":6,"sourceHtmlUrl":221,"categories":222,"keywords":223,"publishedAt":55},"01M6C2YC5PXTEJYBJJQZVXPQS0","inventory-demand-planning","Codified expertise for demand forecasting, safety stock optimization, replenishment planning, and promotional lift estimation at multi-location retailers. Informed by demand planners with 15+ years experience managing hundreds of SKUs. Includes forecasting method selection, ABC\u002FXYZ analysis, seasonal transition management, and vendor negotiation frameworks. Use when forecasting demand, setting safety stock, planning replenishment, managing promotions, or optimizing inventory levels.","https:\u002F\u002Fgithub.com\u002Fnoirelab\u002Flinux-setup\u002Fblob\u002Fmain\u002Fconfigs\u002Fcommon\u002Fopencode_home\u002Fskills\u002Finventory-demand-planning\u002FSKILL.md",[],[224,225,226,227,133,134,136,228,192,229,53,141,143,230,46,231,145,232,233,234,235,236,118,153,237,34],"planning","inventory","inventory demand planning","demand planning","negotiation","Safety","forecasting","selection","estimation","stock","seasonal","lift","at","transition"]