검색 엔진 크롤링 누락을 일으키던 사이트맵 제출 방식 개선
목차
Google 검색 콘솔(GSC) 자동 제출 로직에서 3개 DEX 사이트의 사이트맵을 잘못 제출하고 있었다. sitemap-index 방식으로 제출하면서 실제 콘텐츠 페이지들이 검색 엔진 크롤러에게서 "고아" 상태가 되는 버그였는데, 이걸 /sitemap.xml 단일 사이트맵 방식으로 교정했다.
왜 sitemap-index가 문제였나
사이트맵은 검색 엔진에게 "우리 사이트 구조는 이렇고, 이런 페이지들이 있으니 크롤링 가능하다"는 신호를 보내는 관문이다. 특히 대규모 사이트나 다중 도메인을 운영할 때는 sitemap-index.xml 파일로 여러 사이트맵을 하나로 묶어 관리하는 게 일반적이다.
하지만 우리 3 dex 사이트들의 경우 상황이 달랐다. sitemap-index로 제출했을 때 실제 콘텐츠 사이트맵들(sitemap1.xml, sitemap2.xml 등)이 GSC에서 제대로 "발견"되지 않으면서, 크롤러가 인덱싱할 페이지 목록을 읽지 못하게 됐다. 마치 카탈로그 목차만 있고 실제 책 페이지가 없는 것 같은 상황. 그래서 검색 결과에 몇몇 핵심 페이지들이 누락되는 현상이 발생했다.
문제의 핵심과 해결 방식
일반적으로 Google은 sitemap-index 제출을 지원하지만, 여러 뎁스의 리다이렉트나 호스팅 구조에 따라 제대로 파싱하지 못할 수 있다. 특히 우리 사이트처럼 제한된 크롤 예산(crawl budget) 환경에서는 더욱 그렇다.
변경 내용:
| 항목 | 기존 (sitemap-index) | 개선 후 (/sitemap.xml) |
|---|---|---|
| 제출 대상 | https://[사이트]/sitemap-index.xml |
https://[사이트]/sitemap.xml |
| 인덱싱 효과 | 콘텐츠 페이지 발견 실패 | 직접 페이지 목록 제공 |
| 크롤러 부하 | 추가 리다이렉트 단계 | 직통 경로 |
_lib/gsc_submit.py에서 GSC 제출 URL을 /sitemap.xml로 고정했다. 코드로 보면 대략 이런 식:
# 기존: sitemap-index 간접 제출
def submit_sitemap_to_gsc(site_domain):
sitemap_url = f"https://{site_domain}/sitemap-index.xml"
gsc_client.submit_sitemap(site_id, sitemap_url)
# 개선: /sitemap.xml 직접 제출
def submit_sitemap_to_gsc(site_domain):
sitemap_url = f"https://{site_domain}/sitemap.xml"
gsc_client.submit_sitemap(site_id, sitemap_url)
왜 이런 버그가 놓였을까
GSC 자동화 스크립트는 보통 한 번 짜면 거의 손대지 않는다. 그래서 "제출되고 있다"고 가정하고 넘어가기 쉽다. 특히 크롤링 문제는 외부 시스템(Google 크롤러)의 행동이라 직접 로그나 에러 메시지가 떨어지지 않는다. GSC 대시보드에서 "제출한 사이트맵" 탭에 파일이 보이지만, 실제 페이지 크롤 상태(인덱싱됨/보류 중/제외됨)를 세심하게 모니터링하지 않으면 이런 누락을 놓칠 수 있다.
데이터 쿠에리나 서치 트래픽 분석을 주기적으로 돌려봤다면 금방 눈에 띄었을 텐데, 회고하면서 느낀 점은:
- 자동화 시스템의 "조용한 실패": 프로세스가 돌지만 결과가 기대한 대로 아닐 수 있다.
- 외부 API 상태 모니터링의 중요성: GSC 제출 성공 응답만으로는 부족. 실제 크롤링·인덱싱 결과를 주기적으로 확인해야 한다.
- 규모 확대 시 리스크: 3개 사이트로는 작아 보이지만, 10개, 100개 사이트로 늘어나면 이런 실수는 배가 된다.
앞으로는 GSC 제출 뒤 일주일 뒤에 실제 인덱싱 상태를 체크하는 헬스 체크 스크립트를 추가하려고 한다. 엔지니어 입장에서는 "API 응답 200"이 통과지만, SEO 시각에서 보면 "실제 페이지가 인덱싱됐나?"가 진짜 성공 지표다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.