SEO and GEO audits for Google and AI search
Technical SEO, structured data and citable content for ChatGPT, Perplexity and Google AI Overviews. Audit and implementation from one developer.A website can rank on Google's first page and still never be named in ChatGPT, Perplexity or Google's AI Overviews. Classic SEO makes sure search engines find and understand a page. GEO, generative engine optimization, makes sure AI answers cite it. I audit both and then implement the results.
Both rest on the same foundation: HTML a crawler can read directly, unambiguous metadata and a clear structure. The difference is the end result. A search engine shows ten links. An answer engine reads several pages, writes its own answer and names only a few sources. A page gets into that selection when single paragraphs answer a question on their own and contain verifiable facts.
- Titles, descriptions and headings: length, search intent, no duplicates.
- Canonical URLs and hreflang on multilingual sites, so Google pairs the language versions.
- Sitemap, robots.txt and indexability: which pages belong in the index and which do not.
- Core Web Vitals (LCP, INP, CLS) from measurements rather than guesses, plus image formats and fonts.
- Internal links: which pages point to each other and where links lead nowhere.
JSON-LD tells machines who runs a website, what it offers and how its content connects. I check existing markup against schema.org and the Rich Results Test and add what is missing.
- Paragraphs that answer a question completely without the rest of the page.
- Numbers, versions, prices and sources inside the sentence instead of adjectives.
- Clear authorship: name, role, linked profiles, the same person on every page.
- Headings that work as a question or a plain statement, so answer engines can map sections.
- Structured data rendered on the server into the HTML. Many AI crawlers do not run JavaScript.
I add an llms.txt on request. It is a proposal, not a standard, and Google says it does not use it. So I treat it as an extra, not as a measure with a promised effect.
Before offering this, I went through jexcellence.de myself. Three points:
- Blog posts had a canonical URL but no hreflang. To Google, the German and English versions stood side by side without a link. Fixed: every post now names its translation.
- The privacy check had no structured data. A WebApplication schema now describes it and points to PrivaLint as its source code and to the post about it.
- The landing pages inserted their JSON-LD in the browser only. The delivered HTML carried it just as text inside React's data payload, so crawlers without JavaScript saw neither service nor price nor FAQ. Fixed: the schema now sits directly in the HTML.
None of this was visible on the page. All three would have shown up in the source code, which hardly anyone reads.
- Inventory: source code, metadata, structured data, load times and, if you grant access, Google Search Console.
- Report: every point with location, impact and effort, sorted by priority.
- Implementation: I fix the points myself, in your site's code or your CMS.
- Follow-up: Rich Results Test, measurements and index status after the changes.
Many SEO measures touch privacy: analytics, embedded maps, external fonts. The privacy check shows which of them load before consent. Looking at both together keeps an improvement in one from causing a problem in the other.
I quote a price after a first look at your website. Request an audit.