OpenAI 크롤러 설명: GPTBot, OAI-SearchBot, ChatGPT-User
OpenAI는 모델 학습에 쓰일 수 있는 콘텐츠를 수집할 때 GPTBot을, ChatGPT 검색용 페이지 색인에 OAI-SearchBot을, 사용자가 요청한 방문에 ChatGPT-User를 사용합니다. GPTBot을 차단하면 학습만 거부하게 됩니다. OAI-SearchBot을 차단하면 ChatGPT 검색 답변에서 빠집니다. ChatGPT-User에는 robots.txt가 적용되지 않을 수 있습니다.
한 회사에서 나온 서로 다른 세 user agent가 각각 별도의 robots.txt 토큰을 쓰다 보니 혼란이 많습니다. GPTBot이 등장했을 때 많은 사이트가 이를 차단했고, 일부는 나중에 넓은 방화벽 규칙 등으로 ChatGPT가 인용할 수 있는지를 결정하는 크롤러까지 함께 차단했다는 사실을 알게 되었습니다. 이 글에서는 OpenAI의 공식 문서를 바탕으로 각 에이전트를 차례로 살펴봅니다.
이 글의 목차
GPTBot은 무엇을 하나요?
GPTBot은 OpenAI의 생성형 AI 기반 모델 학습에 사용될 수 있는 콘텐츠를 크롤링합니다. OpenAI 문서에 따르면 GPTBot을 차단하면 해당 사이트의 콘텐츠를 모델 학습에 사용하지 말라는 뜻이 됩니다.
user agent에는 GPTBot이라는 토큰이 들어 있으며, 예를 들면 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot입니다. OpenAI는 버전 번호가 바뀔 수 있다고 밝히므로, 전체 문자열이 아니라 토큰으로 일치시켜야 합니다. IP 대역은 openai.com/gptbot.json에 공개되어 있습니다.
허용할지는 정책의 문제입니다. 콘텐츠가 학습 데이터에 포함되기를 원하는 발행처도 있고 그렇지 않은 발행처도 있습니다. 차단해도 ChatGPT 검색에는 영향이 없습니다. 별개의 크롤러이기 때문입니다. 나중에 생각이 바뀌면 Disallow 줄을 지우기만 하면 되고, 따로 등록하거나 신청할 것은 없습니다.
OAI-SearchBot은 무엇을 하나요?
OAI-SearchBot은 OpenAI의 검색 크롤러입니다. ChatGPT의 검색 기능에 웹사이트를 표시되게 합니다. OpenAI는 OAI-SearchBot을 차단한 사이트는 ChatGPT 검색 답변에 표시되지 않는다고 분명하게 밝히고 있습니다.
ChatGPT가 내 페이지를 인용하기를 원한다면 robots.txt와 방화벽 모두에서 이 크롤러를 허용해야 합니다. IP 대역이 openai.com/searchbot.json에 공개되어 있어, 방화벽에서 요청이 실제로 OpenAI에서 온 것인지 검증할 수 있습니다.
ChatGPT-User는 무엇을 하나요?
ChatGPT-User는 일반적인 의미의 크롤러가 아닙니다. ChatGPT 사용자나 커스텀 GPT가 요청할 때 페이지를 가져옵니다. 예를 들어 누군가 채팅에 내 URL을 붙여 넣고 요약을 요청하는 경우입니다. OpenAI는 이 에이전트가 웹을 자동으로 크롤링하는 데 쓰이지 않는다고 밝힙니다.
OpenAI 문서에서 여기에 중요한 내용이 두 가지 있습니다. 첫째, 이런 동작은 사용자가 시작하는 것이므로 robots.txt 규칙이 적용되지 않을 수 있습니다. 둘째, ChatGPT-User는 콘텐츠를 검색에 표시할 수 있는지 판단하는 데 쓰이지 않습니다. 검색에서 중요한 설정은 OAI-SearchBot입니다.
각각을 차단하면 어떻게 되나요?
GPTBot차단: 콘텐츠가 학습에 사용되지 않도록 표시됩니다.OAI-SearchBot이 허용되어 있으면 ChatGPT 검색에는 계속 표시되고 인용될 수 있습니다.OAI-SearchBot차단: 페이지가 ChatGPT 검색 답변에 표시되지 않습니다. 학습은GPTBot이 별도로 제어합니다.- robots.txt에서
ChatGPT-User차단: OpenAI는 이런 방문에는 robots.txt가 적용되지 않을 수 있다고 하므로 효과가 보장되지 않습니다. 방화벽에서 차단하면 가져오기가 막히고, 링크를 붙여 넣은 사용자는 내 콘텐츠 대신 오류를 보게 됩니다. - 세 가지를 모두 방화벽에서 차단: ChatGPT가 내 페이지를 색인하지도 가져오지도 못하므로 인용할 내용이 없습니다.
- 세 가지를 모두 허용: 페이지가 검색용으로 색인되고, 요청 시 가져와지며,
GPTBot을 통해 학습에도 사용될 수 있습니다.
OpenAI는 또한 GPTBot과 OAI-SearchBot이 모두 허용된 경우 두 번 크롤링하지 않도록 한 번의 크롤링 결과를 두 용도에 모두 사용할 수 있다고 밝힙니다.
OpenAI 크롤러에는 어떤 robots.txt를 써야 하나요?
ChatGPT 답변에 나오기를 원하는 대부분의 사이트라면 검색 크롤러는 허용하고 학습은 따로 결정합니다. 다음 파일은 검색은 허용하고 학습은 거부합니다.
User-agent: OAI-SearchBot
Allow: /
User-agent: GPTBot
Disallow: /
User-agent: *
Allow: /
Disallow: /admin/
RFC 9309의 세부 사항에 주의하세요. 크롤러는 자신을 지정한 그룹을 따르고 * 그룹은 무시합니다. 위 예시에서 OAI-SearchBot의 그룹에는 Disallow: /admin/ 줄이 없으므로 이 크롤러는 /admin/에 들어갈 수 있습니다. 비공개로 유지하려는 경로는 이름을 지정한 각 그룹에 반복해서 적어야 합니다. OpenAI에 따르면 검색 변경 사항이 적용되기까지 약 24시간이 걸릴 수 있습니다.
방화벽이 이들을 통과시키는지 어떻게 확인하나요?
robots.txt는 정책을 밝힐 뿐입니다. 각 요청이 실제로 무엇을 받는지는 방화벽이나 CDN이 결정합니다. 각 크롤러의 user agent로 페이지를 요청하고 상태 코드와 본문 크기를 브라우저 요청과 비교하세요. 크롤러에는 403, 429, 확인 페이지가 나오고 브라우저에는 정상 페이지가 나온다면, 방화벽이 robots.txt를 덮어쓰고 있는 것입니다.
AISeeWhy는 OpenAI의 세 에이전트에 대해 이 비교를 한꺼번에 실행하며, OAI-SearchBot과 ChatGPT-User의 차단은 인용을 잃게 하므로 P1으로, GPTBot 차단은 오류가 아닌 정책 선택으로 보고 P3으로 표시합니다.
자주 묻는 질문
GPTBot은 ChatGPT와 같은 것인가요?
아닙니다. GPTBot은 학습 데이터를 위한 크롤러입니다. ChatGPT 검색은 OAI-SearchBot을 사용하고, 사용자가 요청한 실시간 방문은 ChatGPT-User에서 나옵니다.
ChatGPT 검색은 허용하고 학습은 차단할 수 있나요?
네. robots.txt에서 OAI-SearchBot은 허용하고 GPTBot은 차단하면 됩니다. OpenAI는 이 두 설정이 서로 독립적이라고 문서화하고 있습니다.
OpenAI를 IP 주소로 차단해야 하나요?
IP로 차단하면 크롤러가 robots.txt를 읽을 수 없게 되어 정책을 바꾸기도 어려워집니다. 보통은 정책을 robots.txt에 밝히고, 공개된 IP 대역은 OpenAI 크롤러를 차단하는 용도가 아니라 검증하는 용도로 쓰는 편이 낫습니다.
왜 전체 user agent가 아니라 토큰으로 일치시키나요?
OpenAI는 user agent의 버전 번호가 바뀔 수 있고, 공개된 예시 문자열도 크롤러마다 다르다고 밝힙니다. GPTBot이나 OAI-SearchBot으로 일치시키는 규칙은 업데이트 후에도 계속 작동하지만, 정확한 문자열로 일치시키는 규칙은 어느 순간 조용히 맞지 않게 될 수 있습니다.