사전 등록 문서
크롤러 관측소 — 다중 사이트 관측 규약
(주)인트릭스 · 결과가 나오기 전에 확정·공개했습니다
- 확정 2026-08-10
- 목적: 크덤집·로닛을 각자 관측하되 나중에 통합 비교가 가능하도록 정의를 미리 고정한다
- 원칙: 수집은 각 사이트가 하던 대로 둔다. 정규화는 분석 시점에 한 곳에서 한다
0. 왜 지금 규약을 고정하는가
각자 모으다가 나중에 합치면, 합치는 시점에 "비교가 안 되는 데이터" 임을 발견한다. 그때는 이미 몇 달치가 서로 다른 규칙으로 쌓인 뒤라 되돌릴 수 없다.
실제로 두 로그는 이미 다르다.
크덤집 bot_traffic_logs |
로닛 ai_crawl_logs |
|
|---|---|---|
| 위장 판정 | is_spoofed 있음 |
없음 |
| IP 대역 검증 | 없음 | 없음 |
| 봇 운영사 | 없음 | bot_operator |
| 국가 | 없음 | country |
| 페이지 귀속 | page_type·locale |
page_kind·entity_slug |
| 상태코드 | 없음 | status_code (⚠️ 항상 200) |
| 보관 | 90일 롤링 | 2026-06-12부터 누적 |
이 상태로 숫자를 나란히 놓으면 한쪽은 사칭이 걸러진 값, 한쪽은 섞인 값이 된다.
1. 해결 방식 — 수집은 그대로, 정규화는 한 곳에서
두 사이트의 미들웨어를 고치지 않는다. 고치면 그 시점 전후로 또 다른 단절이 생긴다.
대신 양쪽 모두 원본 IP를 통째로 저장하고 있다는 점을 이용한다
(크덤집 IPv4 817,348행 · 로닛 85.208.96.199 형태 전체 저장).
→ 인트릭스의 판정 로직(src/lib/bot-verify.ts·bot-spoof.ts)을 과거 데이터에 소급 적용하면
두 사이트가 같은 규칙으로 정규화된다. 수집을 안 건드리고도 정합이 맞는다.
크덤집 원본 ─┐
├→ normalize.ts (같은 봇 목록·같은 검증 규칙·같은 페이지 매핑) → 스냅샷
로닛 원본 ──┘
2. 고정하는 정의 (변경하려면 개정 이력을 남긴다)
2.1 AI 크롤러 목록
1차 집합 (교차 비교의 기준) — 두 사이트 모두 관측되고 운영사가 명확한 것:
GPTBot · ClaudeBot · OAI-SearchBot · PerplexityBot
2차 집합 (별도 보고) — 포함 여부로 결과가 흔들리므로 항상 나눠 적는다:
ChatGPT-User · Claude-User · Perplexity-User (사용자 개시)
Bytespider · Amazonbot · Google-Extended · CCBot · DeepSeekBot
⚠️ 1차와 2차를 합산한 단일 수치를 내지 않는다. 로닛에서는 Amazonbot·Bytespider가 상위이고 크덤집에서는 GPTBot·ClaudeBot이 상위라, 합치면 구성비에만 좌우되는 값이 된다. 인용 조사에서 발견형·브랜드형을 합치지 않기로 한 것과 같은 이유다.
2.2 검증·제외 규칙
인트릭스 로직을 그대로 쓴다. 판정은 셋이다.
| 판정 | 근거 | 집계 |
|---|---|---|
verified |
사업자 공개 IP 대역 안 | 포함 |
spoofed |
대역 밖(목록 확정 봇) 또는 ASN 불일치 | 제외 |
unknown |
대역 미공개 봇(ClaudeBot 등)·IP 판독 실패 | 포함하되 별도 표기 |
⚠️ unknown이 많다는 사실 자체를 보고한다. ClaudeBot은 Anthropic이 대역을
공개하지 않아 항상 unknown이다. 이 비율을 감추면 "검증된 수치"처럼 보인다.
2.3 페이지 종류 매핑
교차 비교의 단위는 엔티티 상세 페이지다.
| 개념 | 크덤집 | 로닛 |
|---|---|---|
| 엔티티 상세 | /ko/clinic/* |
/places/* (page_kind='place') |
| 지역 허브 | /ko/station*·/ko/sido* |
page_kind='region' |
| 편집 콘텐츠 | /ko/blog/*·/ko/treatments/* |
해당 시 별도 |
크덤집은 한국어(/ko/)만 센다. 다국어 페이지가 있어 로케일을 섞으면 분모가 달라진다.
2.4 정규화 지표
사이트 규모가 24,815 대 687로 달라 절대 히트 수를 직접 비교하지 않는다.
1차 지표: 엔티티 상세 페이지당 30일 크롤 횟수 (봇별)
2차 지표: 30일 내 1회 이상 크롤된 페이지 비율 (커버리지)
3차 지표: 봇 구성비 (전체 AI 히트 중 각 봇의 몫)
3차가 가장 교란에 강하다. 규모·권위가 달라도 "어떤 봇이 오는가"의 구성은 비교할 수 있다.
2.5 기간
30일 창을 기본으로 하고, 창의 시작·끝을 항상 명시한다. 주간 변동이 크므로(크덤집 실측 268~17,661, 66배) 단일 창 비교로 단정하지 않는다.
3. ⚠️ 크덤집 90일 보관 — 스냅샷이 필요하다
크덤집 bot_traffic_logs는 90일 롤링이다(현재 2026-05-11 ~ 08-10).
하루가 지날 때마다 하루치 과거가 사라진다. 장기 비교를 하려면 지금부터 스냅샷을 남겨야 한다.
→ 월 1회 normalize.ts를 돌려 집계 스냅샷을 저장소에 커밋한다.
원자료가 아니라 집계본이라 용량이 작고, 병원 실명이 들어가지 않는다.
로닛은 2026-06-12부터 누적이라 아직 삭제 정책이 없어 보이지만, 확인 전까지 같게 취급한다.
4. 하지 않기로 한 것
status_code사용 금지. 로닛에 컬럼이 있지만NextResponse.next()의 상태라 항상 200이다. 미들웨어는 라우트 실행 전에 돌아 최종 상태를 알 수 없다. "봇이 404를 받았나"는 경로를 실제 엔티티 테이블과 대조해 답한다(크덤집에서 쓴 방법).- 두 사이트의 미들웨어를 통일하지 않는다. 고치는 순간 그 시점 전후로 단절이 생긴다. 정합은 분석 계층에서 맞춘다.
- 절대 히트 수 비교 금지. §2.4의 정규화 지표만 쓴다.
5. 이미 관측된 것 (규약 적용 전 값 — 참고용)
원장 perplexity-skips-generated-entity-pages 참조. 2026-07-11~08-10 30일 기준.
크덤집 /ko/clinic/* PerplexityBot 0 · ClaudeBot 14,780 · GPTBot 12,421 · OAI-SearchBot 4,726
로닛 /places/* PerplexityBot 1,891 · OAI-SearchBot 1,366 · ClaudeBot 1,087 · GPTBot 83
⚠️ 이 값은 크덤집만 위장 제외가 적용된 상태라 규약 §2.2를 만족하지 않는다. 정규화 후 다시 산출한다.
6. 미결
- 로닛 로그 삭제 정책 확인 (누적인지 롤링인지)
-
normalize.ts첫 스냅샷 산출 및 §5 수치 재계산 - 월 1회 스냅샷 루틴 등록
- 로닛
unknown-bot42,507건(30일 전체의 45%)의 정체 — 미분류 UA인지 사칭인지