seo-backlinks-profile — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited seo-backlinks-profile (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Example output: examples/seo-backlinks-profile-stripe-com-20260514/PROFILE.md
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.
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:
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.
WebFetch tool optional (for spot-checking flagged toxic candidates).mcp__firecrawl-mcp__firecrawl_scrape optional (for the new step 8b — link-source verification).skills/seo-firecrawl/references/preflight.md for the canonical 3-stage preflight (credit balance, Firecrawl availability, Google APIs). Skill-specific notes:--verify-sources is passed, step 8b (link-source verification) scrapes top-20 referring domains' linking pages to verify each link is still present and what rel it carries (dofollow / nofollow / sponsored / UGC), ~20 Firecrawl credits per run. Default off; pass --no-firecrawl to skip even if available.DATA_getBacklinksSummaryDATA_getBacklinksRefDomainsDATA_getBacklinksAnchorsDATA_getBacklinksAuthority and DATA_getDistributionOfDomainAuthorityDATA_getReferringIps, DATA_getReferringIpsCount, DATA_getReferringSubnetsCountreferring_domains / unique_subnets. Healthy: ~3–10. Unhealthy: many domains share few subnets (PBN signal).DATA_getNewLostBacklinksCount, DATA_getNewLostRefDomainsCountDATA_listNewLostBacklinks, DATA_listNewLostReferringDomains8b. Optional: live link-source verification mcp__firecrawl-mcp__firecrawl_scrape
--verify-sources is passed (default off — credit-conscious).html for <a href> matching the target domain. Capture: link still present (true/false/page-404), rel attribute (dofollow if absent or empty, else the literal value: nofollow, ugc, sponsored, or combinations), surrounding context (anchor text + 50 chars before/after).evidence/08b-source-verification.md:rel attribute differs from what SE Ranking flagged.rel=nofollow discovered post-hoc upgrades the toxic-candidate signal for that referring domain.risk_score and triggers (which heuristic rules fired).PROFILE.mdCreate 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
--verify-sources is passed (one scrape per top-20 source domain)..xyz, .click, .work historically; verify against current spam-domain reports).seo-backlink-gap for prospecting (gap analysis vs competitors).seo-drift to track profile composition over time.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.