개인 사이드 프로젝트를 SEO 실험장으로 사용한 지 한 달이 되었을 때 오가닉 방문자 632명을 기록했습니다. 충분히 반가운 숫자였습니다. 하지만 가장 큰 교훈은 다른 숫자에서 나왔습니다. 10월 15일, 하루 방문자가 83명으로 당시 최고치를 찍었는데, 그중 일부는 사람의 트래픽처럼 보이지 않았습니다.
당시 저는 직장에서 진행할 큰 SEO 이니셔티브를 준비하고 있었습니다. 이론을 더 읽는 것보다 실제로 바꾸고 측정해 보는 경험이 필요했습니다. 사이드 프로젝트는 관찰 하나하나를 바로 프로덕션 결정으로 연결하지 않고도 변경하고, 데이터를 보고, 틀릴 수 있는 공간이었습니다.
이 구분은 금방 중요해졌습니다. 변경과 동시에 지표가 움직였다고 해서 그 변경이 원인이라는 뜻은 아닙니다. 트래픽 급증도 소스를 나눠 보기 전까지는 성장처럼 보일 수 있습니다. Session Replay에서 이상한 장면이 보인다고 해서 그 이유까지 자동으로 알 수 있는 것도 아닙니다.
오가닉 방문자 632명이 실제로 말해 준 것
첫 한 달의 확인 가능한 결과는 오가닉 방문자 632명입니다. 하지만 이 숫자만으로 재현 가능한 SEO 공식을 찾았다고 말할 수는 없습니다. 제가 한 모든 변경이 순위를 올렸다는 것도, 같은 추세가 계속될 것이라는 것도 증명하지 못합니다.
학습 프로젝트로서 중요한 점은 관찰할 수 있을 만큼 실제 검색 트래픽이 생겼다는 것이었습니다. 변경을 적용하고 어떤 지표가 움직였는지 본 다음, 더 정확한 다음 질문을 만들 수 있었습니다. 모든 “best practice”가 자동으로 순위를 올려 준다고 가정하는 체크리스트식 SEO보다 훨씬 유용했습니다.
폰트 크기 변경이 가르쳐 준 상관관계와 인과관계
가장 놀라웠던 것 중 하나는 폰트 크기 조정과 성능 지표 사이의 상관관계였습니다. 이를 “작은 UX 디테일도 순위에 영향을 준다”라고 요약하고 싶어지지만, 제 데이터는 그 정도로 강한 주장을 뒷받침하지 않습니다.
제가 실제로 관찰한 것은 폰트 크기를 바꾼 뒤 일부 관련 지표가 움직였다는 사실입니다. 폰트 크기만 다른 모든 변경과 분리한 통제 실험을 하지 않았고, 검색 엔진이 바로 그 CSS 변경 때문에 순위를 조정했다는 증거도 없습니다. 폰트 크기는 줄바꿈, 레이아웃, 요소 위치를 바꿀 수 있으므로 일부 렌더링이나 UX 측정값에 영향을 줄 가능성은 있습니다. 하지만 제 사례에서 정확히 어떤 메커니즘이 작동했는지는 확인되지 않았습니다.
이런 SEO 실험에서는 관찰을 먼저 기록하고 설명은 나중에 붙인다는 원칙이 더 안전합니다. “Y 변경 이후 X 지표가 움직였다”는 데이터입니다. “Y가 X를 일으켰다”는 충분한 근거가 생길 때까지 가설입니다.
83명이 방문한 날은 Webvisor를 열기 전까지 더 좋아 보였다
10월 15일, 사이트는 당시 하루 최고치인 83명을 기록했습니다. 이것이 오가닉 방문자 83명이라는 뜻은 아닙니다. 제가 보고 있던 하루 전체 트래픽의 피크였습니다. 소스를 나눠 보니 상당한 비중이 중국에서 왔고 direct traffic으로 분류되어 있었습니다.
“Direct”를 “누군가 URL을 직접 입력했다”로 이해하기 쉽습니다. 하지만 Yandex Metrica에서는 referrer가 전달되지 않은 세션 등도 이 범주에 들어갈 수 있습니다. Yandex는 이를 트래픽 소스 공식 문서에 설명하고 있습니다. 따라서 이 라벨만으로 방문자가 누구였는지, 실제로 어떻게 페이지를 찾았는지 알 수는 없습니다.
그다음 Yandex Webvisor에서 의심스러운 세션을 확인했습니다. 재생 화면에서는 페이지가 CSS가 비활성화된 상태로 열린 것처럼 보였습니다. 제가 본 패턴을 기준으로 약 20명의 “사용자”가 아마 봇일 것이라고 추정했습니다.
CSS가 없다는 것은 단서이지 증거는 아니다
이 숫자는 지금도 추정치입니다. 적어도 두 가지 큰 가능성이 있습니다.
- 실제로 자동화된 요청이었을 수 있습니다. 스크레이퍼는 HTML만 가져오고 필요 없는 stylesheet, 이미지, 기타 asset을 건너뛸 수 있습니다. 대역폭을 아끼려는 목적은 충분히 가능한 설명이지만, 제가 그 동기를 확인한 것은 아닙니다.
- Replay가 원래 세션을 완벽하게 재현하지 못했을 수 있습니다. Session replay 시스템은 기록된 데이터로 페이지를 재구성합니다. Yandex도 stylesheet 변경 뒤 실제 사용자가 본 화면과 녹화가 달라질 수 있는 CSS 관련 재생 문제를 문서화하고 있습니다.
따라서 “Webvisor에서 CSS 없는 페이지가 보였다”는 관찰입니다. “방문자가 의도적으로 CSS를 껐다”는 해석입니다. “그러므로 봇이었다”는 한 단계 더 나간 추론입니다. 제게는 봇 가설이 충분히 그럴듯했지만, replay의 한 가지 특징만으로 확정할 수는 없습니다.
로그에서 확인하고 싶은 것
이런 이상 징후는 시각적 replay보다 서버 로그에서 더 강하게 검증할 수 있습니다. User-Agent, IP 또는 네트워크 대역, 요청 간격과 반복성, 요청한 asset, path, HTTP status, referrer를 비교하고 싶습니다. 또 클라이언트가 HTML만 요청했는지 CSS, JavaScript, 이미지까지 가져갔는지, 같은 패턴이 브라우저, JavaScript 지원 여부, 지역, 세션 길이, landing page 같은 analytics 차원에서도 반복되는지 확인할 수 있습니다.
어느 신호도 하나만으로 완벽하지 않습니다. 하지만 여러 신호를 같이 보면 “replay가 이상했다”는 인상보다 봇 가설을 훨씬 더 강하게 지지하거나 반박할 수 있습니다.
가장 큰 교훈은 순위보다 측정에 관한 것이었다
이 사이드 프로젝트는 직장에서 더 큰 SEO 작업을 시작하기 전에 실전 경험을 얻으려고 시작했습니다. 한 달 뒤의 가치 있는 결과는 오가닉 방문자 632명만이 아니었습니다. 불완전한 데이터만으로도 그럴듯한 이야기가 얼마나 빨리 만들어지는지를 직접 보는 것이 더 중요했습니다.
83명의 피크를 성장이라고 부를 수도 있었습니다. 폰트 변경 뒤의 지표 변화를 “ranking factor”라고 부를 수도 있었습니다. CSS가 없는 모든 세션을 봇이라고 할 수도 있었습니다. 세 설명 모두 더 단순했겠지만, 어느 것도 충분히 입증되지 않았습니다.
앞으로 같은 종류의 실험을 한다면 더 보수적인 절차가 적절합니다. 트래픽 소스를 분리하고, 변경 로그를 남기고, 전후를 비교하되 곧바로 인과관계를 가정하지 않고, 이상 징후는 HTTP 요청 수준에서 확인하며, analytics 도구 자체에도 측정상의 한계가 있다는 점을 전제로 보는 방식입니다.
저에게는 이것이 지금까지 실험에서 가장 가치 있는 부분이었습니다. SEO는 관찰할 트래픽을 만들어 줬고, 더 어려운 기술은 그 데이터가 실제로 무엇을 증명하는지 판단하는 것입니다.
저는 여전히 특히 중국에서 온 direct traffic을 중심으로 로그를 보고 있습니다. 반복되는 요청 패턴을 찾을 수 있다면 처음의 질문에 훨씬 강한 답을 할 수 있을 겁니다. 그 약 20건의 방문이 정말 봇이었는지, 그리고 CSS를 건너뛰는 것이 그들의 동작 일부였는지는 아직 확인되지 않았습니다.