GEO for Business Owners: Getting Your Site Cited in AI Answers
By Daniel Mashkov, AI Systems ArchitectPublished Updated 8 min read
TL;DR
GEO (Generative Engine Optimization) is less a content trick than an infrastructure decision. To be cited by AI assistants such as ChatGPT, Claude, Gemini and Perplexity, a site needs four things you control: crawlers are allowed in, the content is in the HTML the server sends (most AI crawlers do not run JavaScript), key facts are marked up with JSON-LD, and pages are written answer-first. An llms.txt file is an optional fifth layer — cheap to add, but no major AI provider has documented using one. Many stores miss several of these.
Why GEO matters now
Search is fragmenting. Google still handles roughly 90% of search-engine referrals worldwide (StatCounter), but ChatGPT, Claude and other assistants now answer questions directly — the user reads a synthesized answer instead of landing on your site. That answer may cite you, or it may cite your competitor. Google's own AI Overviews and AI Mode work the same way, on top of its regular index.
Being cited is not the same as getting the click: an answer that names your site but not your product sends you only a small share of the potential traffic. But if crawlers can't reach your content or can't make sense of it, you are not cited at all. GEO is about getting into that synthesized answer — and for Google's AI features it starts with ordinary SEO: Google says there are no extra requirements beyond a page being crawlable and indexed.
The GEO layers I build into every site
The five layers of GEO
Layer 1: AI crawler access. If robots.txt blocks AI crawlers — often by accident — they can't read your pages, so they can't cite them. Each provider runs separate bots for separate jobs: OpenAI has GPTBot for model training and OAI-SearchBot for ChatGPT search; Anthropic has ClaudeBot for training and Claude-SearchBot for search. Blocking the training bot does not block the search bot, so decide on each one deliberately. If your site sits behind Cloudflare, check its AI-crawler settings too: since July 2025, every new domain is asked at sign-up whether to allow AI crawlers, and Cloudflare's default is to block them.
Layer 2: Content in the HTML. Most AI crawlers, OpenAI's and Anthropic's included, fetch the raw HTML and do not run JavaScript, according to Vercel's analysis of AI-crawler traffic (December 2024); Google's crawler, which Gemini relies on, is the notable exception. If your text, prices or specs only appear after client-side JavaScript runs, those crawlers see an empty page. Use server-side rendering or static generation (Next.js, Nuxt, or a server-rendered CMS such as WordPress), or make sure critical content is in the initial HTML.
Layer 3 (optional): an llms.txt file. llms.txt is a proposed convention (llmstxt.org), not an official standard: a Markdown file at yourdomain.com/llms.txt that lists your key pages with a one-line description each. Be clear about where it stands. Google says you do not need AI text files or any other new machine-readable file to appear in its AI features, and no major AI provider has documented reading llms.txt. It is quick to write and costs nothing to host, so treat it as a cheap bet, not a ranking lever. Next.js can generate it at build time, and on WordPress Yoast SEO can generate one for you.
Layer 4: Add JSON-LD schema markup. Tell machines what each page is — a product, an article, a FAQ, a review — using schema.org vocabulary (Product, Article, FAQPage). Search engines use it to understand the page and to show rich results, and it puts facts like price, availability and author in a form any machine can read. AI providers have not published how much weight they give it, but it costs little and it helps regular search either way.
Layer 5: Structure content answer-first. An AI needs to extract a direct answer from your page, not a long narrative. Start paragraphs with the answer ("Shopify's Basic plan costs $39 a month on monthly billing"), then explain. Use headings, bullet points, and structured lists. Avoid burying key facts in the middle of prose.
Three kinds of sites that often miss GEO
A bare WordPress install outputs no JSON-LD of its own. Yoast SEO or Rank Math add schema, but you need to verify it's correct. Use Google's Rich Results Test to check.
WooCommerce stores are rendered on the server in PHP, and WooCommerce outputs Product JSON-LD on product pages by default — so the basics are usually there. The gaps come from what is layered on top: on variable products the price for the chosen size or color is filled in by JavaScript; product grids and filters loaded by AJAX; prices from a currency or pricing plugin that runs in the browser; and headless front-ends built as client-side apps. Check a product page with JavaScript switched off, or view its source: if the price or stock status is missing there, most AI crawlers don't see it either.
Single-page applications (SPAs) built with React or Vue without server rendering are drawn in the browser, so most AI crawlers get an almost empty page. The real fix is pre-rendering or server-side rendering; at minimum, put the key facts as JSON-LD in the <head> at build time, not injected at runtime.
Checklist: audit your site this week
Four checks you can run this week, plus one optional step. For the ordinary-SEO base underneath them, the site report card runs a live Lighthouse scan of any page.
- Check robots.txt: open yoursite.com/robots.txt. A blanket "Disallow: /" under "User-agent: *" blocks every crawler, AI included. Also look for rules that name GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot or PerplexityBot, and make sure each one matches what you actually want.
- Check that the content is in the HTML: open a key product or service page, view its source, and search for the price or the main heading. If it is not in the source, most AI crawlers cannot see it.
- Audit schema markup: use Google's Rich Results Test (https://search.google.com/test/rich-results) to check if your product, article, or organization schema is valid. Fix any errors.
- Rewrite your top 5 pages answer-first: pick the pages with the most traffic and rewrite the opening so it leads with the answer, then the explanation. Then ask ChatGPT, Claude or Perplexity the questions those pages answer and see whether you are cited — answers vary from run to run, so check more than once.
- Optional — create llms.txt: add a Markdown file at /llms.txt listing your top 10–20 pages with a one-line description each, by hand or with a generator (Yoast SEO has one built in). Publish it knowing it is an experiment, not a requirement.
The competitive edge
Many Israeli stores haven't looked at any of this yet. If you get the basics right — crawlable, content in the HTML, schema, answer-first, and llms.txt if you like — you give AI assistants a reason to cite you rather than a competitor. Nobody can promise a citation, but a page a crawler can't read is guaranteed not to get one. As more people start their research in ChatGPT, Claude or Gemini, that gap matters more.
FAQ
Will GEO replace SEO?
Not as things stand. Google still handles roughly 90% of search-engine referrals, and Google says its AI Overviews and AI Mode draw on the same crawling and indexing as regular search — so good SEO is also the base of GEO. But the AI side is big and growing: OpenAI reported 900 million weekly ChatGPT users in February 2026. Nobody knows what the split will look like in two or three years; working on both is the safe position.
Do I need a developer to set this up?
Not for llms.txt or schema on a standard platform. On WordPress, Yoast SEO or Rank Math handle most schema, and Yoast can generate llms.txt too. If your site is built on a framework like Next.js or Django, both can be generated in code. You need a developer when the content itself is rendered client-side, or when the schema your platform outputs is wrong and has to be fixed.
What if I use Shopify or WooCommerce?
Both give you schema out of the box: WooCommerce outputs Product JSON-LD on product pages, SEO plugins such as Yoast add more, and most Shopify themes include product structured data. llms.txt is different. On WooCommerce you can upload the file to the site root or let Yoast generate it. Shopify now serves /llms.txt on every store by default — it mirrors the store's /agents.md file — and since May 2026 you can replace it with your own theme template (agents.md.liquid or llms.txt.liquid).
Sources
- schema.org documentation
- Google Rich Results Test
- Google Search Central — AI features and your website
- Vercel — The rise of the AI crawler
- OpenAI — crawlers and user agents
- Anthropic — how Claude crawls the web and how to block it
- Perplexity — crawlers and user agents
- Cloudflare — AI crawlers blocked by default, new domains asked at sign-up (July 2025)
- llms.txt — the proposal
- Yoast SEO — llms.txt generator
- Shopify — default /llms.txt and /agents.md, theme templates (May 2026)
- WooCommerce — structured data for products
- StatCounter — search engine market share (Google 89.94%, September 2026; checked 2026-10-03)
- OpenAI — Scaling AI for everyone (900M weekly ChatGPT users)