체인지로그새 기능

ChatGPT가 내 페이지를 얼마나 읽는지 점수로 받아요

API
POST /v1/geo-score 칩이 붙은 GEO Score와 올리브영 선크림 페이지의 결과: GEO Score 29, ChatGPT가 직접 열 때 29, AI Rendering 적용 시 100, 가장 많은 점수를 깎은 문제 2개

페이지 URL을 GEO Score에 보내면 ChatGPT 검색이 그 페이지 내용을 얼마나 가졌는지, ChatGPT가 직접 열 때 무엇을 받는지, 빠진 내용마다 이유와 고칠 방법을 받아요.

받는 결과

  • POST /v1/geo-score: 태스크 하나가 페이지 하나의 점수를 냅니다. 페이지의 url과 읽는 사람의 country(US나 KR)를 보냅니다.
  • score: 사람이 페이지에서 읽는 내용(이미지 속 글자 포함) 가운데 ChatGPT 검색이 가진 비율이고, 0에서 100까지입니다. direct는 ChatGPT가 페이지를 직접 열 때 받는 내용으로 같은 비율을 냅니다.
  • reading.items: 페이지의 조각마다 있는 곳과 ChatGPT 검색이 놓친 이유(blocked, javascript_only, structured_data_only, image_only)를 담습니다.
  • analysis: 깎는 점수 순으로 문제를 놓고 문제마다 원인과 고칠 방법을 붙입니다. potential은 확인된 문제를 고친 뒤의 점수입니다.
  • markdown과 screenshot: 사람이 보는 페이지이고, 빠진 조각마다 그 자리에 표시가 붙습니다. rendering은 AI 에이전트용으로 렌더링한 사본이 담을 비율입니다.
  • 대시보드 Playground의 GEO Score 탭에서는 사람이 보는 화면과 봇이 받는 내용을 나란히 봅니다.

동작 방식

GEO Score는 OAI-SearchBot, ChatGPT-User, GPTBot에 대한 robots.txt를 읽고, 각 에이전트와 브라우저로 페이지를 받아 봅니다. country의 브라우저가 페이지를 그리고 끝까지 내리면서 큰 이미지 속 글자를 읽습니다. 페이지 주제에 관한 줄이 조각이 되고, 메뉴, 푸터, 다른 상품, 리뷰, 버튼, 광고는 점수에서 빠집니다.

ChatGPT 검색 사본은 미국 주소에서 OAI-SearchBot으로 그린 페이지입니다. HTML의 글자와 스크립트가 그 HTML로 그린 글자가 들어가고, 이미지 속 글자와 페이지가 열린 뒤에 불러오는 내용은 빠집니다. direct는 ChatGPT-User가 받는 HTML을 ChatGPT의 리더처럼 읽고, 운영 중인 ChatGPT에 페이지를 열어 달라고 두 번 물어 열 수 있는지 확인합니다.

조각마다 코드가 판정하므로 바뀌지 않은 페이지는 같은 점수를 받습니다. 페이지 15개를 세 번씩 잰 결과 10개는 3점 이내로 움직였습니다.

이렇게 활용하세요

  • 출시 전에 상품 페이지나 랜딩 페이지의 점수를 내고, 스크립트로 불러오는 가격이나 이미지에만 쓴 사양처럼 ChatGPT가 못 보는 내용을 고칩니다.
  • 우리 분야 질문에서 ChatGPT가 인용하는 경쟁사 페이지와 우리 페이지의 점수를 나란히 봅니다.
  • analysis의 고칠 방법을 웹 팀에 넘기고, 반영된 뒤 같은 페이지의 점수를 다시 냅니다.
  • 사이트가 ChatGPT를 막는지 확인합니다. access.verdict와 blockedBy가 누가 페이지 열기를 막는지 알려 줍니다.

요청 보내기

API 키를 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"
  }'

요청 필드

