Cómo este sitio está optimizado para motores generativos (GEO)

TL;DR: Este sitio trata a los modelos de lenguaje como lectores de primera clase. Sirve llms.txt y llms-full.txt, un grafo JSON-LD de schema.org completamente enlazado (Person, WebSite, WebApplication, ScholarlyArticle, FAQPage, BlogPosting con articleBody íntegro), feeds RSS y JSON con contenido completo, reglas explícitas de robots que dan la bienvenida a los crawlers de IA, y todas las páginas pre-renderizadas como HTML estático — todo validado en cada build por un script automatizado seo:check.

Por qué GEO

La búsqueda se está partiendo en dos: crawlers clásicos que rankean páginas, y motores generativos que responden preguntas directamente. Generative Engine Optimization (GEO) significa hacer que tu contenido sea fácil de ingerir, fundamentar y citar por los LLMs. Este sitio es un ejemplo funcionando.

Qué está implementado aquí

Archivos de perfil legibles por máquinas. llms.txt sigue la convención de llmstxt.org: un mapa compacto del sitio con secciones, proyectos, publicaciones, FAQ y feeds. llms-full.txt es el perfil completo en texto plano — bio, experiencia, educación, publicaciones con citas, docencia, premios, habilidades — para ingestión directa.

Un grafo JSON-LD enlazado. Cada página emite datos estructurados de schema.org conectados por @ids estables: un nodo Person referenciado desde WebSite, ProfilePage, WebApplication (uno por proyecto, con featureList y offers), ScholarlyArticle/Report/Chapter para publicaciones, FAQPage con nodos Question bilingües, y BlogPosting que incluye el articleBody íntegro, selectores speakable, keywords y tiempo de lectura.

Feeds con contenido completo. El feed RSS lleva content:encoded con el HTML completo de cada post, y el JSON Feed lo replica en JSON Feed 1.1.

Política de crawlers. robots.txt da la bienvenida explícita a los crawlers de IA — GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot — en vez de dejarlos a las reglas por defecto.

HTML estático. Todas las rutas están pre-renderizadas, así que los crawlers sin JavaScript ven el mismo contenido que los usuarios — verificado tras cada cambio.

Validación continua. Un script npm run seo:check parsea cada bloque JSON-LD de la salida del build, exige los campos requeridos por tipo de nodo y verifica que cada link interno resuelva. Corre antes de cada commit que toca SEO.

La conclusión

GEO no es un truco; es disciplina de publicación. Estructura tus hechos una vez, en archivos de datos; deriva HTML, JSON-LD, feeds y mirrors de texto desde esa única fuente; y valida la salida mecánicamente.