Auditoría GEO: ¿puede la IA leer, entender y citar esta web?
Los motores de respuesta (ChatGPT, Perplexity, Gemini, Claude) no posicionan
páginas: eligen fuentes. Para ser elegido hay que ser accesible, legible como
entidad, y tener algo citable. Esta skill lo comprueba sobre una URL.
Cuándo usarla y cuándo no
Úsala cuando el usuario quiera saber si su web (o la de un cliente) está
preparada para los motores de IA, o cuando pregunte por rastreadores,
llms.txt o por qué la IA no le recomienda.
No la uses para:
- Medir posiciones en Google, tráfico ni palabras clave. Eso es SEO clásico.
- Medir velocidad o Core Web Vitals. Para eso está PageSpeed y, para
explicarlo al cliente,
traducir-a-cliente.
- Generar el JSON-LD. Si falta schema, esta skill lo detecta y recomienda;
schema-negocio-local lo genera.
Flujo
- Obtener los datos.
- Si hay entorno de ejecución:
python3 scripts/geo_check.py https://ejemplo.es
devuelve un JSON con todo lo que la skill necesita. Sin dependencias
externas. Si la web no responde o bloquea el user-agent, el script lo
dice claramente; no interpretes un fallo de red como "la web bloquea a la
IA".
- Si no hay entorno: pide al usuario el HTML de la portada y el contenido
de
/robots.txt, o léelos con las herramientas de navegación que tengas.
El script acepta también --html archivo.html --robots robots.txt para
analizar archivos locales.
- Aplicar los criterios de
references/senales-ia.md, dimensión por
dimensión, anotando la evidencia literal (qué línea del robots.txt, qué
@type, cuántos caracteres).
- Puntuar y redactar el informe con el formato de abajo.
- Si el usuario puede lanzar una consulta a un motor de IA, proponerle la
pregunta tipo cliente (ver dimensión 5) y clasificar la respuesta.
Las cinco dimensiones y su peso
Pesos provisionales hasta que se cierre el informe premium de
seosindrama.com; están marcados así en el informe.
| # |
Dimensión |
Peso |
Qué comprueba |
| 1 |
Acceso de rastreadores de IA |
25 |
robots.txt no bloquea a los bots de búsqueda/citación (OAI-SearchBot, Claude-SearchBot, PerplexityBot, etc.). Bloquear los de entrenamiento (GPTBot, ClaudeBot, CCBot) no penaliza. llms.txt suma poco pero suma. Detalle en references/rastreadores.md |
| 2 |
Datos estructurados |
20 |
Hay JSON-LD válido; el @type corresponde al negocio; tiene name, address, telephone, url; hay FAQPage si la página responde preguntas |
| 3 |
Contenido citable |
25 |
Texto visible suficiente (umbral: 5.000 caracteres de HTML como mínimo, mejor medir texto visible), estructura de encabezados, preguntas en encabezados con respuesta directa debajo (answer first), datos propios que un motor pueda citar (information gain): cifras, precios, comparativas, casos |
| 4 |
Entidad consistente |
20 |
Nombre, dirección y teléfono (NAP) aparecen en el HTML, coinciden con el JSON-LD y con lo que el usuario dice tener en Google Business Profile. Autor y fecha en contenidos editoriales |
| 5 |
Visibilidad actual |
10 |
Solo si el usuario lanza la pregunta tipo cliente a un motor y pega la respuesta. La skill no llama a APIs. Si no hay dato, esta dimensión se marca "no medida" y la puntuación se calcula sobre 90 |
Puntuación: cada dimensión se valora 0–100 con los criterios de
senales-ia.md y se pondera. Se presenta como "X / 100 (provisional)".
Dimensión 5: la pregunta tipo cliente
Se construye así: recomiéndame las mejores opciones de <servicio> en <localidad>. Ejemplo: "recomiéndame las mejores opciones de fisioterapia en
Valladolid". Variantes de marca a comprobar en la respuesta: nombre exacto,
nombre sin forma jurídica (S.L., S.A.), nombre sin tildes, dominio. La
clasificación:
- Aparece: el nombre o el dominio están en la respuesta como
recomendación.
- Mención parcial: aparece una variante, o aparece pero no como
recomendación (por ejemplo, en una lista larga sin comentario).
- No aparece.
Formato del informe
# Auditoría GEO de ejemplo.es
Fecha · URL analizada · CMS detectado (si hay firma) · Puntuación: 62 / 100 (provisional)
## Resumen
Tres frases: qué está bien, qué es lo más urgente, qué tipo de negocio parece
ser según las señales encontradas.
## Resultado por dimensión
| Dimensión | Estado | Evidencia |
|---|---|---|
| Acceso de rastreadores | ✅ Correcto | robots.txt sin reglas para bots de IA; llms.txt no existe (404) |
| Datos estructurados | ⚠️ Parcial | JSON-LD con @type WebSite; falta LocalBusiness |
| Contenido citable | ❌ Insuficiente | 1.870 caracteres de texto visible; 0 preguntas en encabezados |
| Entidad consistente | ⚠️ Parcial | Teléfono detectado (+34 983 ...); dirección no encontrada |
| Visibilidad actual | – No medida | |
## Plan de acción
Ordenado por prioridad. Cada acción: qué hacer, dificultad (fácil / media /
necesita desarrollador), pasos, y cómo validar.
### 1. Añadir JSON-LD LocalBusiness — dificultad: fácil
...
## Cómo validar cuando esté hecho
Volver a ejecutar el script; probar la pregunta tipo cliente en dos motores.
La evidencia siempre es literal: qué se encontró en el HTML o en robots.txt,
no una interpretación. "No hay JSON-LD" es evidencia; "la web no está
optimizada" no lo es.
El tono es el de traducir-a-cliente: directo, sin alarmismo, sin cifras
inventadas. Si el usuario quiere la versión para enviar al cliente, remite a
esa skill con el informe como entrada.
Recomendaciones por CMS
Los CMS más frecuentes en la muestra de seosindrama y cómo hacer los dos
cambios que más se repiten en el plan de acción:
| CMS |
Añadir JSON-LD |
Editar robots.txt |
| WordPress |
Plugin (Yoast, Rank Math, Schema Pro) o pegar el <script> en el <head> con un plugin de cabecera/pie o en el tema hijo |
Ajustes → Lectura no basta; usar Yoast/Rank Math → Herramientas → Editor de archivos, o subir el archivo por FTP a la raíz |
| Shopify |
Editar theme.liquid (Tienda online → Temas → Editar código) y pegar el script antes de </head> |
No se puede editar el archivo directamente; crear plantilla robots.txt.liquid desde el editor de temas |
| Wix |
Ajustes del sitio → SEO → Datos estructurados (por página) o "Código personalizado" en el <head> |
Panel → SEO → Robots.txt Editor (solo en planes con dominio propio) |
| Squarespace |
Ajustes → Avanzado → Inyección de código → Cabecera |
No editable. Squarespace genera el suyo; solo se pueden ocultar páginas concretas |
| IONOS MyWebsite |
Sección "HTML personalizado" en la cabecera del sitio |
No editable en el creador; sí si es hosting con WordPress |
| Jimdo |
Solo en planes Pro/Business: Ajustes → Editar <head> |
No editable |
Si el CMS no permite editar robots.txt, el plan de acción lo dice y pasa a
la siguiente palanca en lugar de insistir.
Qué NO hace
- No llama a ChatGPT, Perplexity ni a ninguna API. La visibilidad actual la
aporta el usuario.
- No mide posiciones en Google ni velocidad.
- No genera el JSON-LD ni el contenido: detecta qué falta y lo prioriza.
- No promete que la IA vaya a citar la web. Describe qué la hace más o menos
elegible.
- No se dispara con "hazme una auditoría SEO" a secas; solo cuando el
usuario pregunta por IA, GEO, rastreadores o llms.txt.
1---2name: auditoria-geo3description: Audita si una web está preparada para que ChatGPT, Perplexity, Gemini, Claude o Copilot la lean, la entiendan y la citen (GEO, Generative Engine Optimization, también llamado AEO o SEO para IA). Comprueba el acceso de los rastreadores de IA en robots.txt, los datos estructurados JSON-LD, la densidad y estructura del contenido, las señales de entidad (nombre, dirección y teléfono consistentes), el contenido citable y la existencia de llms.txt, y devuelve una puntuación provisional con plan de acción por prioridad y por CMS. Úsala siempre que el usuario pregunte si la IA recomienda su negocio, por qué ChatGPT no le menciona, pida una auditoría GEO o "de IA", quiera salir en ChatGPT o Perplexity, o pregunte por llms.txt, GPTBot, ClaudeBot o PerplexityBot. Also use for AI search visibility audit, GEO audit, get cited by ChatGPT, LLM readiness check, AI crawler access.4---56# Auditoría GEO: ¿puede la IA leer, entender y citar esta web?78Los motores de respuesta (ChatGPT, Perplexity, Gemini, Claude) no posicionan9páginas: eligen fuentes. Para ser elegido hay que ser accesible, legible como10entidad, y tener algo citable. Esta skill lo comprueba sobre una URL.1112## Cuándo usarla y cuándo no1314**Úsala** cuando el usuario quiera saber si su web (o la de un cliente) está15preparada para los motores de IA, o cuando pregunte por rastreadores,16llms.txt o por qué la IA no le recomienda.1718**No la uses** para:1920- Medir posiciones en Google, tráfico ni palabras clave. Eso es SEO clásico.21- Medir velocidad o Core Web Vitals. Para eso está PageSpeed y, para22 explicarlo al cliente, `traducir-a-cliente`.23- Generar el JSON-LD. Si falta schema, esta skill lo detecta y recomienda;24 `schema-negocio-local` lo genera.2526## Flujo27281. **Obtener los datos.**29 - Si hay entorno de ejecución: `python3 scripts/geo_check.py https://ejemplo.es`30 devuelve un JSON con todo lo que la skill necesita. Sin dependencias31 externas. Si la web no responde o bloquea el user-agent, el script lo32 dice claramente; no interpretes un fallo de red como "la web bloquea a la33 IA".34 - Si no hay entorno: pide al usuario el HTML de la portada y el contenido35 de `/robots.txt`, o léelos con las herramientas de navegación que tengas.36 El script acepta también `--html archivo.html --robots robots.txt` para37 analizar archivos locales.382. **Aplicar los criterios** de `references/senales-ia.md`, dimensión por39 dimensión, anotando la evidencia literal (qué línea del robots.txt, qué40 `@type`, cuántos caracteres).413. **Puntuar y redactar** el informe con el formato de abajo.424. Si el usuario puede lanzar una consulta a un motor de IA, proponerle la43 pregunta tipo cliente (ver dimensión 5) y clasificar la respuesta.4445## Las cinco dimensiones y su peso4647Pesos **provisionales** hasta que se cierre el informe premium de48seosindrama.com; están marcados así en el informe.4950| # | Dimensión | Peso | Qué comprueba |51|---|---|---|---|52| 1 | Acceso de rastreadores de IA | 25 | robots.txt no bloquea a los bots de búsqueda/citación (OAI-SearchBot, Claude-SearchBot, PerplexityBot, etc.). Bloquear los de entrenamiento (GPTBot, ClaudeBot, CCBot) no penaliza. llms.txt suma poco pero suma. Detalle en `references/rastreadores.md` |53| 2 | Datos estructurados | 20 | Hay JSON-LD válido; el `@type` corresponde al negocio; tiene `name`, `address`, `telephone`, `url`; hay `FAQPage` si la página responde preguntas |54| 3 | Contenido citable | 25 | Texto visible suficiente (umbral: 5.000 caracteres de HTML como mínimo, mejor medir texto visible), estructura de encabezados, preguntas en encabezados con respuesta directa debajo (*answer first*), datos propios que un motor pueda citar (*information gain*): cifras, precios, comparativas, casos |55| 4 | Entidad consistente | 20 | Nombre, dirección y teléfono (NAP) aparecen en el HTML, coinciden con el JSON-LD y con lo que el usuario dice tener en Google Business Profile. Autor y fecha en contenidos editoriales |56| 5 | Visibilidad actual | 10 | Solo si el usuario lanza la pregunta tipo cliente a un motor y pega la respuesta. La skill **no** llama a APIs. Si no hay dato, esta dimensión se marca "no medida" y la puntuación se calcula sobre 90 |5758**Puntuación:** cada dimensión se valora 0–100 con los criterios de59`senales-ia.md` y se pondera. Se presenta como "X / 100 (provisional)".6061### Dimensión 5: la pregunta tipo cliente6263Se construye así: `recomiéndame las mejores opciones de <servicio> en64<localidad>`. Ejemplo: "recomiéndame las mejores opciones de fisioterapia en65Valladolid". Variantes de marca a comprobar en la respuesta: nombre exacto,66nombre sin forma jurídica (S.L., S.A.), nombre sin tildes, dominio. La67clasificación:6869- **Aparece**: el nombre o el dominio están en la respuesta como70 recomendación.71- **Mención parcial**: aparece una variante, o aparece pero no como72 recomendación (por ejemplo, en una lista larga sin comentario).73- **No aparece**.7475## Formato del informe7677```markdown78# Auditoría GEO de ejemplo.es79Fecha · URL analizada · CMS detectado (si hay firma) · Puntuación: 62 / 100 (provisional)8081## Resumen82Tres frases: qué está bien, qué es lo más urgente, qué tipo de negocio parece83ser según las señales encontradas.8485## Resultado por dimensión86| Dimensión | Estado | Evidencia |87|---|---|---|88| Acceso de rastreadores | ✅ Correcto | robots.txt sin reglas para bots de IA; llms.txt no existe (404) |89| Datos estructurados | ⚠️ Parcial | JSON-LD con @type WebSite; falta LocalBusiness |90| Contenido citable | ❌ Insuficiente | 1.870 caracteres de texto visible; 0 preguntas en encabezados |91| Entidad consistente | ⚠️ Parcial | Teléfono detectado (+34 983 ...); dirección no encontrada |92| Visibilidad actual | – No medida | |9394## Plan de acción95Ordenado por prioridad. Cada acción: qué hacer, dificultad (fácil / media /96necesita desarrollador), pasos, y cómo validar.9798### 1. Añadir JSON-LD LocalBusiness — dificultad: fácil99...100101## Cómo validar cuando esté hecho102Volver a ejecutar el script; probar la pregunta tipo cliente en dos motores.103```104105La evidencia siempre es literal: qué se encontró en el HTML o en robots.txt,106no una interpretación. "No hay JSON-LD" es evidencia; "la web no está107optimizada" no lo es.108109El tono es el de `traducir-a-cliente`: directo, sin alarmismo, sin cifras110inventadas. Si el usuario quiere la versión para enviar al cliente, remite a111esa skill con el informe como entrada.112113## Recomendaciones por CMS114115Los CMS más frecuentes en la muestra de seosindrama y cómo hacer los dos116cambios que más se repiten en el plan de acción:117118| CMS | Añadir JSON-LD | Editar robots.txt |119|---|---|---|120| WordPress | Plugin (Yoast, Rank Math, Schema Pro) o pegar el `<script>` en el `<head>` con un plugin de cabecera/pie o en el tema hijo | Ajustes → Lectura no basta; usar Yoast/Rank Math → Herramientas → Editor de archivos, o subir el archivo por FTP a la raíz |121| Shopify | Editar `theme.liquid` (Tienda online → Temas → Editar código) y pegar el script antes de `</head>` | No se puede editar el archivo directamente; crear plantilla `robots.txt.liquid` desde el editor de temas |122| Wix | Ajustes del sitio → SEO → Datos estructurados (por página) o "Código personalizado" en el `<head>` | Panel → SEO → Robots.txt Editor (solo en planes con dominio propio) |123| Squarespace | Ajustes → Avanzado → Inyección de código → Cabecera | No editable. Squarespace genera el suyo; solo se pueden ocultar páginas concretas |124| IONOS MyWebsite | Sección "HTML personalizado" en la cabecera del sitio | No editable en el creador; sí si es hosting con WordPress |125| Jimdo | Solo en planes Pro/Business: Ajustes → Editar `<head>` | No editable |126127Si el CMS no permite editar robots.txt, el plan de acción lo dice y pasa a128la siguiente palanca en lugar de insistir.129130## Qué NO hace131132- No llama a ChatGPT, Perplexity ni a ninguna API. La visibilidad actual la133 aporta el usuario.134- No mide posiciones en Google ni velocidad.135- No genera el JSON-LD ni el contenido: detecta qué falta y lo prioriza.136- No promete que la IA vaya a citar la web. Describe qué la hace más o menos137 elegible.138- No se dispara con "hazme una auditoría SEO" a secas; solo cuando el139 usuario pregunta por IA, GEO, rastreadores o llms.txt.