svg
Close

By piotrzientara November 12, 2026 In development, Magazine

Why Should We Care About GEO and E-E-A-T? Visibility Lessons from K MAG

The old joke says the best place to hide a body is page two of Google. The 2026 version: the best place to hide anything is wherever ChatGPT does not cite.

This is the written version of my talk at WarsawJS Meetup #144. It covers what changed in how people find things, what GEO, AEO and E-E-A-T mean in practice, what we did at K MAG, and a checklist you can apply to your own site tomorrow. The full slides are here: WarsawJS #144 deck.

Ten blue links became one answer

People still search. More and more often, though, they read the answer and never scroll. ChatGPT, Perplexity, Gemini, Copilot and Google’s AI Overviews answer first and link a few sources underneath. If you are not one of those sources, you are invisible, even if you technically rank.

Meme slide: on the left, ranking number one on Google for a query nobody types anymore; on the right, being the source ChatGPT quotes when your users ask
The goal moved: not the top of a list, but the sentence inside the answer.

SEO, AEO, GEO: three games, one website

  • SEO (Search Engine Optimization): rank in the list of links and win the click. You measure positions and click-through rate. The levers are keywords, links and speed.
  • AEO (Answer Engine Optimization): be the answer itself, in a featured snippet, People Also Ask or a voice assistant. The lever is question and answer structure.
  • GEO (Generative Engine Optimization): be quoted in an answer a model writes. You win a citation or a mention, and you measure your share of AI answers. The levers are authority, quotable facts and clear entities.

The good news is that they stack. GEO does not replace SEO, because language models still lean heavily on search indexes. Do SEO well and you are halfway to the other two.

How an AI answer picks its sources

If you have ever built retrieval-augmented generation, you already know the pipeline:

  1. Rewrite. The user’s question becomes several search queries.
  2. Retrieve. Results come from a search index: Bing, Google or the bot’s own crawl.
  3. Select. Pages that are relevant, trusted, fresh and easy to extract win.
  4. Write and cite. The model paraphrases chunks and links a few of them.

Each step maps to one job. Step two means you have to be indexed: if you are not in the index, you are not in the answer. Step three is where you have to be trusted, and that is where E-E-A-T lives. Step four rewards pages that are quotable: self-contained, factual chunks.

GEO in practice: write content a model wants to quote

The Princeton GEO paper (Aggarwal et al., KDD 2024) tested this directly. Adding citations, quotations and statistics lifted visibility in AI answers by up to 40%. Keyword stuffing did nothing or hurt. In practice that means:

  • Numbers with a source. “Up 40% in four weeks, according to our monitor” beats “a lot more”.
  • Named quotes. A real person, a real title, a sentence worth repeating.
  • Self-contained chunks. Every paragraph should make sense on its own. No “as mentioned above”.
  • Clear entities. Full names, the same spelling everywhere, plain “X is a…” definitions.
  • Fresh and dated. Visible “updated on” dates, and regular refreshes of the pages people still ask about.
  • Be talked about. Wikipedia, Reddit, YouTube, other media. Models learn from them, and not every lever is on your own site.

GEO for developers: let the bots read you

This is the part the JavaScript crowd needs most. Many AI crawlers do not run JavaScript. Your SPA with an empty <div id="root"> looks like an empty page to them. Check what a bot sees with curl, and server-render the text.

Then decide on purpose which bots you let in. Search bots (the ones that put you in AI answers) and training bots are different user agents, and blocking all of them may hide you from AI search completely:

# search bots: show me in AI answers
User-agent: OAI-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

# training bots: your call
User-agent: GPTBot
Disallow: /private/

Two more cheap wins: set up Bing Webmaster Tools and IndexNow, because a lot of AI search reads the Bing index. And llms.txt costs nothing to add, though there is no proof yet that anyone reads it.

AEO: how to be the answer

  1. The question is the heading. Use the exact words people type. Mine them from Search Console queries and People Also Ask.
  2. Answer in 40 to 60 words, right under the heading. A full sentence, no “it depends”. Details come after.
  3. Lists and tables. Steps as an ordered list, comparisons as a real table. Engines lift them as they are.
  4. Mark it up. FAQPage, QAPage and HowTo in JSON-LD. Google cut back FAQ and HowTo rich results, so do not expect stars in the results page, but parsers still read the structure.

Compare two pages about the same thing. One is titled “Our thoughts on retail” and opens with three sentences about Polish shopping culture since the 1990s. The other is titled “Are shops open this Sunday?” and opens with: “No. Sunday 15 November is not a trading Sunday in Poland. Large shops are closed; small shops staffed by their owners may open.” The second one can be lifted word for word into a snippet or an AI answer. Nobody ever asked an AI for “our thoughts on retail”.

