seo-technical-audit
Technical SEO Audit
Crawlability
Search engines must be able to discover and access your pages. Crawlability issues block indexing entirely.
Robots.txt
Controls which URLs crawlers can access.
# Allow all crawlers access to everything
User-agent: *
Allow: /
# Block specific paths
User-agent: *
Disallow: /admin/
Disallow: /api/
Disallow: /staging/
Disallow: /*?sort=
Disallow: /*?filter=
# Sitemap reference (always include)
Sitemap: https://example.com/sitemap.xml
Critical rules:
- Never block CSS/JS files (Google needs them to render pages)
- Never block important content paths accidentally
- Test with
analyze_robots_txtbefore deploying changes Crawl-delayis ignored by Google (honored by Bing/Yandex)
Meta Robots & X-Robots-Tag
Page-level crawl and index directives.
| Directive | Effect |
|---|---|
index |
Allow indexing (default) |
noindex |
Prevent indexing — removes from search results |
follow |
Follow links on this page (default) |
nofollow |
Don't follow any links on this page |
noarchive |
Don't show cached version |
nosnippet |
Don't show text snippet in results |
max-snippet:N |
Limit snippet to N characters |
max-image-preview:large |
Allow large image previews |
<!-- In HTML head -->
<meta name="robots" content="noindex, follow">
<!-- Via HTTP header (for non-HTML files) -->
X-Robots-Tag: noindex, nofollow
MCP Tool: analyze_page extracts both meta robots and HTTP header directives.
Indexing
Canonical Tags
The definitive way to tell search engines which URL is the preferred version.
Rules:
- Every indexable page: self-referencing canonical
- Absolute URLs only (
https://example.com/page, not/page) - Must be consistent: canonical URL must return 200 (not redirect or 404)
- One canonical per page (if multiple, Google uses the first)
- HTTP header canonical overrides HTML canonical if both present
Noindex vs Canonical
| Scenario | Use |
|---|---|
| Page should never appear in search | noindex |
| Duplicate page, prefer another version | canonical to preferred version |
| URL parameter variants | canonical to clean URL |
| Paginated content | Self-referencing canonical on each page |
Sitemap Submission
- Submit via Google Search Console
- All indexable pages should be in the sitemap
- Noindex pages should NOT be in the sitemap
- Keep sitemaps under 50,000 URLs / 50MB per file (use sitemap index for larger sites)
MCP Tools: analyze_sitemap validates structure, gsc_sitemaps checks submission status.
Core Web Vitals
Google's page experience signals. Measured from real user data (CrUX) and lab data (Lighthouse).
Thresholds (2024+)
| Metric | Good | Needs Improvement | Poor |
|---|---|---|---|
| LCP (Largest Contentful Paint) | ≤ 2.5s | ≤ 4.0s | > 4.0s |
| INP (Interaction to Next Paint) | ≤ 200ms | ≤ 500ms | > 500ms |
| CLS (Cumulative Layout Shift) | ≤ 0.1 | ≤ 0.25 | > 0.25 |
LCP Optimization
Largest Contentful Paint measures when the largest visible element finishes rendering.
Common causes of poor LCP:
- Slow server response (TTFB > 800ms) → optimize server, use CDN
- Render-blocking resources → defer non-critical CSS/JS
- Slow resource load → optimize/compress LCP image, use
preload - Client-side rendering → server-side render critical content
Quick wins:
- Preload LCP image:
<link rel="preload" href="hero.webp" as="image"> - Use CDN for static assets
- Optimize server response (caching, database queries)
- Avoid lazy-loading the LCP element
INP Optimization
Interaction to Next Paint measures responsiveness to user input.
Common causes of poor INP:
- Long JavaScript tasks blocking main thread → break into smaller tasks
- Heavy event handlers → debounce, use
requestAnimationFrame - Large DOM size → reduce DOM nodes (target < 1,500)
- Third-party scripts → defer or lazy-load
CLS Optimization
Cumulative Layout Shift measures visual stability.
Common causes of poor CLS:
- Images without dimensions → always set
widthandheight - Ads/embeds without reserved space → use
aspect-ratioormin-height - Web fonts causing FOIT/FOUT → use
font-display: swap+ preload - Dynamically injected content → reserve space before injection
MCP Tool: check_core_web_vitals returns all metrics with specific optimization suggestions.
Page Speed Optimization
Beyond Core Web Vitals, overall page speed impacts user experience and crawl budget.
Critical rendering path
- Minimize render-blocking resources (critical CSS inline, defer JS)
- Enable compression (Brotli preferred, gzip minimum)
- Set cache headers (
Cache-Control: max-age=31536000for static assets) - Use HTTP/2 or HTTP/3
- Minimize main-thread work (reduce JS execution time)
Image optimization
- Use modern formats (WebP/AVIF)
- Serve responsive images (
srcset) - Lazy load below-the-fold images
- Compress aggressively (80-85% quality)
Resource hints
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preload" href="/critical.css" as="style">
<link rel="prefetch" href="/next-page.html">
<link rel="dns-prefetch" href="https://analytics.example.com">
Mobile-Friendliness
Google uses mobile-first indexing — the mobile version of your site is what gets indexed.
Requirements
- Viewport meta tag:
<meta name="viewport" content="width=device-width, initial-scale=1"> - Responsive design (content adapts to screen size)
- No horizontal scrolling
- Tap targets: minimum 48x48px with 8px spacing
- Font size: minimum 16px for body text
- No intrusive interstitials (popups covering content)
- Content parity: mobile version has same content as desktop
MCP Tool: check_mobile_friendly evaluates all mobile usability factors.
HTTPS & Security
HTTPS requirements
- All pages served over HTTPS (no HTTP pages in index)
- Valid SSL certificate (not expired, correct domain)
- No mixed content (HTTPS page loading HTTP resources)
- HSTS header recommended:
Strict-Transport-Security: max-age=31536000; includeSubDomains - HTTP pages 301 redirect to HTTPS
Common HTTPS issues
| Issue | Impact | Fix |
|---|---|---|
| Mixed content | Medium | Update all resource URLs to HTTPS |
| Expired certificate | Critical | Renew SSL certificate immediately |
| HTTP pages indexed | High | 301 redirect HTTP → HTTPS + update canonical |
| Missing HSTS | Low | Add HSTS header |
Redirects
Redirect types
| Code | Type | When to Use | SEO Impact |
|---|---|---|---|
| 301 | Permanent | URL changed permanently, content moved | Passes ~95% link equity |
| 302 | Temporary | Temporary move (A/B test, maintenance) | Does not pass link equity |
| 307 | Temporary (strict) | Same as 302 but preserves HTTP method | Does not pass link equity |
| 308 | Permanent (strict) | Same as 301 but preserves HTTP method | Passes link equity |
Redirect issues
- Redirect chains: A → B → C → D. Maximum 2 hops recommended. Fix by pointing A directly to D.
- Redirect loops: A → B → A. Critical error — page becomes inaccessible.
- Soft 404s: Page returns 200 but shows "not found" content. Should return actual 404.
- 302 where 301 needed: Temporary redirect for permanent move wastes link equity.
XML Sitemaps
Requirements
- Located at
/sitemap.xml(or referenced in robots.txt) - Valid XML format
- Only indexable pages (no noindex, no 404s, no redirects)
- Include
<lastmod>with accurate dates (ISO 8601) - Maximum 50,000 URLs per sitemap file
- Maximum 50MB uncompressed per file
- Use sitemap index for larger sites
Validation
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/page</loc>
<lastmod>2026-01-15</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
MCP Tool: analyze_sitemap parses, validates, and reports issues.
Hreflang (International SEO)
For multi-language or multi-region sites. Tells Google which language/region version to show.
Syntax
<link rel="alternate" hreflang="en-us" href="https://example.com/page">
<link rel="alternate" hreflang="en-gb" href="https://example.co.uk/page">
<link rel="alternate" hreflang="es" href="https://example.com/es/page">
<link rel="alternate" hreflang="x-default" href="https://example.com/page">
Rules
- Bidirectional: If page A references page B, page B must reference page A
- Self-referencing: Each page must include a hreflang pointing to itself
- x-default: Include for the fallback/language selector page
- Return tags: Every referenced URL must return the same hreflang set
- Use ISO 639-1 language codes, optionally with ISO 3166-1 region codes
HTTP Status Codes (SEO Impact)
| Code | Meaning | SEO Action |
|---|---|---|
| 200 | OK | Expected for all indexable pages |
| 301 | Moved Permanently | Passes link equity. Use for permanent URL changes |
| 302 | Found (Temporary) | Does NOT pass link equity. Use only for temporary moves |
| 304 | Not Modified | Good — efficient caching |
| 404 | Not Found | Remove from sitemap, fix internal links pointing here |
| 410 | Gone | Permanently removed. Stronger signal than 404 for deindexing |
| 500 | Server Error | Fix immediately — blocks crawling and indexing |
| 503 | Service Unavailable | Temporary. Google retries. Use for planned maintenance |
Technical Audit Workflow
Recommended order for a complete technical audit:
- Crawlability:
analyze_robots_txt→ check for blocking issues - Sitemap:
analyze_sitemap→ validate structure and URLs - Page-level:
analyze_page→ meta robots, canonical, redirects, status - Performance:
check_core_web_vitals→ LCP, INP, CLS scores - Mobile:
check_mobile_friendly→ viewport, tap targets, fonts - Schema:
extract_schema→ structured data validation - GSC data:
gsc_index_coverage→ real indexing status from Google
See ERROR_CATALOG.md for the complete issue catalog. See AUDIT_WORKFLOW.md for detailed audit methodology. See HTTP_STATUS_REFERENCE.md for complete status code reference.
More from autom8minds/seo-skills
seo-schema-structured-data
Expert guide for Schema.org structured data and JSON-LD implementation. Use when creating schema markup, validating structured data, implementing rich results (FAQ, HowTo, Product, Article, LocalBusiness, Breadcrumb, Organization, etc.), troubleshooting rich snippet eligibility, or understanding Google's structured data requirements.
23seo-off-page-backlinks
Expert guide for off-page SEO and backlink analysis. Use when analyzing backlink profiles, assessing domain authority, planning link building strategies, evaluating link quality, identifying toxic backlinks, understanding anchor text distribution, or performing competitor backlink analysis.
22seo-content-strategy
Expert guide for content-driven SEO strategy. Use when doing keyword research, planning content clusters, analyzing search intent, building topic authority, evaluating E-E-A-T signals, creating content briefs, or planning content calendars for SEO.
20seo-on-page-optimization
Expert guide for on-page SEO optimization. Use when analyzing meta tags, title tags, headings (H1-H6), content optimization, image alt text, internal linking, URL structure, or improving on-page SEO signals for any web page.
19seo-local-seo
Expert guide for local SEO optimization. Use when optimizing Google Business Profile, managing local citations, NAP consistency, local keyword targeting, review management, local pack ranking, local landing page optimization, or multi-location SEO strategy.
18seo-mcp-tools-expert
Expert guide for using seo-mcp MCP tools effectively. Use when analyzing web pages, running SEO audits, checking Core Web Vitals, generating schema markup, analyzing backlinks, researching keywords, or using any seo-mcp tool. Provides tool selection guidance, parameter formats, and recommended workflows.
18