Skip to content

Technical SEO rules

Crawlability, indexability and page hygiene: the checks every search and answer engine depends on.

robots.txt is present

tech.robots-present · Severity: high · Weight: 8

A robots.txt tells crawlers which paths they may fetch.

Fix: Add a robots.txt at the site root referencing your sitemap.

Skill: aeo-ai-crawler-access teaches an agent how to fix this in your stack.

XML sitemap is present

tech.sitemap-present · Severity: high · Weight: 8

A sitemap helps engines discover all indexable URLs.

Fix: Publish a sitemap.xml and reference it from robots.txt.

Skill: aeo-indexability teaches an agent how to fix this in your stack.

Sitemap lists the pages we found

tech.sitemap-covers-pages · Severity: high · Weight: 6

Pages missing from the sitemap rely on being reached by internal links alone, which on a low-authority site often means never getting crawled.

Fix: Add every indexable page to sitemap.xml. If your sitemap is generated, check the generator sees pages added since it was written.

Skill: aeo-indexability teaches an agent how to fix this in your stack.

Sitemap lastmod dates are trustworthy

tech.sitemap-lastmod-trustworthy · Severity: medium · Weight: 4

lastmod should track real content changes. Future dates and whole-file timestamps regenerated on every deploy both train crawlers to ignore the signal.

Fix: Derive lastmod from content edit dates, not build time, and never emit a future date.

Skill: aeo-content-freshness teaches an agent how to fix this in your stack.

No redirect loops

tech.no-redirect-loops · Severity: critical · Weight: 8

A URL that redirects back to somewhere it has already been never resolves. Browsers abort it and crawlers drop the page entirely.

Fix: Find the cycle and make one hop terminal. Ordering bugs in rewrite/redirect rules are the usual cause.

Skill: aeo-indexability teaches an agent how to fix this in your stack.

llms.txt is present

tech.llms-txt-present · Severity: medium · Weight: 5

llms.txt curates the content you want answer engines to read.

Fix: Generate an llms.txt manifest of your key pages.

Skill: aeo-llms-txt teaches an agent how to fix this in your stack.

No broken (4xx/5xx) pages

tech.no-broken-pages · Severity: high · Weight: 7

Broken pages waste crawl budget and frustrate users.

Fix: Fix or redirect URLs returning 4xx/5xx status codes.

Skill: aeo-indexability teaches an agent how to fix this in your stack.

Redirect chains are short

tech.short-redirect-chains · Severity: medium · Weight: 4

Redirect chains longer than 2 hops slow crawlers and dilute signals.

Fix: Collapse multi-hop redirects to a single 301.

Skill: aeo-indexability teaches an agent how to fix this in your stack.

Pages are indexable (no accidental noindex)

tech.indexable · Severity: critical · Weight: 9

A noindex directive removes a page from search and answer engines.

Fix: Remove noindex from pages you want discovered.

Skill: aeo-indexability teaches an agent how to fix this in your stack.

Canonical URL is declared

tech.canonical-present · Severity: medium · Weight: 5

A canonical tag consolidates duplicate URLs to one preferred address.

Fix: Add to every indexable page.

Skill: aeo-indexability teaches an agent how to fix this in your stack.

Canonical URLs point somewhere real

tech.canonical-resolves · Severity: high · Weight: 6

A canonical naming a broken or malformed URL tells engines the authoritative copy is somewhere that does not load, which can drop the page from the index.

Fix: Point every canonical at an absolute URL that returns 200. Check it after any move or domain change.

Skill: aeo-indexability teaches an agent how to fix this in your stack.

Pages have a title tag

tech.meta-title-present · Severity: high · Weight: 7

The is the strongest on-page relevance signal.

Fix: Give every page a unique, descriptive .

Skill: aeo-page-metadata teaches an agent how to fix this in your stack.

Title length is 30–60 characters

tech.meta-title-length · Severity: medium · Weight: 4

Titles outside this range get truncated or look thin in results.

Fix: Aim for 30–60 characters in each .

Skill: aeo-page-metadata teaches an agent how to fix this in your stack.

Pages have a meta description

tech.meta-description-present · Severity: medium · Weight: 4

The meta description drives click-through from result snippets.

Fix: Write a unique meta description for every page.

Skill: aeo-page-metadata teaches an agent how to fix this in your stack.

Description length is 70–160 characters

tech.meta-description-length · Severity: low · Weight: 3

Descriptions outside this range get truncated or look incomplete.

