메인 콘텐츠로 건너뛰기
ChatGPT가 인용하기를 바라는 페이지를 GEO Score로 점검합니다. 점수는 사람이 그 페이지에서 읽는 내용(이미지 속 글자 포함) 중 ChatGPT 검색이 가진 그 페이지의 사본에 든 내용의 비율입니다. direct는 누군가 URL을 줄 때처럼 ChatGPT가 페이지를 직접 열 때 받는 비율입니다. ChatGPT 검색이 놓치는 조각마다 원인이 붙고, analysis가 원인을 고칠 방법으로 정리합니다.

페이지 채점

태스크가 접수되어 대기열에 들어갑니다.
결과는 GET /v1/async/task/{id}로 읽거나, 요청에 webhook.url을 넣어 태스크가 끝날 때 받습니다. 대부분 13분이 걸리므로 1015초마다 조회합니다. 다른 비동기 태스크와 똑같이 동작하며 결과는 response에 들어 있습니다. 요청 스키마는 API 레퍼런스에 있습니다.

요청 필드

다른 필드는 400 VALIDATION_ERROR입니다.

채점 방식

  1. 접근. OAI-SearchBot, ChatGPT-User, GPTBot마다 robots.txt를 판정합니다. ChatGPT-User가 페이지를 가져오는 미국 주소에서 각 에이전트와 브라우저로 페이지를 받습니다.
  2. 사람이 읽는 내용. country의 브라우저가 페이지를 렌더하고 끝까지 내려 읽으며, 큰 이미지 속 글자를 줄 단위로 읽습니다. 페이지 고유 주제에 관한 줄이 조각이 됩니다. 메뉴, 바닥글, 다른 상품, 고객 리뷰, 버튼, 광고는 점수에서 뺍니다.
  3. ChatGPT 검색이 가진 내용. 미국 주소의 브라우저가 ChatGPT 검색을 채우는 크롤러인 OAI-SearchBot으로 페이지를 렌더하고, 데이터 요청은 내보내지 않습니다. 사본은 서버가 보내는 HTML의 텍스트와 페이지 스크립트가 그 HTML로 그린 텍스트이고, 숨김 텍스트와 이미지 alt 텍스트를 포함합니다. 이미지 속 글자와 페이지가 열린 뒤 불러오는 내용은 ChatGPT 검색에 없듯 이 사본에도 없습니다.
  4. ChatGPT가 페이지를 열 때 받는 내용. ChatGPT-User가 받는 HTML을 ChatGPT 리더처럼 읽습니다. 본문 텍스트, 숨김 텍스트, 이미지 alt 텍스트를 읽고 스크립트는 실행하지 않습니다. 이미지는 ChatGPT가 열어 읽을 수 있을 때만 셉니다. HTML이 그 그림을 img src로 주고, 형식이 JPEG, PNG, WebP이며, 글자를 읽을 수 있는 크기여야 합니다.
  5. ChatGPT가 페이지를 여는지. 운영 ChatGPT에 페이지를 열라고 두 번 묻습니다. 답은 채점하지 않고 페이지를 열었는지만 봅니다.
  6. 조각 판정. 검색 사본에 있는 조각은 read, 없는 조각은 이유와 함께 missing입니다. direct는 ChatGPT가 페이지를 열 때 받는 내용으로 같은 판정을 합니다. 코드가 모든 조각을 판정하므로 바뀌지 않은 페이지는 같은 점수를 받습니다.

결과 읽기

위 OLIVE YOUNG 페이지의 결과를 주요 필드만 남기면 다음과 같습니다.

score

ChatGPT 검색이 가진 조각의 비율이며 0부터 100까지입니다. 조각은 모두 같은 가중치입니다. robots.txt가 ChatGPT 검색에서 페이지를 막았을 때와 사이트가 ChatGPT 검색의 크롤러를 거절할 때는 0입니다. reading.score에는 robots.txt로 0점이 되기 전의 비율이 남습니다.

direct

누군가 URL을 줄 때처럼 ChatGPT가 페이지를 직접 열 때 받는 내용입니다. direct.score는 ChatGPT-User가 받는 HTML과 ChatGPT가 열 수 있는 이미지에 있는 조각의 비율이고, direct.read는 그 수입니다. ChatGPT가 페이지를 열지 못하면 0입니다. 두 점수는 페이지가 글자를 이미지에 쓰거나 스크립트로 그리는 곳에서 갈립니다. ChatGPT 검색은 이미지 속 글자를 가지지 않고 스크립트가 HTML로 그린 내용은 가집니다. ChatGPT 리더는 읽을 수 있는 이미지를 열고 스크립트는 실행하지 않습니다. 영양 정보 표시가 원본 크기 JPEG인 식품 상품 페이지는 검색 56점, 직접 열기 93점이었습니다.

access

사이트가 ChatGPT 검색의 크롤러를 거절하면 search.refused가 true이고 점수는 0입니다. search.lines는 검색 사본의 줄 수입니다. blockedBy는 사이트가 어느 주소에서든 ChatGPT-User 에이전트를 거절하면 user_agent, 우리 주소의 그 에이전트는 받고 OpenAI 주소는 거절하면 openai_addresses, 브라우저도 거절하면 site입니다. robots는 OpenAI 에이전트마다 판정을 정한 robots.txt 줄을, noindex는 noindex 지시와 그 위치를, probes는 요청마다 받은 상태를 보여줍니다.

reading.items[]

조각마다 한 항목입니다. reading.locations는 조각을 where별로 세어, ChatGPT가 페이지를 열 수 있게 된 뒤에도 남는 문제를 보여줍니다. causes[]는 놓친 조각을 원인별로 묶습니다.

