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ásico | GEO | |
|---|---|---|
| Lector principal | Crawler + humano en una SERP | LLM que sintetiza una respuesta |
| Unidad que compite | La página | El fragmento citable |
| Señales clave | Enlaces, rendimiento, keywords | Claridad, estructura, entidad del autor, acceso al texto |
| Éxito | Clic | Cita 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.xmlcon 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
FAQPageen 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.txtpermite a los crawlers de IA y apunta al sitemap. -
sitemap.xmlactualizado 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.txtyllms-full.txtpublicados. -
langcorrecto 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.