businessengineering
Technical SEO Audit
Conduct technical SEO audits — evaluating site crawlability, indexation, Core Web Vitals, structured data, mobile usability, and internal linking to produce a prioritized fix list.
SEOtechnical-SEOCore-Web-Vitalscrawlabilityaudit
Works well with agents
Works well with skills
technical-seo-audit/
SKILL.md
Markdown| 1 | |
| 2 | # Technical SEO Audit |
| 3 | |
| 4 | ## Before you start |
| 5 | |
| 6 | Gather the following from the user. If anything is missing, ask before proceeding: |
| 7 | |
| 8 | 1. **What is the site URL?** (Production domain, canonical www vs. non-www) |
| 9 | 2. **What platform/framework?** (Next.js, WordPress, Shopify, custom — determines common issues) |
| 10 | 3. **What are the business-critical pages?** (Homepage, product pages, pricing, docs) |
| 11 | 4. **Do you have Google Search Console access?** (Crawl stats, index coverage, performance data) |
| 12 | 5. **Do you have a crawl tool?** (Screaming Frog, Sitebulb, Ahrefs Site Audit, or similar) |
| 13 | 6. **Current organic traffic trend?** (Growing, flat, declining — over what timeframe) |
| 14 | 7. **Known issues?** (Recent migration, traffic drop, indexation problems, CWV failures) |
| 15 | |
| 16 | ## Technical SEO audit template |
| 17 | |
| 18 | ### 1. Crawlability Assessment |
| 19 | |
| 20 | Verify that search engines can discover and access all important pages. |
| 21 | |
| 22 | ``` |
| 23 | | Check | Status | Finding | Priority | |
| 24 | |--------------------------|--------|------------------------------------------|----------| |
| 25 | | robots.txt | [P/F] | [What is blocked, what should be] | [H/M/L] | |
| 26 | | XML sitemap | [P/F] | [URL, page count, last modified dates] | [H/M/L] | |
| 27 | | Crawl budget waste | [P/F] | [Faceted URLs, parameters, duplicates] | [H/M/L] | |
| 28 | | Orphan pages | [P/F] | [Pages in sitemap but no internal links] | [H/M/L] | |
| 29 | | Redirect chains | [P/F] | [Chains > 2 hops, count affected URLs] | [H/M/L] | |
| 30 | | Server errors (5xx) | [P/F] | [Count and affected URL patterns] | [H/M/L] | |
| 31 | | Soft 404s | [P/F] | [Pages returning 200 but showing errors] | [H/M/L] | |
| 32 | ``` |
| 33 | |
| 34 | For JS-rendered sites, verify Googlebot sees the same content as a browser using URL Inspection or `site:` search. |
| 35 | |
| 36 | ### 2. Indexation Analysis |
| 37 | |
| 38 | Check what Google has indexed versus what you want indexed. |
| 39 | |
| 40 | ``` |
| 41 | | Check | Status | Finding | Priority | |
| 42 | |---------------------------|--------|-----------------------------------------|----------| |
| 43 | | Index coverage (GSC) | [P/F] | [Indexed vs. submitted pages] | [H/M/L] | |
| 44 | | Accidental noindex | [P/F] | [Important pages blocked from index] | [H/M/L] | |
| 45 | | Canonical tags | [P/F] | [Self-referencing, cross-domain, errors]| [H/M/L] | |
| 46 | | Duplicate content | [P/F] | [URL variations, parameterized pages] | [H/M/L] | |
| 47 | | Thin content pages | [P/F] | [Pages with < 200 words, no value] | [H/M/L] | |
| 48 | ``` |
| 49 | |
| 50 | Compare `site:domain.com` result count against your sitemap count. Too few means indexation issues; too many means duplicates in the index. |
| 51 | |
| 52 | ### 3. Core Web Vitals |
| 53 | |
| 54 | Evaluate performance using field data (CrUX) and lab data (Lighthouse, WebPageTest). |
| 55 | |
| 56 | ``` |
| 57 | | Metric | Threshold (Good) | Field Data (p75) | Lab Data | Status | Priority | |
| 58 | |--------|-------------------|-------------------|----------|--------|----------| |
| 59 | | LCP | < 2.5s | [value] | [value] | [P/F] | [H/M/L] | |
| 60 | | INP | < 200ms | [value] | [value] | [P/F] | [H/M/L] | |
| 61 | | CLS | < 0.1 | [value] | [value] | [P/F] | [H/M/L] | |
| 62 | ``` |
| 63 | |
| 64 | Field data trumps lab data — it reflects real user experience. If field data is unavailable (low traffic sites), note this limitation. For failing metrics, identify the specific element or resource causing the issue (e.g., LCP element is an unoptimized hero image, CLS is caused by late-loading ad slots). |
| 65 | |
| 66 | ### 4. Structured Data |
| 67 | |
| 68 | Audit JSON-LD/microdata for correctness and coverage. |
| 69 | |
| 70 | ``` |
| 71 | | Page Type | Schema Type | Present | Valid | Rich Result Eligible | Priority | |
| 72 | |---------------|-----------------|---------|-------|----------------------|----------| |
| 73 | | Homepage | Organization | [Y/N] | [Y/N] | [Y/N] | [H/M/L] | |
| 74 | | Product pages | Product | [Y/N] | [Y/N] | [Y/N] | [H/M/L] | |
| 75 | | Blog posts | Article | [Y/N] | [Y/N] | [Y/N] | [H/M/L] | |
| 76 | | FAQ pages | FAQPage | [Y/N] | [Y/N] | [Y/N] | [H/M/L] | |
| 77 | ``` |
| 78 | |
| 79 | Validate with Google's Rich Results Test. Structured data that does not match visible page content risks manual action. |
| 80 | |
| 81 | ### 5. Mobile Usability |
| 82 | |
| 83 | Google uses mobile-first indexing — the mobile experience is the indexed experience. Check: mobile-friendly test result, viewport meta tag, text size and tap targets, content parity between mobile and desktop, and intrusive interstitials. Use the same `[P/F] | Finding | Priority` table format. |
| 84 | |
| 85 | ### 6. Internal Linking |
| 86 | |
| 87 | Evaluate click depth to key pages (should be within 3 clicks of homepage), broken internal links, anchor text relevance, and navigation structure. Pages buried 5+ clicks deep receive less crawl attention and link equity. |
| 88 | |
| 89 | ### 7. Prioritized Fix List |
| 90 | |
| 91 | Consolidate all findings into a single ranked list. Order by impact and effort. |
| 92 | |
| 93 | ``` |
| 94 | | # | Issue | Impact | Effort | Priority | Owner | |
| 95 | |---|-------------------------------------|--------|--------|----------|----------| |
| 96 | | 1 | Fix 47 broken internal links | High | Low | P0 | @dev | |
| 97 | | 2 | Add canonical tags to parameterized | High | Low | P0 | @dev | |
| 98 | | | product URLs | | | | | |
| 99 | | 3 | Optimize LCP (compress hero images) | High | Medium | P0 | @frontend| |
| 100 | | 4 | Add Product schema to product pages | Medium | Low | P1 | @dev | |
| 101 | | 5 | Reduce redirect chains (23 URLs) | Medium | Low | P1 | @dev | |
| 102 | | 6 | Consolidate thin content pages | Medium | High | P2 | @content | |
| 103 | ``` |
| 104 | |
| 105 | ## Quality checklist |
| 106 | |
| 107 | Before delivering an audit, verify: |
| 108 | |
| 109 | - [ ] All six audit areas covered — crawlability, indexation, CWV, structured data, mobile, linking |
| 110 | - [ ] Findings reference specific URLs or page patterns, not generic advice |
| 111 | - [ ] Core Web Vitals use field data where available, lab data as supplement |
| 112 | - [ ] Structured data validated with Rich Results Test |
| 113 | - [ ] Every finding has priority rating (H/M/L) based on impact |
| 114 | - [ ] Prioritized fix list orders by impact and effort, not audit section |
| 115 | - [ ] Each fix has an owner assigned |
| 116 | |
| 117 | ## Common mistakes to avoid |
| 118 | |
| 119 | - **Auditing without Search Console data.** Crawl tools show what is on the site. Search Console shows what Google actually sees, crawls, and indexes. Without it, you are guessing at half the picture. |
| 120 | - **Treating all pages equally.** A canonical tag issue on 10 high-traffic product pages matters more than the same issue on 500 old blog posts. Weight findings by the business value of affected pages. |
| 121 | - **Lab data only for Core Web Vitals.** Lighthouse scores in a dev environment on a fast machine do not reflect real user experience. Use CrUX field data as the source of truth. |
| 122 | - **Listing issues without prioritization.** A 200-item audit report with no ranking paralyzes the team. Rank by impact times effort — quick wins first, then high-impact projects. |
| 123 | - **Ignoring JavaScript rendering.** If the site is a SPA or uses client-side rendering, search engines may not see the content you think they see. Always verify rendered HTML against source HTML for JS-heavy sites. |
| 124 | - **Fixing technical SEO without content strategy.** A perfectly crawlable site with thin, undifferentiated content will not rank. Technical SEO removes barriers — content and authority drive rankings. |
| 125 |