GPTBot이 워드프레스 사이트를 크롤링하지 못하게 하려면 robots.txt에 다음 줄을 추가하세요:
User-agent: GPTBot
Disallow: /
규칙을 잘 지키는 크롤러라면 이게 조치의 전부입니다. 하지만 방금 한 일이 무엇인지 스스로 솔직해질 필요가 있습니다. robots.txt는 울타리가 아니라 요청일 뿐입니다. OpenAI의 GPTBot은 이 파일을 가져와서 따릅니다. 반면 표준을 존중하지 않는 스크레이퍼는 똑같은 파일을 가져오고서 그 안의 모든 줄을 무시합니다. 이 조정에 오후 시간을 쏟기 전에 이 차이를 먼저 염두에 두세요.
주요 AI 크롤러를 한 번에 다루고 싶다면, 흔히 쓰이는 user-agent 토큰은 다음과 같습니다:
User-agent: GPTBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: PerplexityBot
Disallow: /
User-agent: Bytespider
Disallow: /
GPTBot은 OpenAI의 학습용 크롤러이고, CCBot은 Common Crawl(다운스트림에서 여러 모델이 이 데이터로 학습합니다), ClaudeBot은 Anthropic, Google-Extended는 구글의 AI 학습용 토큰, Bytespider는 ByteDance입니다. 이 중 두 개는 이미 ‘정중한 요청’ 모델을 깨뜨린다는 점에 주목하세요. Bytespider와 PerplexityBot은 둘 다 자신을 차단한 사이트를 크롤링한 사실이 공개적으로 문서화된 적이 있습니다. 그래도 이들을 목록에 넣는 것은 정직한 봇에는 도움이 됩니다. 다만 이미 자기 정체를 속이는 봇에는 아무런 효과가 없습니다.
워드프레스가 실제로 robots.txt를 제공하는 방식
대부분의 사람들이 편집한 내용이 조용히 아무 효과도 내지 못하는 지점이 바로 여기입니다. 웹 루트에 물리적인 robots.txt 파일이 없으면 워드프레스가 즉석에서 하나를 생성합니다. 이 요청은 wp-includes/functions.php의 do_robots()가 처리하며, 그 출력은 robots_txt 필터를 거칩니다. 설정 → 읽기 아래의 “검색 엔진이 이 사이트를 색인하지 않도록 함” 체크박스는 blog_public 옵션을 바꾸는데, 이것이 바로 그 가상 파일에서 Disallow: /를 내보내게 만드는 요인입니다.
따라서 AI 크롤러 규칙을 프로그램적으로 추가할 수 있습니다:
add_filter( 'robots_txt', function ( $output, $public ) {
$output .= "User-agent: GPTBot\nDisallow: /\n";
return $output;
}, 10, 2 );
여기 시간을 잡아먹는 함정이 있습니다. 웹 루트에 정적 robots.txt 파일이 존재하는 순간, Apache나 nginx가 그 파일을 직접 제공하고 워드프레스는 아예 실행되지 않습니다. robots_txt 필터, Yoast/Rank Math의 robots 편집기, 읽기 설정, 이 모든 것이 우회됩니다. 플러그인에서 robots.txt를 편집했는데도 실제 파일이 전혀 바뀌지 않았다면, 거의 항상 이게 이유입니다. 시크릿 창에서 https://yoursite.com/robots.txt를 확인하고 자신이 설정했다고 생각하는 내용과 비교해 보세요. 디스크에 실제 파일이 있다면 그 파일을 편집해야 합니다. 필터는 무관합니다.
순서대로 고치기
먼저, 깔끔한 규칙을 작성하세요. 실수로 Googlebot을 차단하지 않도록 문법과 크롤러 목록을 정확히 맞추세요. 저희 robots.txt 생성기는 AI 크롤러 차단 블록을 대신 만들어 주고 붙여넣을 정확한 파일을 보여줍니다. 결국 하나의 신뢰할 수 있는 파일을 갖게 되므로 가상 파일과 물리적 파일의 혼란을 비껴갑니다.
둘째, 실제로 적용됐는지 확인하세요. URL을 직접 가져와 보세요. 플러그인의 미리보기 창을 믿지 마세요.
셋째, 정중한 부탁이 아니라 강제 집행이 필요하다면 스택의 상위로 올라가세요. robots.txt는 애플리케이션 계층에 있으며 봇의 선의에 의존합니다. 연결을 실제로 거부하려면 서버에서 user agent로 차단하세요. .htaccess에서:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (GPTBot|CCBot|ClaudeBot|Bytespider) [NC]
RewriteRule .* - [F,L]
</IfModule>
이렇게 하면 해당 user agent를 보내는 모든 요청에 403을 반환합니다. 저희 .htaccess 생성기가 이 규칙을 조립해 줄 수 있습니다. 다만 그 한계를 이해해야 합니다. user agent는 손쉽게 위조되므로, 이 방법은 자기 정체를 밝힐 만큼 정직한 봇만 막습니다. 그런데 그런 봇은 이미 robots.txt를 따르는 바로 그 봇들입니다. 정말로 견고한 선택지는 검증된 크롤러 정체나 IP 대역으로 차단하는 CDN 또는 WAF입니다. Cloudflare의 원클릭 “Block AI Scrapers and Crawlers” 관리형 규칙이 이 방식의 가장 손이 덜 가는 버전이며, 요청이 워드프레스에 도달하기 전에 엣지에서 작동합니다.
하지 말아야 할 것
Google-Extended를 차단하면 AI Overviews에서 빠질 거라고 생각하지 마세요. 이것이 바로잡을 가치가 있는 오해입니다. Google-Extended는 크롤러가 아니라 제품 토큰입니다. 이 토큰은 오직 여러분의 콘텐츠가 Gemini 모델을 학습·근거화하는 데 쓰일지 여부만 제어합니다. 구글 자체 문서에 따르면, 이는 여러분의 페이지가 구글 검색에서 크롤링·색인·순위 매겨지는 방식에 아무런 영향이 없습니다. 그리고 AI Overviews는 Googlebot이 크롤링하는 일반 검색 색인에서 만들어지지, Google-Extended에서 만들어지지 않습니다. Google-Extended를 차단해도 AI Overviews에서 빠지지 않으며, 검색에서 순위 한 자리도 잃지 않습니다. AI Overviews에서 빠지는 유일한 방법은 Googlebot을 차단하거나 해당 페이지에 noindex를 거는 것인데, 이렇게 하면 검색에서도 완전히 삭제됩니다. 이건 여러분이 원할 만한 거래가 거의 아닙니다.
robots.txt를 보안 통제 수단으로 취급하지 마세요. 이것은 공개되어 있고 권고적일 뿐입니다. /wp-admin/이나 비공개 경로를 여기에 적는 것은 어디를 노려야 하는지 지도를 공개하는 셈입니다. 실제 엔드포인트는 disallow 한 줄이 아니라 인증으로 보호하세요.
noai / noimageai 메타 태그에 의존하지 마세요. 이들은 제안됐을 뿐 표준화되지 않았고, 극소수 플랫폼만 이를 존중합니다. 일반적인 방어 수단이 아닙니다.
“AI 차단” 플러그인이 robots.txt를 쓰는 것 이상을 했으리라 가정하지 마세요. 대부분은 여러분이 직접 손으로 쓸 수 있는 것과 똑같은 줄을 쓰고, 똑같은 한계를 물려받습니다. 플러그인을 신뢰하기 전에 그것이 실제로 무엇을 바꿨는지 확인하세요.
여전히 막혔나요?
편집한 내용이 반영되지 않는다면, 답은 거의 항상 웹 루트에 있는 엉뚱한 물리적 robots.txt가 워드프레스의 가상 파일을 덮어쓰고 있는 것입니다. URL을 직접 가져와서 확인하세요. 규칙을 지키는 봇은 사라졌는데 스크레이퍼가 계속 들이닥친다면, robots.txt로 할 수 있는 한계에 도달한 것이며, 다음 수는 정중히 부탁하는 대신 검증된 정체로 차단하는 WAF 또는 CDN 규칙입니다.