Yandex Webmaster를 열었을 때 무시하기 어려운 숫자가 보였다. 2,000페이지가 하룻밤 사이 Yandex 검색에서 사라져 있었다. 프로젝트 전체는 약 8,000페이지였으니, 대략 25%가 더 이상 검색에 참여하는 페이지로 표시되지 않은 셈이다.
첫 반응은 단순했다. SEO는 가혹할 수 있다. 하지만 더 중요한 교훈은 훨씬 정확한 표현에 있다. “검색에 있는 페이지” 수가 갑자기 줄었다는 것은 관찰 결과이지 원인 진단이 아니다. 2,000이라는 숫자는 확인됐다. 왜 그런지는 아직 확인되지 않았다.
그 시점에 실제로 확인할 수 있었던 것
확실한 사실은 세 가지였다. Yandex Webmaster에서 2,000페이지가 줄었고, 프로젝트는 약 8,000페이지였으며, 변화가 하룻밤 사이 나타났다. 반대로 Yandex가 사이트에 페널티를 줬다는 증거, crawling이 실패했다는 증거, 특정 기술 변경이 하락을 일으켰다는 증거는 없었다.
이 구분은 중요하다. Yandex는 우리가 흔히 “인덱싱”이라는 한 단어로 묶는 여러 상태를 따로 다룬다. URL이 crawl되었더라도 검색에서 제외될 수 있다. Yandex 공식 문서도 로봇 데이터베이스에 존재하지만 현재 검색 결과에는 표시될 수 없는 페이지가 있을 수 있다고 설명한다. 따라서 유용한 질문은 “크롤러가 이 URL을 봤는가?”에서 끝나지 않는다. “이 페이지가 지금 검색에 참여하는가? 아니라면 어떤 상태가 제외를 설명하는가?”까지 봐야 한다.
이 차이는 Yandex 공식 문서의 검색에 포함된 페이지와 검색에서 제외된 페이지 설명에서 확인할 수 있다.
Crawling, 검색 참여, ranking, traffic은 서로 다른 문제다
이 사건은 네 가지 층을 얼마나 쉽게 섞어 생각하는지 다시 보여줬다. crawling, 검색 시스템에 들어가는 것, 검색에 참여하는 것, 그리고 실제 순위나 traffic은 서로 연결되어 있지만 같은 개념이 아니다.
- Crawling: 로봇이 URL을 가져왔는가.
- 검색 참여: Yandex가 현재 그 페이지를 검색 결과에 표시할 수 있는 상태로 보는가.
- Ranking: 특정 검색어에서 페이지가 어느 위치에 나타나는가.
- Traffic: 순위 외에도 검색 수요, snippet, CTR, 계절성 등 여러 요인의 영향을 받는다.
따라서 검색에 참여하는 페이지가 25% 줄었다고 해서 traffic도 자동으로 25% 줄었다는 뜻은 아니다. crawling 문제를 증명하는 것도 아니고, 알고리즘 페널티를 증명하는 것도 아니다.
그래도 2,000페이지라는 규모는 중요했다
2,000 URL은 몇 개의 우연한 페이지로 보기에는 충분히 큰 수다. 다음으로 볼 것은 영향을 받은 URL끼리 공통점이 있는지다. 같은 디렉터리, 템플릿, 콘텐츠 유형, canonical 설정, HTTP 상태, 내부 링크 패턴, 게시 시기 등이 후보가 된다.
이런 식의 세분화는 하나의 총합 숫자만 보는 것보다 훨씬 유용하다. 제외된 페이지 대부분이 같은 기술적 특징을 공유한다면 조사 범위를 줄일 수 있다. 서로 관계없는 영역에서 고르게 빠졌다면 가설도 달라져야 한다. 다만 이것은 조사 방법이지, 내 사례의 실제 원인을 주장하는 내용은 아니다.
알고리즘을 탓하기 전에 확인할 순서
- 지표를 확인한다. 실제로 “검색에 있는 페이지” 수가 변한 것인지 확인하고, 제외된 페이지와 변경 날짜를 본다.
- 제외 사유를 확인한다. Yandex Webmaster는 낮은 가치/수요, non-canonical,
noindex, redirect, 오류 같은 사유를 보여줄 수 있다. 이 상태값은 증거다. 그래프만 보고 추측하는 것은 증거가 아니다. - 영향받은 URL을 묶는다. 디렉터리, 템플릿, 페이지 유형, 언어, 자동 생성 섹션, 게시 시기를 비교한다.
- 샘플에서 기술 기본기를 확인한다. HTTP 상태, robots 지시문, canonical, redirect, 접근 가능 여부, 로봇이 실제로 받는 HTML을 본다.
- 인덱스 변화와 ranking·traffic 변화를 분리한다. 검색 참여, impressions, clicks, analytics sessions는 서로 다른 질문에 답한다.
- 그다음에야 인과 가설을 세운다. 설정 변경, deployment, 템플릿 업데이트, 콘텐츠 패턴이 영향받은 페이지와 맞아떨어지면 원인 후보가 된다. 그래도 추가 증거는 필요하다.
Yandex도 구체적인 제외 사유를 확인하고 실제 문제를 수정한 뒤 페이지를 재크롤링하도록 제출하는 흐름을 안내한다. 큰 숫자를 먼저 보고 나중에 설명을 끼워 맞추는 것보다 훨씬 강한 접근이다.
이 사건만으로는 주장하지 않을 것
“Yandex가 사이트를 벌줬다”고 쓰지 않을 것이다. 그 사실을 확인하지 못했기 때문이다. 크롤러가 단순히 “까다로워졌다”고도 하지 않을 것이다. 그 표현은 서로 다른 기술 상태를 한데 숨긴다. 2,000페이지가 영구적으로 사라졌다고 부르지도 않고, 상태를 확인하지 않은 채 모두 같은 이유로 제외됐다고 가정하지도 않을 것이다.
이 하락에서 남은 교훈
8,000페이지 중 2,000페이지가 하룻밤 사이 검색에서 빠지는 일은 여전히 가혹하게 느껴진다. 하지만 유용한 결론은 “SEO는 랜덤하다”가 아니다. 검색 시스템에는 여러 상태 층이 있고, 왜 변했는지 설명하기 전에 먼저 어느 층이 변했는지 찾아야 한다.
내가 가져간 실용적인 원칙은 간단하다. 먼저 관찰 사실을 기록하고, 원인은 열린 상태로 두고, 이후 페이지 단위 증거로 가설을 좁힌다. 확인된 숫자는 2,000이었다. 원인은 여전히 질문이었다.