AI crawlers and answer engine retrieval systems read HTML similarly to how screen readers do: they rely on semantic structure to understand what different parts of a page represent. A page with a clear semantic hierarchy — one H1, logical H2 sections, organized paragraphs — is easier for AI systems to parse than a page with inconsistent heading levels, div-heavy layout with no semantic tags, or content hidden in JavaScript-rendered components.
The Heading Hierarchy Rule
Every page should have exactly one H1 — the article's main title. The main sections of the article use H2 headings. Sub-sections use H3. This hierarchy tells AI parsers the structural relationship between content blocks. Skipping levels (H1 to H3 without H2) or using multiple H1s confuses the hierarchy and makes content structure ambiguous to machine parsers.
For AEO, H2 headings should be phrased as questions when possible — "How does X work?" rather than "Explanation of X." Question-phrased headings directly match the query patterns that AI systems are answering, making it easier for the AI to identify that this section is the answer to a specific question.
Static HTML vs. JavaScript-Rendered Content
Content that is rendered by JavaScript after the initial page load — fetched via API calls, inserted by React after mount, or lazy-loaded — may not be indexed by all AI crawlers. Crawlers that do not execute JavaScript will see an empty div where the content should be. Static HTML — where the content is present in the initial HTML response — is universally accessible to all crawlers.
This is why Next.js static generation and server-side rendering are the recommended approaches for AEO content: the HTML that arrives in the crawler's initial response contains all the content, without requiring JavaScript execution. The Omni site architecture service builds on Next.js with static generation as the default for all content pages.