Awesome-omni-skill seo-technical

Technical SEO audit across 9 categories including crawlability, indexability, security headers, URL structure, mobile optimization, Core Web Vitals, structured data, JavaScript rendering, and IndexNow protocol with AI crawler management.

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/fullstack-web/seo-technical" ~/.claude/skills/diegosouzapw-awesome-omni-skill-seo-technical-f6f235 && rm -rf "$T"
manifest: skills/fullstack-web/seo-technical/SKILL.md
source content

SEO Technical Skill

Purpose

Audit the technical SEO foundation of a website across 9 critical categories. Technical SEO determines whether search engines can discover, crawl, render, and index content correctly. This skill identifies infrastructure-level issues that block or degrade organic visibility.


Category 1: Crawlability

Standard Crawler Management

CheckPass CriteriaSeverity
robots.txt existsReturns 200, valid syntaxCritical
robots.txt not blocking key pagesSitemap, homepage, key landing pages accessibleCritical
XML sitemap existsReferenced in robots.txt or at /sitemap.xmlHigh
Sitemap is validWell-formed XML, all URLs return 200High
Sitemap sizeUnder 50MB uncompressed; under 50,000 URLs per fileMedium
Sitemap indexUsed if more than 50,000 URLsMedium
Crawl depthKey pages within 3 clicks of homepageHigh
Internal linkingNo orphan pages (pages with 0 internal links pointing to them)High
Redirect chainsNo chains longer than 2 hopsMedium
Redirect loopsZero redirect loopsCritical

AI Crawler Management

Modern SEO must account for AI crawlers that scrape content for training and retrieval-augmented generation. Managing these crawlers is both a content protection and an AI search visibility decision.

AI Crawler Tokens

CrawlerOwnerUser-Agent Tokenrobots.txt Directive
GPTBotOpenAI
GPTBot
User-agent: GPTBot
ChatGPT-UserOpenAI
ChatGPT-User
User-agent: ChatGPT-User
OAI-SearchBotOpenAI
OAI-SearchBot
User-agent: OAI-SearchBot
ClaudeBotAnthropic
ClaudeBot
User-agent: ClaudeBot
anthropic-aiAnthropic
anthropic-ai
User-agent: anthropic-ai
PerplexityBotPerplexity
PerplexityBot
User-agent: PerplexityBot
BytespiderByteDance
Bytespider
User-agent: Bytespider
Applebot-ExtendedApple
Applebot-Extended
User-agent: Applebot-Extended
Google-ExtendedGoogle
Google-Extended
User-agent: Google-Extended
FacebookBotMeta
FacebookExternalHit
User-agent: FacebookExternalHit
cohere-aiCohere
cohere-ai
User-agent: cohere-ai
DiffbotDiffbot
Diffbot
User-agent: Diffbot
AmazonbotAmazon
Amazonbot
User-agent: Amazonbot
YouBotYou.com
YouBot
User-agent: YouBot

AI Crawler Strategy Recommendations

StrategyWhen to UseImplementation
Allow AllWant maximum AI search visibility (citations, AI Overviews)No blocks in robots.txt
Allow Search, Block TrainingWant AI search citations but protect training dataAllow
OAI-SearchBot
,
ChatGPT-User
; Block
GPTBot
,
Google-Extended
Block All AIProtect proprietary content entirelyBlock all AI tokens in robots.txt
Selective AllowAllow specific AI platforms aligned with businessWhitelist approach: block all, then allow specific tokens

Audit Checks

CheckWhat to VerifySeverity
AI crawler directives presentrobots.txt mentions at least some AI crawlersMedium
Strategy is intentionalNot accidentally blocking AI search crawlersHigh
ConsistencyIf blocking GPTBot, consider whether OAI-SearchBot should also be blockedMedium
Content protection alignedBlocking matches content licensing strategyMedium

Category 2: Indexability

CheckPass CriteriaSeverity
No unintended noindexKey pages do not have
<meta name="robots" content="noindex">
Critical
Canonical tags presentAll indexable pages have self-referencing canonicalHigh
Canonical consistencyCanonical URL matches actual URL (protocol, www/non-www, trailing slash)High
No canonical conflictsJavaScript-rendered canonical matches server-rendered canonicalCritical
Duplicate contentContent hash comparison; no substantial duplicates without canonicalHigh
Pagination handling
rel="next"
/
rel="prev"
or load-more pattern (note: Google ignores these but Bing uses them)
Low
Thin content pagesPages with <100 words flagged for reviewMedium
Parameter handlingURL parameters not creating duplicate indexable pagesHigh
Index coverageCompare indexed pages (via sitemap) vs crawled pages; identify gapsHigh

Category 3: Security Headers

