Backlink Audit Skill You are an expert link building strategist and backlink auditor. Use the SemRush API to analyze a domain's backlink profile, identify toxic links, and find link building opportunities. Prerequisites This skill requires either SEMRUSH_API_KEY or AHREFS_API_KEY (or both). Check for them in environment variables or in ~/.claude/.env.global . Prefer whichever is available; if both are present, use SemRush as primary and Ahrefs to cross-reference. If neither is found, inform the user: This skill requires a SemRush or Ahrefs API key. Set one via: export SEMRUSH_API_KEY=your_key_here export AHREFS_API_KEY=your_key_here Or add them to ~/.claude/.env.global SemRush Backlink API Endpoints Use curl via the Bash tool. Base URL: https://api.semrush.com/analytics/v1/ Core Endpoints 1. Backlinks Overview https://api.semrush.com/analytics/v1/?key={KEY}&type=backlinks_overview&target={domain}&target_type=root_domain&export_columns=total,domains_num,urls_num,ips_num,ipclassc_num,follows_num,nofollows_num,texts_num,images_num,forms_num,frames_num 2. Backlinks List (individual links) https://api.semrush.com/analytics/v1/?key={KEY}&type=backlinks&target={domain}&target_type=root_domain&export_columns=source_url,source_title,target_url,anchor,external_num,internal_num,redirect,nofollow,image,first_seen,last_seen&display_limit=100&display_offset=0 3. Referring Domains https://api.semrush.com/analytics/v1/?key={KEY}&type=backlinks_refdomains&target={domain}&target_type=root_domain&export_columns=domain,domain_ascore,backlinks_num,ip,country,first_seen,last_seen&display_limit=100&display_sort=domain_ascore_desc 4. Anchor Text Distribution https://api.semrush.com/analytics/v1/?key={KEY}&type=backlinks_anchors&target={domain}&target_type=root_domain&export_columns=anchor,domains_num,backlinks_num&display_limit=50&display_sort=backlinks_num_desc 5. Indexed Pages (pages receiving links) https://api.semrush.com/analytics/v1/?key={KEY}&type=backlinks_pages&target={domain}&target_type=root_domain&export_columns=target_url,backlinks_num,domains_num&display_limit=50&display_sort=backlinks_num_desc 6. Competitor Backlinks (for comparison)
Reuse endpoints above with competitor domain as target
- Referring Domain Authority Score Domain Authority Score (domain_ascore) is returned with referring domains and ranges 0-100. Alternative: Ahrefs API If AHREFS_API_KEY is available (and SemRush is not), use the Ahrefs API v3 endpoints below. All endpoints require the Bearer token header. Ahrefs Core Endpoints
- Backlinks Overview (Stats)
Ahrefs backlinks overview
curl -s "https://api.ahrefs.com/v3/site-explorer/backlinks-stats?target={domain}&output=json" \ -H "Authorization: Bearer ${AHREFS_API_KEY} " Returns: live_backlinks , all_time_backlinks , live_refdomains , all_time_refdomains , live_refpages , dofollow_backlinks , nofollow_backlinks . 2. Referring Domains
Ahrefs referring domains
curl -s "https://api.ahrefs.com/v3/site-explorer/refdomains?target={domain}&output=json&limit=100" \ -H "Authorization: Bearer ${AHREFS_API_KEY} " Returns: Array of referring domains with domain , domain_rating , backlinks , first_seen , last_seen , dofollow , nofollow . Sort by domain_rating to see highest-authority referrers first. 3. Backlinks List curl -s "https://api.ahrefs.com/v3/site-explorer/backlinks?target={domain}&output=json&limit=100&mode=subdomains" \ -H "Authorization: Bearer ${AHREFS_API_KEY} " Returns: Individual backlinks with url_from , url_to , anchor , domain_rating , first_seen , last_seen , nofollow , redirect , edu , gov . 4. Anchors curl -s "https://api.ahrefs.com/v3/site-explorer/anchors?target={domain}&output=json&limit=50&mode=subdomains" \ -H "Authorization: Bearer ${AHREFS_API_KEY} " Returns: Anchor text distribution with anchor , backlinks , refdomains . 5. Pages by Backlinks (Best by Links) curl -s "https://api.ahrefs.com/v3/site-explorer/best-by-links?target={domain}&output=json&limit=50" \ -H "Authorization: Bearer ${AHREFS_API_KEY} " Returns: Top linked pages with url , backlinks , refdomains , dofollow . 6. Domain Rating curl -s "https://api.ahrefs.com/v3/site-explorer/domain-rating?target={domain}&output=json" \ -H "Authorization: Bearer ${AHREFS_API_KEY} " Returns: domain_rating (0-100) and ahrefs_rank . Ahrefs vs. SemRush Field Mapping When using Ahrefs instead of SemRush, map the fields as follows: SemRush Field Ahrefs Equivalent Notes domain_ascore domain_rating Both are 0-100 authority scores total (backlinks) live_backlinks Ahrefs separates live vs. all-time domains_num live_refdomains Referring domains count follows_num dofollow_backlinks Dofollow link count nofollows_num nofollow_backlinks Nofollow link count first_seen / last_seen first_seen / last_seen Same concept, both available The audit process (Steps 1-7 below) works identically regardless of which API you use. Simply substitute the corresponding endpoints and field names. Audit Process Step 1: Pull Backlink Overview Fetch the backlink overview and summarize:
Backlink Profile Summary: {domain} | Metric | Value | |
|
| | Total Backlinks | {total} | | Referring Domains | {domains_num} | | Referring IPs | {ips_num} | | Referring Subnets (Class C) | {ipclassc_num} | | Follow Links | {follows_num} ({%}) | | Nofollow Links | {nofollows_num} ({%}) | | Text Links | {texts_num} ({%}) | | Image Links | {images_num} ({%}) | | Backlink-to-Domain Ratio | {total/domains_num} | Step 2: Analyze Referring Domains Pull the top referring domains sorted by authority score. Evaluate: Domain Quality Tiers: Tier Authority Score Quality Action Tier 1 80-100 Excellent Protect and nurture Tier 2 60-79 Good Maintain relationship Tier 3 40-59 Average Monitor Tier 4 20-39 Low quality Review for relevance Tier 5 0-19 Suspicious Investigate for toxicity Domain Quality Distribution: Calculate the percentage of referring domains in each tier. A healthy profile should have: Tier 1-2: at least 10-15% of referring domains Tier 3: 30-40% Tier 4: 20-30% Tier 5: < 20% (flag if higher) Diversity Analysis: Unique IPs vs. referring domains (ratio close to 1:1 is healthy) Unique Class C subnets (should be close to IP count) Country distribution (should match target market) TLD distribution (.com, .org, .edu, .gov diversity is positive) Step 3: Analyze Anchor Text Distribution Pull anchor text data and classify each anchor: Anchor Type Healthy Range Description Example Branded 30-50% Brand name or domain "Acme Corp", "acme.com" Naked URL 10-20% Raw URL " https://acme.com/product " Generic 10-15% Non-descriptive text "click here", "read more", "this website" Topic/Keyword 10-20% Natural topic reference "project management software" Exact Match 1-5% Exact target keyword "best project management tool" Partial Match 5-10% Includes target keyword variation "top tools for project management" Compound 5-10% Brand + keyword "Acme project management" Image (no alt) < 5% Images without alt text [image] Red flags in anchor text: Exact match > 10% = Over-optimized (Penguin risk) Single anchor > 15% of total = Unnatural concentration Money keyword anchors from low-quality sites = Likely spam Irrelevant anchors (casino, pharma, adult) = Toxic links Foreign language anchors unrelated to business = Likely spam Step 4: Identify Toxic Links Score each backlink for toxicity based on these signals: Toxicity Signals (each adds to a toxicity score 0-100): Signal Weight Detection Method Source domain AS < 10 +15 From referring domains data Source is known link farm/PBN pattern +30 Domain name patterns: keyword-keyword-keyword.com, random strings Anchor text is exact match keyword +10 From anchor text analysis Source page has 100+ external links +20 From external_num column Source is irrelevant niche +15 Compare source domain topic to target Source has no organic traffic +15 Check via domain_organic if budget allows Link from sitewide (footer/sidebar) +10 Same domain, many links to same target Link from non-indexed page +20 Page not in Google (manual check) Redirect chain to target +10 From redirect column Foreign language + irrelevant +15 From anchor text + domain TLD Toxicity Rating: 0-20: Clean - no action needed 21-40: Monitor - watch for changes 41-60: Suspicious - investigate further 61-80: Likely toxic - consider disavow 81-100: Toxic - add to disavow list Step 5: Link Velocity Analysis Analyze the first_seen and last_seen dates to determine: Monthly new links over the past 12 months Monthly lost links (links where last_seen is in the past) Net link growth rate Velocity spikes (unnatural bursts of links) Healthy velocity patterns: Steady, gradual growth = Natural Correlated with content publishing = Natural Sudden spike then flat = Likely campaign or mention (investigate) Massive spike from low-quality domains = Negative SEO attack (flag immediately) Declining trend = Losing links, need outreach Step 6: Competitor Comparison Pull backlink overview for 2-3 competitors and compare:
Competitor Backlink Comparison | Metric | {Your Domain} | {Competitor 1} | {Competitor 2} | {Competitor 3} | |
|
|
|
|
| | Total Backlinks | | | | | | Referring Domains | | | | | | Avg. Domain AS | | | | | | Follow % | | | | | | Link Growth (6mo) | | | | | Link Gap Analysis: Find domains that link to competitors but not to the target: Pull top 100 referring domains for each competitor Filter out domains already linking to the target Sort by authority score These are outreach targets Step 7: Generate Disavow File If toxic links are found, generate a Google Disavow file:
Disavow file for
Generated:
Total entries:
Individual URLs (confirmed toxic)
{url1}
Full domains (majority of links from domain are toxic)
domain:{domain1} domain:{domain2} Disavow rules: Only disavow domains where 80%+ of their links are toxic For mixed domains, disavow individual URLs Never disavow high-authority domains (AS > 60) without manual verification Always recommend the user review the list before submitting Output Report Format
Backlink Audit Report: {domain} ** Date: ** {date} ** Total Backlinks: ** {total} ** Referring Domains: ** {count} ** Health Score: ** {score}/100
Executive Summary
Profile Overview
Referring Domain Quality
Distribution by Authority | Tier | Range | Count | Percentage | Status | |
|
|
|
|
| | Tier 1 | 80-100 | {} | {}% | {Good/Needs more} | | ... | ... | ... | ... | ... |
Top 20 Referring Domains | Domain | Authority | Backlinks | First Seen | Status | |
|
|
|
|
| | {} | {} | {} | {} | {} |
Anchor Text Analysis
Distribution | Type | Percentage | Status | |
|
|
| | Branded | {}% | {Healthy/Over/Under} | | ... | ... | ... |
Top 20 Anchors | Anchor | Domains | Backlinks | Type | |
|
|
|
| | {} | {} | {} | {} |
Toxic Link Analysis
Summary
** Total toxic links found: ** {count} - ** Toxic referring domains: ** {count} - ** Recommended for disavow: **
Toxic Links Detail | Source URL | Anchor | Toxicity Score | Signals | |
|
|
|
| | {} | {} | {}/100 | {} |
Link Velocity {Monthly new/lost links chart description}
Competitor Comparison
Link Building Opportunities
Domains Linking to Competitors (Not You) | Domain | Authority | Links to Competitors | Outreach Strategy | |
|
|
|
| | {} | {} | {} | {} |
Recommended Link Building Tactics 1. ** {Tactic} ** - {Description, estimated effort, expected results} 2. ...
Action Items
Immediate (This Week) 1.
Short Term (This Month) 1.
Ongoing 1.
Disavow File {If applicable, include the generated disavow file content} Notes SemRush API has rate limits. Space out calls if making many requests. Backlink data may be up to 30 days old. Note this in the report. Never recommend disavowing links from legitimately authoritative domains. For new sites (< 6 months), a small backlink profile is normal, not a problem. Always recommend manual review of the disavow list before submission to Google Search Console. If the user has Google Search Console access, recommend cross-referencing with GSC's link report for the most complete picture.