NovedadesNuevo

Mira cuánto de tu página lee ChatGPT

API
GEO Score con la etiqueta POST /v1/geo-score y el resultado de una página de protector solar de OLIVE YOUNG: GEO Score 29, ChatGPT al abrir la página 29, con AI Rendering 100 y los dos problemas que más puntos restan

Envía la URL de una página a GEO Score y recibe qué parte de la página guarda ChatGPT search, qué recibe ChatGPT cuando abre la página y la causa y la solución de cada pieza que falta.

Qué obtienes

  • POST /v1/geo-score: una tarea puntúa una página. Envía su url y el country del lector, US o KR.
  • score: la parte de lo que una persona lee en la página, incluido el texto dentro de sus imágenes, que guarda ChatGPT search, de 0 a 100. direct da la misma parte para lo que ChatGPT recibe cuando abre la página por sí mismo.
  • reading.items: cada pieza de la página, dónde está y por qué ChatGPT search la pierde: blocked, javascript_only, structured_data_only o image_only.
  • analysis: los problemas ordenados por los puntos que restan, cada uno con su causa y su solución, y potential, la puntuación una vez corregidos los problemas confirmados.
  • markdown y screenshot: la página tal como la ve una persona, con cada pieza que falta marcada en su sitio. rendering da la parte que tendría una copia renderizada para agentes de IA.
  • En el panel, la pestaña GEO Score del Playground muestra la vista humana junto a la vista del bot.

Cómo funciona

GEO Score lee robots.txt para OAI-SearchBot, ChatGPT-User y GPTBot y descarga la página como cada uno de ellos y como un navegador. Un navegador en country renderiza la página, la recorre hasta el final y lee el texto de sus imágenes grandes. Las líneas sobre el tema de la página se convierten en piezas; menús, pies de página, otros productos, reseñas, botones y anuncios quedan fuera de la puntuación.

La copia de ChatGPT search es la página renderizada como OAI-SearchBot desde una dirección de EE. UU.: el texto del HTML y lo que los scripts dibujan a partir de él, sin el texto dentro de las imágenes ni el contenido que la página carga después de abrirse. direct lee el HTML que recibe ChatGPT-User como lo lee el lector de ChatGPT, y se pide dos veces al ChatGPT de producción que abra la página para ver si puede.

El código decide cada pieza, así que una página que no ha cambiado obtiene la misma puntuación. De 15 páginas puntuadas tres veces cada una, 10 se movieron 3 puntos o menos.

Para qué sirve

  • Puntúa una página de producto o de aterrizaje antes del lanzamiento y corrige lo que ChatGPT no ve, como precios cargados por script o especificaciones escritas dentro de imágenes.
  • Puntúa junto a tu página la de un competidor que ChatGPT cita en tu categoría.
  • Pasa las soluciones de analysis a tu equipo web y vuelve a puntuar la página cuando el cambio esté publicado.
  • Comprueba si tu sitio rechaza a ChatGPT: access.verdict y blockedBy muestran quién le impide abrir la página.

Envía la solicitud

Envía la solicitud con tu clave de API en la cabecera Authorization.

curl -X POST https://api.querying.ai/v1/geo-score \
  -H "Authorization: Bearer $QUERYING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://global.oliveyoung.com/product/detail?prdtNo=GA240322874",
    "country": "US"
  }'

Campos de la solicitud

urlstringObligatorio
La página que se puntúa: una URL http o https de un host público con el puerto predeterminado, de hasta 2.048 caracteres.
countrystring
Dónde está el lector: US (predeterminado) o KR. La página se abre desde una dirección de ese país, con su idioma y zona horaria.
webhook.urlstring
Una dirección HTTPS de tu servidor. La tarea terminada se envía allí en cuanto se completa.
idempotencyKeystring
Tu propio ID para la solicitud. Cada clave crea una sola tarea por cuenta, así que un reenvío sigue siendo una sola tarea.

Respuesta

Así llega una tarea terminada, recortada para que se lea mejor.

