GEO Foundation: the technical checklist for getting featured in ChatGPT (2026)

Samuel Martínez, 30 April 2026. Technical. 8 min read. Translated from the Spanish original.

The exact list of 12 critical technical changes plus 18 secondary ones so ChatGPT, Claude and Perplexity can cite you. Schema.org, llms.txt, robots.txt, FAQPage, validation.

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

The minimum technical stack for GEO

Before the checklist, the basic requirements:

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:

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:

URLs must be exact, with no typos. A broken URL in sameAs invalidates the LLM’s identity verification.

12. Clean URL structure

Ugly URLs are a moderate penalty in GEO; very important in classic SEO.

The 18 secondary points (incremental improvements)

  1. Author schema on every blog post
  2. Article schema with datePublished, dateModified
  3. HowTo schema for tutorials
  4. BreadcrumbList schema in navigation
  5. AggregateRating schema if you have real reviews
  6. VideoObject schema if you have embedded video
  7. Descriptive alt text on all images
  8. Semantic headings (a single h1, h2 → h3 hierarchy)
  9. Strategic internal linking between related articles
  10. WebP/AVIF for images (reduces LCP)
  11. Lazy loading of below-the-fold images
  12. font-display: swap to avoid FOUT
  13. Preload of critical fonts
  14. DNS prefetch for third parties
  15. gzip/brotli compression enabled
  16. Correct cache headers for static assets
  17. HSTS header to force HTTPS
  18. Restrictive Content Security Policy

Validation checklist

After implementing, verify:

CheckTool
Valid Schema.orghttps://validator.schema.org
Rich Results testhttps://search.google.com/test/rich-results
llms.txt accessiblecurl https://tu-dominio.com/llms.txt
robots.txt allows botscurl https://tu-dominio.com/robots.txt
Sitemap generatedcurl https://tu-dominio.com/sitemap.xml
Correct canonicalinspect HTML head
Valid OpenGraphhttps://www.opengraph.xyz
Lighthouse SEO scoreChrome DevTools > Lighthouse

If the 12 critical points pass, the technical foundation is complete.

Typical implementation mistakes

MistakeConsequence
Schema only on the homepage, not on internal pagesLLMs see one entity but not specific services
FAQPage with generic marketing questionsLLMs don’t cite them; they prefer factual answers
sameAs with broken URLs or typosUnverified identity, you don’t rank as an entity
llms.txt copied from another company without adapting itIncorrect information, you damage your credibility
Blocking AI bots by mistake in the CDN/firewallYour site simply doesn’t make it into LLMs, with no warning
Correct schema but no content behind itSchema without factual content = not cited

How long implementation takes

Site typeTechnical hours
Modern Next.js / Astro / Hugo8-12h
WordPress with a good theme12-20h
Custom Webflow / Wix15-25h
Legacy / custom CMS30-50h
Pure static HTML site6-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.