Every few months someone announces that websites are about to die. People don't search on Google anymore, they ask ChatGPT, and your site is going to end up like a brochure nobody opens. I see it the other way around.
For an AI to recommend you, someone has to have read your website first. It might be a person coming from Google, OpenAI's bot indexing content for ChatGPT, or an agent a client has launched from their laptop to compare three providers. It doesn't matter who. Someone comes in, reads what you have to say, and walks away knowing who you are and what you offer. No website, nothing to read. Nothing to read, nothing to recommend.
I've been working with Drupal since 2009, and technical SEO is part of my everyday work. Something funny is happening to me with GEO: when I read what's being recommended, I was already doing most of it. So it's time to put some order into this. What GEO is, why the technical side in Drupal is pretty much the same as good old SEO, what actually changes, and how you should be measuring all of this now.
The usual disclaimer before we start: this is my opinion and my experience as a developer. My thing is technical SEO. I touch content SEO only in passing, and I don't sell myself as an expert in it.
What GEO is and how it differs from SEO
The simplest way I have to explain it is this.
SEO (Search Engine Optimization) is positioning yourself so that a human searches and lands on your website.
GEO (Generative Engine Optimization) is positioning yourself so that an artificial intelligence lands on your website, understands it, and cites or recommends you in its answer.
At the end of the day, in both cases we're talking about entities arriving at your website. Some are people, some are bots. And what you want from both is the same: that they find you, that they can read you, and that what they read convinces them.
You've probably also seen AEO, LLMO or AIO. For our purposes, they're different names for the same thing. The term GEO comes from an academic paper from late 2023 (Aggarwal et al., presented at KDD 2024) that studied how to gain visibility in the answers of generative engines, and it's been spreading ever since.
GEO is SEO for AI (and that's fine)
I'll stick my neck out on this one: to me, GEO isn't a new discipline. It's SEO applied to another channel.
Think about it. When someone optimizes a video to show up on YouTube, we call it YouTube SEO. Same with Amazon, Pinterest, or local SEO. Each platform has its quirks (on YouTube the thumbnail and retention matter a lot, on Amazon it's reviews) and nobody has invented an acronym for each one. It's still SEO. The same goes for AI: there are a few specific nuances, which I'll get to below, but the foundation is the same as always.
If someone tries to sell you a GEO service, ask them a simple question: give me one ranking factor that's GEO-only and isn't part of good SEO. You'll have a hard time getting one that holds up.
That said, I also get why the word caught on. The need is real, and nobody made it up. What happens is very simple: a company owner asks ChatGPT who's the best in their industry, a competitor comes up, and from that moment they want to be there. Then they search for how to do that, run into the "GEO" label, and start asking for it. That's why more and more clients come asking for GEO instead of SEO.
I don't think there's anything wrong with picking up that demand and using the word, as long as you then explain to the client what they actually need. What I don't like is selling it as a miracle diet. "I'm going to do an amazing GEO job for you and you'll be number one on ChatGPT" is hot air, because nobody can promise that.
And if you think about it, who knows how to get an AI to find, understand and recommend a website? Those of us who've spent our whole careers getting Google to find, understand and rank one. That's no coincidence.
Why good technical SEO already covers almost all of GEO
What almost no GEO article tells you clearly: AIs that search the web don't have a crystal ball. Under the hood they rely on search engine indexes, or on their own bots that work exactly like a search engine.
Google puts it in writing in its documentation on AI features: there are no additional requirements to appear in AI Overviews or AI Mode, and the usual SEO best practices still apply. And the crawler is Googlebot, the same one as always. Copilot relies on Bing's index, to the point that Bing's webmaster guidelines cover both at once. Claude has used Brave Search as its search provider and has its own bot, Claude-SearchBot. ChatGPT started out relying on Bing and today has its own crawler, OAI-SearchBot. Perplexity has its own index, fed by PerplexityBot.
See the pattern? It all comes down to crawling, indexing and ranking. Whatever helps Googlebot understand your site is the same thing that helps AI bots understand it. There's no secret AI algorithm that rewards something else.
What I do in Drupal that works the same for SEO and GEO
I'm not going to go into step-by-step configuration, that would be one article per module. I'll tell you what I check on any Drupal site that lands on my desk, and why it works just as well for a person coming from Google as it does for an AI bot.
Clean URLs and redirects
Out of the box, Drupal gives you /node/1234, which works but tells nobody anything. With Pathauto you generate aliases from patterns and forget about it.
Its inseparable sidekick is Redirect. When you change a URL, the old one has to 301 to the new one. Otherwise you lose whatever that page had earned, and the bot that had it indexed hits a 404 right before deciding whether to recommend you.
Metadata and structured data
Metatag is the foundation of SEO in Drupal: titles, descriptions and canonicals per content type using tokens, with the option to override them page by page. On top of that, Schema.org Metatag generates JSON-LD with Organization, Article, Product, BreadcrumbList and friends. For Google, that means rich results. For an AI, it's an unambiguous description of who you are, what you sell and who's behind the content.
One important caveat: there's no such thing as "schema for AI". Google says no special markup is needed and that structured data has to match what's visible on the page. The usual stuff, done properly.
Sitemap and IndexNow
Simple XML Sitemap generates your sitemap, with hreflang if you have several languages, and recent versions can notify search engines through IndexNow. In the AI world this one's handy: Bing uses those pings to refresh its index, and Copilot drinks from that index. You publish or update something and they find out sooner.
Semantic HTML and server-side rendered content
This is one of the things I most often find broken in audits. One H1 per page. Headings in a logical order, not "because the H3 looks nicer". <main>, <nav> and <article> where they belong. All of that is decided in your theme's Twig templates.
And most importantly: the content has to be in the HTML the server sends. Drupal renders server-side by default, which is a huge advantage. But in decoupled projects, or with blocks that load content via AJAX, I see it break all the time. Google executes JavaScript. Many AI bots don't, or not always. If the text isn't in the initial HTML, for them it doesn't exist.
Performance
Speed matters to people and it matters to bots, which have a crawl budget and won't wait forever. In Drupal, start with caching: Internal Page Cache and Dynamic Page Cache working, Views with their cache configured, nothing invalidating half the site on every request, and Varnish or a CDN in front when the project calls for it. Images with responsive styles, WebP or AVIF (it's in core since Drupal 11.2), and lazy loading for whatever isn't visible on load.
In almost every audit I do, the problem isn't a missing magic module. It's bad configuration. CSS and JS aggregation turned off in production, Views without caching, a custom module wrecking cache tags. To find this kind of thing without flying blind I built the Audit module, which gives you a performance, caching and technical SEO report for your Drupal site.
Accessibility
An accessible website is a website that's easier to understand. Alt text on images, labelled forms, good contrast, keyboard navigation. AI agents browsing a site rely largely on the same information a screen reader uses, so whatever you do for accessibility pays off twice.
And the content
This is where I step onto ground that isn't mine, so I'll just say one thing: no technical optimization fixes content that doesn't answer anything. What gets you ranked on Google, useful content written by someone who knows the subject and answers specific questions, is the same thing that gets an AI to cite you.
And one more, closely tied to what I'll say about metrics later: write for your client, not for volume. An article about a trending topic can bring you thousands of visits and zero clients. A very niche one, interesting only to people who have exactly your problem, brings far fewer visits and quite a few more leads.
What does change with GEO
Up to here, it's been plain old technical SEO. Now let's get to the nuances that really are specific to this channel.
Markdown and llms.txt: recommended, then dropped
During 2024 and 2025 the idea that LLMs read Markdown better than HTML became trendy. People proposed an /llms.txt file with a summary of your site, and also serving a .md version of every page to bots. Drupal got modules for both, and some agencies started selling it as a must-have.
Then reality kicked in. Google's John Mueller compared it to the old keywords meta tag and pointed out that you don't even see bots requesting that file in server logs. Gary Illyes confirmed that Google doesn't use it. And Google's own documentation now says you don't need to create special files or Markdown versions to appear in its AI features. It makes total sense: models were trained by reading regular HTML, and they read it just fine.
To be fair, there are nuances. Dries Buytaert tested it on his blog by offering a Markdown version of every post, and wrote about it in The Third Audience: OpenAI's and Anthropic's bots started requesting it right away. But the fact that they fetch it doesn't mean it gets you into more answers. If you run a technical documentation portal used by coding assistants, consider it. For a corporate site, an ecommerce store or a blog, you don't need it. Make sure your HTML is clean first, because that's what everyone reads.
Don't block AI bots
This is the one that worries me most, because I see websites wiping themselves off the map without knowing it.
With SEO we had it crystal clear: we wanted Googlebot to come in and index everything. If someone blocked it by mistake in robots.txt, two weeks later there was drama because traffic had tanked. With AI bots it's exactly the same, with one difference: you don't find out. There's no Search Console telling you ChatGPT has stopped recommending you.
The first thing is to understand that not all AI bots do the same job. Training bots, like GPTBot, ClaudeBot, Google-Extended or CCBot, collect content to train future models; blocking them keeps you out of training, not out of answers. Search bots, like OAI-SearchBot, Claude-SearchBot or PerplexityBot (plus Googlebot and Bingbot, of course), build the index the AI checks when answering. Block them and you stop showing up, and OpenAI says so plainly in its crawler documentation. Then there are the ones acting on behalf of a user, like ChatGPT-User, Claude-User or Perplexity-User, which come in because someone just asked something and the AI wants to read your page right then.
My default recommendation for a site that lives off being found is to let search and user bots through. Training is a business decision, and there are plenty of good reasons to shut it off, but make that call knowing what you're doing.
The problem is that often you're not the one deciding. You get blocked without knowing it.
Since July 2025, Cloudflare blocks AI crawlers by default on new domains, and it's been tightening those defaults ever since. If your Drupal site sits behind Cloudflare, go to the dashboard and check what you have enabled. Today, not tomorrow.
Then there's the WAF. Drupal has its own story here: lots of sites with faceted search have suffered traffic spikes that looked like a DDoS and turned out to be crawlers working through every possible facet combination from thousands of different IPs. The natural reaction is to add aggressive rules and block anything that smells like a bot. I get it, when the server is on fire nobody stops to tell user agents apart. But you end up taking out OAI-SearchBot, Claude-User and the agent a client sent to look at your pricing. The right fix is to tackle the specific problem: facets as form filters instead of links, modules like Facet Bot Blocker, and rate limiting on expensive endpoints. And leave the door open for everything else.
And then the classic, the inherited robots.txt. More than once I've found a Disallow: / that came from staging, or a "block all AI bots" list copied from a 2023 blog post that today is blocking search bots. With the RobotsTxt module you manage it from Drupal. Check it.
The dangerous part is that the consequences show up late. If an AI's bot can't read your site today, it won't have you in its index when, a few months from now, someone asks it about a provider like you. And you won't see it on any chart.
Agents coming on behalf of your client
This is what's going to grow the most, and what the fewest people are looking at.
I'm not just talking about the big companies' bots. I'm talking about agents run by any regular user. Someone telling their assistant "find me three Drupal maintenance companies, look at what they offer and tell me which one suits me". The agent opens a browser, sometimes in the cloud and sometimes on that person's own computer, visits your site, reads your services, maybe fills in the contact form, and comes back with a recommendation. I work with agents every day, and it's only a matter of time before they're used to pick providers, if it isn't happening already.
Some identify themselves. Others are literally a regular Chrome controlled by a model, with your future client's IP and cookies. If your site throws a CAPTCHA at every click or blocks it for behaving "weird", you're shutting the door on someone who came to decide whether to hire you.
What they need is the same thing a person needs. Load the page without hassle, find your services from the menu, read prices as text rather than baked into an image, understand a form because its fields have labels. Semantic HTML and accessibility again.
Stop looking at rankings and visits: look at conversions
This is the change I think is hardest to accept, both for those of us who build websites and for clients.
For years, whenever SEO came up, a lot of people looked at two things: where they ranked on Google and how many visits they got. Vanity metrics. Conversion was always there, but few people really measured how many of those visits ended up paying. Being number one on Google felt great, even if it didn't turn into clients.
With AI, those metrics make even less sense. An AI can read your site, recommend you in its answer and you'll never know, because the recommendation happens inside its platform. There's no "position" on ChatGPT you can check. Every answer is different depending on who's asking, how they ask, which model they use and what the assistant already knows about that person. And on top of that, they're conversations: someone starts asking about one thing and ends up getting recommendations for something they never searched for. The keyword, as we knew it, doesn't apply here. What you have is intent.
There are already tools promising to measure your visibility in AI. What they basically do is fire a bunch of made-up questions at several models and check whether you show up. They can give you some direction, but don't trust them too much: your client doesn't ask what you made up, and even if they did, they'd get a different answer.
The way I see it, GEO is more like a TV ad than a Google Ads campaign. You know being on TV helps you, you see sales go up, but you can't trace every client back to the ad they saw. AI works in a similar way. Someone asks ChatGPT for a provider, gets three names, searches yours on Google and lands on your site. In your analytics that shows up as a branded search or direct traffic. The AI doesn't appear anywhere, but it's the one that brought you the client.
That's why, to me, the metric that matters is conversion. It's entirely possible that in a few years you'll get quite a lot fewer visits than now and still make many more sales. Why? Because the people who arrive come much better filtered. Before, you'd get someone who'd done a generic search and was looking at ten sites at once. Now, quite often, whoever lands on your site has already asked an AI, got two or three recommendations and is coming in to confirm. Or an agent shows up that has already done the comparing for them. These are much more qualified visits, and people who search for you and find you are far more ready to hire you than people who see an ad among a hundred others.
If your website sells something, and if you're reading this it probably does, what matters is how many people end up getting in touch, asking for a quote or buying. Everything I've covered in this article is a change that improves that in the long run, because you reach more people through more paths, even if there's no chart telling you how many times an AI has recommended you.
In Drupal you can set this up without overcomplicating things:
- Mark the submissions of the forms that matter, contact or quote requests, as conversions in your analytics, whether that's GA4 or Matomo.
- Keep an eye on how branded searches and direct traffic evolve. If they go up without you doing anything special, something is recommending you.
- Segment visits coming from chatgpt.com, perplexity.ai, copilot.microsoft.com or gemini.google.com. ChatGPT also tends to add
utm_source=chatgpt.comto its links. - Add a "how did you hear about us?" field to your contact form with ChatGPT or another AI as an option. It's the most basic thing in the world and, for some clients, the only way to know.
- Check your server logs every now and then to make sure AI search bots are getting in and receiving a 200, not a 403.
You won't get the full picture, and you have to accept that. Attribution is going to be more statistical than exact. But you can know whether you're getting more leads and whether they're better than before.
And I have a feeling it won't always be like this. ChatGPT is already starting to show ads, and any platform that wants to sell advertising ends up giving companies data on their organic visibility, just like Google has Search Console. I'd guess that someday we'll have an official dashboard from each AI. Until then, conversions.
My quick checklist for an SEO and GEO-ready Drupal site
If you only keep one part of this article, make it this one:
- Pathauto and Redirect working, with no stray
/node/123URLs or redirect chains. - Metatag with consistent titles, descriptions and canonicals per content type.
- Schema.org Metatag with data that matches what's visible on the page.
- Sitemap submitted to Google and Bing, with IndexNow enabled.
- robots.txt reviewed, with search and user bots allowed.
- Cloudflare and WAF reviewed, with no "AI bot" blocking you didn't decide on.
- Content in the server-rendered HTML, with semantic markup.
- Caching, images and Core Web Vitals in order.
- Correct hreflang if the site is multilingual.
- Conversions and branded searches measured, not just visits and rankings.
Frequently asked questions about SEO and GEO in Drupal
What is GEO (Generative Engine Optimization)?
It's optimizing your website so that AI answer engines, like ChatGPT, Google's AI Overviews, Copilot, Claude or Perplexity, can find it, understand it, and cite or recommend it in their answers.
What's the difference between SEO and GEO?
With SEO, a human searches and lands on your site. With GEO, an AI lands on your site to answer a human. The technical foundation is almost the same, because AIs use search engine indexes or bots that work like search engines. To me, GEO is SEO applied to a new channel.
Do I need to do anything special in Drupal for GEO?
Not much beyond good technical SEO. Don't block AI search and user bots, review Cloudflare and your WAF, and make sure your content is in the server-rendered HTML.
Do I need an llms.txt file or Markdown versions of my pages?
For most websites, no. Google has said it doesn't use it and that no special files are needed to appear in its AI features. I only see the point for technical documentation portals.
If I block GPTBot, will I disappear from ChatGPT?
No. GPTBot is the training bot. What gives you visibility in ChatGPT search is OAI-SearchBot, which you control separately in robots.txt.
Which Drupal modules do I need for SEO and GEO?
The same ones for both: Pathauto, Redirect, Metatag, Schema.org Metatag, Simple XML Sitemap and RobotsTxt, plus properly configured caching.
How do I know if an AI is recommending me?
Today you can't know precisely. What you can do is measure conversions, keep an eye on branded searches and direct traffic, segment visits coming from AI platforms, and ask your clients how they found you.
In the end, they're all entities arriving at your website
If I have to stick my neck out: don't hire "GEO" as a separate service if your technical SEO isn't in good shape, because you'll pay twice for the same thing or pay for things you don't need. Fix your Drupal foundations first, then spend some time on what really is new. Which bots you let in, what your Cloudflare is doing on its own, and whether an agent would understand your site the same way a client does.
I don't buy the idea that SEO is dying either. AI isn't taking anything away from the web, it's opening new channels through which people can find you. Traffic might drop, but if what comes in converts better, the business comes out ahead.
Will all of this change in six months? In the details, probably. Bots change names, Cloudflare tweaks its defaults and someone will come up with another acronym. What I don't think will change is the underlying point: humans or bots, someone has to be able to get into your website and understand what you're saying. And if there's a client hiring you at the end of that road, everything else matters a lot less.
If you'd like me to take a look at your Drupal site, you know where to find me.