대부분의 robots.txt 파일은 Googlebot과 Bingbot을 위해 작성되었습니다. 그 이후로 AI 회사들이 여러 새로운 크롤러를 추가했으며, 이들은 각기 다른 작업을 수행합니다. 만약 귀하가 자신의 파일이 이들을 어떻게 처리하는지 확인한 적이 없다면, 의도치 않게 AI 검색을 차단하고 있거나, 혹은 결정하지 않은 상태에서 학습 크롤러를 허용하고 있을 수 있습니다.
본 게시물에서는 사람들이 혼란스러워하는 세 가지 사항을 다룹니다. 어떤 AI 봇들이 존재하는지, 크롤러가 어떤 규칙을 따를지 어떻게 선택하는지, 그리고 잘 의도된 User-agent: * 블록이 왜 그들에게는 종종 아무 효과가 없는지를 설명합니다.
세 종류의 AI 봇
AI 사용자 에이전트(user agents)를 회사별이 아닌 기능별로 분류하는 것이 도움이 됩니다:
- 답변 엔진/AI 검색 (Answer engines / AI search): 어시스턴트가 답변에 인용할 수 있도록 페이지를 가져옵니다. 예시:
OAI-SearchBot, Claude-SearchBot, PerplexityBot.
- 요청 기반 가져오기(On-request fetchers): 사람이 어시스턴트에게 해당 내용에 대해 질문했기 때문에 페이지를 로드합니다. 예시:
ChatGPT-User.
- 학습 크롤러 (Training crawlers): 모델을 훈련하기 위해 콘텐츠를 수집합니다. 예시:
GPTBot, ClaudeBot, CCBot (Common Crawl).
많은 사이트 소유자들은 처음 두 가지(방문자를 보낼 수 있는)는 원하고 세 번째는 제외하길 원합니다. 이는 비즈니스 결정이지만, 규칙에 적절한 봇의 이름을 명시해야만 할 수 있습니다. 또한 공급업체들은 자신들의 봇 행동 방식을 변경하기도 하므로, 각 봇의 자체 문서를 확인하는 것이 좋습니다.
크롤러가 규칙을 선택하는 방법
RFC 9309(robots.txt 표준)와 Google의 문서는 동일한 기본 논리를 설명합니다:
- 크롤러는 자신의 이름과 가장 구체적으로 일치하는
User-agent 라인을 가진 그룹을 찾습니다.
- 만약 그것을 발견하면, 오직 그 그룹만을 따릅니다.
* 그룹은 자신만의 그룹이 없는 크롤러를 위한 대체(fallback) 수단입니다.
- 그룹 내부에서는 **가장 긴 일치 경로(longest matching path)**가 승리합니다. 만약
Allow 규칙과 Disallow 규칙이 같은 길이로 일치한다면, Allow가 승리합니다.
2번 항목이 사람들을 함정에 빠뜨리는 부분입니다.
당신의 * 규칙이 적용되지 않는 이유
다음 파일을 참고하십시오:
User-agent: *
Disallow: /admin/
Disallow: /cart/
...
안전해 보이지만, 이제 OAI-SearchBot이 자체 그룹을 가지게 되어 * 그룹을 완전히 무시합니다. 따라서 /admin/ 및 /cart/에 대한 규칙은 더 이상 이 봇에 적용되지 않습니다. 해결 방법은 공유된 규칙을 모든 명명된 그룹 내부에 반복하는 것입니다:
User-agent: OAI-SearchBot
User-agent: Claude-SearchBot
User-agent: PerplexityBot
...
User-agent 라인 여러 개가 하나의 그룹을 공유할 수 있어 파일을 간결하게 유지할 수 있습니다.
두 가지 솔직한 한계점
- robots.txt는 잠금장치가 아니라 요청입니다. 규칙을 잘 따르는 봇은 이를 준수하지만, 그렇지 않은 봇도 있습니다. 차단을 강제해야 한다면 호스트(host), 방화벽(firewall) 또는 CDN에서 수행해야 합니다.
- CDN이 이미 대신 결정했을 수 있습니다. 일부 CDN과 보안 플러그인은 기본적으로 AI 크롤러를 차단합니다. 완벽한
robots.txt도 요청이 도달하지 않으면 도움이 되지 않으므로, 서버 또는 CDN 로그를 확인하세요.
자신의 파일 검사하기
이것을 수동으로 각 사용자 에이전트(user agent)에 대해 테스트할 수는 있지만, 20개 이상의 봇에게는 지루해집니다. 저희는 라이브 사이트 또는 붙여넣은 초안 파일의 모든 경로에 대해 22개의 AI 크롤러를 대상으로 하는 무료 검사기를 만들었습니다. 또한 llms.txt 파일을 찾고, 기존의 * 규칙을 유지하는 위와 같은 차단 블록을 작성해 줍니다 (저는 313 Automations에서 운영합니다):
[https://313automations.com/free-tools/ai-crawler-access-checker]
만약 커버해야 할 봇이 있다면 댓글로 알려주세요.