구글 색인 안 되는 이유 · 56편 추적으로 확인한 진단 기준
글을 올려도 구글에 안 나올 때, 색인 요청을 반복하는 것은 답이 아니다. 자사 블로그 56편을 매일 추적해 보니 요청 약 120회는 아무것도 바꾸지 못했고 크롤 여부를 가른 것은 발견 경로였다. 무엇을 어떤 순서로 확인해야 하는지 실측으로 정리했다.
글을 올렸는데 구글에 안 나온다. 서치콘솔에서 색인 요청을 눌렀는데도 그대로다. 며칠을 기다려도 바뀌지 않는다.
이 상황에서 대부분의 안내는 "색인 요청을 누르고 기다리세요"에서 끝난다. 우리는 그 버튼을 약 120회 눌렀고 한 건도 움직이지 않았다. 자사 블로그 56편을 서치콘솔 API로 매일 추적하면서 확인한 것이다.
아직 서치콘솔을 연결하지 않았다면 구글 검색 등록 기준을 먼저 보는 편이 낫다. 이 글은 등록을 마친 다음에도 안 나오는 경우를 다룬다. 그 추적에서 나온 것만 적는다. 무엇이 실제로 색인 여부를 갈랐고, 무엇이 아무 영향도 없었는지다.
"색인이 안 된다"는 말은 서로 다른 세 상태를 섞고 있다
먼저 나눠야 한다. 이 셋은 원인도 조치도 다른데 겉보기 증상이 같다.
| 상태 | 구글이 한 일 | 무엇을 해야 하나 |
|---|---|---|
| 크롤조차 안 됨 | URL은 알지만 읽어 본 적이 없다 | 발견 경로를 만든다 |
| 크롤됐으나 색인 제외 | 읽고 나서 넣지 않기로 했다 | 내용·중복을 본다 |
| 색인됐으나 순위가 없다 | 넣었지만 아무도 못 찾는다 | 색인 문제가 아니다 |
우리 56편을 이 기준으로 나누니 33편이 첫 번째 칸이었다. 읽히지도 않은 것이다. 품질을 고민하고 글을 다시 쓰는 것은 두 번째 칸의 처방인데, 실제로는 첫 번째 칸에 몰려 있었다.
순서가 중요하다. 첫 칸인데 두 번째 칸의 처방을 하면 아무리 고쳐도 변하지 않는다. 읽히지 않았으니 고친 것도 읽히지 않는다.
세 번째 칸도 자주 섞인다. 검색창에 글 제목을 통째로 넣었는데 안 나온다면 색인 문제일 가능성이 높지만, 다루는 주제어로 검색해서 안 나오는 것은 대개 순위 문제다. 색인은 됐고 경쟁에서 밀린 것이다. 이 둘을 구분하려면 검색창에 site: 뒤에 그 주소를 그대로 넣어 본다. 결과가 나오면 색인은 된 것이다.
먼저 볼 것은 딱 하나, 마지막 크롤 시각이다
서치콘솔 URL 검사에 URL을 넣으면 여러 항목이 나오는데, 처음에 봐야 할 것은 "마지막 크롤" 한 줄이다.
이 값이 비어 있으면 구글은 그 페이지를 한 번도 읽지 않았다. 그 아래 어떤 설명이 붙어 있든 그것은 읽어 보고 내린 판정이 아니다.
여기서 자주 오해가 생긴다. 같은 화면의 상태 문구는 마지막으로 크롤한 시점의 판정이다. 지금 페이지가 어떤 상태인지가 아니다. 어제 고친 내용은 다시 읽히기 전까지 반영되지 않는다.
"Discovered - currently not indexed"는 품질 판정이 아니다
가장 많이 오해받는 문구다. 한국어로는 "발견됨 - 현재 색인이 생성되지 않음"으로 나온다.
이 상태의 뜻은 URL은 알고 있는데 아직 가지러 가지 않았다는 것이다. 읽고 나서 부족하다고 판단한 것이 아니다. 읽지 않았다.
우리 33편이 전부 이 상태였다. 그런데 이 문구를 보고 "내용이 부실해서 구글이 거부했다"고 읽으면, 글을 다시 쓰거나 지우는 쪽으로 간다. 둘 다 원인과 무관하다.
읽고 나서 제외한 경우는 문구가 다르다. "크롤됨 - 현재 색인이 생성되지 않음"이면 그때는 내용을 봐야 한다. 크롤됨(Crawled)과 발견됨(Discovered)의 차이가 전부다.
색인 요청 버튼은 왜 듣지 않았나
우리는 이것을 오래 신뢰했다. 매일 미크롤 URL을 모아 색인 요청을 넣었고, 응답은 매번 성공이었다. 성공 응답이 쌓이는 것을 진척으로 읽었다.
여섯 날에 걸쳐 같은 31편에 대해 약 120회를 요청했다. 결과는 이렇다.
| 집단 | 편수 | 그 기간 크롤된 수 |
|---|---|---|
| 요청을 계속 넣은 미크롤 글 | 31 | 0 |
| 그 기간에 실제로 크롤된 글 | 9 | 9 |
그리고 크롤된 9편 중 8편은 다른 페이지에서 링크를 받고 있었다. 요청을 넣었느냐가 두 집단을 가르지 못했고, 링크가 있느냐가 갈랐다.
여기서 배운 것은 방법론보다 태도에 가깝다. 성공 응답은 요청이 접수됐다는 뜻이지 크롤이 일어났다는 뜻이 아니다. 진척을 재려면 마지막 크롤 시각처럼 결과 쪽 값을 봐야 한다. 우리는 응답 코드를 성과로 보고하고 있었다.
그러면 실제로 무엇이 갈랐나
크롤된 글과 안 된 글을 발견 경로로 나눠 보니 차이가 분명했다.
| 구글이 기록한 발견 경로 | 편수 | 크롤된 비율 |
|---|---|---|
| 다른 페이지의 링크 | 18 | 83% |
| 사이트맵만 | 12 | 25% |
| 아무것도 없음 | 23 | 0% |
나이 차이 때문일 수도 있어서 발행일이 비슷한 것끼리 다시 묶어 봤고, 차이는 유지됐다.
이유를 생각해 보면 당연하다. 크롤러는 링크를 따라 움직인다. 아무 데서도 연결되지 않은 페이지는 목록에 이름만 올라가 있는 상태다. 사이트맵은 "이런 게 있다"는 통보이지 순서를 당겨 주는 장치가 아니다.
그래서 새 글을 올린 다음 할 일은 요청이 아니라 링크다. 이미 정기적으로 읽히는 페이지 안에서, 문맥이 맞는 자리에 링크를 건다.
링크는 그 페이지가 다시 읽혀야 전달된다
한 가지 함정이 있다. 링크를 심어도 그 링크를 담은 페이지가 다시 크롤되기 전까지는 구글에게 존재하지 않는다.
그래서 링크를 심을 곳은 순위가 높은 페이지가 아니라 최근에 읽힌 페이지다. 이 둘은 다르다. 서치콘솔에서 후보 페이지들의 마지막 크롤 날짜를 확인하고, 가장 최근 것부터 고른다.
그리고 링크를 넣었으면 그 페이지의 사이트맵 갱신 시각이 움직이게 해야 한다. 내용을 고쳤는데 갱신 시각이 그대로면 다시 읽어 달라는 신호가 나가지 않는다.
이 점을 놓치면 작업 자체가 측정되지 않는다. 글을 여러 편 손봤는데 갱신 시각이 그대로라 재방문 요청이 한 번도 나가지 않았고, 그래서 그 작업의 효과를 확인할 방법이 없어진 사례가 있다. 고친 것과 고쳤다고 알리는 것은 별개의 일이다.
링크를 거는 방식에도 차이가 있다. 글 끝에 관련 글 목록으로 붙이는 것보다, 본문 문장 안에서 맥락과 함께 거는 쪽이 낫다. 목록은 페이지마다 같은 자리에 같은 모양으로 반복되기 때문에 본문의 일부로 읽히지 않을 수 있다. 어느 문장에서 왜 그 글로 넘어가는지가 드러나는 자리에 넣는다.
과거 판정은 고쳐도 그대로 남는다
추적하다가 이상한 것을 봤다. 두 페이지가 404로 기록돼 있는데 실제로는 정상 동작하고 있었다.
과거에 주소가 바뀌면서 한동안 404였던 글이다. 주소를 옮길 때 무엇을 남겨야 하는지는 404 페이지 만드는 기준에서 다뤘다. 그 뒤 되살렸지만, 구글이 마지막으로 읽은 시점이 404이던 때라 그 판정이 그대로 남아 있었다. 한 건은 두 달 가까이 그 상태였다.
이 경우 페이지를 아무리 손봐도 소용이 없다. 다시 읽히지 않으면 판정이 갱신되지 않기 때문이다. 우리는 이 두 편에도 같은 처방을 했다 — 최근 읽힌 페이지에서 링크를 걸어 재방문을 유도하는 것이다.
중요한 것은 이것이 조용한 실패라는 점이다. 사이트에서는 멀쩡히 열린다. 링크를 눌러도 정상이고, 방문자도 아무 문제를 겪지 않는다. 서치콘솔의 그 한 줄을 보지 않으면 몇 달을 모른다.
같은 이유로, 주소를 바꾸거나 글을 옮긴 적이 있다면 그 뒤에 한 번은 전수로 훑어보는 편이 좋다. 새 글만 확인하는 습관으로는 과거에 박제된 판정이 영원히 보이지 않는다. 우리도 이 두 건을 새 글을 보다가 찾은 것이 아니라, 전체 목록을 한 줄씩 내려보다가 발견했다.
크롤은 사이트마다 다른 속도로 온다
우리 사이트를 매일 들여다보면서 알게 된 것이 하나 더 있다. 크롤은 고르게 오지 않는다.
사흘 연속으로 여러 페이지가 읽히다가, 그 뒤 나흘 동안 한 건도 오지 않는 구간이 있었다. 이 간격은 우리가 무엇을 해서 바뀐 것이 아니다. 그래서 하루 이틀 변화가 없다고 조치를 뒤집는 것은 대개 이르다.
여기서 두 가지가 따라온다.
첫째, 판단 주기를 크롤 주기보다 길게 잡아야 한다. 어제 링크를 심고 오늘 확인해서 안 바뀌었다고 결론을 내리면, 실제로는 아직 아무 일도 일어나지 않은 시점에 판정한 것이 된다. 우리는 조치마다 일주일 뒤 날짜를 정해 두고 그날 확인한다.
둘째, 사이트 전체의 읽히는 빈도가 개별 페이지보다 먼저다. 이미 자주 읽히는 사이트에 새 글을 올리면 금방 들어간다. 반대로 사이트 전체가 드문드문 읽히는 상태라면 개별 글에 무엇을 해도 느리다. 이 빈도는 사이트의 나이, 이미 색인된 페이지 수, 외부에서 들어오는 링크 같은 것들이 정한다.
그래서 새로 만든 도메인이라면 개별 글을 손보기보다 사이트가 읽힐 이유를 만드는 쪽이 먼저다. 이미 읽히는 다른 사이트에서 링크 하나를 받는 것이, 사이트맵을 몇 번 내는 것보다 빠를 수 있다.
무엇을 어떤 순서로 확인하나
원인을 좁히는 순서다. 위에서부터 차례로 본다.
하나, 마지막 크롤 시각이 있는가. 없으면 아래는 볼 필요가 없다. 발견 경로 문제다.
둘, robots.txt와 noindex가 막고 있지 않은가. 사이트를 만들 때 켜 둔 검색 차단 설정을 공개 후 끄지 않은 경우가 흔하다. 워드프레스에는 체크박스로 있고 사이트 빌더에도 비슷한 옵션이 있다. 이 둘은 상태 문구에 명시되므로 구분하기 쉽다 — 막힌 경우에는 그 사유가 그대로 표시된다. 무엇을 막고 무엇을 열어야 하는지는 robots.txt 작성 기준에 따로 정리했다.
셋, 주소가 하나로 정해져 있는가. 같은 내용이 여러 주소로 열리면 구글이 대표 주소를 다르게 고를 수 있다. www 가 붙은 주소와 안 붙은 주소, 끝에 슬래시가 있는 주소와 없는 주소가 모두 열리는 경우가 대표적이다. 이때는 색인이 안 된 것이 아니라 다른 주소로 들어가 있는 것이므로, 검색창에 site: 로 도메인을 넣어 어떤 주소가 잡혀 있는지부터 본다.
넷, 그 페이지로 들어오는 링크가 있는가. 하나도 없다면 발견 경로가 없는 것이다.
다섯, 여기까지 통과했는데도 안 되면 그때 내용을 본다. 순서를 지키면 내용까지 내려오는 경우는 생각보다 적다.
하지 말아야 할 것
요청을 반복해서 넣는 것. 하루 한도가 있고, 넣는다고 순서가 앞당겨지지 않는다. 우리 120회가 그 증거다.
사이트맵을 다시 제출하는 것. 내용이 같은 사이트맵을 다시 내는 것은 아무 신호도 아니다. 의미가 있는 것은 갱신 시각이 실제로 바뀌는 경우다.
안 되는 글을 지우는 것. 읽히지도 않은 글을 지우면 원인은 그대로 두고 증거만 없애는 셈이다.
발행을 멈추고 기다리는 것. 우리는 닷새간 새 글을 내지 않고 관망한 적이 있다. 미해결 건수는 줄지 않고 오히려 늘었다. 멈춤 자체는 신호가 아니다.
여러 가지를 한꺼번에 바꾸는 것. 링크를 심고, 제목을 고치고, 내용을 늘리고, 주소를 바꾸는 일을 같은 날 하면 나중에 무엇이 들었는지 알 수 없다. 크롤 주기가 길기 때문에 이 구분은 특히 어렵다. 한 번에 하나씩 하고 언제 판정할지를 미리 적어 두는 편이 결국 빠르다.
상태 문구만 보고 결론 내리는 것. 같은 화면의 문구는 마지막으로 읽은 시점의 판정이다. 반드시 마지막 크롤 시각과 같이 봐야 한다. 이 두 줄을 따로 보면 이미 고친 문제를 계속 고치게 된다.
자주 묻는 질문
색인되는 데 보통 얼마나 걸리나요?
정해진 기간이 없다. 이미 자주 읽히는 사이트의 새 글은 하루 안에도 들어가고, 링크가 없는 새 도메인은 몇 주가 지나도 그대로다. 기간을 기다리는 것보다 발견 경로가 있는지를 먼저 확인하는 편이 빠르다.
사이트맵을 냈는데 왜 색인이 안 되나요?
사이트맵은 존재를 알리는 것이고 읽는 순서를 정하지는 않는다. 우리 추적에서도 사이트맵만 있는 글의 크롤률은 25%였고, 링크가 있는 글은 83%였다.
색인 요청 기능은 쓸모가 없나요?
일반 문서에서는 우리 데이터상 효과를 확인하지 못했다. 다만 채용 공고처럼 별도로 지정된 유형은 다르게 취급된다. 일반 블로그 글에 대해 이것을 주된 수단으로 삼지 않는 편이 낫다.
내용이 부실해서 색인이 안 되는 경우도 있나요?
있다. 다만 그 경우의 상태 문구는 "크롤됨 - 현재 색인이 생성되지 않음"이다. 읽어 보고 내린 판정이기 때문이다. "발견됨"으로 시작하면 아직 읽지 않은 것이므로 내용 문제로 보기 어렵다.
오래된 글이 갑자기 색인에서 빠지기도 하나요?
주소가 바뀌었거나 한동안 오류를 냈다면 그 시점의 판정이 남아 있을 수 있다. 우리도 실제로 정상 동작하는 페이지가 404로 기록된 사례를 두 건 발견했다. 마지막 크롤 시각과 그때의 판정을 같이 보면 구분된다.
새 글을 올리면 무엇부터 해야 하나요?
관련된 기존 글 중 최근에 읽힌 것을 골라, 본문 문장 안에서 새 글로 링크를 건다. 그리고 그 기존 글의 갱신 시각이 움직였는지 확인한다. 이 두 가지가 우리 데이터에서 확인된 유일한 순서다. 색인 요청은 그 다음에 해도 되고 안 해도 된다.
외부 사이트 링크가 꼭 필요한가요?
내부 링크만으로도 크롤은 일어난다. 우리 83%는 전부 같은 도메인 안의 링크였다. 다만 사이트 전체가 읽히는 빈도를 올리는 데는 외부에서 들어오는 링크가 영향을 준다. 개별 글의 발견은 내부 링크로, 사이트의 읽히는 빈도는 외부 링크로 생각하면 구분이 쉽다.
내부 링크를 몇 개나 걸어야 하나요?
개수보다 그 링크가 있는 페이지가 실제로 읽히는지가 중요하다. 자주 읽히는 페이지에서 하나 받는 편이, 아무도 읽지 않는 페이지에서 열 개 받는 것보다 낫다.
참고 자료
- 페이지 색인 생성 보고서 — Search Console 도움말 — 각 상태 문구가 정확히 무엇을 뜻하는지 정리된 공식 문서.
- Google 검색의 작동 방식 — Google 검색 센터 — 크롤·색인·게재 세 단계의 구분.
- 사이트맵에 대해 알아보기 — Google 검색 센터 — 사이트맵이 보장하는 것과 보장하지 않는 것.