[실전 SEO 12] robots.txt와 IndexNow, 크롤링 통제의 기초와 착각


지금까지 크롤 예산을 아끼자는 얘기를 계속했는데, 봇의 출입을 직접 통제하는 가장 기본 도구가 robots.txt다. 그런데 이 파일은 오해도 가장 많이 받는다. 특히 robots.txt로 색인을 막을 수 있다는 착각은 실제로 큰 사고로 이어진다. 이번 편은 robots.txt의 기본과 흔한 착각, 그리고 반대 방향의 도구인 IndexNow까지 정리한다.


봇을 막는 것과 색인을 막는 것은 전혀 다른 일이다. 이 둘을 헷갈리면 색인시키고 싶은 걸 막아버리거나, 감추고 싶은 걸 오히려 검색에 남기는 정반대의 사고가 난다. 이번 편의 핵심은 이 구분이다.


1. robots.txt의 기본 문법

robots.txt는 사이트 최상위에 두는 평범한 텍스트 파일이다. User-agent로 대상 봇을 지정하고, Disallow로 크롤하지 말 경로를, Allow로 예외적으로 허용할 경로를 적는다. 그리고 Sitemap 지시문으로 사이트맵 위치를 알려준다. 문법은 단순하지만 그만큼 실수 하나가 사이트 전체에 영향을 준다.


가장 무서운 실수는 Disallow 한 줄로 전체를 막아버리는 것이다. 개발 중에 사이트 전체 크롤을 막아두었다가 배포하면서 그 설정을 안 푸는 사고가 대표적이다. 이 한 줄이 살아 있으면 아무리 콘텐츠가 좋아도 구글이 아예 안 들어온다. 배포 후 robots.txt가 의도대로인지 확인하는 건 필수 점검 항목이다.


반대로 Allow와 Disallow가 겹칠 땐 더 구체적인 규칙이 우선한다. 그래서 특정 폴더는 막되 그 안의 특정 파일은 열고 싶을 때 조합해서 쓴다. 규칙이 복잡해지면 GSC의 robots.txt 테스터로 원하는 URL이 실제로 허용되는지 확인하는 게 안전하다.


한 가지 덧붙이면 robots.txt는 공개 파일이라 누구나 볼 수 있다. 그래서 여기에 비밀 경로를 Disallow로 적으면 오히려 그 경로가 여기 숨겨진 게 있다고 광고하는 꼴이 된다. 실제로 robots.txt에 적힌 관리자 경로를 보고 침입을 시도하는 경우도 있다. 숨겨야 할 것은 robots가 아니라 접근 제어로 막아야지, 목록에 적어두는 게 아니다.


덧붙이면 robots.txt는 봇이 사이트에 들어와 가장 먼저 확인하는 파일이다. 그래서 이 파일을 못 읽거나 잘못 쓰여 있으면 그 뒤의 모든 크롤이 영향을 받는다. 사이트의 현관문 같은 존재라, 작은 실수가 집 전체의 출입을 좌우한다. 그만큼 배포 때마다 이 한 파일을 확인하는 습관이 중요하다.


2. 크롤 차단은 색인 차단이 아니다

가장 중요한 착각을 짚자. robots.txt의 Disallow는 크롤을 막는 것이지 색인을 막는 게 아니다. 구글이 그 페이지의 내용을 안 가져갈 뿐, 다른 곳에서 그 URL로 가는 링크가 많으면 내용 없이 주소만 검색 결과에 남길 수 있다. 제목도 설명도 없이 URL만 덩그러니 뜨는 그 결과가 바로 이 경우다.


그래서 어떤 페이지를 검색에서 확실히 빼고 싶다면 robots.txt로 막으면 안 된다. 오히려 봇이 그 페이지에 들어와서 noindex 태그를 읽게 해줘야 한다. robots로 크롤을 막아버리면 봇이 noindex를 읽을 기회조차 없어져서, 감추려던 게 URL만 남은 채 검색에 걸린다. 감추는 것과 못 들어오게 막는 것은 정반대의 결과를 낳는다.


이건 앞 편에서 파라미터 URL을 robots로 막으면 안 된다고 한 것과 같은 원리다. 정리하고 싶으면 크롤은 열어두고 noindex나 canonical로 신호를 줘야 한다. robots.txt는 감추는 도구가 아니라, 봇이 굳이 안 봐도 되는 곳에 시간을 안 쓰게 하는 예산 배분 도구로 이해해야 맞다.


이 착각이 위험한 이유를 하나 더 들면, robots로 막힌 URL은 GSC에서 색인됨-사이트맵에 제출됐으나 차단됨 같은 애매한 상태로 남는다. 색인은 안 되는데 완전히 빠지지도 않은 어정쩡한 상태다. 정말 빼고 싶었다면 크롤을 열고 noindex를 읽히는 게 맞았다. 막는 것과 빼는 것을 헷갈린 대가가 이 애매한 잔상이다.


3. 그럼 언제 robots.txt를 쓰나

robots.txt가 제 역할을 하는 건 색인과 무관한 영역을 봇의 동선에서 빼줄 때다. 예컨대 관리자 페이지, 로그인 뒤의 개인 영역, 검색 결과 페이지, 장바구니 같은 기능성 경로는 색인시킬 이유가 없으니 크롤 자체를 막아 예산을 아끼는 게 맞다.