E-E-A-T: how machines decide whom to trust

E-E-A-T comes from Google’s quality rater guidelines: Experience, Expertise, Authoritativeness and Trust. Language models pick up the same signals: named authors, real bios, citations from others, one consistent identity across the web. As a philosopher I like to call it epistemology for search engines. Who do you trust, and why?

Experience: prove you were there

This is the one thing a model cannot fake for you. Google added it to E-A-T in December 2022, exactly because the web was filling up with generic summaries. AI makes generic text free, so first-hand evidence is now the scarce resource.

  • Your own photos, screenshots and recordings. No stock.
  • First person: “we tested”, “I was at”, “it broke when”.
  • Say when and for how long: “three weeks, forty users”.
  • Include what went wrong. Failures read as real.

At K MAG this means reports written by people who were in the room. I wrote my feuilleton after Iggy Pop’s concert at OFF Festival 2022 because I was there. ChatGPT was not.

Expertise: a name, a face, a track record

“Admin” is not an author. Put a named byline on every article and link it to an author page with a photo, a bio, the topics the person covers and all their texts. Stay on your beat, because depth in a few topics beats a bit of everything. For money or health topics, add “reviewed by” an expert.

For developers this is the cheapest big win: one template, one route (/author/jan-kowalski), a rel="author" link and a Person schema with jobTitle and knowsAbout.

Authority: others vouch for you

You cannot declare authority. You can only earn it. Publish original data that others will cite. Show up elsewhere: interviews, podcasts, talks at meetups. Keep one entity everywhere: the same name, logo and links, plus a Wikidata entry, tied together with sameAs in your Organization schema. Build pillar pages with strong internal linking on your core topics.

For a language model, authority is mostly co-occurrence: how often your name appears next to a topic in sources it trusts. Giving a talk at a meetup literally builds it.

Trust: the boring pages that matter most

Google calls Trust the most important member of the family. An untrustworthy page has low E-E-A-T no matter how experienced or expert it looks.

  • About and contact pages, and who owns and funds the site.
  • An editorial and corrections policy. Fix errors in public.
  • Sponsored content labelled clearly, every time.
  • Primary sources linked. Honest dates, both published and updated.

The trust killers: ads on top of the content, “updated today” on a 2019 article, fake reviews, fake authors, and no HTTPS in 2026.

Tell the machines who wrote it

All of this can be written in a format a crawler parses in ten minutes per template:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "…",
  "datePublished": "2026-11-11",
  "author": {
    "@type": "Person",
    "name": "Piotr Zientara",
    "url": "https://piotrzientara.pl",
    "sameAs": ["…linkedin…", "…github…"]
  }
}
</script>

One identity, linked everywhere. Before you publish, ask the three questions from Google’s own guidance on helpful content. Who wrote this, and can a reader learn more about them in one click? How was it made: tested, measured, interviewed, and was AI involved? Why does it exist: to help a person, or only to catch traffic? If the honest answer to the last one is “traffic”, that page will not survive the next core update, and no model will cite it.

What happened at K MAG

At the meetup I showed live screenshots from Google Analytics and from AlfaUMi, the tool we use to track SEO and AI visibility in one place: AI citations, Bing, Search Console, Analytics and product events. I will not repeat the exact figures here, but the direction is the point: after a year of working on authorship, structure and trust, every headline metric went up. Views, sessions and active users grew year on year and kept growing over the last 90 days. K MAG now shows up in ChatGPT and Gemini answers, Bing traffic is climbing, and the numbers that matter most to a magazine went up too: more people read articles to the end, and more of them sign up for the newsletter.

Two honest notes. First, visible is not the same as chosen. One celebrity query got us thousands of impressions and almost no clicks. Google showed us, and nobody wanted our take. If your title and first paragraph do not answer the question better than everyone else’s, you are just decoration on the results page. Second, a good score is not a finished job. Our audit still lists a couple of dozen actions, mostly in content and technical areas, and our monitor recently caught tracking events that had silently stopped firing. Which brings me to the last point on the checklist.

Checklist for developers

  1. Structured data. Article, Person and Organization in JSON-LD. Validate it.
  2. Real authors. Author pages, bios, photos and sameAs links to profiles.
  3. Answer first. The answer goes at the top of the page, the story after it.
  4. Let the bots in. Check robots.txt for AI crawlers and server-render the content.
  5. Bing counts. Bing Webmaster Tools and IndexNow. AI search reads it.
  6. Measure it. Track AI citations, not only rankings. And check that your tracking still fires.

Slides and where to go next

Thanks to everyone who came to WarsawJS #144. Questions? Ask me, or ask ChatGPT and see whether it quotes me.