seo-backlinks-profile
Skill201 starsChanged 5 months agoMITView on GitHub
Full backlink profile for a domain — referring domains, anchor text distribution, authority distribution, IP and subnet diversity, growth/decay trend, toxic-candidate flagging. Distinct from `seo-backlink-gap` (which is gap-vs-competitor only). Produces a profile health score and reviewable disavow candidate list (never auto-disavow). Use when the user asks "backlink profile", "link profile audit", "anchor distribution", "toxic links", "disavow candidates", or "backlink health".
1 other project uses a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- amirjahfar1/automate-seo-with-claudeedited, first seen Jun 9, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 1
- amirjahfar1/automate-seo-with-claude★ 278% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository31 other files it gives its agents.
- ai-search-gaps-to-social-campaignSkill
- client-onboarding-proposalSkill
- local-gmb-visibilitySkill
- seo-adsSkill
- seo-agency-landing-pageSkill
- seo-ai-search-share-of-voiceSkill
- seo-ai-social-reportSkill
- seo-apiSkill
- seo-backlink-gapSkill
- seo-competitor-gap-analysisSkill
- seo-competitor-pagesSkill
- seo-content-auditSkill
- seo-content-briefSkill
- seo-driftSkill
- seo-firecrawlSkill
- seo-gaps-to-social-campaignSkill
- seo-geoSkill
- seo-googleSkill
- seo-hreflangSkill
- seo-imagesSkill
- seo-keyword-clusterSkill
- seo-keyword-nicheSkill
- seo-localSkill
- seo-pageSkill
- seo-planSkill
- seo-schemaSkill
- seo-sitemapSkill
- seo-subdomainSkill
- seo-sxoSkill
- seo-technical-auditSkill
- site-audit-to-social-distributionSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 19
If your workflow specifically *requires* multi-source blending (large agencies, link-builders billing on link counts), this skill is the …
- Very specific: line 83
Create a folder seo-backlinks-profile-{target-slug}-{YYYYMMDD}/ with:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Example output: examples/seo-backlinks-profile-stripe-com-20260514/PROFILE.md
Backlinks Profile
A complete backlink profile audit for a domain. Surfaces composition (where do links come from?), quality (what's the authority distribution?), diversity (concentrated in a few IPs/subnets, or spread out?), trajectory (growing or decaying?), and risk (which links look manipulative?). Output includes a health score and a reviewable disavow-candidate list — never an auto-disavow.
Single-source by design
This skill consults only the SE Ranking backlink index. We don't blend Ahrefs / Moz / Majestic / DataForSEO / Common Crawl into the same report. That's a deliberate choice, not a limitation:
- Internally consistent metrics. Authority scores, anchor counts, and refdomain totals are computed against a single crawl. Multi-source blends produce numbers that look authoritative but actually average across crawls with different sampling, different freshness, and different definitions of "backlink" — the resulting ratios (e.g. dofollow %, anchor distribution) are noise.
- Reproducible health scores. The 100-point health score in this report can be re-run a quarter later against the same source and the deltas are meaningful. With multi-source blends, a score drift can mean anything: source A reweighted, source B refreshed, source C changed its toxic heuristic.
- No data-source independence to model. Any "do these sources agree?" question is unanswerable without a second backlink graph; we don't pretend to answer it. If you need cross-source confirmation (e.g. before legal disavow, before a high-stakes outreach campaign), pair this profile with a manual spot-check against Ahrefs/Majestic — that's a research task, not a skill output.
If your workflow specifically requires multi-source blending (large agencies, link-builders billing on link counts), this skill is the wrong tool — use a vendor that aggregates multiple indexes. For everyone else, single-source produces the more honest report.
Prerequisites
- SE Ranking MCP server connected.
- User provides: a target domain.
- Claude's
WebFetchtool optional (for spot-checking flagged toxic candidates). mcp__firecrawl-mcp__firecrawl_scrapeoptional (for the new step 8b — link-source verification).
Process
- Validate target & preflight. See
skills/seo-firecrawl/references/preflight.mdfor the canonical 3-stage preflight (credit balance, Firecrawl availability, Google APIs). Skill-specific notes:- Normalise domain before continuing.
- Estimated SE Ranking cost for this skill: moderate (full-profile run; no per-keyword multiplier).
- Firecrawl: optional. When
--verify-sourcesis passed, step 8b (link-source verification) scrapes top-20 referring domains' linking pages to verify each link is still present and whatrelit carries (dofollow / nofollow / sponsored / UGC), ~20 Firecrawl credits per run. Default off; pass--no-firecrawlto skip even if available. - Google APIs: not used.
- Profile summary
DATA_getBacklinksSummary- Total backlinks, total referring domains, dofollow/nofollow ratio, link-type distribution (text / image / form / frame), growth velocity over the last 30/90 days.
- Referring domains
DATA_getBacklinksRefDomains- Top N referring domains by authority. Pull authority score, link count per domain, domain TLD, country.
- Anchor distribution
DATA_getBacklinksAnchors- Top anchor texts by frequency.
- Classify each anchor: branded (contains brand name), exact-match commercial (the target's primary commercial keyword), partial-match, generic ("click here", "read more", "this page"), naked URL, image-alt-derived.
- Authority distribution
DATA_getBacklinksAuthorityandDATA_getDistributionOfDomainAuthority- Histogram of referring-domain authority: how many DA 0-9, 10-19, 20-29, etc.
- A healthy profile has a long tail; an unhealthy profile is concentrated at DA<10.
- IP and subnet diversity
DATA_getReferringIps,DATA_getReferringIpsCount,DATA_getReferringSubnetsCount- Total unique IPs hosting referring domains.
- Total unique /24 subnets.
- Compute concentration ratio:
referring_domains / unique_subnets. Healthy: ~3–10. Unhealthy: many domains share few subnets (PBN signal).
- Growth / decay trend
DATA_getNewLostBacklinksCount,DATA_getNewLostRefDomainsCount- Net new backlinks per month (last 6 months).
- Net new referring domains per month.
- Velocity changes — sharp spikes or sharp losses both deserve flags.
- Lost links list
DATA_listNewLostBacklinks,DATA_listNewLostReferringDomains- Sample recent losses. Are any high-authority losses?
8b. Optional: live link-source verification mcp__firecrawl-mcp__firecrawl_scrape
- Triggered only when
--verify-sourcesis passed (default off — credit-conscious). - For the top 20 referring domains by authority (from step 3), pick the highest-authority linking page per domain. Scrape each (20 Firecrawl credits typical).
- For each scrape, parse the returned
htmlfor<a href>matching the target domain. Capture: link still present (true/false/page-404),relattribute (dofollowif absent or empty, else the literal value:nofollow,ugc,sponsored, or combinations), surrounding context (anchor text + 50 chars before/after). - Surface mismatches against the SE Ranking-reported state in
evidence/08b-source-verification.md:- Link gone — SE Ranking still reports it as live (lag/error).
relattribute differs from what SE Ranking flagged.- Source page returns non-200.
- Feeds into step 9: a verified-gone link or
rel=nofollowdiscovered post-hoc upgrades the toxic-candidate signal for that referring domain. - If Firecrawl unavailable (or flag not passed): skip entirely. SE Ranking's flagged state remains the source of truth — the skill's "Single-source by design" framing already explains why that's a deliberate trade-off.
- Toxic candidate detection (heuristic — see Tips for the rules)
- Apply the toxic heuristic to the referring-domain list.
- Flag candidates. Each row gets a
risk_scoreandtriggers(which heuristic rules fired). - Never auto-disavow. Output is a reviewable list, not an action.
- Synthesise
PROFILE.md
Output format
Create a folder seo-backlinks-profile-{target-slug}-{YYYYMMDD}/ with:
seo-backlinks-profile-{target-slug}-{YYYYMMDD}/
├── PROFILE.md (synthesised report — primary deliverable; inlines summary, authority distribution, diversity, trend)
├── 02-referring-domains.md (top N with authority — load-bearing reference for outreach/audit)
├── 03-anchors.md (anchor distribution + classification — load-bearing reference)
├── disavow-candidates.csv (toxic-flagged rows for review — load-bearing CSV)
└── evidence/
├── 01-summary.md (DATA_getBacklinksSummary top-line — raw step output)
├── 04-authority-distribution.md (histogram — raw step output)
├── 05-diversity.md (IPs + subnets + concentration — raw step output)
├── 06-trend.md (last 6 months new/lost — raw step output)
├── 07-losses-sample.md (recent lost backlinks)
└── 08b-source-verification.md (only if --verify-sources ran: live link + rel attribute checks for top-20 sources)Step files 01, 04, 05, 06 are inlined as sections in PROFILE.md; the copies in evidence/ preserve raw step output for reproducibility. 02-referring-domains.md, 03-anchors.md, and disavow-candidates.csv stay at top level — outreach/audit teams consult them directly.
PROFILE.md follows this shape:
# Backlinks Profile: {domain}
> Snapshot dated {YYYY-MM-DD}
## Health score: **{n}/100**
| Dimension | Score | Notes |
|---|---|---|
| Authority distribution | {n}/20 | {comment} |
| Anchor diversity | {n}/20 | {comment} |
| IP/subnet diversity | {n}/20 | {comment} |
| Growth trajectory | {n}/20 | {comment} |
| Toxic candidate ratio | {n}/20 | {comment} |
## Top-line numbers
| Metric | Value |
|---|---|
| Backlinks | {n} |
| Referring domains | {n} |
| Dofollow / nofollow | {n}% / {n}% |
| Unique IPs | {n} |
| Unique subnets | {n} |
| Domain : subnet ratio | {ratio} |
| New ref-domains last 30d | {n} |
| Lost ref-domains last 30d | {n} |
| Toxic candidates flagged | {n} ({% of total}) |
## Authority distribution
| DA bucket | Domains | % |
|---|---|---|
| 70+ | {n} | {%} |
| 50–69 | {n} | {%} |
| 30–49 | {n} | {%} |
| 10–29 | {n} | {%} |
| 0–9 | {n} | {%} |
## Anchor distribution
| Class | Count | % | Healthy range | Status |
|---|---|---|---|---|
| Branded | {n} | {%} | 30–60% | {✓/⚠} |
| Generic | {n} | {%} | 15–30% | {✓/⚠} |
| Naked URL | {n} | {%} | 10–25% | {✓/⚠} |
| Partial-match | {n} | {%} | 10–20% | {✓/⚠} |
| Exact-match commercial | {n} | {%} | <5% | {✓/⚠ over-optimised} |
| Image-alt-derived | {n} | {%} | <10% | {✓/⚠} |
## Trend (last 6 months)
| Month | New backlinks | Lost backlinks | Net |
|---|---|---|---|
| {M-5} | {n} | {n} | {n} |
| {M-4} | {n} | {n} | {n} |
| ... |
## Toxic candidates ({n} flagged)
See `disavow-candidates.csv`. Top 10 by risk_score:
| Domain | Authority | Triggers | Risk |
|---|---|---|---|
| {domain} | {DA} | {DA<10, sitewide>5, exact-match-anchor} | High |
| ... |
**⚠ NEVER AUTO-DISAVOW.** Hand this list to a human for review. Disavow a domain only after confirming the link is manipulative AND the domain is not delivering referral traffic AND removal requests have failed.
## Recommended next steps
1. {Action}
2. {Action}
3. {Action}disavow-candidates.csv columns: domain,authority,backlinks_count,sitewide_links,top_anchor,anchor_class,risk_score,triggers,sample_url
Tips
- Respect rate limit. The endpoints in steps 2–8 are ~15 calls; pace sequentially.
- Cost: ~25–40 SE Ranking credits typical for a full profile run. Optional step 8b adds 20 Firecrawl credits when
--verify-sourcesis passed (one scrape per top-20 source domain). - Toxic heuristic rules (any 2+ triggers = candidate):
- Authority < 10 (low-trust source).
- Sitewide link count > 5 (footer/sidebar links across many pages — manipulation signal).
- Exact-match commercial anchor on >50% of links from this domain.
- Hosted in known link-farm subnet (when unique IPs / unique subnets ratio is heavily concentrated).
- Domain name is a non-pronounceable string of characters (very strong PBN signal).
- TLD is in the high-spam list (
.xyz,.click,.workhistorically; verify against current spam-domain reports).
- Healthy anchor distribution: branded should be the largest class (30–60%); exact-match commercial should be small (<5%) — over-optimised commercial anchors trigger Penguin-era penalties.
- Healthy growth: steady 10–20% YoY referring-domain growth is the goal. Sharp spikes (>50% in a month) often indicate paid links and trigger algorithmic suspicion.
- Disavow conservatively. Removing links via outreach is preferred. Disavow only as a last resort; never disavow domains that send referral traffic.
- Pair with
seo-backlink-gapfor prospecting (gap analysis vs competitors). - Pair with
seo-driftto track profile composition over time.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

