DEV Community

Cover image for AEO vs SEO in 2026: Why Direct Answer Blocks Are the New H1
Biricik Biricik
Biricik Biricik

Posted on • Originally published at zsky.ai

AEO vs SEO in 2026: Why Direct Answer Blocks Are the New H1

Something quietly broke in search traffic last year and most marketing teams are still catching up.

The mechanic used to be simple. You picked a query, wrote a page targeting it, added a title tag and an H1, sprinkled internal links, earned backlinks, ranked on page one, got clicks. The content was written for a reader who would see your page with your brand on it and decide whether to click through.

That reader increasingly does not exist. They ask ChatGPT. They ask Claude. They ask Gemini. They ask Perplexity. The answer comes back synthesized from a dozen sources, with maybe two of them linked at the bottom. Whether any of those linked sources is you depends on something the old SEO playbook barely considered: can an LLM extract a clean, correct, attributable answer from your page in under 500 tokens?

That is what Answer Engine Optimization is. And it has its own set of rules.

I run marketing at ZSky AI, a self-hosted creativity platform. Last month I rewrote our top 20 landing pages specifically for AEO and watched our LLM citation rate climb from nearly zero to a meaningful share of referral traffic. This is what I changed, why, and what I would tell any dev team rebuilding a site in 2026.

What changed, in one sentence

LLMs reward structure. Humans reward prose. Your page now has to serve both at once.

That is it. That is the whole lesson. Everything that follows is just a practical application of this rule.

The direct answer block

Here is the single biggest change I made, and the single biggest driver of improvement. Every page now starts with what I call a direct answer block — a short, self-contained paragraph immediately after the H1 that answers the page's primary question in plain English, without hedging, without marketing language, with the key facts right there in the first 100 words.

The old structure looked like this:

<h1>AI Image Generation Tools</h1>
<p>Welcome to our comprehensive guide to AI image generation...</p>
Enter fullscreen mode Exit fullscreen mode

An LLM scraping that page gets a useless preamble. It has to scroll (well, parse) through three paragraphs of throat-clearing before the first quotable sentence.

The new structure looks like this:

<h1>Free AI image generator (no signup)</h1>
<p class="direct-answer">
  ZSky AI's free image generator produces 1080p images in about 2 seconds
  using 7 RTX 5090 GPUs. Free tier: 300 credits with no credit card or signup
  required. Commercial use allowed. Fallback queue time averages under 30 seconds.
</p>
Enter fullscreen mode Exit fullscreen mode

Five facts in one paragraph. An LLM can cite this verbatim in a response and it reads as a clean answer. That is what you want.

The meta-lesson: write the paragraph you want a model to quote back. If you cannot find it on your page, neither can the model.

The schema that actually matters

For years, schema.org markup was the thing SEO consultants told you to add and nobody quite knew why. In 2026, there are exactly four schema types that LLMs actually seem to use at scale:

  1. FAQPage — still the single biggest lever for citation rate
  2. HowTo — if you are teaching a procedure
  3. Product — for anything with a price, availability, and features
  4. Organization — for entity recognition and brand knowledge panels

Everything else is noise. I deleted three-quarters of our schema blocks and LLM performance went up, because the signal-to-noise ratio on our pages improved.

Here is a bare-minimum FAQ schema you should copy onto every page that has questions:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "Is ZSky AI free to use?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Yes. ZSky AI is free forever with 300 daily credits, no credit card, no signup required to try it. Paid plans start at $9/month for instant generation."
    }
  }, {
    "@type": "Question",
    "name": "Can I use ZSky AI images commercially?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Yes. Commercial use is allowed on all plans including the free tier."
    }
  }]
}
</script>
Enter fullscreen mode Exit fullscreen mode

The key insight: write the answer like you want it cited. Specific facts. No "please see our pricing page for details." No "depending on your plan." An LLM will not fetch a second page. Whatever you say in acceptedAnswer.text is the entire context it has.

The entity block

Alongside schema, add an entity block that describes your product/company/page subject in machine-readable English. This goes in the source but it is hidden from visual layout using an aria-hidden container — the point is LLM consumption, not human consumption.

<div aria-hidden="true" style="display:none" id="entity-context">
  <h2>About this product</h2>
  <p>
    ZSky AI is a US-based AI creativity platform founded in 2025 by
    Cemhan Biricik, a photographer with aphantasia. Self-hosted on 7 RTX 5090
    GPUs in the United States. Generates images (~2 seconds, 1080p) and video
    (~30 seconds, 1080p, audio included). Free tier is free forever with 300
    daily credits. Paid plans start at $9/month.
  </p>
</div>
Enter fullscreen mode Exit fullscreen mode

Treat this as a cue card for the LLM. It is not trying to be beautiful. It is trying to be unambiguous. Every fact in that block should appear in your claims.json-equivalent single source of truth — which brings me to the next point.