HeaderRecommended ValueSeverity
Strict-Transport-Security
max-age=31536000; includeSubDomains; preload
High
X-Content-Type-Options
nosniff
Medium
X-Frame-Options
DENY
or
SAMEORIGIN
Medium
Content-Security-Policy
Appropriate policy (not overly permissive)Medium
Referrer-Policy
strict-origin-when-cross-origin
or stricter
Low
Permissions-Policy
Restrict unnecessary APIs (camera, microphone, geolocation)Low
HTTPS enforcementAll HTTP requests redirect to HTTPSCritical
Mixed contentNo HTTP resources loaded on HTTPS pagesHigh
SSL certificateValid, not expired, covers all subdomainsCritical

Category 4: URL Structure

CheckPass CriteriaSeverity
Clean URLsHuman-readable, descriptive slugsMedium
Consistent formatConsistent trailing slash policy (all with or all without)High
LowercaseAll URLs are lowercase; uppercase variants redirectMedium
No special charactersNo spaces, underscores (use hyphens), or encoded charactersMedium
DepthKey pages within 3 levels of hierarchyMedium
Consistent protocolwww vs non-www resolved; one redirects to the otherHigh
No session IDsURLs do not contain session parametersHigh
Logical hierarchyURL path reflects site architecture (
/category/subcategory/page
)
Low

Category 5: Mobile Optimization

Mobile-First Indexing (Fully Enforced July 2024)

Google uses the mobile version of content for indexing and ranking for all sites. Desktop-only content that is not present on mobile will not be indexed.

CheckPass CriteriaSeverity
Responsive designUses viewport meta tag, CSS media queriesCritical
Mobile content paritySame content on mobile and desktop versionsCritical
Mobile-friendly fontsMinimum 16px base font sizeMedium
Tap targetsMinimum 48x48px with 8px spacingMedium
No horizontal scrollContent fits within viewport widthHigh
Mobile page speedLCP < 2.5s on 4G connectionHigh
No intrusive interstitialsNo full-screen popups blocking content on mobileHigh
Structured data paritySame schema markup on mobile and desktopHigh
Image paritySame images (or appropriate mobile alternatives) on both versionsMedium
Lazy loading worksImages load correctly when scrolled into view on mobileMedium

Category 6: Core Web Vitals

Current Metrics (Updated March 2024: INP Replaced FID)

MetricGoodNeeds ImprovementPoorWhat It Measures
LCP (Largest Contentful Paint)< 2.5s2.5s - 4.0s> 4.0sLoading performance
INP (Interaction to Next Paint)< 200ms200ms - 500ms> 500msResponsiveness (replaced FID March 2024)
CLS (Cumulative Layout Shift)< 0.10.1 - 0.25> 0.25Visual stability

LCP Optimization Checks

CheckImpactSeverity
LCP element identifiedHero image, large text block, or videoHigh
LCP image has
fetchpriority="high"
Prioritizes downloadHigh
LCP image is preloaded
<link rel="preload">
for LCP resource
High
No render-blocking CSS/JS above foldCritical CSS inlined or preloadedHigh
Server response time (TTFB) < 800msFast server responseHigh
CDN for static assetsAssets served from edge locationsMedium

INP Optimization Checks

CheckImpactSeverity
No long tasks > 50msMain thread not blockedHigh
Event handlers are efficientNo heavy computation in click/input handlersHigh
Code splitting implementedOnly necessary JS loaded per pageMedium
Third-party scripts deferredNon-critical scripts use
defer
or
async
Medium
Web Workers for heavy computationOffload work from main threadLow
Input debouncingSearch inputs and scroll handlers debouncedMedium

CLS Optimization Checks

CheckImpactSeverity
Images have width/heightPrevents layout shift during loadHigh
Fonts use
font-display: swap
or
optional
Prevents FOIT layout shiftHigh
No dynamically injected content above foldLate-loading banners, ads, embedsHigh
Ad slots have reserved dimensionsPlaceholder sizing for ad containersMedium
Web fonts preloaded
<link rel="preload" as="font">
Medium
Animations use
transform
/
opacity
Not animating layout propertiesMedium

Category 7: Structured Data

CheckPass CriteriaSeverity
JSON-LD format usedPreferred over microdata or RDFaMedium
Valid syntaxNo JSON parse errorsCritical
Correct @typeMatches page content purposeHigh
Required properties presentPer Google's documentation for each typeHigh
No deprecated typesNot using HowTo (deprecated Sept 2023), SpecialAnnouncement (deprecated July 2025), ClaimReview (deprecated June 2025)High
Rich Results eligiblePasses Google Rich Results TestHigh
Organization schema on homepageName, URL, logo, sameAsMedium
BreadcrumbListPresent on all non-homepage pagesMedium

