Technical SEO Audit
Performs a deep technical SEO audit of a website, focusing on infrastructure-level issues that affect search engine crawling, indexing, and ranking. Complements seo-auditor (which covers on-page content and off-page signals) by going deeper into the technical foundation.
Prerequisites
- Target website URL
agency.config.json populated (for reporting context)
- WebSearch and WebFetch tools available
- Optional: Google Search Console access for indexation data
Phase 0: Intake
Read agency.config.json:
agency.name -- for report branding
services[] -- to flag relevant service recommendations
Accept parameters:
url -- (required) target website root URL
depth -- (optional) quick (homepage + 5 pages), standard (up to 25 pages), deep (up to 100 pages). Default: standard
focus_areas -- (optional) array to limit scope: core-web-vitals, crawlability, indexation, structured-data, redirects, security, mobile, international. Default: all
competitor_urls -- (optional) array of competitor URLs for comparison
gsc_data -- (optional) Google Search Console export data
Phase 1: Core Web Vitals Analysis
Use WebFetch to check PageSpeed Insights API or Chrome UX Report signals:
Metrics to Assess
| Metric |
Good |
Needs Improvement |
Poor |
| LCP (Largest Contentful Paint) |
< 2.5s |
2.5-4.0s |
> 4.0s |
| INP (Interaction to Next Paint) |
< 200ms |
200-500ms |
> 500ms |
| CLS (Cumulative Layout Shift) |
< 0.1 |
0.1-0.25 |
> 0.25 |
| FCP (First Contentful Paint) |
< 1.8s |
1.8-3.0s |
> 3.0s |
| TTFB (Time to First Byte) |
< 800ms |
800-1800ms |
> 1800ms |
Page Types to Test
- Homepage
- Category/collection page
- Product/detail page
- Blog/content page
- Search results page (if applicable)
Analysis
For each failing metric:
ISSUE: [metric] is [value] on [page type]
IMPACT: [how this affects rankings and UX]
CAUSE: [likely technical cause based on page analysis]
FIX: [specific technical recommendation]
PRIORITY: [HIGH/MEDIUM/LOW]
EFFORT: [quick-win / medium / major-refactor]
Phase 2: Crawlability Audit
Robots.txt Analysis
- Fetch and parse
robots.txt
- Check for overly restrictive rules blocking important content
- Check for missing rules allowing crawl of admin/private pages
- Verify sitemap reference is present
- Check for user-agent specific rules
XML Sitemap Analysis
- Fetch sitemap(s) from robots.txt or common locations (
/sitemap.xml, /sitemap_index.xml)
- Count total URLs
- Check for:
- URLs returning non-200 status codes
- Orphaned URLs (in sitemap but not linked from site)
- Missing URLs (important pages not in sitemap)
- Last modified dates (are they accurate or all the same?)
- Sitemap file size (under 50MB, under 50,000 URLs per file)
- Proper XML formatting
Crawl Depth Analysis
- Map internal link structure from homepage
- Flag pages requiring 4+ clicks to reach from homepage
- Identify orphan pages (no internal links pointing to them)
- Check for crawl traps (infinite pagination, faceted navigation creating duplicate URLs)
Internal Linking
- Check for broken internal links (404s)
- Check for redirect chains in internal links
- Identify pages with very few internal links (low PageRank flow)
- Check for excessive internal links on single pages (>100)
Phase 3: Indexation Audit
Index Status Checks
site:domain.com search to estimate indexed pages
- Compare indexed count vs sitemap count vs actual page count
- Flag significant discrepancies (indexed >> actual = duplicates; indexed << actual = indexation issues)
Common Indexation Issues
Check for:
noindex meta tags on pages that should be indexed
noindex in HTTP headers (X-Robots-Tag)
- Pages blocked by robots.txt that have inbound links
- Thin content pages (under 300 words) that may be filtered
- Duplicate title tags across multiple pages
- Duplicate meta descriptions
- Missing or duplicate H1 tags
Canonical Tag Audit
- Every page has a canonical tag
- Self-referencing canonicals on unique pages
- Canonical points to correct URL (not HTTP when HTTPS, not non-www when www)
- No canonical chains (A canonicals to B, B canonicals to C)
- Canonical matches the version in the sitemap
Phase 4: Structured Data Validation
Check for Existing Schema
Inspect pages for JSON-LD, Microdata, or RDFa markup:
| Page Type |
Expected Schema |
Priority |
| Homepage |
Organization, WebSite, SearchAction |
HIGH |
| Product |
Product, Offer, AggregateRating, Review |
HIGH |
| Collection |
CollectionPage, ItemList |
MEDIUM |
| Blog post |
Article, BlogPosting, BreadcrumbList |
MEDIUM |
| FAQ page |
FAQPage |
HIGH |
| About page |
Organization, Person |
LOW |
| Contact |
LocalBusiness, ContactPoint |
MEDIUM |
Validation
For each schema found:
- Valid JSON-LD syntax
- Required properties present (per schema.org spec)
- No deprecated properties
- Proper nesting
- Consistent with page content (no schema spam)
Missing Schema Opportunities
Flag pages where adding schema would provide rich result eligibility:
- Product pages without Product schema
- FAQ content without FAQPage schema
- Review content without Review schema
- Events without Event schema
- Breadcrumbs without BreadcrumbList schema
Phase 5: Redirect Audit
Redirect Chain Analysis
- Identify redirect chains (A -> B -> C) -- all should be A -> C
- Identify redirect loops
- Check for mixed HTTP/HTTPS redirects
- Check for mixed www/non-www redirects
- Verify 301 (permanent) vs 302 (temporary) usage is correct
Common Redirect Issues
- Old URLs redirecting through multiple hops
- Trailing slash inconsistency (some URLs with, some without)
- Case sensitivity issues (uppercase URLs not redirecting to lowercase)
- Parameter-based redirects missing
- Deleted page 404s that should 301 to relevant alternatives
Phase 6: Security & HTTPS
- Full HTTPS: no mixed content warnings
- HSTS header present and correctly configured
- SSL certificate valid and not expiring within 30 days
- No insecure resources loaded (images, scripts, stylesheets over HTTP)
- Security headers check: CSP, X-Frame-Options, X-Content-Type-Options
- Cookie security: Secure flag, HttpOnly, SameSite
Phase 7: Mobile Friendliness
- Viewport meta tag present and correct
- No horizontal scroll on mobile viewports
- Touch targets adequately sized (min 48x48px)
- Font sizes readable without zooming (min 16px body text)
- No intrusive interstitials blocking content
- Mobile page speed (separate from desktop CWV)
Phase 8: International SEO (if applicable)
- Hreflang tags present and correct
- Return tags (each hreflang pair must be bidirectional)
- x-default tag present
- Language/region targeting consistent across pages
- No conflicting canonical and hreflang signals
Phase 9: Output
Return structured JSON:
{
"url": "https://example.com",
"audit_date": "2026-03-13",
"audit_depth": "standard",
"pages_analyzed": 25,
"overall_health_score": 72,
"score_breakdown": {
"core_web_vitals": 65,
"crawlability": 80,
"indexation": 75,
"structured_data": 60,
"redirects": 85,
"security": 90,
"mobile": 70
},
"critical_issues": [
{
"category": "core-web-vitals",
"issue": "LCP 4.2s on product pages",
"impact": "Ranking penalty, 53% bounce rate increase above 3s",
"fix": "Optimize hero image: compress, add srcset, preload LCP image",
"priority": "HIGH",
"effort": "quick-win",
"pages_affected": 45
}
],
"warnings": [
{
"category": "structured-data",
"issue": "Product pages missing AggregateRating schema",
"impact": "Missing star ratings in search results",
"fix": "Add AggregateRating to Product JSON-LD",
"priority": "MEDIUM",
"effort": "medium"
}
],
"opportunities": [
{
"category": "indexation",
"opportunity": "45 blog posts with thin content could be consolidated",
"impact": "Reduce index bloat, concentrate PageRank",
"effort": "major-refactor"
}
],
"competitor_comparison": {
"our_score": 72,
"competitor_scores": [
{"url": "competitor1.com", "score": 68},
{"url": "competitor2.com", "score": 81}
]
},
"recommendations_summary": [
{"priority": 1, "action": "Fix LCP on product pages", "impact": "HIGH", "effort": "quick-win"},
{"priority": 2, "action": "Add Product schema to all product pages", "impact": "HIGH", "effort": "medium"},
{"priority": 3, "action": "Resolve 12 redirect chains", "impact": "MEDIUM", "effort": "quick-win"}
],
"generated_at": "2026-03-13T10:00:00Z"
}
Phase 10: Report & Handoff
Present findings as a prioritized action plan:
- Critical (fix immediately): Issues causing ranking loss or indexation failures
- High priority (fix this week): Significant performance or schema issues
- Medium priority (fix this month): Optimization opportunities
- Low priority (backlog): Nice-to-haves and future improvements
If write_to_crm context exists, log the audit as a prospect touchpoint.
Example Usage
Trigger phrases:
- "Run a technical SEO audit on [url]"
- "Check Core Web Vitals for [url]"
- "Audit the structured data on [url]"
- "Check [url] for crawlability issues"
- "Run a redirect chain analysis on [url]"
- "Full technical SEO check on this prospect's site"
- "Compare our client's technical SEO against competitors"
1---2name: technical-seo-audit3description: Deep technical SEO audit covering Core Web Vitals, crawlability, indexation, structured data, canonical/hreflang, redirect chains, and site architecture. Complements seo-auditor which focuses on on-page/off-page factors.4---56# Technical SEO Audit78Performs a deep technical SEO audit of a website, focusing on infrastructure-level issues that affect search engine crawling, indexing, and ranking. Complements `seo-auditor` (which covers on-page content and off-page signals) by going deeper into the technical foundation.910## Prerequisites1112- Target website URL13- `agency.config.json` populated (for reporting context)14- WebSearch and WebFetch tools available15- Optional: Google Search Console access for indexation data1617## Phase 0: Intake1819Read `agency.config.json`:20- `agency.name` -- for report branding21- `services[]` -- to flag relevant service recommendations2223Accept parameters:24- `url` -- (required) target website root URL25- `depth` -- (optional) `quick` (homepage + 5 pages), `standard` (up to 25 pages), `deep` (up to 100 pages). Default: `standard`26- `focus_areas` -- (optional) array to limit scope: `core-web-vitals`, `crawlability`, `indexation`, `structured-data`, `redirects`, `security`, `mobile`, `international`. Default: all27- `competitor_urls` -- (optional) array of competitor URLs for comparison28- `gsc_data` -- (optional) Google Search Console export data2930## Phase 1: Core Web Vitals Analysis3132Use WebFetch to check PageSpeed Insights API or Chrome UX Report signals:3334### Metrics to Assess35| Metric | Good | Needs Improvement | Poor |36|--------|------|-------------------|------|37| LCP (Largest Contentful Paint) | < 2.5s | 2.5-4.0s | > 4.0s |38| INP (Interaction to Next Paint) | < 200ms | 200-500ms | > 500ms |39| CLS (Cumulative Layout Shift) | < 0.1 | 0.1-0.25 | > 0.25 |40| FCP (First Contentful Paint) | < 1.8s | 1.8-3.0s | > 3.0s |41| TTFB (Time to First Byte) | < 800ms | 800-1800ms | > 1800ms |4243### Page Types to Test44- Homepage45- Category/collection page46- Product/detail page47- Blog/content page48- Search results page (if applicable)4950### Analysis51For each failing metric:52```53ISSUE: [metric] is [value] on [page type]54IMPACT: [how this affects rankings and UX]55CAUSE: [likely technical cause based on page analysis]56FIX: [specific technical recommendation]57PRIORITY: [HIGH/MEDIUM/LOW]58EFFORT: [quick-win / medium / major-refactor]59```6061## Phase 2: Crawlability Audit6263### Robots.txt Analysis64- Fetch and parse `robots.txt`65- Check for overly restrictive rules blocking important content66- Check for missing rules allowing crawl of admin/private pages67- Verify sitemap reference is present68- Check for user-agent specific rules6970### XML Sitemap Analysis71- Fetch sitemap(s) from robots.txt or common locations (`/sitemap.xml`, `/sitemap_index.xml`)72- Count total URLs73- Check for:74 - URLs returning non-200 status codes75 - Orphaned URLs (in sitemap but not linked from site)76 - Missing URLs (important pages not in sitemap)77 - Last modified dates (are they accurate or all the same?)78 - Sitemap file size (under 50MB, under 50,000 URLs per file)79 - Proper XML formatting8081### Crawl Depth Analysis82- Map internal link structure from homepage83- Flag pages requiring 4+ clicks to reach from homepage84- Identify orphan pages (no internal links pointing to them)85- Check for crawl traps (infinite pagination, faceted navigation creating duplicate URLs)8687### Internal Linking88- Check for broken internal links (404s)89- Check for redirect chains in internal links90- Identify pages with very few internal links (low PageRank flow)91- Check for excessive internal links on single pages (>100)9293## Phase 3: Indexation Audit9495### Index Status Checks96- `site:domain.com` search to estimate indexed pages97- Compare indexed count vs sitemap count vs actual page count98- Flag significant discrepancies (indexed >> actual = duplicates; indexed << actual = indexation issues)99100### Common Indexation Issues101Check for:102- `noindex` meta tags on pages that should be indexed103- `noindex` in HTTP headers (X-Robots-Tag)104- Pages blocked by robots.txt that have inbound links105- Thin content pages (under 300 words) that may be filtered106- Duplicate title tags across multiple pages107- Duplicate meta descriptions108- Missing or duplicate H1 tags109110### Canonical Tag Audit111- Every page has a canonical tag112- Self-referencing canonicals on unique pages113- Canonical points to correct URL (not HTTP when HTTPS, not non-www when www)114- No canonical chains (A canonicals to B, B canonicals to C)115- Canonical matches the version in the sitemap116117## Phase 4: Structured Data Validation118119### Check for Existing Schema120Inspect pages for JSON-LD, Microdata, or RDFa markup:121122| Page Type | Expected Schema | Priority |123|----------|----------------|----------|124| Homepage | Organization, WebSite, SearchAction | HIGH |125| Product | Product, Offer, AggregateRating, Review | HIGH |126| Collection | CollectionPage, ItemList | MEDIUM |127| Blog post | Article, BlogPosting, BreadcrumbList | MEDIUM |128| FAQ page | FAQPage | HIGH |129| About page | Organization, Person | LOW |130| Contact | LocalBusiness, ContactPoint | MEDIUM |131132### Validation133For each schema found:134- Valid JSON-LD syntax135- Required properties present (per schema.org spec)136- No deprecated properties137- Proper nesting138- Consistent with page content (no schema spam)139140### Missing Schema Opportunities141Flag pages where adding schema would provide rich result eligibility:142- Product pages without Product schema143- FAQ content without FAQPage schema144- Review content without Review schema145- Events without Event schema146- Breadcrumbs without BreadcrumbList schema147148## Phase 5: Redirect Audit149150### Redirect Chain Analysis151- Identify redirect chains (A -> B -> C) -- all should be A -> C152- Identify redirect loops153- Check for mixed HTTP/HTTPS redirects154- Check for mixed www/non-www redirects155- Verify 301 (permanent) vs 302 (temporary) usage is correct156157### Common Redirect Issues158- Old URLs redirecting through multiple hops159- Trailing slash inconsistency (some URLs with, some without)160- Case sensitivity issues (uppercase URLs not redirecting to lowercase)161- Parameter-based redirects missing162- Deleted page 404s that should 301 to relevant alternatives163164## Phase 6: Security & HTTPS165166- Full HTTPS: no mixed content warnings167- HSTS header present and correctly configured168- SSL certificate valid and not expiring within 30 days169- No insecure resources loaded (images, scripts, stylesheets over HTTP)170- Security headers check: CSP, X-Frame-Options, X-Content-Type-Options171- Cookie security: Secure flag, HttpOnly, SameSite172173## Phase 7: Mobile Friendliness174175- Viewport meta tag present and correct176- No horizontal scroll on mobile viewports177- Touch targets adequately sized (min 48x48px)178- Font sizes readable without zooming (min 16px body text)179- No intrusive interstitials blocking content180- Mobile page speed (separate from desktop CWV)181182## Phase 8: International SEO (if applicable)183184- Hreflang tags present and correct185- Return tags (each hreflang pair must be bidirectional)186- x-default tag present187- Language/region targeting consistent across pages188- No conflicting canonical and hreflang signals189190## Phase 9: Output191192Return structured JSON:193194```json195{196 "url": "https://example.com",197 "audit_date": "2026-03-13",198 "audit_depth": "standard",199 "pages_analyzed": 25,200 "overall_health_score": 72,201 "score_breakdown": {202 "core_web_vitals": 65,203 "crawlability": 80,204 "indexation": 75,205 "structured_data": 60,206 "redirects": 85,207 "security": 90,208 "mobile": 70209 },210 "critical_issues": [211 {212 "category": "core-web-vitals",213 "issue": "LCP 4.2s on product pages",214 "impact": "Ranking penalty, 53% bounce rate increase above 3s",215 "fix": "Optimize hero image: compress, add srcset, preload LCP image",216 "priority": "HIGH",217 "effort": "quick-win",218 "pages_affected": 45219 }220 ],221 "warnings": [222 {223 "category": "structured-data",224 "issue": "Product pages missing AggregateRating schema",225 "impact": "Missing star ratings in search results",226 "fix": "Add AggregateRating to Product JSON-LD",227 "priority": "MEDIUM",228 "effort": "medium"229 }230 ],231 "opportunities": [232 {233 "category": "indexation",234 "opportunity": "45 blog posts with thin content could be consolidated",235 "impact": "Reduce index bloat, concentrate PageRank",236 "effort": "major-refactor"237 }238 ],239 "competitor_comparison": {240 "our_score": 72,241 "competitor_scores": [242 {"url": "competitor1.com", "score": 68},243 {"url": "competitor2.com", "score": 81}244 ]245 },246 "recommendations_summary": [247 {"priority": 1, "action": "Fix LCP on product pages", "impact": "HIGH", "effort": "quick-win"},248 {"priority": 2, "action": "Add Product schema to all product pages", "impact": "HIGH", "effort": "medium"},249 {"priority": 3, "action": "Resolve 12 redirect chains", "impact": "MEDIUM", "effort": "quick-win"}250 ],251 "generated_at": "2026-03-13T10:00:00Z"252}253```254255## Phase 10: Report & Handoff256257Present findings as a prioritized action plan:2581. **Critical** (fix immediately): Issues causing ranking loss or indexation failures2592. **High priority** (fix this week): Significant performance or schema issues2603. **Medium priority** (fix this month): Optimization opportunities2614. **Low priority** (backlog): Nice-to-haves and future improvements262263If `write_to_crm` context exists, log the audit as a prospect touchpoint.264265## Example Usage266267Trigger phrases:268- "Run a technical SEO audit on [url]"269- "Check Core Web Vitals for [url]"270- "Audit the structured data on [url]"271- "Check [url] for crawlability issues"272- "Run a redirect chain analysis on [url]"273- "Full technical SEO check on this prospect's site"274- "Compare our client's technical SEO against competitors"