GEO: cómo hice mi portafolio legible para agentes de IA

Respuesta corta: GEO (Generative Engine Optimization) es hacer que tu contenido sea fácil de encontrar, entender y citar para agentes de IA. En este sitio lo implementé con cinco piezas: robots.txt que permite explícitamente a los crawlers de IA, sitemap.xml generado en build, datos estructurados JSON-LD (Person, WebSite, BlogPosting, FAQPage, BreadcrumbList), llms.txt + llms-full.txt, y artículos escritos con respuesta directa al inicio y preguntas frecuentes al final.

Escribo para que el conocimiento circule. En 2026 una parte enorme de la gente ya no lee resultados de búsqueda: le pregunta a un agente. Si el agente no puede leerte, no existes en esa conversación.

SEO vs GEO

SEO clásicoGEO
Lector principalCrawler + humano en una SERPLLM que sintetiza una respuesta
Unidad que compiteLa páginaEl fragmento citable
Señales claveEnlaces, rendimiento, keywordsClaridad, estructura, entidad del autor, acceso al texto
ÉxitoClicCita con enlace y atribución

No se reemplazan: GEO se construye sobre un SEO técnico sano.

1. robots.txt: invitar a los agentes

Muchos sitios bloquean a los bots de IA por defecto. Si tu objetivo es compartir, haz lo contrario y sé explícito:

User-agent: GPTBot
User-agent: ClaudeBot
User-agent: PerplexityBot
User-agent: Google-Extended
Allow: /

Sitemap: https://nathanlazo.website/sitemap.xml

2. Una entidad clara: quién escribe

Los motores de respuesta razonan sobre entidades. Defino una sola entidad Person con @id estable, perfiles (sameAs) y temas (knowsAbout), y cada artículo la referencia como autor:

{
  "@type": "BlogPosting",
  "headline": "GEO: cómo hice mi portafolio legible para agentes de IA",
  "datePublished": "2026-10-20",
  "inLanguage": "es",
  "author": { "@id": "https://nathanlazo.website/#person" }
}

Así cada post suma autoridad a la misma identidad en lugar de quedar huérfano.

3. Una sola fuente de verdad para metadatos

En Next.js (Pages Router) centralicé todo en dos piezas:

  • src/lib/site.js: URL, autor, perfiles, temas y rutas.
  • src/components/Seo.jsx: título, descripción, canonical, Open Graph, Twitter y JSON-LD en un componente.

Cada página declara solo lo suyo:

<Seo title="Articles" description="Long-form writing on AI agents, WebGPU..." />

Menos lugares donde equivocarse = menos metadatos inconsistentes (en mi caso había descripciones heredadas de la plantilla con el nombre de otra persona).

4. llms.txt y llms-full.txt generados en build

Al compilar, el mismo paso que genera el RSS escribe tres archivos:

  • sitemap.xml con todas las rutas y fechas de los artículos.
  • llms.txt: resumen del sitio, páginas clave y un índice de artículos con descripción.
  • llms-full.txt: el texto completo de cada artículo en markdown limpio, con URL, autor y fecha.

Un agente que llega al sitio puede entenderlo completo en una sola lectura, sin ejecutar JavaScript ni adivinar qué es navegación y qué es contenido.

5. Escribir para ser citado

La técnica más rentable no es técnica:

  • Respuesta directa en el primer párrafo. Lo que un agente cita es lo que responde la pregunta sin rodeos.
  • Encabezados que son preguntas o conceptos. Facilitan extraer fragmentos.
  • Definiciones explícitas. "X es…" es la frase más citable que existe.
  • Tablas para comparaciones. Los modelos las resumen muy bien.
  • FAQ al final, también expuesta como FAQPage en JSON-LD.
  • Fechas y autor visibles. La frescura y la atribución importan.
  • Enlaces internos entre artículos relacionados para que el grafo del sitio tenga sentido.

Checklist GEO

  • robots.txt permite a los crawlers de IA y apunta al sitemap.
  • sitemap.xml actualizado en cada build.
  • Canonical, Open Graph y Twitter en todas las páginas.
  • JSON-LD: Person + WebSite global, BlogPosting y BreadcrumbList por artículo, FAQPage si aplica.
  • llms.txt y llms-full.txt publicados.
  • lang correcto por artículo.
  • Respuesta directa al inicio y FAQ al final de cada post.

Cierre

GEO no es engañar a un algoritmo; es ser la fuente más clara sobre lo que sabes. Si escribes para enseñar, haz que tu conocimiento sea legible para humanos y para máquinas. Es la forma más simple de devolverle algo a la comunidad que te enseñó.

Más del tema: cómo construí Roger-arq y WebGPU y modelado 3D en la web.

Preguntas frecuentes

¿Qué es GEO (Generative Engine Optimization)?

Es optimizar contenido para que motores de respuesta y agentes de IA (ChatGPT, Claude, Perplexity, Gemini) lo encuentren, lo entiendan y lo citen. Complementa al SEO clásico: además de rankear en una lista de enlaces, buscas ser la fuente de la respuesta.

¿Qué es llms.txt?

Una propuesta de estándar: un archivo markdown en la raíz del sitio con un resumen y un índice curado de las páginas importantes, pensado para que un LLM entienda el sitio sin parsear HTML. Suele acompañarse de llms-full.txt con el contenido completo.

¿Debo bloquear o permitir a los crawlers de IA?

Depende del objetivo. Si tu contenido existe para compartir conocimiento y construir reputación, permitirlos explícitamente en robots.txt (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, etc.) aumenta la probabilidad de que te citen.