점수 산정 방식
AISeeWhy는 AI 크롤러와 AI 검색이 웹페이지를 읽고 인용할 수 있는지 테스트합니다. 점수에 영향을 주는 모든 것을 이 페이지에 담았습니다.
공식
점수 = 100 − 15 × (P1 발견 사항 수) − 6 × (P2 발견 사항 수) − 2 × (P3 발견 사항 수), 0 미만으로는 내려가지 않습니다. 점수가 70 이상이고 P1 발견 사항이 없으면 AI에 보이는 페이지로 표시됩니다.
우선순위
- P1, 심각: AI 검색이나 AI 어시스턴트가 페이지를 읽지 못하거나 내용을 신뢰하지 못합니다.
- P2, 중요: 페이지를 이해하거나 찾거나 인용하기가 더 어렵습니다.
- P3, 있으면 좋은 항목이거나, 학습용 데이터를 수집하는 크롤러 차단 같은 정책상의 선택입니다.
테스트 항목
- 페이지를 16개의 AI 및 검색 크롤러, curl, 데스크톱 브라우저로 각 크롤러가 공개한 user agent를 사용해 가져옵니다. 오류나 챌린지, 또는 브라우저와 다른 페이지를 받은 크롤러는 HTTP 상태와 방화벽 시그니처와 함께 보고됩니다.
- robots.txt를 RFC 9309에 따라 모든 크롤러 토큰별로 분석하며, user agent로 전송되지 않는 토큰(Google-Extended, Applebot-Extended)도 포함합니다.
- 페이지의 구조화된 데이터(JSON-LD), 답을 먼저 제시하는 콘텐츠, 날짜, 사이트맵, hreflang 대체 페이지, llms.txt를 점검합니다.
- 일시적인 오류(네트워크 오류, 429, 5xx)를 만난 크롤러는 집계하기 전에 한 번 다시 시도합니다.
외부 테스트의 한계
- 요청은 크롤러 운영사의 IP 주소가 아니라 AISeeWhy 서버에서 나갑니다. 실제 크롤러를 IP로 신뢰하는 방화벽은 저희를 차단하고 크롤러는 통과시킬 수 있으며, 그 반대도 가능합니다. 서버 로그 점검으로 실제 크롤러가 어떤 응답을 받았는지 확인할 수 있습니다.
- AI 크롤러가 JavaScript를 실행하지 않으므로 저희도 실행하지 않습니다.
- URL 하나는 페이지 하나입니다. 사이트 전체는 일괄 감사나 사이트맵을 사용하세요.
- 점수가 높을수록 기술적 장벽이 적다는 뜻이지만, AI 어시스턴트가 나를 언급하거나 인용한다고 보장하지는 않습니다.
규칙
현재 규칙 버전: 2026.11. 규칙, 우선순위, 공식이 바뀔 때마다 버전이 바뀌며, 모든 리포트에는 작성에 사용된 버전이 표시됩니다.
| 발견 사항 | 우선순위 |
|---|---|
테스트 요청이 차단되어 결과를 판단할 수 없습니다 access.all_blocked | P2 |
GPTBot이(가) 차단되어 있습니다 access.blocked | P1–P3, 크롤러 유형에 따라 |
GPTBot이(가) 다른 곳으로 리디렉션됩니다 access.redirect_diff | P1–P3, 크롤러 유형에 따라 |
GPTBot에 빈 페이지가 제공됩니다 access.soft_block | P1–P3, 크롤러 유형에 따라 |
연락처 이메일이 이메일 난독화로 숨겨져 있습니다 content.email_obfuscated | P1 / P2 |
페이지 콘텐츠에 JavaScript가 필요합니다 content.js_only | P1 |
외부 출처로 연결되는 링크가 없습니다 content.no_outbound_citations | P1 |
질문 형태의 제목이 적습니다 content.no_question_headings | P2 |
H1 바로 아래에 짧은 답변이 없습니다 content.quick_answer_missing | P1 |
페이지를 가져올 수 없었습니다 fetch.error | P1 |
페이지가 상태 403(으)로 응답합니다 fetch.status | P1 |
날짜가 일치하지 않습니다: 페이지 2026-01-01, 사이트맵 2026-01-01 fresh.lastmod_mismatch | P2 |
수정 날짜가 없습니다 fresh.no_date | P3 |
canonical URL이 hreflang URL에 포함되어 있지 않습니다 hreflang.canonical_conflict | P2 |
hreflang에 x-default가 없습니다 hreflang.no_x_default | P3 |
hreflang 링크가 상호 연결되어 있지 않습니다 hreflang.not_reciprocal | P2 |
llms.txt가 없습니다 llms.missing | P3 |
페이지가 llms.txt에 나열되어 있지 않습니다 llms.page_not_listed | P3 |
robots.txt는 GPTBot을(를) 허용하지만 서버가 차단합니다 robots.access_conflict | P2 |
robots.txt가 GPTBot을(를) 허용하지 않습니다 robots.disallowed | P1–P3, 크롤러 유형에 따라 |
robots.txt가 HTML 페이지입니다 robots.invalid | P2 |
robots.txt에 Content-Signal이 없습니다 robots.no_content_signal | P3 |
robots.txt를 가져올 수 없습니다 robots.unreachable | P1 |
Article 데이터가 불완전합니다 schema.article_incomplete | P2 |
페이지에 질문이 있지만 FAQPage 마크업이 없습니다 schema.faq_missing | P3 |
JSON-LD 블록이 올바른 JSON이 아닙니다 schema.invalid_json | P2 |
게시자를 확인할 수 없습니다 schema.no_publisher | P1 |
게시자에 sameAs 링크가 없습니다 schema.no_sameas | P3 |
구조화된 데이터(JSON-LD)가 없습니다 schema.none | P2 |
앱 마크업에 가격이 없습니다 schema.software_no_offers | P1 |
사이트맵을 찾을 수 없음 sitemap.none | P2 |
사이트맵을 가져올 수 없습니다(상태 403) sitemap.unreachable | P2 |
사이트맵을 읽을 수 없습니다 sitemap.unreadable | P2 |
페이지가 사이트맵에 없습니다 sitemap.url_missing | P2 |