seoskills.sh
Catalog/seoskills/internal

Toxic Backlink Auditor

Fetches the site's referring domains and scores each for toxicity from spam signals such as link farms, irrelevant TLDs…

0 installs

Use this skill

$ npx skills add seoskills.sh/toxic-backlink-auditor
Repository
seoskills/internal
GitHub stars
License

SKILL.md

---
name: Toxic Backlink Auditor
description: Fetches the site's referring domains and scores each for toxicity from spam signals such as link farms, irrelevant TLDs, sitewide footer links, unnatural velocity, and over-optimized anchors, outputting a prioritized disavow-candidate list. Use when the user wants a backlink risk audit, disavow file preparation, or to assess penalty exposure.
category: link-building
---

# Toxic Backlink Auditor

AGENT ROLE: Autonomous backlink-risk agent. Score each referring domain against the toxicity signals in `references/toxicity_signals.json` and emit the JSON in `references/output.schema.json`, including a disavow candidate list. Recommend review; never auto-submit a disavow.

## OBJECTIVE
Assign each referring domain a toxicity score from spam signals, classify low/medium/high risk, and produce a prioritized disavow-candidate list with the reason per domain — so a human can review before disavowing.

## INPUTS
- `target` (REQUIRED): the domain to audit.
- `disavow_threshold` (OPTIONAL, default 70): toxicity score at/above which a domain is a disavow candidate.
- `max_domains` (OPTIONAL, default 5000).

## AUTHENTICATION (Backlink API)
1. REQUIRE a provider: `DATAFORSEO_LOGIN`+`DATAFORSEO_PASSWORD` (Basic) or `BACKLINK_API_KEY`.
   - IF absent THEN STOP `error.code="AUTH_MISSING_BACKLINK_PROVIDER"`.
2. Endpoint (DataForSEO): `POST https://api.dataforseo.com/v3/backlinks/referring_domains/live` with backlink attributes (rank, `backlinks`, `dofollow`, `first_seen`, `lost_date`, anchor sample).

## EXPECTED TOOL CALLS
- Run `scripts/toxic_backlinks.py --target example.com`.
- Fetch the referring-domain list with per-domain attributes needed by the signals (rank, backlink count, dofollow ratio, TLD, first-seen dates, anchors).

## PROCEDURE (deterministic, per referring domain)
STEP 1 — FETCH referring domains + attributes.
STEP 2 — SCORE toxicity by summing weighted signals from `toxicity_signals.json`:
  - very low domain rank / no organic presence.
  - spammy or irrelevant TLD (`.xyz`, `.top`, `.loan`, country mismatches at scale).
  - sitewide link (backlinks count ≈ pages, footer/blogroll pattern).
  - over-optimized commercial anchor from a low-quality domain.
  - unnatural velocity (many links first-seen in a tight burst).
  - nofollow-only from a link farm, or link networks (shared IP/registrant when available).
STEP 3 — CLASSIFY `low (<40) | medium (40–69) | high (>=70)`; cap at 100.
STEP 4 — DISAVOW CANDIDATES = domains with score >= `disavow_threshold`; format as `domain:example-spam.com` lines.
STEP 5 — EMIT the scored list (worst first), the disavow candidates, and profile-level stats (toxic %, dofollow ratio).

## RATE LIMITS & ERROR HANDLING
- Provider `429`/`402` → backoff `2^attempt` (max 5) then STOP `error.code="RATE_LIMITED"`/`PROVIDER_PAYMENT_REQUIRED` with `partial`.
- Page through large profiles; HARD cap at `max_domains` (`hit_cap=true`).

## MISSING / INSUFFICIENT DATA
- Toxicity is PROBABILISTIC — always mark output `advisory=true` and require human review before disavow. Never claim certainty that a link is harmful.
- A missing attribute lowers that signal's contribution rather than assuming the worst.
- Recently-lost links (`lost_date` set) are noted but excluded from disavow candidates (already gone).

## OUTPUT
One JSON object per `references/output.schema.json`. No prose.

## FILES
- `scripts/toxic_backlinks.py` — provider client, weighted toxicity scoring, disavow formatting.
- `references/toxicity_signals.json` — signals + weights + spam TLD list.
- `references/output.schema.json` — output contract.

Not using the CLI? Copy the SKILL.md and paste it straight into ChatGPT, Claude, or any agent.

Embed a badge

seoskills.sh install badge

More in Link Building

Link Buildingaaron-he-zhu/seo-geo-claude-skills

backlink-analyzer

No description available.

26.1K installs
Link Buildingcalm-north/seojuice-skills

build-links

Design a link building campaign with prospect identification, asset creation, and outreach strategy. Use when the user asks about link building, backlinks, domain authority, how to get backlinks, outreach campaigns, digital PR, guest posting, or link acquisition. For internal linking, see fix-linking.

6.5K installs
Link Buildingagricidaniel/claude-seo

seo-backlinks

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.

5.5K installs
Link Buildingcalm-north/seojuice-skills

fix-linking

Design or audit internal link structure for a website. Use when the user asks about internal linking, link architecture, orphan pages, PageRank flow, anchor text, site structure, silo architecture, or why pages aren't ranking despite good content. For external link building, see build-links.

2K installs
Link Buildingkostja94/marketing-skills

link-building

When the user wants to build backlinks, acquire links, or improve off-page SEO. Also use when the user mentions "link building," "backlinks," "off-page SEO," "link acquisition," "outreach," "guest posting," "broken link building," "link outreach," "acquire backlinks," "how to build backlinks," or "link building strategy." For profile audit, use backlink-analysis.

1K installs
Link Buildingkostja94/marketing-skills

backlink-analysis

When the user wants to analyze backlinks, audit link profile, or identify link issues. Also use when the user mentions "backlink analysis," "backlink audit," "referring domains," "toxic links," "link profile," or "disavow file." For acquisition, use link-building.

993 installs