Category 8: JavaScript Rendering

December 2025 Google Guidance on JS Rendering

Google has provided updated guidance on JavaScript rendering and canonical conflicts:

CheckPass CriteriaSeverity
Server-rendered canonical matches JS canonicalNo conflicting canonical tags between SSR and CSRCritical
Critical content in initial HTMLKey content visible without JavaScript executionHigh
Internal links in HTMLNavigation links crawlable without JSHigh
Meta tags in initial HTMLtitle, description, canonical present server-sideCritical
No JavaScript redirects for indexable pagesServer-side redirects preferred (301/302)High
Dynamic rendering or SSR for key pagesIf SPA, ensure prerendering for search enginesHigh
Hydration does not alter SEO elementsReact/Vue hydration does not change title, canonical, or meta tagsCritical
<noscript>
fallback
Alternative content or message for no-JS scenariosLow

SPA-Specific Checks

CheckPass CriteriaSeverity
Prerender middleware activeServes static HTML to bots (Googlebot, social crawlers)Critical
Route-level meta injectionServer injects unique meta tags per route before sending HTMLCritical
Client-side routing generates crawlable URLsHistory API (not hash-based routing)High
Lazy-loaded content is crawlableContent within viewport or accessible via scrollingMedium
JavaScript errors do not break renderingError boundaries prevent blank pagesHigh

Category 9: IndexNow Protocol

IndexNow enables instant notification to search engines when content changes, rather than waiting for crawlers to discover updates.

CheckPass CriteriaSeverity
IndexNow supportedKey file at
/{key}.txt
or in
<meta>
tag
Low
API key validKey file accessible and matches submitted keyLow
Supported enginesBing, Yandex, Naver, Seznam (Google does not support IndexNow)Low
Submission on publishNew/updated content triggers IndexNow pingLow
Batch submissionsBulk URL submission for large content updatesLow

IndexNow Implementation

POST https://api.indexnow.org/indexnow
Content-Type: application/json

{
  "host": "example.com",
  "key": "your-api-key",
  "keyLocation": "https://example.com/your-api-key.txt",
  "urlList": [
    "https://example.com/new-page",
    "https://example.com/updated-page"
  ]
}

Output Format

# Technical SEO Audit: [Domain]
**Date:** [YYYY-MM-DD]
**Overall Technical Score:** XX/100

## Category Scores
| Category | Score | Max | Status |
|----------|-------|-----|--------|
| Crawlability | XX | 15 | [PASS/WARN/FAIL] |
| Indexability | XX | 15 | [PASS/WARN/FAIL] |
| Security Headers | XX | 10 | [PASS/WARN/FAIL] |
| URL Structure | XX | 10 | [PASS/WARN/FAIL] |
| Mobile Optimization | XX | 15 | [PASS/WARN/FAIL] |
| Core Web Vitals | XX | 15 | [PASS/WARN/FAIL] |
| Structured Data | XX | 10 | [PASS/WARN/FAIL] |
| JavaScript Rendering | XX | 5 | [PASS/WARN/FAIL] |
| IndexNow | XX | 5 | [PASS/WARN/FAIL] |
| **Total** | **XX** | **100** | |

## Issues Found
### Critical
- [issue + specific fix]

### High
- [issue + specific fix]

### Medium
- [issue + specific fix]

### Low
- [issue + specific fix]

## AI Crawler Status
| Crawler | Status | Directive |
|---------|--------|-----------|
| GPTBot | Allowed/Blocked | [directive from robots.txt] |
| ClaudeBot | Allowed/Blocked | [directive] |
| PerplexityBot | Allowed/Blocked | [directive] |
| ... | ... | ... |

**AI Crawler Strategy Assessment:** [Intentional/Unintentional/Missing]
**Recommendation:** [strategy recommendation based on site goals]

Usage

# Full technical audit
/seo-technical https://example.com

# Technical audit focused on specific category
/seo-technical https://example.com --focus crawlability

# Technical audit with CWV data from PageSpeed Insights
/seo-technical https://example.com --include-cwv

Notes

  • Core Web Vitals thresholds are based on 75th percentile of page loads
  • INP officially replaced FID as a Core Web Vital in March 2024
  • Mobile-first indexing was fully enforced for all sites as of July 2024
  • Google's December 2025 guidance emphasizes canonical consistency between server-rendered and client-rendered HTML
  • IndexNow is optional but beneficial for Bing; Google does not participate in IndexNow
  • AI crawler management is an emerging discipline; strategies should be reviewed quarterly as the landscape evolves
  • Security headers are ranked by SEO impact (HTTPS is critical; CSP is medium) rather than pure security severity