This is the exact list of technical changes your website needs so that ChatGPT, Claude and Perplexity can cite you. No marketing, just implementation. 12 critical points, 18 secondary ones. If you have them all, you’ve covered 80% of the GEO foundation work.
TL;DR
- 12 critical changes cover 80% of the value: schema, llms.txt, robots.txt, FAQPage, Person, Organization
- Realistic implementation: 12-20 technical hours for a Next.js or WordPress site, 30-40 hours if it’s a custom legacy build
- Without a complete technical foundation, everything else (content + outreach) delivers 3-5x less
The minimum technical stack for GEO
Before the checklist, the basic requirements:
- Your own website on your own domain: subdomains of SaaS or third-party landing page builders have weakened GEO
- Semantic HTML (no SPAs without SSR): AI crawlers read HTML, not executed JS
- HTTPS + decent Core Web Vitals: LCP < 2.5s, CLS < 0.1 (you’re penalised if you fail)
- Dynamic Sitemap.xml: regenerated automatically whenever you add content
- Access to
<head>and<body>: if your CMS won’t let you edit<head>, you have a serious problem
The 12 critical points (without these, you won’t rank)
1. Schema.org Organization
{
"@type": "Organization",
"@id": "https://tu-dominio.com/#organization",
"name": "Nombre Exacto",
"url": "https://tu-dominio.com",
"logo": "https://tu-dominio.com/logo.png",
"description": "Frase canónica de 1-2 líneas",
"foundingDate": "YYYY",
"founder": { "@type": "Person", "name": "Nombre Fundador" },
"address": { "@type": "PostalAddress", "addressLocality": "Ciudad", "addressCountry": "ES" },
"knowsAbout": ["Tema 1", "Tema 2", "Tema 3"],
"sameAs": ["https://linkedin.com/company/...", "https://twitter.com/..."]
}
knowsAbout is the most underused property. LLMs use it literally to classify you by area of expertise.
2. Schema.org Person for founders/authors
Apply on /sobre/ or /about/:
{
"@type": "Person",
"@id": "https://tu-dominio.com/sobre/#tu-nombre",
"name": "Nombre Completo",
"jobTitle": "Rol exacto",
"image": "https://tu-dominio.com/foto.webp",
"sameAs": ["https://linkedin.com/in/...", "https://github.com/..."],
"knowsAbout": ["Skill 1", "Skill 2"],
"worksFor": { "@id": "https://tu-dominio.com/#organization" }
}
Without Person schema, LLMs can’t cite you as a human authority in your niche.
3. Service schema on every service page
Every /servicios/X/ must have:
{
"@type": "Service",
"name": "Nombre exacto del servicio",
"provider": { "@id": "https://tu-dominio.com/#organization" },
"description": "Qué incluye, para quién, qué resuelve",
"offers": { "@type": "Offer", "price": "200", "priceCurrency": "EUR" },
"areaServed": "ES"
}
Without Service schema, service pages are treated as generic content.
4. FAQPage schema on service pages + blog
5+ real Q&As, with factual answers (not marketing):
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "¿Cuánto cuesta X?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Respuesta concreta con cifras reales."
}
}
]
}
LLMs cite FAQs literally. It’s the fastest way to appear in answers to queries like “how much does it cost”, “how does it work”, “difference between”.
5. llms.txt in the root
A standardised file at https://tu-dominio.com/llms.txt:
# Nombre Empresa
> Frase canónica.
## Empresa
- Razón: ...
- NIF: ...
- Sede: ...
## Servicios
- Servicio 1 — descripción
- Servicio 2 — descripción
## Contenido (blog)
- https://tu-dominio.com/blog/articulo-1/
- https://tu-dominio.com/blog/articulo-2/
It’s the emerging standard that ChatGPT, Claude and Perplexity respect for understanding your site quickly. Without llms.txt, you depend on them crawling everything and deducing the structure.
6. robots.txt allowing AI bots
User-agent: GPTBot
Allow: /
User-agent: Claude-Web
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Google-Extended
Allow: /
User-agent: anthropic-ai
Allow: /
Sitemap: https://tu-dominio.com/sitemap.xml
If you block these bots (the default configuration of some firewalls/CDNs), your site won’t make it into LLMs. Check explicitly.
7. Dynamic Sitemap.xml
Generated automatically whenever you add content. In Next.js 16:
// app/sitemap.ts
export default function sitemap(): MetadataRoute.Sitemap {
return [
{ url: 'https://tu-dominio.com/', lastModified: new Date(), priority: 1 },
// generar entries por blog post + servicios + páginas
];
}
Without a sitemap, or with a static one, crawlers take 2-4x longer to index new content.
8. Title + meta description with the main keyword
Every page must have:
<title>: 50-60 characters, include keyword + brand<meta name="description">: 140-160 characters, include keyword + CTA- For services:
[Service] | [Brand]with a consistent brand
In Next.js 16:
export const metadata: Metadata = {
title: { default: "...", template: "%s | MARCA" },
description: "..."
}
9. Canonical URL on every page
<link rel="canonical" href="https://tu-dominio.com/ruta-canonica/" />
Without a canonical, LLMs (and Google) treat duplicates as independent content, diluting authority.
10. OpenGraph + Twitter Card
Minimum:
<meta property="og:title" content="..." />
<meta property="og:description" content="..." />
<meta property="og:image" content="..." />
<meta property="og:url" content="..." />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary_large_image" />
LLMs use them for previews and summaries when citing.
11. Consistent sameAs in Person + Organization
sameAs must point to VERIFIED external profiles for your brand:
- LinkedIn (company + personal)
- X/Twitter
- GitHub (if applicable)
- Crunchbase (if applicable)
- Wikidata (if you have an entry)
URLs must be exact, with no typos. A broken URL in sameAs invalidates the LLM’s identity verification.
12. Clean URL structure
- Descriptive slugs:
/blog/como-aparecer-en-chatgpt/not/?p=12345 - Consistent trailing slash across the whole site
- No tracking parameters in canonical URLs
- HTTPS mandatory, HTTP → HTTPS redirect
Ugly URLs are a moderate penalty in GEO; very important in classic SEO.
The 18 secondary points (incremental improvements)
- Author schema on every blog post
- Article schema with datePublished, dateModified
- HowTo schema for tutorials
- BreadcrumbList schema in navigation
- AggregateRating schema if you have real reviews
- VideoObject schema if you have embedded video
- Descriptive alt text on all images
- Semantic headings (a single h1, h2 → h3 hierarchy)
- Strategic internal linking between related articles
- WebP/AVIF for images (reduces LCP)
- Lazy loading of below-the-fold images
- font-display: swap to avoid FOUT
- Preload of critical fonts
- DNS prefetch for third parties
- gzip/brotli compression enabled
- Correct cache headers for static assets
- HSTS header to force HTTPS
- Restrictive Content Security Policy
Validation checklist
After implementing, verify:
| Check | Tool |
|---|---|
| Valid Schema.org | https://validator.schema.org |
| Rich Results test | https://search.google.com/test/rich-results |
| llms.txt accessible | curl https://tu-dominio.com/llms.txt |
| robots.txt allows bots | curl https://tu-dominio.com/robots.txt |
| Sitemap generated | curl https://tu-dominio.com/sitemap.xml |
| Correct canonical | inspect HTML head |
| Valid OpenGraph | https://www.opengraph.xyz |
| Lighthouse SEO score | Chrome DevTools > Lighthouse |
If the 12 critical points pass, the technical foundation is complete.
Typical implementation mistakes
| Mistake | Consequence |
|---|---|
| Schema only on the homepage, not on internal pages | LLMs see one entity but not specific services |
| FAQPage with generic marketing questions | LLMs don’t cite them; they prefer factual answers |
sameAs with broken URLs or typos | Unverified identity, you don’t rank as an entity |
| llms.txt copied from another company without adapting it | Incorrect information, you damage your credibility |
| Blocking AI bots by mistake in the CDN/firewall | Your site simply doesn’t make it into LLMs, with no warning |
| Correct schema but no content behind it | Schema without factual content = not cited |
How long implementation takes
| Site type | Technical hours |
|---|---|
| Modern Next.js / Astro / Hugo | 8-12h |
| WordPress with a good theme | 12-20h |
| Custom Webflow / Wix | 15-25h |
| Legacy / custom CMS | 30-50h |
| Pure static HTML site | 6-10h |
Multiply by 1.5x if you’ve never worked with schema.org or JSON-LD.
DIY vs agency
The technical foundation is the most automatable part of GEO. If you have dev skills, do it yourself. The mistake is assuming that once the foundation is in place, it’s done: the foundation is 20% of the total work. Content + outreach is where most people fail because of time.
If your site is Next.js / Astro and you have 12-20 free hours this month, a DIY foundation is viable. If it’s legacy WordPress, outsource the foundation and do the content yourself.
FAQ
How many schemas can I have on a single page?
There’s no technical limit. Recommended: use @graph to group them in a single <script>. Example: a homepage with Organization + LocalBusiness + FAQPage in the same @graph array.
Can I use online schema generators?
For simple Person/Organization, yes. For Service + FAQPage and complex cases, it’s better to write it by hand. Generators tend to produce over-complete JSON-LD with irrelevant properties.
What if my site is very large (1000+ pages)?
The foundation is applied systemically: root layout + reusable schema component + dynamic sitemap. Once configured, it scales automatically. The effort is flat.
Do I need Google Search Console and Bing Webmaster?
Yes, both. Search Console for tracking on Google. Bing Webmaster is CRITICAL for GEO because ChatGPT Search is based on Bing. Without a verified Bing Webmaster, ChatGPT indexes you more slowly.
Does Schema.org change much from year to year?
It’s stable on the basics (Organization, Person, Service, FAQPage). The newer properties (knowsAbout, knowsLanguage) arrived in 2022-2024. Once implemented properly, it changes little.
Conclusion
12 critical points cover 80% of the technical GEO foundation. Implementing it well speeds up the results of content + outreach by 3-5x. If you’d rather not do it alone, STAKKER SYSTEMS implements the complete foundation in 1-2 weeks: scope and cost are agreed after a free diagnostic.