Fix: Aim for 70–160 characters per description.

Skill: aeo-page-metadata teaches an agent how to fix this in your stack.

Each page has exactly one H1

tech.single-h1 · Severity: medium · Weight: 4

A single H1 communicates the primary topic unambiguously.

Fix: Use one H1 per page; demote extras to H2/H3.

Skill: aeo-answer-first-content teaches an agent how to fix this in your stack.

Heading hierarchy is valid

tech.heading-hierarchy · Severity: low · Weight: 3

Headings should descend without skipping levels (h1→h2→h3).

Fix: Avoid jumping heading levels; keep a logical outline.

Skill: aeo-answer-first-content teaches an agent how to fix this in your stack.

Image alt-text coverage is above 80%

tech.image-alt-coverage · Severity: medium · Weight: 4

Alt text makes images accessible and indexable.

Fix: Add descriptive alt text to images that lack it.

Skill: aeo-page-metadata teaches an agent how to fix this in your stack.

tech.internal-linking · Severity: low · Weight: 3

Internal links spread authority and help discovery.

Fix: Add contextual internal links between related pages.

Skill: aeo-site-structure teaches an agent how to fix this in your stack.

Structured data is present

tech.structured-data-present · Severity: high · Weight: 6

Schema.org markup unlocks rich results and answer-engine extraction.

Fix: Add JSON-LD structured data describing the page.

Skill: aeo-structured-data-validation teaches an agent how to fix this in your stack.

Structured data has no invalid items

tech.structured-data-valid · Severity: medium · Weight: 4

Invalid schema (missing required props) is ignored by engines.

Fix: Fix items flagged with missing required properties.

Skill: aeo-structured-data-validation teaches an agent how to fix this in your stack.

OpenGraph tags are complete

tech.open-graph-complete · Severity: medium · Weight: 4

Complete OG tags control how links render when shared.

Fix: Add og:title, og:description, og:image, and og:url.

Skill: aeo-page-metadata teaches an agent how to fix this in your stack.

Twitter Card is declared

tech.twitter-card · Severity: low · Weight: 2

A twitter:card tag controls the X/Twitter preview.

Fix: Add a twitter:card meta tag (e.g. summary_large_image).

Skill: aeo-page-metadata teaches an agent how to fix this in your stack.

Pages declare a mobile viewport

tech.viewport-mobile · Severity: high · Weight: 6

A viewport meta tag is required for mobile-friendly rendering.

Fix: Add .

Skill: aeo-page-metadata teaches an agent how to fix this in your stack.

Site is served over HTTPS

tech.https · Severity: critical · Weight: 9

HTTPS is a baseline ranking and trust requirement.

Fix: Serve all pages over HTTPS and redirect HTTP to HTTPS.

Skill: aeo-indexability teaches an agent how to fix this in your stack.

Page language is declared

tech.lang-declared · Severity: low · Weight: 2

A lang attribute helps engines and assistive tech.

Fix: Set on every page.

Skill: aeo-page-metadata teaches an agent how to fix this in your stack.

Character encoding is declared

tech.charset-declared · Severity: low · Weight: 2

Pages without a declared encoding can be mis-decoded, garbling quoted text.

Fix: Add (or an equivalent content-type meta) to every page.

Skill: aeo-page-metadata teaches an agent how to fix this in your stack.

Titles are unique across pages

tech.unique-titles · Severity: medium · Weight: 3

Duplicate titles dilute relevance and confuse engines.

Fix: Give each page a distinct .

Skill: aeo-page-metadata teaches an agent how to fix this in your stack.

hreflang annotations are valid

tech.hreflang-valid · Severity: medium · Weight: 4

Broken hreflang surfaces the wrong language in search and AI answers.

Fix: Use valid language-region codes (or x-default) and point each hreflang at a live URL.

Skill: aeo-indexability teaches an agent how to fix this in your stack.

Pages are not thin on content

tech.content-not-thin · Severity: medium · Weight: 4

Very low word counts read as thin content to engines.

Fix: Expand pages under ~200 words with substantive content.

Skill: aeo-answer-first-content teaches an agent how to fix this in your stack.

Pages use headings to structure content

tech.headings-present · Severity: low · Weight: 2

Headings give content a skimmable, extractable structure.

Fix: Break long content into sections with H2/H3 headings.

Skill: aeo-answer-first-content teaches an agent how to fix this in your stack.

AEO Toolkit is an open-source instrument by Advance Labs.