Skip to main content
AC
SEO & AEO4.6 KBMIT licensed

claude-seo-technical

Rewritten from patterns in AgriciDaniel/claude-seo (MIT)

Technical SEO audit across nine categories, crawlability through Core Web Vitals to JS rendering. Use when the user says "technical SEO", "crawl issues", "robots.txt", "Core Web Vitals", "site speed", or "security headers". Not for schema generation: use claude-seo-schema. Not for sitemap work: use claude-seo-sitemap. Not for intent or SERP fit: use claude-seo-sxo.

  • claude
  • seo
  • technical

SKILL.md

Technical SEO Audit

Technical SEO is binary at the base: either crawlers can fetch, render, and index the page, or nothing else you do matters. Audit in that order.

The nine categories

#CategoryCore checks
1Crawlabilityrobots.txt valid, sitemap referenced, accidental noindex, crawl depth <=3 clicks, AI crawler policy
2Indexabilitycanonicals self-referencing, duplicates, thin content, hreflang, index bloat
3SecurityHTTPS enforced, valid cert, no mixed content, security headers
4URL structureclean descriptive URLs, no redirect chains, consistent trailing slashes
5Mobileviewport tag, 48px touch targets, 16px base font, no horizontal scroll
6Core Web VitalsLCP <2.5s, INP <200ms, CLS <0.1, 75th percentile field data
7Structured datadetect and validate, then hand off to claude-seo-schema
8JS renderingcritical content in initial HTML, canonical/robots parity between raw and rendered HTML
9IndexNowsupported for Bing/Yandex/Naver, recommend for faster non-Google indexing

Full per-category detail, the AI crawler table, and the JS rendering rules live in references/technical-checks.md. Read it before scoring any category you are not certain about.

Workflow

  1. Fetch the homepage and key templates. Record status codes, redirect hops, and response headers.
  2. Fetch /robots.txt and the sitemap. Check both exist, parse, and agree with each other.
  3. Walk the nine categories in order. For each, record pass/warn/fail plus specific findings with URLs as evidence.
  4. Check CWV with field data when available (PageSpeed Insights / CrUX). Lab data is a fallback, label it as such. Use INP, never FID, FID is retired.
  5. Score each category 0-100 and produce an overall technical score.
  6. Bucket findings: Critical (blocks indexing, fix now), High (fix within a week), Medium (fix within a month), Low (backlog).

Verification

Run curl -sI https://<domain>/ | head -20. Expect a 200 (or a single 301 to the canonical host, then 200), plus strict-transport-security present. A redirect chain longer than one hop, a missing HSTS header, or an HTTP 200 on the non-canonical host each go in the findings, not in a footnote.

Then run curl -s https://<domain>/robots.txt. Expect a parseable file that does not Disallow: / for User-agent: * and does reference the sitemap. If robots.txt is missing, flag it and continue the audit, that alone does not block.

Good vs Bad

Bad: "Site speed could be improved. Consider optimizing images." No metric, no threshold, no priority.

Good: "LCP is 4.1s on mobile field data (threshold 2.5s): High. Largest element is an unoptimized 1.8MB hero PNG served without width/height. Convert to WebP, add explicit dimensions, preload it. Re-test in field data after 28 days."

Footguns

  • Auditing raw HTML on a JS-rendered site. You will report missing content that renders fine, or miss canonical conflicts between raw and rendered HTML. Fix: compare initial HTML against rendered output for canonical, robots meta, and structured data. Google may honor either version when they conflict.
  • Citing FID. It is removed from every Chrome tool. Fix: INP only.
  • Treating a blocked AI crawler as a search problem. Blocking Google-Extended does not affect Google Search or AI Overviews, those use Googlebot. Fix: use the crawler table in references/technical-checks.md before advising blocks.
  • Trusting lab CWV as truth. Lab and field data diverge. Fix: prefer field data, and say which one you used.
  • Flagging error-page meta tags injected by JS. Google does not render JS on non-200 pages, so those tags are invisible anyway. Fix: check the HTTP status first.

Completion checklist

  • [ ] All nine categories scored with evidence URLs
  • [ ] curl checks run, results in findings
  • [ ] CWV uses INP, data source labeled field or lab
  • [ ] Findings bucketed Critical/High/Medium/Low
  • [ ] Schema findings handed to claude-seo-schema, not duplicated

Any box unchecked: not done. Fix or say so.

Reference files

More in SEO & AEO

All skills