seo-structural-audit — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited seo-structural-audit (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.
Most "SEO problems" that look like content problems are actually structural — a missing canonical, a sitemap that 404s, a hero rendered only after JS hydration that Googlebot can't see, schema that fails validation, a redirect chain that drains link equity. This skill is the diagnostic playbook for that layer: a fetch protocol that gets the evidence in parallel, a per-surface check rubric that turns the evidence into a finding, and a severity matrix that says what to fix first. Output is a prioritized list with cited evidence — never inference where evidence could have been fetched.
Structural SEO is a chain of pass-throughs:
Break any link in the chain and rankings collapse downstream regardless of how good the content is. Audit walks the chain in order; the first broken link is the highest-priority finding.
Before scoring anything, get the evidence:
knowledge(command="read", source="<url>") — HTML content, headings, JSON-LD.shell curl -sI <url> — capture raw HTTP response and follow redirect chain (-L with -w "%{redirect_url}\n%{http_code}\n").shell curl -s <origin>/robots.txt — fetch robots, parse Allow / Disallow / Sitemap: directives.shell curl -s <origin>/sitemap.xml — fetch sitemap; check for index file vs flat sitemap; spot-validate 5–10 URLs.site:<domain> — rough indexed-page sanity check only; the search tool is not Google, so Google index coverage needs Search Console.shell curl -s <url> shows what non-rendering crawlers and most AI fetchers see; true render parity needs a headless browser or Search Console URL Inspection — otherwise mark it Unverified.Run all six in one tool block. Don't serialize. If any fetch fails, the result becomes an "Unverified" finding — never inferred.
| # | Check | How to verify | Severity if failed |
|---|---|---|---|
| 1 | Crawlability | robots.txt does not Disallow the URL; no soft-404 | Critical if blocked |
| 2 | HTTP status | curl returns 200 (or 301 → 200 within 1 hop) | Critical if 4xx/5xx; Moderate if redirect chain >1 hop |
| 3 | Indexability | meta robots is index, follow (or absent) | Critical if noindex on a page meant to rank |
| 4 | Canonical | canonical tag present, points to self or correct alternate | Critical if canonical points to a different page incorrectly |
| 5 | Sitemap inclusion | URL appears in sitemap.xml, last-modified valid | Moderate if absent; Critical if sitemap itself 404s |
| 6 | Redirect chain | chain length ≤1 hop, no loops, terminal is 200 | Moderate at 2 hops; Critical at 3+ or any loop |
| 7 | Schema validity | JSON-LD parses; types match visible content (Article, Product, Organization, Person, BreadcrumbList, Review where genuine); required fields present | Moderate per invalid type or markup contradicting visible text; missing markup matters only where a live rich result is at stake |
| 8 | Core Web Vitals | Field data at the 75th percentile: LCP ≤2.5s; INP ≤200ms (replaced FID March 2024); CLS ≤0.1 | Critical if any metric in Google's "poor" band; Moderate if "needs improvement" |
| 9 | hreflang | each variant points to the others bidirectionally; uses ISO codes | Moderate if asymmetric or broken; Critical if hreflang errors mean wrong region ranks |
| 10 | JS-render parity | primary content (title, H1, body) visible in raw HTML view-source | Critical if primary content only appears after hydration |
| 11 | URL architecture | descriptive slug, no query-string for canonical content, consistent trailing-slash policy | Minor unless duplicate content created |
| 12 | Internal-link topology | pillar links out to clusters in first section; cluster pages link back within first 100 words; ≤3 clicks from homepage | Moderate if orphan pages or broken pillar/cluster pattern |
| 13 | Mobile parity | mobile viewport, responsive content, no separate m. subdomain serving different content | Critical if content differs materially mobile-vs-desktop |
A Critical finding stays Critical even when "it's just one tag." Severity is impact-weighted, not effort-weighted.
If a check could not run:
Never infer a finding from absence of evidence. "Could not fetch" is its own finding type — it tells the user what to unblock, and it preserves trust in the rest of the report.
headline, author (Person with name + sameAs/url), datePublished, dateModified, image. Missing author identity on a YMYL page is Critical-tier as an E-E-A-T gap, schema or not.sameAs to LinkedIn / publication / org bio is Moderate.This skill interprets CWV; it does not measure them. Source measurements:
shell capability), WebPageTest, browser DevTools.When only lab data is available, flag the field-vs-lab gap; lab overstates good performance in many cases. INP needs field data — lab-only INP estimates are unreliable.
Use the canonical output structure from the agent that runs this skill. Every finding includes: severity, evidence (URL + line / header / schema field / metric), why it matters, fix direction. Save as seo-audit-[slug]-[YYYY-MM-DD].md in working directory.
Within-domain pairings:
External authoritative sources:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.