여기서 기준은 이 경로가 검색 결과에 뜰 일이 있는가다. 뜰 일이 없고 그저 봇이 헤매기만 할 곳이면 Disallow로 막는다. 반대로 검색에서 빼고는 싶지만 혹시 URL이 노출되면 곤란한 민감한 페이지라면, robots가 아니라 noindex 더하기 접근 제어로 다뤄야 한다.


정리하면 robots.txt는 봇의 시간표를 짜는 도구다. 어디를 우선 보고 어디는 아예 안 봐도 되는지를 알려주는 것이지, 검색 노출 여부를 정하는 스위치가 아니다. 이 역할을 헷갈리지 않는 것만으로 대형 사고 하나를 예방한다.


기준을 하나 더 주면, 사용자가 로그인해야만 보이는 영역은 대부분 크롤을 막는 게 맞다. 봇은 로그인을 못 하니 그 경로를 긁어봐야 빈 화면이나 로그인 페이지만 반복해서 볼 뿐이다. 이런 경로를 열어두면 크롤 예산만 새고 얻는 건 없다. 색인시킬 공개 콘텐츠와 그렇지 않은 기능 영역을 나누는 감각이 필요하다.


한 가지 오해를 더 풀면, robots.txt로 크롤을 막아도 크롤 예산이 완전히 0이 되는 건 아니다. 봇은 여전히 그 URL의 존재를 인지하고 가끔 상태를 확인한다. 그래서 정말 봇을 안 오게 하려는 게 아니라 예산 배분이 목적임을 기억해야 한다. 막는다는 건 우선순위를 낮추는 것이지 완전한 차단이 아니다.


4. IndexNow, 반대 방향의 도구

robots.txt와 사이트맵이 여기 있으니 와서 보라는 수동적 안내라면, IndexNow는 방금 이게 바뀌었으니 와서 보라고 능동적으로 알리는 프로토콜이다. 새 글을 올리거나 글을 고쳤을 때 검색엔진에 즉시 통보해 크롤을 앞당기는 방식이다. 현재 빙과 네이버 등이 지원하고, 한 곳에 보내면 참여 엔진끼리 공유된다.


신생 사이트에 IndexNow가 매력적인 이유는 명확하다. 크롤 수요가 낮아 봇이 잘 안 오는 상황에서, 새 글이 나왔다고 콕 집어 알려주면 발견이 빨라질 수 있다. 사이트맵 제출이 지도를 갱신하는 거라면 IndexNow는 손을 들어 신고하는 것에 가깝다.


다만 IndexNow는 크롤을 앞당기는 것이지 색인이나 순위를 보장하지 않는다. 알렸다고 무조건 색인되는 게 아니라, 봇이 와서 보고 판단하는 건 그대로다. 발견 단계를 도와주는 도구일 뿐이라는 걸 분명히 알고 써야 기대와 결과가 어긋나지 않는다.


IndexNow를 붙일 때 실무적으로는 발행 훅에 연결하는 게 깔끔하다. 글이 정식 발행되는 순간 그 URL 하나를 IndexNow로 통보하도록 코드에 끼워두면, 사람이 매번 신경 쓸 필요 없이 새 글만 자동으로 알려진다. 수정 시에도 같은 방식으로 그 글만 다시 통보하면 된다. 자동화의 핵심은 신규와 수정에만 반응하게 하는 것이다.


5. IndexNow 남용은 독이다

여기서 반드시 지켜야 할 선이 있다. 신생 도메인이 옛 URL 수천 건을 IndexNow로 한꺼번에 핑 하는 건 절대 하면 안 된다. 대량 일괄 통보는 API 남용으로 잡혀 오히려 신뢰를 잃고, 죽은 URL이나 리다이렉트 주소를 섞어 보내면 지저분한 신호까지 준다.


올바른 사용은 살아 있는 신규 정식 글만, 발행 시점에 소량씩 자동으로 보내는 것이다. 하루에 몇 건에서 십여 건 수준의 자연스러운 발행 리듬에 맞춰 흘려보내는 게 맞다. 조급하다고 과거 글까지 몰아서 핑 하면, 도우려던 도구가 오히려 샌드박스를 길게 만든다.


정리하면 robots.txt는 봇을 어디 안 보낼지, IndexNow는 어디를 빨리 보게 할지를 다루는 한 쌍의 도구다. 둘 다 색인 자체를 강제하는 마법은 아니고, 크롤이라는 한정된 자원을 어디에 쓸지 조율하는 손잡이다. 다음 편부터는 크롤과 색인의 인프라를 넘어, 페이지 안쪽의 온페이지 요소로 들어간다. 첫 주제는 글마다 다른 설명문 만들기다.


남용을 피하는 또 하나의 안전장치는 통보 대상에 필터를 거는 것이다. 공개 상태이고 정식 게시판에 속한 살아 있는 글만 통보하고, 임시 글이나 삭제된 글, 리다이렉트 대상은 아예 제외하도록 조건을 건다. 이렇게 해두면 실수로 죽은 URL을 핑 하는 사고가 원천 차단된다. 도구는 좋지만 무엇을 먹이느냐를 통제해야 한다.


정리 관점에서 robots.txt와 IndexNow는 방향만 반대일 뿐 목적이 같다. 둘 다 한정된 크롤 자원을 가장 가치 있는 곳에 쓰이게 하려는 조율 도구다. 하나는 안 봐도 될 곳을 빼서, 다른 하나는 꼭 봐야 할 새 글을 앞당겨서. 이 관점으로 보면 두 도구를 언제 어떻게 쓸지가 자연스럽게 정리된다.