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 |