urlstring필수
점수를 낼 페이지입니다. 공개 호스트와 기본 포트를 쓰는 http나 https URL이고, 최대 2,048자입니다.
countrystring
페이지를 읽는 사람이 있는 나라입니다. US(기본값)나 KR이고, 그 나라 주소에서 그 나라의 언어와 시간대로 페이지를 엽니다.
webhook.urlstring
서버의 HTTPS 주소입니다. 태스크가 끝나는 즉시 결과를 이 주소로 보냅니다.
idempotencyKeystring
요청에 붙이는 고유 ID입니다. 키 하나는 계정에서 태스크 하나를 만들므로, 다시 보내도 태스크는 하나로 유지됩니다.

응답

완료된 태스크는 이런 형태입니다. 길이를 줄여 보여 드립니다.

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을 거쳐 답변과 함께 COMPLETED로, 또는 error와 함께 FAILED로 끝납니다.
credits.creditsChargedinteger
끝난 태스크에 청구된 크레딧입니다. 실패한 태스크는 0입니다.
response.scorenumber
사람이 페이지에서 읽는 내용(이미지 속 글자 포함) 가운데 ChatGPT 검색이 가진 페이지 사본에 든 비율입니다. 0에서 100까지이고, robots.txt나 사이트가 ChatGPT 검색 크롤러를 막으면 0입니다.
response.directobject
누군가 URL을 건넸을 때처럼 ChatGPT가 페이지를 직접 열 때 받는 내용입니다. score와 받은 조각 수 read가 들어 있고, ChatGPT가 페이지를 열지 못하면 점수는 0입니다.
response.renderingobject
AI 에이전트용으로 렌더링한 페이지 사본이 글자로 담는 조각의 비율입니다. 사본은 브라우저가 그린 HTML에서 스크립트를 빼고, 이미지 속 글자를 alt 텍스트에 넣은 것입니다.
response.reading.itemsarray
페이지 조각마다 한 항목입니다. label, 조각이 있는 곳 where(html, rendered_only, image 등), status(read나 missing), ChatGPT 검색이 놓친 이유 reason(blocked, javascript_only, structured_data_only, image_only)이 있습니다.
response.analysisobject
summary, potential(확인된 문제를 고친 뒤의 점수), 깎는 점수 순으로 놓인 issues가 있습니다. 문제마다 원인(detail), 고칠 방법(fix), 영향받는 조각이 붙습니다. 글은 영어입니다.

결과 받기

요청하면 status가 QUEUED인 태스크가 바로 돌아옵니다. status가 COMPLETED나 FAILED가 될 때까지 GET /v1/async/task/{id}로 조회하거나, webhook.url을 넣어 같은 task, credits, response를 서버로 받으세요. 결과는 태스크가 끝난 뒤 24시간 동안 조회됩니다.

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

오류

VALIDATION_ERRORHTTP 422
url이 없거나, http나 https가 아니거나, 사설 호스트나 포트를 가리킵니다. details에 해당 필드가 나옵니다.
USE_DEDICATED_ENDPOINTHTTP 400
GEO_SCORE를 /v1/async/task로 보냈습니다. /v1/geo-score로 보내세요.
REGION_UNSUPPORTEDHTTP 422
country가 US나 KR이 아닙니다.
MISSING_API_KEYHTTP 401
Authorization 헤더가 빠졌거나, 키가 잘못됐거나 만료 또는 폐기됐습니다.
INSUFFICIENT_CREDITSHTTP 402
잔액이 페이지 하나의 최대 비용인 70크레딧보다 적습니다. 크레딧을 충전하거나 플랜을 올린 뒤 다시 보내세요.

요금

완료된 점수 하나에 페이지 10크레딧과 글자를 읽은 이미지마다 5크레딧이 차감되고, 이미지는 최대 12장입니다. 계정이 최근 90일 안에 읽은 이미지는 2크레딧이고, 읽지 못한 이미지는 무료입니다. 보낼 때 페이지 하나의 최대 비용인 70크레딧을 잡아 두고, 완료되면 쓴 만큼만 차감합니다.

실패한 태스크는 차감하지 않습니다. 어떤 브라우저도 페이지를 보여 주지 못하면 태스크가 이유와 함께 PAGE_UNAVAILABLE로 끝납니다.

다른 업데이트

새 소식을 받아보세요

제품 업데이트를 이메일로 보내드립니다.

RSS 구독