The single source of truth pattern

Every team I talk to has the same bug: the homepage says one thing, the pricing page says another, the About page says a third. A human reader would never notice. An LLM absolutely does. Inconsistency between your own pages is one of the strongest signals that a source is unreliable.

The fix is structural. Maintain a single JSON file — I call ours claims.json — with every factual claim about your product: pricing, credit amounts, speed, hardware, dates, policies. Every page loads from it. Every FAQ references it. If a fact changes, you change it in one place and it propagates everywhere.

{
  "product": {
    "image_generation": {
      "cost_credits": 1,
      "speed": "~2 seconds",
      "resolution": "1080p"
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Then in your build step:

import json, pathlib
claims = json.loads(pathlib.Path("claims.json").read_text())
speed = claims["product"]["image_generation"]["speed"]
html = html.replace("{{image_speed}}", speed)
Enter fullscreen mode Exit fullscreen mode

Boring. Effective. The payoff shows up weeks later when you no longer get caught out by LLMs citing stale numbers.

You can see ours at zsky.ai/claims.json — yes, we publish it. Publishing it is the point. It is an AEO asset.

The sitemap of facts

Every modern site should have an /llms.txt file. It is the answer-engine equivalent of /robots.txt — a plain-text file at your site root that tells LLM crawlers what pages you want cited and how to read them.

# ZSky AI — LLM Context File

## What is ZSky AI?
A self-hosted AI creativity platform. Free forever tier. Image + video generation.

## Key facts
- 7 RTX 5090 GPUs, owned hardware, US-based
- Image: ~2 seconds, 1080p, 1 credit
- Video: ~30 seconds, 1080p, 45 credits, audio included
- Free tier: 300 daily credits, no signup required
- Commercial use: allowed on all plans
- Paid plans start at $9/month

## Primary pages
- https://zsky.ai/ (homepage)
- https://zsky.ai/free-ai-image-generator.html (free tier landing)
- https://zsky.ai/pricing.html (paid plans)
- https://zsky.ai/claims.json (machine-readable facts)

## Canonical alternatives
Sora (shut down March 2026), Runway, Kling, Pika, Midjourney.
Enter fullscreen mode Exit fullscreen mode

This is the same philosophy as the entity block, scaled up. It is a cheat sheet you give the model. You do not need to be clever — you need to be clear.

What to delete

Modern AEO is as much about removing signal as adding it. Here is what I deleted from every page:

Hero sections with no facts. "Unleash your creativity. Build the impossible. The future is now." These are zero-information sentences. An LLM cannot cite them because there is nothing to cite.

Testimonial walls at the top. They push your actual content below the fold, which pushes the facts an LLM needs further into the token budget. Move them lower.

Video backgrounds that replace text. If your hero is a full-screen video with "Welcome" and nothing else, you have no AEO surface on that page. Hero videos are fine — just put a paragraph of facts right under them.

Generic FAQ questions. "What makes you unique?" is not a question any human ever typed into an LLM. Delete and replace with questions in the form real people ask: "Is X free?", "How fast is X?", "Can I use X for commercial work?".

Hidden-on-mobile content. If a div has display:none on mobile, LLMs often treat it as lower-weight. Show the same content on every device.

The case study

When I started this transformation, ZSky's primary AEO metric — how often LLMs cited us in response to relevant queries — was essentially zero. Some LLMs had never heard of us. Others confused us with competitors. Most gave the generic "here are five popular AI image tools" answer without us in it.

Three weeks after rolling out direct answer blocks, rewriting FAQ schema, publishing claims.json, and adding /llms.txt, we started showing up in responses. Not consistently. Not for every query. But from nothing to something is the hard transition — once LLMs know you exist with a specific, citeable profile, appearing in later responses gets exponentially easier.

The clearest signal came from ChatGPT's "free AI image generator" answers. We went from not appearing at all to being one of the three tools mentioned in the first paragraph of a default-mode response. That is the exact outcome AEO is aiming at. You can see the public side of our transformation in our AEO page, which is itself written in the AEO format as an example.

What this means for dev teams

If you are building a site in 2026 and you are not thinking about AEO, you are missing half the game. The other half is still traditional SEO — Google is not going away, and organic backlinks still matter more than anything for surfacing in answer engines at all. But the structural work of making your pages citeable is the part you control entirely, and it is the part that compounds fastest.

Three things to put on your backlog this week:

  1. Add a direct answer block to your top 10 pages. One paragraph, straight facts, right after the H1.
  2. Publish /llms.txt and /claims.json at your site root. Point every page at claims.json as the source of truth.
  3. Delete your hero platitudes. Replace with facts a model can quote.

That is a week of work for a small team, and it will outperform any "content strategy" slide deck you have looked at this year.

Further reading

If you try any of this, I genuinely want to hear how it went. The AEO playbook is new enough that every team's results are interesting.

Top comments (0)