Technical SEO
Audit and fix the layer beneath the content: how search engines crawl, render, index, and trust a site. Stack-agnostic.
When to use
- Site-wide audit before or after a migration
- Investigating indexing or ranking drops
- Setting up SEO foundations on a new site
- Auditing Core Web Vitals or page experience signals
- Fixing crawl waste, redirect chains, or canonical issues
- Setting up multilingual or multi-regional sites
When NOT to use
- Single-page on-page optimization (use
seo-onpage)
- Keyword strategy or content planning (use
seo-keyword)
- Competitor backlink or SERP analysis (use
seo-competitor)
- Pure performance optimization without SEO context (use
performance-optimization)
Required inputs
- The site URL or staging URL
- Access to (at minimum) view the rendered HTML, robots.txt, and sitemap
- Ideally: search console access, server logs, and a crawler
If the site is large (10K+ URLs), confirm whether the audit is a full crawl or a sample.
The framework: 6 layers
Technical SEO has six layers, stacked. A failure in a lower layer breaks everything above it.
1. Crawlability
Can search engines access the URLs?
- robots.txt does not block important paths
- No accidental
noindex on indexable pages
- No accidental
disallow patterns blocking CSS or JS (rendering breaks)
- Sitemap is present, returns 200, and lists canonical URLs only
- Sitemap is referenced in robots.txt
- No infinite spaces (faceted nav generating endless URLs)
- Crawl budget is not wasted on low-value URLs
2. Indexability
Of crawlable URLs, which should be indexed?
- One canonical URL per piece of content (no duplicates)
- Canonical tags self-reference on canonical pages
noindex on staging, search results, filter pages, thank-you pages, internal admin
- No mixed signals (canonical pointing one way, sitemap another, internal links a third)
- Pagination handled correctly (rel=next/prev is deprecated, but consistent canonicals matter)
- Parameter handling deliberate (UTM, session IDs, sort orders)
3. Rendering
Does the rendered HTML match what crawlers see?
- Critical content visible without JavaScript (or properly server-rendered)
- For SPAs: confirm Googlebot sees the rendered content (test with the URL Inspection tool)
- No cloaking (showing different content to bots vs users)
- Lazy-loaded content has proper loading attributes
- Hydration errors do not strip content from the rendered DOM
4. Site architecture
Is the site structured for both users and crawlers?
- Clear URL hierarchy that mirrors site structure
- Important pages reachable in 3 clicks or fewer from the homepage
- Internal linking distributes authority logically
- Breadcrumb navigation present and marked up with schema
- No orphan pages (pages with no internal links)
- No redirect chains (one redirect max)
- No 4xx errors on internally-linked URLs
5. Structured data and signals
Does the site speak crawler language?
- Schema.org markup on appropriate page types
- JSON-LD format (preferred over microdata)
- Validates in the Rich Results Test
- Organization or LocalBusiness schema on the homepage or about page
- BreadcrumbList schema on nested pages
- Author and publisher schema linked correctly on content pages
- llms.txt present at the root (for AI crawlers, see
seo-aeo-geo)
6. Page experience and security
Does the site meet the page experience baseline?
- HTTPS on all pages, no mixed content
- HSTS header set
- Core Web Vitals pass (LCP, INP, CLS within thresholds)
- Mobile-friendly (responsive, no horizontal scroll, tap targets sized correctly)
- No intrusive interstitials on mobile
- Stable URL structure (no random URL changes between deploys)
- 404 pages return 404, not 200 with "page not found" content (soft 404)
Workflow
- Define scope. Whole site, a subfolder, a migration check, or a specific issue.
- Confirm access. What can you actually see (HTML, robots, sitemap, search console, server logs, staging)?
- Crawl. Use a crawler to enumerate URLs and statuses. Sample if the site is huge.
- Run the 6-layer framework. Score each, note specific issues with example URLs.
- Cross-reference. Search console for what's actually indexed. Compare to sitemap and crawl output.
- Prioritize. Critical (blocks indexing or causes traffic loss), Important (suboptimal), Nice-to-have (polish).
- Write the report. Use the template in
references/audit-template.md.
Failure patterns
- Optimizing rankings on a page that is
noindex. Always check indexability before content work.
- Adding sitemaps without fixing canonical issues. A sitemap of duplicate URLs is worse than no sitemap.
- Blocking crawlers from CSS or JS. Breaks Google's rendering. Common in over-aggressive robots.txt files.
- Over-relying on canonical tags. Canonicals are hints, not directives. Use redirects when content actually moved.
- Migrating without a redirect map. Single biggest cause of post-migration traffic loss.
- Treating Core Web Vitals as the only ranking signal. Page experience matters but does not override relevance.
Output format
Default output is a markdown audit at seo-technical-audit.md. Structure:
- Scope and methodology
- Executive summary (3 to 5 critical findings)
- 6-layer score
- Critical issues (with example URLs)
- Important issues
- Nice-to-have polish
- Implementation roadmap (sequenced)
For migrations, include a redirect map as a CSV alongside the report.
If required data is unavailable
This skill's output depends on data, measurements, or tool results it cannot generate on its own. When a required input, tool, or data source is unavailable or unverifiable, the sanctioned output is the deliverable with the gap stated: what was needed, what was actually obtained or verified, and which parts of the output are affected. Fabricating, estimating, or interpolating a required number to complete the deliverable is never sanctioned. A stated gap is a complete answer.
Reference files
references/audit-template.md - Fillable technical SEO audit template.
references/migration-checklist.md - Pre and post-migration checklist (covers the highest-risk scenario).
1---2name: seo-technical3description: Run a comprehensive technical SEO audit covering crawlability, indexability, rendering, site architecture, structured data, page experience, security, and internationalization. Use this skill whenever the user asks about technical SEO, crawl issues, indexing problems, sitemaps, robots.txt, canonical tags, schema markup, page speed, Core Web Vitals, hreflang, redirects, or site-wide search performance. Triggers on technical SEO, site audit, crawlability, indexability, sitemap, robots.txt, canonical, redirect chain, schema, JSON-LD, Core Web Vitals, page speed, hreflang, mobile usability, HTTPS, security headers, render-blocking, JavaScript SEO. Also triggers when a site has indexing problems, traffic drops, or migration concerns, even if 'technical SEO' is not said explicitly.4---56# Technical SEO78Audit and fix the layer beneath the content: how search engines crawl, render, index, and trust a site. Stack-agnostic.910---1112## When to use1314- Site-wide audit before or after a migration15- Investigating indexing or ranking drops16- Setting up SEO foundations on a new site17- Auditing Core Web Vitals or page experience signals18- Fixing crawl waste, redirect chains, or canonical issues19- Setting up multilingual or multi-regional sites2021## When NOT to use2223- Single-page on-page optimization (use `seo-onpage`)24- Keyword strategy or content planning (use `seo-keyword`)25- Competitor backlink or SERP analysis (use `seo-competitor`)26- Pure performance optimization without SEO context (use `performance-optimization`)2728---2930## Required inputs3132- The site URL or staging URL33- Access to (at minimum) view the rendered HTML, robots.txt, and sitemap34- Ideally: search console access, server logs, and a crawler3536If the site is large (10K+ URLs), confirm whether the audit is a full crawl or a sample.3738---3940## The framework: 6 layers4142Technical SEO has six layers, stacked. A failure in a lower layer breaks everything above it.4344### 1. Crawlability45Can search engines access the URLs?4647- robots.txt does not block important paths48- No accidental `noindex` on indexable pages49- No accidental `disallow` patterns blocking CSS or JS (rendering breaks)50- Sitemap is present, returns 200, and lists canonical URLs only51- Sitemap is referenced in robots.txt52- No infinite spaces (faceted nav generating endless URLs)53- Crawl budget is not wasted on low-value URLs5455### 2. Indexability56Of crawlable URLs, which should be indexed?5758- One canonical URL per piece of content (no duplicates)59- Canonical tags self-reference on canonical pages60- `noindex` on staging, search results, filter pages, thank-you pages, internal admin61- No mixed signals (canonical pointing one way, sitemap another, internal links a third)62- Pagination handled correctly (rel=next/prev is deprecated, but consistent canonicals matter)63- Parameter handling deliberate (UTM, session IDs, sort orders)6465### 3. Rendering66Does the rendered HTML match what crawlers see?6768- Critical content visible without JavaScript (or properly server-rendered)69- For SPAs: confirm Googlebot sees the rendered content (test with the URL Inspection tool)70- No cloaking (showing different content to bots vs users)71- Lazy-loaded content has proper loading attributes72- Hydration errors do not strip content from the rendered DOM7374### 4. Site architecture75Is the site structured for both users and crawlers?7677- Clear URL hierarchy that mirrors site structure78- Important pages reachable in 3 clicks or fewer from the homepage79- Internal linking distributes authority logically80- Breadcrumb navigation present and marked up with schema81- No orphan pages (pages with no internal links)82- No redirect chains (one redirect max)83- No 4xx errors on internally-linked URLs8485### 5. Structured data and signals86Does the site speak crawler language?8788- Schema.org markup on appropriate page types89- JSON-LD format (preferred over microdata)90- Validates in the Rich Results Test91- Organization or LocalBusiness schema on the homepage or about page92- BreadcrumbList schema on nested pages93- Author and publisher schema linked correctly on content pages94- llms.txt present at the root (for AI crawlers, see `seo-aeo-geo`)9596### 6. Page experience and security97Does the site meet the page experience baseline?9899- HTTPS on all pages, no mixed content100- HSTS header set101- Core Web Vitals pass (LCP, INP, CLS within thresholds)102- Mobile-friendly (responsive, no horizontal scroll, tap targets sized correctly)103- No intrusive interstitials on mobile104- Stable URL structure (no random URL changes between deploys)105- 404 pages return 404, not 200 with "page not found" content (soft 404)106107---108109## Workflow1101111. **Define scope.** Whole site, a subfolder, a migration check, or a specific issue.1122. **Confirm access.** What can you actually see (HTML, robots, sitemap, search console, server logs, staging)?1133. **Crawl.** Use a crawler to enumerate URLs and statuses. Sample if the site is huge.1144. **Run the 6-layer framework.** Score each, note specific issues with example URLs.1155. **Cross-reference.** Search console for what's actually indexed. Compare to sitemap and crawl output.1166. **Prioritize.** Critical (blocks indexing or causes traffic loss), Important (suboptimal), Nice-to-have (polish).1177. **Write the report.** Use the template in [`references/audit-template.md`](references/audit-template.md).118119---120121## Failure patterns122123- **Optimizing rankings on a page that is `noindex`.** Always check indexability before content work.124- **Adding sitemaps without fixing canonical issues.** A sitemap of duplicate URLs is worse than no sitemap.125- **Blocking crawlers from CSS or JS.** Breaks Google's rendering. Common in over-aggressive robots.txt files.126- **Over-relying on canonical tags.** Canonicals are hints, not directives. Use redirects when content actually moved.127- **Migrating without a redirect map.** Single biggest cause of post-migration traffic loss.128- **Treating Core Web Vitals as the only ranking signal.** Page experience matters but does not override relevance.129130---131132## Output format133134Default output is a markdown audit at `seo-technical-audit.md`. Structure:1351361. Scope and methodology1372. Executive summary (3 to 5 critical findings)1383. 6-layer score1394. Critical issues (with example URLs)1405. Important issues1416. Nice-to-have polish1427. Implementation roadmap (sequenced)143144For migrations, include a redirect map as a CSV alongside the report.145146---147148## If required data is unavailable149150This skill's output depends on data, measurements, or tool results it cannot generate on its own. When a required input, tool, or data source is unavailable or unverifiable, the sanctioned output is the deliverable with the gap stated: what was needed, what was actually obtained or verified, and which parts of the output are affected. Fabricating, estimating, or interpolating a required number to complete the deliverable is never sanctioned. A stated gap is a complete answer.151152---153154## Reference files155156- [`references/audit-template.md`](references/audit-template.md) - Fillable technical SEO audit template.157- [`references/migration-checklist.md`](references/migration-checklist.md) - Pre and post-migration checklist (covers the highest-risk scenario).