rendering.score는 사본이 담은 페이지의 비율입니다. CDN이 사본을 보내면 사본을
받는 에이전트가 그만큼 읽습니다.
동작 방식
- 사이트를 연결합니다. 사이트 키를 한 번만 보여 줍니다. 이 키는 사이트의 사본을 읽는 일만 합니다.
- 페이지를 게시합니다. 페이지 URL을 보내면 querying.ai가 사이트의 국가에서 렌더해 사본을 보관하고,
refreshDays일(기본 28일)마다 다시 렌더합니다. - 사본을 동기화합니다. CDN이 10분마다 사이트 키로 사본 목록을 읽고, 새 사본을 내려받고, 목록에서 빠진 사본을 지웁니다.
- AI 에이전트에게 보냅니다. AI 에이전트가 GET을 보내면 CDN이 저장한 사본으로 답합니다. 사본이 없는 페이지, 만료된 사본, 오류는 원 서버로 보냅니다.
사이트 연결
key를 보관하세요. 이 응답에만 있고 CDN이 보냅니다. POST /v1/ai-rendering/sites/{id}/key는 새 키를 주고 이전 키를 바로 멈춥니다.
나중에
PATCH /v1/ai-rendering/sites/{id}로 바꿉니다.
페이지 게시
GET /v1/async/task/{taskId}로 따라가거나 GET /v1/ai-rendering/sites/{id}로 페이지의 status를 읽습니다:
ready: 사본이 사본 목록에 있습니다.copy가 그 HTML 파일입니다.rendering: 첫 사본을 만드는 중입니다.failed: 첫 렌더가 실패했습니다.refreshAt에 다시 렌더합니다.expired: 사본이 만료돼 다음 렌더까지 목록에서 빠졌습니다.
utm_*, gclid 같은
추적 파라미터는 뺍니다. DELETE /v1/ai-rendering/sites/{id}/pages/{pageId}는 페이지를 내립니다.
GEO Score가 만든 사본을 다시 렌더하지 않고 게시하려면 그 task id를 보냅니다: { "taskId": "0b6c1f7e-…" }.
계정의 완료된 GEO Score여야 하고, 사이트의 국가에서 잰 것이어야 합니다.
CDN 설정
아래를 CDN 코드 옆에ai-rendering.mjs로 저장합니다. syncCopies는 저장소를 사본 목록에 맞추고, copyFor는 AI 에이전트의 GET에
저장소의 사본으로 답합니다:
- Cloudflare Worker
- 다른 CDN과 서버
Worker는 사본을 Workers KV에 두고 cron으로 10분마다 동기화합니다. 사본은 KV에서 사본 파일과 같은 시각에 만료됩니다.Workers 무료 플랜은 KV 쓰기가 하루 1,000번이라 큰 사이트는 첫 동기화가 하루를 넘길 수 있습니다.
wrangler.toml:cloudflare-worker.mjs:X-Querying-Rendering: HIT가 붙습니다:
사본 목록
CDN은X-Querying-Site-Key에 사이트 키를 넣어 GET https://api.querying.ai/v1/ai-rendering/copies를 읽습니다:
copy는 키 없이 내려받습니다. 페이지를 다시 렌더하면 renderedAt이 바뀌므로
renderedAt이 새로울 때만 내려받으세요. 목록에 없는 페이지의 사본은 지웁니다. 목록과 내려받기는 무료입니다.
에이전트
모듈의AGENTS가 사본을 받을 대상을 정합니다. User-Agent 어디에 있든 대소문자를 가리지 않고 토큰으로 맞춥니다.
- 기본: 사람이 질문하며 페이지에 보내는 에이전트(
chatgpt-user,codex,claude-user,claude-code,perplexity-user,gemini-deep-research,duckassistbot,amzn-user,mistralai-user)와 ChatGPT 검색 크롤러oai-searchbot입니다. ChatGPT 검색은 이 크롤러가 가져간 페이지로 답하고, GEO Score의score가 그 페이지를 잽니다. 검색 색인은 OpenAI가 다시 크롤링한 뒤 바뀝니다. - 원하면 추가:
claude-searchbot,perplexitybot. - 넣지 않음: 학습 크롤러(GPTBot, ClaudeBot)와 웹 검색 크롤러(Googlebot, Bingbot). Googlebot은 스크립트를 직접 실행합니다.
검색 엔진 규칙 지키기
봇에게 사람과 다른 내용을 보내면 클로킹입니다. Google은 봇에게 렌더한 페이지를 보내도 내용이 비슷하면 클로킹으로 보지 않습니다 (Dynamic rendering). OpenAI는 클로킹 정책을 공개하지 않았으므로 사본을 Google 기준에 맞춥니다:- 사본은 사람 브라우저가 그린 페이지입니다. querying.ai는 스크립트를 빼고, 이미지 안의 글자만 그 이미지의 alt 텍스트에 넣습니다. alt는 이미지 글자가 들어가는 자리입니다.
- 사본은 그 페이지의 URL에서만 나갑니다.
- 사본은 최신으로 유지됩니다. querying.ai가
refreshDays마다 다시 렌더하고, 모듈은 만료된 사본을 보내지 않습니다. - 사본을 고친다면 빼거나 바로잡기만 하세요. 잘못 읽은 글자를 고치거나 팝업을 빼는 것은 괜찮습니다. 사람이 보지 못하는 주장, 가격, 링크를 넣지 마세요.
사본의 내용
사본은 사람 브라우저가 페이지를 끝까지 스크롤한 뒤 그린 HTML입니다. 스크립트가 불러온 글자, 제자리에 들어간 프레임의 페이지가 있고, 구조화 데이터(JSON-LD)를 뺀 스크립트는 모두 빠지며, 큰 이미지마다 글자가 alt 텍스트에 들어갑니다. 링크와 이미지 주소는 절대 주소로 남아 페이지처럼 읽힙니다. 사본은 마지막 렌더 시점의 페이지입니다. 가격이나 재고 변경은 다음 렌더(최대refreshDays일 뒤)에 CDN의
동기화 시간을 더한 만큼 늦게 에이전트에게 갑니다. 이미지 글자는 읽은 그대로 들어가 잘못 읽은 글자도 그대로 나갑니다.
과금
렌더 한 번에 5크레딧이고, 글자를 읽은 이미지마다 5크레딧, 계정이 90일 안에 읽은 이미지(같은 파일, 같은 방식)는 장당 2크레딧이며 최대 12장입니다. 제출할 때 65크레딧을 잡아 두고 완료되면 쓴 만큼 차감합니다. 실패한 렌더는 차감하지 않습니다. 갱신도 같은 규칙으로 사이트 계정에 과금하고, 크레딧이 부족한 계정은 1시간 뒤 다시 시도합니다. 사이트 연결, GEO Score 사본 게시, 사본 목록, 사본 내려받기는 무료입니다. 사본은 CDN이 보내므로 에이전트 트래픽에는 querying.ai 비용이 없습니다. 크레딧과 한도를 참고하세요.오류
엔드포인트는 API reference에 있습니다.