robots.txt의 AI 봇 구분: 학습을 막으려다 ChatGPT 검색에서 빠진 두 앱
듀오랩스 이름으로 운영하는 형제 앱 스무 개의 robots.txt를 하나씩 열어 본 적이 있습니다. 그중 두 곳에 이런 줄이 있었습니다.
User-agent: OAI-SearchBot
Disallow: /
User-agent: PerplexityBot
Disallow: /바로 위 주석에는 "학습용 AI 크롤러는 막는다"고 적혀 있었습니다. 의도는 학습을 막는 것이었는데, 막힌 것은 검색이었습니다. 이 두 앱은 그동안 ChatGPT 검색과 Perplexity 답변에 나올 수 없었습니다.
AI 봇은 전부 학습용이라는 오해
AI 회사의 크롤러를 하나로 묶어 생각하기 쉽습니다. AI가 우리 글을 가져가는 것이 싫으면 AI 봇을 막으면 된다는 식입니다. 실제로는 한 회사가 목적이 다른 봇을 여럿 돌립니다.
OpenAI 문서에 따르면 GPTBot은 생성형 모델 학습용이고, OAI-SearchBot은 ChatGPT 검색에 사이트를 보여 주기 위한 것입니다. 문서는 OAI-SearchBot을 막은 사이트는 ChatGPT 검색 답변에 나오지 않는다고 분명히 적습니다. Anthropic도 같은 구조입니다. ClaudeBot은 학습, Claude-SearchBot은 검색 품질, Claude-User는 사용자가 질문했을 때 페이지를 가져오는 역할입니다.
| 목적 | OpenAI | Anthropic |
|---|---|---|
| 모델 학습 | GPTBot | ClaudeBot |
| 검색 색인 | OAI-SearchBot | Claude-SearchBot |
| 사용자 요청 시 열람 | ChatGPT-User | Claude-User |
학습을 막고 싶다면 첫 줄만 막아야 합니다. 두 번째 줄을 막는 것은 구글봇을 막는 것과 같은 효과입니다. 검색에서 사라집니다.
주석과 코드가 반대였던 이유
두 앱의 코드를 보면 실수의 모양이 보였습니다. 학습 봇 목록을 만들면서 이름에 "Bot"이 들어간 AI 회사의 크롤러를 한데 모은 것으로 보였습니다. 주석은 의도를 정확히 적었고, 목록만 넓었습니다.
같은 조사에서 반대 방향의 어긋남도 나왔습니다. 한 앱의 운영 문서는 "학습용 AI 크롤러를 막는다"고 적었는데 코드는 전부 허용하고 있었습니다. 다른 앱의 정책 문서는 학습을 거부한다고 적었고, 정작 본진은 학습을 허용하고 있었습니다. robots.txt는 앱마다 따로 쓰고, 방침은 문서마다 따로 적다 보니 스무 개가 저마다의 방침을 갖게 된 것입니다.
학습 봇까지 허용하기로 한 판단
고치면서 질문을 하나 더 해야 했습니다. 검색 봇을 풀어 주는 것은 당연한데, 학습 봇은 계속 막을 것인가.
저는 전부 허용하기로 했습니다. 이유는 두 가지입니다. 학습 봇을 막아도 검색 노출은 달라지지 않습니다. 검색에 쓰이는 봇은 따로 있기 때문입니다. 반대로 허용하면 다음 세대 모델이 듀오랩스라는 회사와 우리가 쓴 글을 알고 있을 가능성이 생깁니다. 블로그 글은 이미 CC BY 4.0으로 공개하고 있어서, 학습을 막는 것은 블로그의 라이선스 방침과도 맞지 않았습니다.
이 판단은 회사마다 다를 수 있습니다. 유료 콘텐츠를 파는 곳이라면 학습을 막는 것이 맞습니다. 다만 그 경우에도 검색 봇은 따로 열어 두어야 합니다. 막을 이유가 학습에 있다면 학습 봇만 막는 것이 정확한 표현입니다.
방침을 한 줄로, 확인은 기계에게
스무 개 앱에서 같은 실수가 다시 나오지 않으려면 방침이 한곳에 있어야 합니다. 그래서 앱을 만드는 공통 스타터 템플릿의 robots 규칙에 "AI 검색 봇 명시 허용, 학습 봇은 그룹 방침 한 줄을 따른다"를 넣기로 했습니다. 새 앱은 처음부터 같은 규칙으로 태어납니다.
이미 있는 앱은 사람이 매번 열어 볼 수 없습니다. 공개 호스트 목록을 돌면서 robots.txt에 검색 봇 차단이 있는지를 주기적으로 확인하는 점검을 두는 것이 다음 할 일입니다. robots.txt는 틀려도 아무 에러를 내지 않습니다. 사이트는 멀쩡히 열리고, 검색 결과에서만 조용히 빠집니다.
OpenAI 문서에 따르면 robots.txt를 고친 뒤 검색 시스템에 반영되기까지 24시간쯤 걸립니다. 제가 고친 것은 9월 29일이었습니다. 그 전까지 이 두 앱이 AI 검색에서 얼마나 빠져 있었는지는 이제 알 수 없습니다. 알 수 있는 것은 앞으로 같은 줄이 다시 들어가면 점검이 먼저 알려 준다는 것뿐입니다.
우리 서비스에 적용할 계획이 있으신가요?
홈페이지·웹서비스 개발 살펴보기 →함께 읽기
- robots.txt는 무엇이고 왜 필요한가웹사이트를 운영하다 보면 루트 주소에서 robots.txt라는 작은 텍스트 파일을 만나게 됩니다. 내용은 몇 줄뿐인데 검색엔진 최적화 점검표에는 거의 빠지지 않고 등장합니다.
- SEO·AEO·GEO는 무엇이 다를까: AI 검색 시대의 노출 전략예전에는 Google이나 네이버 검색 결과의 상단에 노출되는 것이 목표였습니다. 이제는 AI Overview, AI Mode와 여러 답변형 서비스가 웹 문서를 요약해 답을 만들면서 AEO와 GEO라는 표현도 자주 보입니다.
- AI 검색 유입 측정: ChatGPT 가 붙이는 utm_source 와 광고 표에서 떼어 내는 법ChatGPT 답변 안의 링크를 눌러 보면 주소 끝에 이런 것이 붙어 있습니다.
- 네이버 서치어드바이저 등록부터 사이트맵 제출까지웹사이트를 만들었다고 네이버 검색 결과에 바로 나타나는 것은 아닙니다. 검색로봇이 사이트를 발견하고, 문서를 수집하고, 색인할 수 있어야 합니다. 네이버 서치어드바이저는 이 과정을 직접 보장하는 등록 창구라기보다 사이트 소유권을 확인하고 수집·색인 상태를 점검하는 운영 도구에 가깝습니다.
- 태그 485개를 전부 색인시키고 있었습니다: 블로그 SEO를 다시 손본 기록블로그에는 이미 canonical, sitemap, robots.txt, 글별 Open Graph 이미지, 구조화 데이터가 들어가 있었습니다. RSS와 Atom, JSON Feed도 있었고 관련 글 링크도 붙어 있었습니다. 그래서 처음에는 큰 구멍보다는 메타 설명을 조금 다듬는 정도를 예상했습니다.