GEO (generative engine optimization): llms.txt, schema.org (Person, FAQPage, hasCredential), contenido extraíble y E-E-A-T para que la IA cite tu web.
El usuario ya no escribe tres palabras en Google y elige entre diez enlaces azules. Le pregunta a ChatGPT, a Perplexity o al panel de IA de Google, recibe una respuesta sintetizada y, con suerte, dos o tres fuentes citadas debajo. Si tu web no está entre esas fuentes, no existe. Da igual que estés tercero en el ranking clásico: el modelo no lo enseña.
Esa es la pregunta que importa ahora: no “cómo posiciono”, sino cómo consigo que un motor generativo me cite. A optimizar para ese escenario se le llama GEO (generative engine optimization), y aunque comparte cimientos con el SEO de toda la vida, las reglas del juego cambian lo suficiente como para que merezca su propia disciplina. Este artículo es lo que aplico —en este mismo portfolio y en proyectos de clientes— para que la respuesta sea sí.
Qué es GEO y en qué se diferencia del SEO clásico
El SEO tradicional optimiza para un rankeador: un algoritmo ordena URLs y el usuario elige. GEO optimiza para un lector-sintetizador: un LLM lee, entiende, resume y decide a quién atribuye lo que dice. Tres consecuencias prácticas:
- El clic deja de ser el objetivo principal. El objetivo es la cita: que tu marca o tu nombre aparezca en la respuesta y, si hay enlace, que sea el tuyo. Una mención sin clic ya construye autoridad.
- El modelo no “ve” tu CSS bonito. Consume texto plano y datos estructurados. Lo que no pueda extraer y reformular limpiamente, lo ignora.
- La confianza se vuelve explícita. Un LLM tiende a citar fuentes que puede verificar: con autor identificable, credenciales, fechas y datos contrastables. Ahí entra E-E-A-T (experiencia, pericia, autoridad y fiabilidad) como criterio operativo, no como eslogan.
GEO no sustituye al SEO: lo extiende. Sigues necesitando que te rastreen, que cargues rápido y que el HTML sea semántico —exactamente la base que defiendo en webs rápidas con Astro—. Sobre esos cimientos, GEO añade tres capas: acceso para la IA, estructura legible por máquinas y señales de confianza.
llms.txt: el archivo que le dice a la IA qué leer
Igual que robots.txt orienta a los crawlers de búsqueda y sitemap.xml les da el índice, llms.txt es una convención emergente para orientar a los modelos: un fichero Markdown en la raíz del dominio (/llms.txt) que resume qué es tu sitio y dónde está la información buena, sin que el modelo tenga que adivinarlo entre menús, banners y footers.
La idea es ofrecer una versión curada y en texto plano de lo que importa. Un esqueleto razonable:
# Alberto Guinda — AI Engineer & Full-Stack Developer
> Llevo sistemas de IA a producción: visión por computador (YOLOv8),
> agentes LLM y gemelos digitales (BIM + GIS) sobre infraestructura crítica.
## Proyectos
- [RecruitSecure AI](/projects/cv-finder-ai): búsqueda semántica de
candidatos, IA 100% local en el navegador, GDPR por diseño.
- [DevFlow AI](/projects/devflow-ai): suite de 20 herramientas para devs
con cadena de proveedores LLM con fallback.
## Contacto
- Email y formulario en /#contact
Dos matices honestos para no vender humo:
- Adopción desigual. Que un archivo exista no obliga a nadie a leerlo. El soporte de
llms.txtentre proveedores aún es parcial y conviene tratarlo como una apuesta de bajo coste y alta opcionalidad, no como una bala de plata. {/* Especificación oficial: URL pendiente de confirmar */} - Coste marginal cero. En un sitio generado estáticamente como este —Astro en build—, publicar
/llms.txtes un endpoint más que se regenera con el contenido. El riesgo de hacerlo es nulo; el de no hacerlo, quedarte fuera si la convención cuaja.
Mientras tanto, lo que sí lee hoy cualquier rastreador es tu HTML. Y ahí es donde se gana de verdad.
Schema.org: hablarle a la IA en su idioma
Un LLM que rastrea tu página agradece que le des los hechos ya estructurados en lugar de obligarle a inferirlos de la maquetación. JSON-LD con schema.org es justamente eso: un bloque de datos legible por máquinas que afirma, sin ambigüedad, quién eres, qué ofreces y qué te avala. Para un portfolio profesional, tres tipos hacen casi todo el trabajo.
Person + hasCredential: tu identidad verificable
El tipo Person declara la entidad detrás del sitio, y la propiedad hasCredential enlaza credenciales formales —un activo de E-E-A-T directo. En lugar de que el modelo “intuya” que tienes un máster, se lo afirmas en estructura:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Alberto Guinda Sevilla",
"jobTitle": "AI Engineer & Full-Stack Developer",
"knowsAbout": ["Computer Vision", "LLM Agents", "Digital Twin", "BIM/GIS"],
"hasCredential": {
"@type": "EducationalOccupationalCredential",
"credentialCategory": "degree",
"name": "Máster en Desarrollo con IA"
},
"sameAs": [
"https://github.com/albertoguinda",
"https://www.linkedin.com/in/albertoguindasevilla/"
]
}
</script>
El sameAs es clave: conecta tu identidad en el sitio con tus perfiles públicos, y eso ayuda al modelo a consolidar entidades —entender que el Alberto del portfolio, el de GitHub y el de LinkedIn son el mismo— y a confiar más en la atribución. La página de certificaciones de este portfolio existe en parte para alimentar esa cadena de credenciales.
FAQPage: respuestas listas para citar
FAQPage marca pares pregunta-respuesta. Es, posiblemente, el formato que un motor generativo encuentra más fácil de reutilizar, porque ya viene en su unidad natural: una pregunta y su respuesta autocontenida. Si redactas tus FAQ como respuestas breves, completas y verificables, le estás sirviendo al modelo el fragmento exacto que querría citar.
El detalle que marca la diferencia: coherencia
El schema no puede contradecir lo que ve el usuario. Si el JSON-LD dice una cosa y el texto visible dice otra, no solo pierdes el beneficio: te arriesgas a que te penalicen por marcado engañoso. La regla es simple: el dato estructurado describe el contenido real, no lo maquilla.
Contenido extraíble: escribir para que la máquina entienda
Aquí está la parte que ninguna etiqueta arregla por ti. Un motor generativo cita mejor el contenido que puede extraer en fragmentos autocontenidos. Patrones que aplico al redactar:
- Responde la pregunta en la primera frase del bloque. Nada de tres párrafos de contexto antes del dato. El modelo —y el lector con prisa— quieren la respuesta arriba, y luego el desarrollo. Es el principio de la pirámide invertida llevado a la era de la IA.
- Encabezados que son preguntas o afirmaciones claras. Un H2 como “¿Qué es llms.txt?” o “Schema.org: hablarle a la IA en su idioma” le dice al modelo exactamente qué resuelve esa sección. Un H2 como “Reflexiones” no le dice nada.
- Datos concretos sobre adjetivos. “IA 100% local en el navegador con Transformers.js” se cita; “solución innovadora y potente” se descarta. Los hechos verificables son el combustible de la confianza.
- Fragmentos que sobreviven al copy-paste. Cada párrafo importante debería tener sentido sacado de contexto, porque así es exactamente como un LLM lo va a usar.
Esto enlaza con algo que ya defendí sobre RAG en español: un buen sistema de recuperación trocea el corpus en fragmentos limpios y autocontenidos. Cuando escribes para GEO, estás haciendo ese trabajo por adelantado para los modelos que te van a rastrear. Tu página bien estructurada es un corpus pre-chunkeado.
E-E-A-T: por qué la IA confía en unas fuentes y no en otras
Un LLM, igual que un editor humano, prefiere atribuir a quien parece saber de qué habla. Las señales que puedes hacer explícitas:
- Experiencia (la primera E, la nueva). Demuestra que has hecho lo que cuentas. No escribo sobre cadenas de fallback de LLM en abstracto: lo construí en DevFlow AI y en la propia terminal IA de este portfolio. El “yo lo hice” pesa más que el “esto se hace así”.
- Pericia. Autor identificado, biografía, credenciales enlazadas vía
hasCredential. Un texto firmado por una entidad verificable es más citable que un muro de contenido anónimo. - Autoridad. Enlaces entrantes, menciones, perfiles consolidados con
sameAs. La autoridad se construye fuera de tu web tanto como dentro. - Fiabilidad. Fechas visibles (
pubDate), fuentes citadas, HTTPS, y la honestidad de decir “esto aún no está consolidado” —como acabo de hacer conllms.txt—. Un texto que reconoce sus límites es, paradójicamente, más fiable.
La trampa a evitar: E-E-A-T no se finge con etiquetas. Puedes declarar hasCredential en el schema, pero si el contenido no demuestra pericia real, el efecto se diluye en cuanto el modelo cruza señales. La estructura amplifica la sustancia; no la sustituye.
El stack GEO, de una pasada
Para un sitio que quiera ser citado por motores generativos en 2026, este es el orden de prioridades tal y como lo aplicaría —de mayor a menor retorno:
- HTML semántico y rápido. Sin base rastreable, lo demás no importa. Astro estático es un punto de partida ideal.
- Schema.org JSON-LD:
Person+hasCredential,FAQPage, y los tipos que encajen con tu contenido. Coherente con lo visible, siempre. - Contenido extraíble: respuesta-primero, encabezados-pregunta, datos concretos, fragmentos autocontenidos.
- E-E-A-T explícito: autoría, credenciales enlazadas,
sameAs, fechas, honestidad. llms.txt: apuesta barata de cara al futuro, sin coste si ya generas el sitio en build.
Lo bueno de este orden es que los cuatro primeros puntos mejoran también tu SEO clásico. No estás apostando contra Google para ganar en Perplexity: estás construyendo una base que sirve para ambos. El quinto es opcionalidad pura.
¿Quieres que la IA cite tu web, no la de tu competencia?
GEO es donde el SEO y la ingeniería de IA se cruzan, y es justo mi terreno: entiendo cómo un LLM lee, recupera y atribuye, y sé traducir eso a schema.org, contenido extraíble y arquitectura de sitio. Si quieres una auditoría GEO de tu web —o construirla desde cero para que los motores generativos te citen— hablemos.
Artículos relacionados
IA resiliente y gratis: fallback entre LLMs sin caer
Cómo monté un fallback entre LLMs gratis (Groq, OpenRouter, Pollinations) con degradación elegante: capas free encadenadas que no caen por cuota ni timeout.
Leer artículoClaude Code y MCP: agentes LLM en tu ciclo de desarrollo
Cómo integro agentes LLM con Claude Code y el Model Context Protocol (MCP) en el desarrollo real: contexto, herramientas y los límites que conviene poner.
Leer artículoRAG en español que sí funciona: guía práctica
RAG en español de verdad: arquitectura, chunking, embeddings con FastEmbed/ONNX, reranking, evaluación de recuperación y cómo frenar alucinaciones.
Leer artículo