JSON
{
  "success": true,
  "task": {
    "id": "bcb7e1a2-26eb-422f-9f60-31a5e39ee400",
    "taskType": "GEO_SCORE",
    "status": "COMPLETED",
    "createdAt": "2026-10-23T00:02:42.974Z"
  },
  "credits": { "creditsToCharge": 60, "creditsCharged": 60 },
  "response": {
    "url": "https://global.oliveyoung.com/product/detail?prdtNo=GA240322874",
    "pageType": "product",
    "score": 29,
    "direct": { "score": 29, "read": 16 },
    "rendering": { "score": 100, "read": 55 },
    "access": {
      "verdict": "open",
      "chatgpt": { "opened": true, "lines": 819 }
    },
    "reading": {
      "facts": 55,
      "read": 16,
      "locations": { "html": 16, "rendered_only": 13, "image": 26 },
      "items": [
        {
          "label": "COSRX Vitamin E Vitalizing Sunscreen SPF 50+",
          "where": "html",
          "status": "read"
        },
        {
          "label": "US$16.80",
          "where": "rendered_only",
          "status": "missing",
          "reason": "javascript_only"
        },
        {
          "label": "Key Ingredients",
          "where": "image",
          "status": "missing",
          "reason": "image_only"
        },
        "…"
      ]
    },
    "analysis": {
      "summary": "ChatGPT search keeps 16 of 55 facts of the page. The biggest issue: 26 facts are written only inside an image, among them Strong and effective sun protection; Key Ingredients; Tocopherol (Vitamin E) (47 points). Fixing the confirmed issues could raise the score to about 100.",
      "potential": 100,
      "issues": [
        {
          "code": "image_only",
          "points": 47,
          "title": "26 facts are written only inside an image",
          "fix": "Write this content as text in the page's HTML, next to the image or in place of it …"
        },
        {
          "code": "javascript_only",
          "points": 24,
          "title": "13 facts are loaded only after the page opens",
          "…": "…"
        }
      ]
    },
    "images": { "read": 10, "reused": 0, "unread": 0 },
    "markdown": "…",
    "screenshot": { "status": "ok", "url": "…", "expiresAt": "…" }
  }
}
task.statusstring
QUEUED, PROCESSING y al final COMPLETED con la respuesta o FAILED con error.
credits.creditsChargedinteger
Créditos cobrados por la tarea terminada. Una tarea fallida cobra 0.
response.scorenumber
La parte de lo que una persona lee en la página, incluido el texto dentro de sus imágenes, que ChatGPT search guarda en su copia de la página, de 0 a 100. Es 0 cuando robots.txt o el sitio dejan fuera al rastreador de ChatGPT search.
response.directobject
Lo que ChatGPT recibe cuando abre la página por sí mismo, como cuando alguien le da la URL: su score y el número de piezas en read. La puntuación es 0 cuando ChatGPT no pudo abrir la página.
response.renderingobject
La parte de piezas que contiene en su texto una copia de la página renderizada para agentes de IA: el HTML que dibujó un navegador, sin scripts, con el texto de cada imagen en su texto alt.
response.reading.itemsarray
Una entrada por pieza de la página: su label, where está (html, rendered_only, image y más), status read o missing, y la reason por la que ChatGPT search la pierde: blocked, javascript_only, structured_data_only o image_only.
response.analysisobject
summary, potential (la puntuación una vez corregidos los problemas confirmados) e issues, ordenados por los puntos que restan, cada uno con su causa (detail), su fix y las piezas afectadas. El texto está en inglés.

Recibe el resultado

La solicitud devuelve la tarea al instante con status QUEUED. Consulta GET /v1/async/task/{id} hasta que status sea COMPLETED o FAILED, o añade webhook.url y la tarea terminada llega a tu servidor con los mismos task, credits y response. Los resultados siguen disponibles 24 horas después de terminar la tarea.

curl https://api.querying.ai/v1/async/task/$TASK_ID \
  -H "Authorization: Bearer $QUERYING_API_KEY"

Errores

VALIDATION_ERRORHTTP 422
Falta url, no es http ni https, o apunta a un host o puerto privado. details indica el campo.
USE_DEDICATED_ENDPOINTHTTP 400
GEO_SCORE se envió a /v1/async/task. Envíalo a /v1/geo-score.
REGION_UNSUPPORTEDHTTP 422
country no es US ni KR.
MISSING_API_KEYHTTP 401
Falta la cabecera Authorization, o su clave es desconocida, caducó o fue revocada.
INSUFFICIENT_CREDITSHTTP 402
El saldo es menor que 70 créditos, lo máximo que cuesta una página. Añade créditos o mejora el plan y vuelve a enviarla.

Precio

Una puntuación completada usa 10 créditos por la página y 5 por cada imagen cuyo texto se lee, hasta 12 imágenes. Una imagen que tu cuenta leyó en los últimos 90 días cuesta 2, y una imagen que no se pudo leer es gratis. El envío reserva 70 créditos, lo máximo que cuesta una página, y al completarse se cobra lo que usó la tarea.

Una tarea fallida no se cobra. Si ningún navegador puede mostrar la página, la tarea falla con PAGE_UNAVAILABLE y el motivo.

Más novedades

Recibe las novedades

Recibe las actualizaciones por correo.

Feed RSS