analysis

summary는 점수, 가장 큰 문제, 확인된 문제를 고쳤을 때의 점수(potential)를 씁니다. direct는 ChatGPT가 페이지를 직접 열 때 받는 내용을, 열지 못하면 막는 쪽과 고칠 방법을 씁니다. issues[]의 각 항목에는 원인(detail), 고칠 방법(fix), 그 문제로 놓친 조각(facts), 근거, 그 문제가 깎은 점수가 들어 있습니다. 점수를 0으로 묶는 접근 문제가 먼저 오고, 나머지는 깎은 점수가 큰 순서입니다. basis는 confirmed이며, 우리가 직접 읽은 페이지(HTML, 렌더, 이미지, robots.txt, HTTP 응답)에서 확인한 문제라는 뜻입니다. analysis의 문장은 영어입니다.

markdown

사람이 보는 페이지를 Markdown으로 정리한 것입니다. 이미지 안의 글자는 이미지가 있던 자리에 들어갑니다. 점수가 확인하는 페이지 고유 내용은 제목과 라벨 아래에 놓입니다. 메뉴, 리뷰처럼 내용 주변의 부분은 구간마다 한 줄로 접습니다. ChatGPT 검색이 놓치는 조각은 그 자리에 이유와 함께 _(missing: …)_로 표시하고, 머리말에는 ChatGPT가 페이지를 열 때 받는 조각 수도 씁니다. 머리말과 표시는 페이지의 언어로 씁니다. 지원하는 언어는 영어, 한국어, 일본어, 중국어, 스페인어, 프랑스어, 독일어, 포르투갈어이고, 그 밖의 언어는 영어로 씁니다. 한국어 페이지에서는 _(누락: …)_입니다. 아래는 영어로 된 OLIVE YOUNG 페이지의 일부입니다.

screenshot

사람이 보는 페이지의 첫 네 화면을 담은 JPEG입니다. 1366×900 창에서 페이지를 끝까지 내려 본 뒤 맨 위에서 찍습니다. url 자체가 접근 키이고 expiresAt(태스크 후 30일)까지 열립니다. 그림을 찍지 못한 페이지는 screenshot 없이 오고, 저장하지 못한 그림은 status: "failed"입니다.

rendering

AI 에이전트용으로 렌더한 페이지입니다. 사본은 사람의 브라우저가 그린 HTML에서 스크립트를 빼고, 이미지마다 그 안의 글자를 alt에 더한 것입니다. WCAG가 글자 이미지에 요구하는 대체 텍스트입니다. rendering.score는 사본의 텍스트에 든 조각의 비율이고, 사본을 받은 AI 에이전트가 이미지를 열지 않고도 받는 양입니다. rendering.read는 그 조각 수, reading.items[].rendering은 조각마다의 판정입니다. 사본 파일은 결과에 들어가지 않습니다. 위 OLIVE YOUNG 페이지는 사본에 조각 55개가 모두 들어 100점입니다. 성분과 FAQ 이미지의 글자는 alt로, 스크립트가 불러오는 가격과 평점은 본문으로 들어갑니다.
브라우저가 페이지를 보여 주지 못했거나 그린 HTML이 너무 크면 rendering이 없습니다.

점수를 정확히 읽는 법

  • ChatGPT 검색은 크롤러가 만든 페이지 사본으로 일합니다. 사본에는 HTML의 텍스트와 스크립트가 그 HTML로 그린 내용이 있고, 이미지 속 글자와 페이지가 열린 뒤 불러오는 내용은 없습니다. 사본은 마지막 수집 시점의 것이라, 페이지를 고친 내용은 크롤러가 페이지를 다시 가져간 뒤에 ChatGPT 검색에 들어갑니다.
  • ChatGPT가 페이지를 직접 열면 서버가 보내는 HTML을 읽습니다. 스크립트를 실행하지 않고, 이미지는 alt 텍스트와 그 HTML이 주는 img src로만 엽니다. OpenAI는 연 페이지를 약 30분 동안 다시 씁니다.
  • 점수는 페이지나 페이지가 그려지는 방식이 바뀔 때만 움직입니다. 페이지 15개를 세 번씩 채점했을 때 10개는 점수 차이가 3점 이하였습니다. 방문할 때마다 다른 부분을 그리는 페이지는 더 많이 움직입니다.
  • GEO Score는 페이지 하나를 ChatGPT가 얼마나 가지는지 봅니다. ChatGPT 검색이 질문마다 어떤 페이지를 고르는지는 GEO 모니터가 추적합니다.

오류와 과금

완료된 태스크는 페이지 10크레딧에 글자를 읽은 이미지마다 5크레딧입니다(최대 12장, 결과의 images.read). 호스트가 거절했거나 읽지 못한 이미지(images.unread)는 받지 않습니다. 계정이 90일 안에 같은 이미지를 읽었으면 그 결과를 다시 쓰고(images.reused), 장당 2크레딧입니다. 제출할 때 한 페이지의 최대치인 70크레딧을 잡아 두고, 태스크가 완료되면 쓴 만큼만 차감합니다. 실패한 태스크는 차감하지 않습니다. 크레딧과 한도를 참고하세요.

제출 시 거절

인증, 동시성, 속도 제한 오류는 다른 태스크와 같습니다. 오류를 참고하세요.

실패한 태스크

실패한 태스크는 status: "FAILED"이고, error 문자열이 코드로 시작합니다.

다음 단계

Citation Analysis

답변 하나를 만든 출처를 확인합니다.

GEO 모니터

AI 엔진에서 브랜드를 정해진 일정으로 추적합니다.