Googlebot이 페이지를 색인해 검색 순위에 반영하는 것과 달리, AI 크롤러는 목적에 따라 두 계통으로 나뉜다. 첫째는 학습 데이터 수집(training crawl)으로 GPTBot·CCBot·Google-Extended·ClaudeBot이 해당하고, 둘째는 실시간 RAG 검색(retrieval crawl)으로 ChatGPT-User·PerplexityBot이 사용자 질의 시점에 콘텐츠를 fetch해 답변 컨텍스트로 사용한다. 두 유형은 robots.txt에서 별개의 User-Agent 토큰으로 독립 제어해야 하며, 한 유형을 차단해도 다른 유형에 자동으로 영향을 주지 않는다. 2023~2024년 OpenAI·Anthropic·Perplexity·Google이 크롤러 정책 문서를 공개하면서, 서버 로그에서 이들을 정확히 식별하고 콘텐츠별 허용 범위를 정의하는 것이 AEO·GEO 실무의 기반 인프라가 됐다.
AI 크롤러의 두 유형과 작동 메커니즘
- 학습 크롤러(Training Crawl): 수 주~수 개월 주기로 대규모 도메인을 순회하며 HTML을 파싱해 텍스트를 추출한다. 수집된 콘텐츠는 LLM 사전학습 데이터셋에 편입된다. — 차단 효과는 다음 학습 사이클 이후 모델 버전부터 반영되므로 즉각적인 AI 답변 변화를 기대할 수 없다.
- 검색 크롤러(Retrieval Crawl): 사용자 쿼리 발생 시점에 검색 API를 거쳐 관련 URL을 실시간 fetch한다. 캐시 TTL이 짧고 동일 URL을 고빈도로 재방문한다. — 허용하면 답변에 즉시 인용 가능. 차단하면 해당 서비스 답변에서 즉각 누락된다.
- Common Crawl 간접 경로: CCBot 자체는 특정 LLM 운영사가 아니지만, CC 스냅샷은 GPT·LLaMA·Mistral·Falcon 등 수십 개 모델의 학습 코퍼스 일부로 사용된다. — CCBot 차단은 CC를 훈련 데이터로 쓰는 모든 파생 모델의 이후 버전에 영향을 미친다.
주요 AI 크롤러 식별자 비교
| 크롤러 | 운영사 | User-Agent 토큰 | 목적 유형 | robots.txt 공식 지원 |
|---|---|---|---|---|
| GPTBot | OpenAI | GPTBot/1.0 |
학습 데이터 | 공식 지원(IP 대역 공개) |
| ChatGPT-User | OpenAI | ChatGPT-User/1.0 |
실시간 RAG | 공식 지원 |
| CCBot | Common Crawl | CCBot/2.0 |
학습 데이터(간접) | 지원 |
| ClaudeBot | Anthropic | ClaudeBot/0.5 |
학습 데이터 | 공식 지원 |
| PerplexityBot | Perplexity AI | PerplexityBot/1.0 |
실시간 RAG | 공식 지원 |
| Google-Extended | Google-Extended |
학습 데이터(Gemini) | 공식 지원(Googlebot과 분리) | |
| Bytespider | ByteDance | Bytespider |
학습 데이터 | 지원(추정, 정책 문서 미공개) |
| Applebot-Extended | Apple | Applebot-Extended |
학습 데이터(Apple Intelligence) | 지원 |
robots.txt를 이용한 크롤러별 접근 제어
구문 우선순위 규칙
- 가장 구체적인 User-agent 블록이 우선 적용:
GPTBot과*가 공존하면 GPTBot에는 GPTBot 블록이 적용된다. — 크롤러별로 다른 정책을 줄 때 와일드카드*블록만으로는 개별 제어가 불가능하다. 각 봇에 독립 블록을 명시해야 한다. - 더 긴 경로의 Allow가 짧은 Disallow를 오버라이드:
Disallow: /와Allow: /blog/가 공존하면/blog/하위는 허용된다. — 학습 데이터 수집은 거부하면서 공개 콘텐츠의 실시간 RAG 인용은 허용할 때 이 구조를 사용한다. - robots.txt 파싱 실패 시 크롤러 동작은 운영사 정책에 따라 다름: 일부는 전체 허용으로, 일부는 전체 차단으로 폴백한다. — 배포 후 문법 검증을 자동화해야 한다.
# =====================================================
# AI 크롤러별 접근 제어 예시 (robots.txt)
# =====================================================
# GPTBot — OpenAI 학습 크롤러: 전체 차단
User-agent: GPTBot
Disallow: /
# ChatGPT-User — OpenAI 실시간 RAG: 공개 콘텐츠 허용
User-agent: ChatGPT-User
Allow: /blog/
Allow: /docs/
Disallow: /
# CCBot — Common Crawl: 전체 차단
User-agent: CCBot
Disallow: /
# ClaudeBot — Anthropic 학습 크롤러: 전체 차단
User-agent: ClaudeBot
Disallow: /
# PerplexityBot — 실시간 RAG: 공개 콘텐츠 허용, 내부 경로 차단
User-agent: PerplexityBot
Allow: /
Disallow: /private/
Disallow: /internal/
# Google-Extended — Gemini 학습 데이터: 전체 차단
# 주의: Googlebot(검색 색인)에는 영향 없음
User-agent: Google-Extended
Disallow: /
# Bytespider — ByteDance LLM 학습 크롤러
User-agent: Bytespider
Disallow: /
# Applebot-Extended — Apple Intelligence 학습 크롤러
User-agent: Applebot-Extended
Disallow: /
llms.txt — LLM 전용 콘텐츠 접근 신호
/llms.txt는 2024년 제안된 규약으로, LLM에 사이트 구조와 허용 콘텐츠를 마크다운 형식으로 안내한다. robots.txt가 크롤 허용 여부를 제어하는 반면, llms.txt는 어떤 콘텐츠를 어떤 목적으로 사용해도 되는지를 LLM 파이프라인에 전달하는 의미 신호다. 현재 OpenAI·Perplexity 등 일부 크롤러가 파싱을 시작했으나 전 산업 표준화는 진행 중이다.
- 파일 위치는 도메인 루트 고정:
https://example.com/llms.txt. 서브디렉토리는 현재 스펙상 비표준이다. — 루트에 두어야 크롤러가 일관되게 탐지할 수 있다. - 콘텐츠 설명 링크로 RAG 청크 품질 향상: 각 URL에 한 줄 설명을 붙이면 LLM이 콘텐츠 성격을 파악하는 속도가 빨라진다. — 설명이 없는 URL 목록보다 인용 정확도가 높아진다(사례에 따라 다름).
llms-full.txt별도 제공으로 크롤 부하 절감: 전체 콘텐츠 텍스트를 단일 파일에 담아 크롤러가 한 번만 fetch하도록 유도한다. — 대형 문서 사이트·기술 블로그에서 효과적이다.
# /llms.txt 예시 (마크다운 형식, 도메인 루트에 배치)
# Citeon
> Citeon은 AEO·GEO·SEO 통합 마케팅 대행사입니다.
> 기술 블로그와 가이드 문서는 인용·학습에 허용합니다.
## Docs
- [AEO 완전 가이드](/blog/aeo-guide/): 답변엔진최적화 원리와 구현 방법
- [GEO 전략 가이드](/blog/geo-strategy/): 생성형 엔진 최적화 실무
- [AI 크롤러 제어 매뉴얼](/docs/robots-txt/): robots.txt 설정 레퍼런스
- [서비스 소개](/services/): 제공 서비스 상세 설명
## Optional
- Full text: https://citeon.example.com/llms-full.txt
검증과 모니터링
서버 로그 기반 식별
- User-Agent 문자열 grep으로 일별 크롤량 측정: robots.txt 차단 전후 수치를 비교해 설정 효과를 수치로 확인한다. —
grep -E "GPTBot|CCBot|ClaudeBot|PerplexityBot|Google-Extended|Bytespider" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c로 IP별 빈도를 추출한다. - 운영사 공개 IP 대역과 교차 검증해 User-Agent 스푸핑 탐지: 신뢰할 수 있는 크롤러는 공개된 IP 대역에서만 접근한다. — OpenAI는
openai.com/gptbot-ranges.txt에 GPTBot IP 대역을 공개한다. 해당 대역 외에서 GPTBot User-Agent가 오면 스푸핑으로 간주한다. - robots.txt GET 요청 추적으로 미등록 크롤러 조기 탐지: 모든 규칙 준수 크롤러는 크롤 시작 전 반드시 robots.txt를 요청한다. — 로그에서
GET /robots.txt의 신규 User-Agent를 주기적으로 감시하면 새 AI 크롤러를 사전에 발견할 수 있다.
흔한 오해: "GPTBot 차단 = ChatGPT 답변에서 사이트 제거"
오해: User-agent: GPTBot / Disallow: /를 설정하면 ChatGPT가 내 사이트를 더 이상 인용하지 않는다고 생각하는 경우가 있다.
사실: GPTBot(학습 크롤러)과 ChatGPT-User(실시간 RAG 검색)는 별개의 User-Agent로 동작하는 독립 시스템이다. GPTBot 차단은 다음 학습 사이클 이후 모델 가중치에만 영향을 미치며, ChatGPT Search가 쿼리 시점에 페이지를 실시간 fetch하는 행위와는 무관하다. GPTBot을 차단한 상태에서도 ChatGPT-User를 허용하면 ChatGPT Search 답변에 콘텐츠가 인용된다.
올바른 처리: 학습 데이터 제공은 거부하되 AI 검색 인용은 원한다면, GPTBot·ClaudeBot·Google-Extended에는 Disallow: /를, ChatGPT-User·PerplexityBot에는 Allow: /를 명시적으로 분리 설정한다.
Q. Google-Extended를 차단해도 Googlebot의 검색 색인 순위에는 영향이 없나요?
그렇다. User-agent: Google-Extended는 Gemini 학습 데이터 수집 크롤러 전용이며, User-agent: Googlebot과 파서 레벨에서 완전히 분리된다. Google Search Central 공식 문서에 따르면 Google-Extended 차단은 Google 검색 순위와 색인에 영향을 주지 않는다고 명시돼 있다. 다만, Google AI Overviews(AI 개요)가 Gemini 모델을 기반으로 생성된다는 점을 고려하면, Google-Extended를 차단할 경우 AI Overviews 내 인용 빈도에는 간접적 영향이 있을 수 있다(현재 Google이 공식 확인한 내용은 아님, 추정).
Q. CCBot을 차단하면 어떤 LLM의 학습에서 제외되나요?
Common Crawl 데이터셋은 GPT-3·LLaMA 계열·Mistral·Falcon 등 수십 개 오픈소스 및 상용 모델의 사전학습 코퍼스 일부로 활용됐으며 현재도 활용된다. CCBot 차단은 이후 CC 스냅샷에서 해당 사이트를 제외시키므로, CC를 학습 데이터로 사용하는 모델의 차기 버전에 영향이 미친다. 단, 이미 학습에 반영된 과거 스냅샷은 소급 적용되지 않는다. 또한 GPTBot·ClaudeBot·Google-Extended처럼 독자 크롤러를 운영하는 서비스는 CCBot 차단과 무관하게 직접 수집을 수행하므로, 해당 모델의 학습 데이터 제외를 원한다면 각 크롤러를 개별 차단해야 한다.
참고 자료
이 글의 권고는 아래 공식 문서·연구를 근거로 합니다.