GEO basics: how to show up in AI answers
Your customers no longer only type three keywords into Google. They ask ChatGPT, Gemini, Perplexity or Google's AI Mode a full question and get one answer with a handful of sources. If you are not one of those sources, you are invisible at the exact moment someone decides. Here is what generative engine optimization (GEO) really is, what works, and what is noise.
10 min read
1. What GEO is, and what it is not
Classic SEO fights for a position in a list of ten links. Generative engines work differently: they search, read several pages, and write one answer that cites a few of them. The term GEO comes from a 2023 research paper (published at KDD 2024) that measured how content changes affect visibility inside those answers; the best methods raised visibility by up to 40%, with large differences between domains. The practical consequence is simple: you are no longer optimizing for a rank, you are optimizing to be retrieved, understood and quoted. That does not replace SEO. Google says it openly in its own guidance for AI Overviews and AI Mode: there are no extra requirements and no special optimization, the SEO fundamentals still apply. Other assistants such as ChatGPT search and Perplexity run their own indexes, but they also need pages they can fetch, parse and trust. So think of GEO as SEO plus three things: being unambiguous about who you are, being worth quoting, and being present where the AI looks besides your own site.
2. How AI answers pick their sources
Most assistants answer in two stages: retrieve, then write. Google describes a technique it calls query fan-out for AI Overviews and AI Mode: the model fires several related searches across subtopics and combines what it finds. That is why one page that answers the main question and the obvious follow-ups beats five thin pages. For the other assistants, the crawler decides whether you can be a source at all, and each vendor separates training from search. OpenAI documents GPTBot for training, OAI-SearchBot for ChatGPT search, and ChatGPT-User for fetches a user triggers; sites that block OAI-SearchBot do not appear in ChatGPT search answers. Perplexity documents PerplexityBot for its search results and Perplexity-User for user actions, and says neither is used to train foundation models. Google's training control, Google-Extended, has no effect on Google Search, so blocking it does not remove you from AI Overviews. The decision you need to make is therefore not 'AI yes or no', but 'training yes or no' and 'AI search yes or no', bot by bot.
# Example: stay visible in AI search, opt out of model training.
# Make this a deliberate business decision, bot by bot.
User-agent: Googlebot # Google Search, incl. AI Overviews and AI Mode
Allow: /
User-agent: OAI-SearchBot # ChatGPT search results
Allow: /
User-agent: PerplexityBot # Perplexity search results
Allow: /
User-agent: GPTBot # OpenAI model training
Disallow: /
User-agent: Google-Extended # Gemini training; no effect on Google Search
Disallow: /
Sitemap: https://www.example.com/sitemap.xmlTip from practice
Check your CDN and firewall, not only robots.txt. Bot-protection rules often block AI search crawlers silently, and the site looks fine in every browser.
3. Make your entity unambiguous
An AI answer merges facts from many sources. If your opening hours differ between your website, your Google Business Profile and three directories, the model either picks one at random or leaves you out because it cannot reconcile them. The fix is boring and effective: one source of truth for your core facts (legal name, brand name, address, phone, opening hours, prices, what you offer, where you operate) and a routine that pushes it everywhere. Give the brand a real 'about' page with who is behind it, since when, and what makes it different, written in plain sentences a model can quote. Claim and complete your Google Business Profile if you have a physical location. If you are notable enough, a clean Wikidata item helps machines connect the dots between your name, your website and your social profiles. Use the same spelling of your name everywhere, including the people behind the company. Ambiguity is the most common reason I see for a strong business being absent from AI answers.
4. Add structured data that matches the page
Structured data in JSON-LD, using the schema.org vocabulary, tells machines in a fixed format what a page is about: an organization, a local business, a product with a price, an article with an author and a date. Google uses it for rich results and to understand pages; for AI answers it removes guesswork when facts are extracted. Start with Organization (or LocalBusiness and its subtypes such as Restaurant) on the home page, then add the type that fits each template: Product, Article, Event, FAQPage, BreadcrumbList. Two rules matter more than the number of types. First, the markup must match what a visitor sees on the page; markup that describes content that is not there is a guideline violation, not a trick. Second, generate it from the same data that renders the page, so prices and opening hours can never drift apart. Test with Google's Rich Results Test and the Schema Markup Validator, and check templates rather than single URLs.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Example Bistro",
"url": "https://www.example-bistro.com/",
"telephone": "+49 30 0000000",
"servesCuisine": ["Mediterranean"],
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "Example Street 1",
"postalCode": "10115",
"addressLocality": "Example City",
"addressCountry": "DE"
},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
"opens": "11:30",
"closes": "23:00"
}],
"acceptsReservations": "https://www.example-bistro.com/reserve",
"sameAs": ["https://www.wikidata.org/wiki/Q000000"]
}
</script>5. Write content an AI wants to quote
A model that writes an answer looks for passages that state something clearly and can be attributed. Put the answer first: the first two sentences of a page or section should answer the question in the heading, then go into detail. Use concrete numbers, dates and conditions instead of adjectives. Original data is gold: your own prices, waiting times, measured results or survey numbers are things nobody else can provide. The GEO research found that adding citations, quotations and statistics was among the most effective changes, with effects that varied by topic. Comparison tables, step lists and short FAQ blocks are easy to lift into an answer. Keep a visible 'last updated' date and actually update. What does not work, according to Google's own guidance for its AI features: chopping text into artificial chunks for machines, mass-producing near-identical pages, or chasing inauthentic mentions. Google's advice is to create unique, non-commodity content that people find useful; that is also what other assistants end up citing.
Tip from practice
Read your key page aloud and stop after two sentences. If a stranger could not answer the heading's question from them, rewrite the opening, not the whole page.
6. Be present where the AI looks besides your site
Look at the sources an AI cites for your most important questions and you will often find review platforms, booking and comparison portals, directories, industry media and forums, not brand websites. That is where GEO becomes a distribution job. Keep your listings complete and consistent on the portals that show up in the answers for your market. Ask happy customers for reviews and answer the critical ones; sentiment travels into AI answers. Earn mentions in the media and partner sites your audience reads, with the same facts you publish yourself. On a European hospitality platform with a large network of restaurant websites, one of the proofs of concept I built was exactly this: publishing restaurant data automatically to third-party portals, so the facts an AI finds elsewhere match the source. The second was a generator for blog articles, so each restaurant could add original, quotable content without a marketing team. Both started as small experiments with a measurable goal, not as big platform projects.
Interactive
How ready is your brand for AI answers?
Tick what is already true. What's left is your GEO to-do list, most important first.
0/10 ready
Your next three steps
- Brand facts are identical on the site, Google Business Profile, LinkedIn and directories
- Key pages answer the main question in the first paragraph
- Organization or LocalBusiness structured data on key pages
7. What about llms.txt?
llms.txt is a proposal for a Markdown file at the root of a site that summarizes the most important content for language models. It is popular in developer documentation and cheap to add. Be honest about its status, though: it is a community proposal, not a standard. Google states in its guidance for generative AI features that Google Search does not use llms.txt or other special AI files, and that you can ignore them for Search. None of the large AI search providers has publicly confirmed that it reads the file for ranking or citations. My rule: add one if you have documentation that agents and coding assistants consume, because it can help them navigate, but do not expect it to move your visibility in AI answers, and never let it replace the work in the steps above. If a vendor sells you llms.txt as the core of a GEO strategy, ask them for the data.
8. Measure AI visibility before and after
Without a baseline, every GEO project turns into opinions. I measure three things before touching a page. First, AI-referred visits in your analytics: sessions coming from chatgpt.com, perplexity.ai, gemini.google.com, copilot.microsoft.com and similar, knowing that some assistants send no referrer, so this is a lower bound. Second, Google's own numbers: Search Console has a generative AI performance report for AI features in Search, alongside the regular performance data. Third, a tracked set of real customer prompts in a tool such as the Semrush AI Visibility Toolkit or Peec AI, which run your prompts daily against the major assistants and report how often you appear, at which position, with which sentiment and next to which competitors. On the hospitality platform I mentioned, the baseline came first, then prompt research for around 150 landing pages, then ten prioritized experiments in three phases: assessment, a selection workshop, and short sprints. Read trends over weeks, not single days; AI answers vary from run to run.
# Analytics channel rule for AI assistants (referrer / session source).
# A lower bound: some assistants send no referrer at all.
(^|\.)(chatgpt\.com|chat\.openai\.com|perplexity\.ai|gemini\.google\.com|copilot\.microsoft\.com|claude\.ai)$Takeaway
GEO is not a trick file or a new kind of keyword; it is SEO done properly, plus clear facts everywhere and content worth quoting, measured against a baseline.
Real projects behind this
Try it yourself
Sources and official guides
- Google Search Central: Optimizing your website for generative AI features on Google Search
- Google Search Central: AI features and your website
- Google: Common crawlers, incl. Google-Extended
- OpenAI: Overview of OpenAI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User)
- Perplexity: Perplexity crawlers
- Aggarwal et al.: GEO: Generative Engine Optimization (KDD 2024)
- Google Search Central: Introduction to structured data
- schema.org vocabulary
- Google Business Profile Help
- The llms.txt proposal
More articles
- 3,025 pull requests in ten months: an AI-assisted delivery process, from the inside
- The EU AI Act for mid-sized companies: what applies to you, and when
- FinOps for AI spend: tokens, caching, routing and budgets that hold
- Making a restaurant network visible in AI answers: a GEO project, step by step
- How this site is built: static where it can be, streaming where it must
- Kubernetes cost on EKS and GKE: the same playbook, different levers
- A landing zone for mid-sized companies, in Terraform or Bicep: the parts that matter
- The legacy migration playbook: waves, parallel runs, and identical row counts and checksums
- MCP security in depth: how to let AI assistants into your product without opening the doors
- Monitoring on business outcomes: green dashboards, empty checkout
- Phone AI agents: the architecture, and the pitfalls nobody shows in the demo
- Restore tests: a backup you have never restored is only a hope
- Streaming AI answers on Azure Static Web Apps: the one header that buffered everything
- Building an AI assistant for WhatsApp, end to end: what it takes beyond the demo
- Air-gapped systems: running critical software with no internet
- Production AI on AWS: Amazon Bedrock and AgentCore in a private setup
- Production AI on Microsoft Foundry: a private reference setup for agents
- /goal, /loop or routines: stop babysitting your coding agent
- Claude's new plans: Max, Ultra and what they mean for teams
- OpenAI Codex at the end of 2026: goal mode, dots and how to lock it down
- GitHub Copilot, Claude Code or Codex? How I'd choose for a company
- Production AI on Google Cloud: from Vertex AI to Gemini Enterprise Agent Platform
- Local LLMs in an air-gapped network: AI for your most sensitive data
- I want to run a local LLM: which server should I buy?
- MiniMax M3: an open frontier model you can run yourself?
- Prompt research at scale with an open model
- SEO and GEO together: a practical audit in 6 steps
- Right-size Kubernetes: the playbook that took a cluster from 7 to 4 nodes
- Private AI for sensitive data: a local LLM setup that passes the security review
- From AI prototype to production: the eight layers I add, in order
