RSS
마케팅

네이버 서치어드바이저 서브도메인 등록: 사이트맵·RSS·수집 요청이 하는 일

작성자
듀오랩스 대표·8분 읽기

서브도메인 사이트맵을 본진 사이트에 넣었더니 네이버가 받지 않았습니다. https://duolabs.co.kr 로 등록해 둔 사이트의 사이트맵 제출 칸에 https://cdn.duolabs.co.kr/sitemap.xml 을 넣고 확인을 누르자, 화면 아래에 빨간 띠가 떴습니다.

해당 도메인의 URL을 입력해주세요.

같은 날 Google Search Console 에서는 서브도메인 사이트맵 열아홉 개가 한 목록에 나란히 있었습니다. 도메인 속성으로 등록해 두면 서브도메인이 전부 한 속성에 들어오기 때문입니다. 저는 네이버도 비슷하게 받아 줄 거라고 생각하고 있었습니다.

서브도메인을 각각 다른 사이트로 보는 네이버

도움말 칸에 이유가 적혀 있었습니다. 「사이트맵 피드 내의 모든 URL은 소유확인 된 사이트와 동일한 도메인이어야 합니다.」 네이버 서치어드바이저의 사이트는 호스트 단위입니다. duolabs.co.kr 과 cdn.duolabs.co.kr 은 서로 다른 사이트이고, 한쪽 사이트에 다른 쪽 URL 을 제출할 수 없습니다.

RSS 및 사이트맵 제출 가이드에도 같은 조건이 RSS 와 사이트맵 양쪽에 똑같이 적혀 있습니다. 구글의 도메인 속성에 해당하는 것은 찾지 못했습니다. 사이트 목록 화면에는 「최대 100개 사이트를 등록할 수 있습니다」라고만 나옵니다.

결국 서브도메인 열세 개를 하나씩 등록했습니다. 순서는 이렇습니다.

  1. 웹마스터 도구 첫 화면에서 https://<서브도메인> 을 사이트로 추가합니다
  2. 소유 확인에서 HTML 태그 방식을 고르고 <meta name="naver-site-verification" content="…"> 값을 받습니다
  3. 그 태그를 해당 앱의 <head> 에 넣어 배포합니다
  4. 소유 확인을 누르고, 확인되면 그 사이트 안에서 사이트맵을 제출합니다

열세 번 받은 서로 다른 확인 값

먼저 알아야 했던 것은 확인 값이 계정마다 하나인지, 사이트마다 다른지였습니다. 하나라면 모든 앱에 미리 넣어 두고 등록만 하면 됩니다. 두 사이트의 값을 받아 보니 달랐습니다. 사이트마다 40자리 16진수 값이 따로 나옵니다.

값을 어디에 둘지도 한 번 고민했습니다. 이 태그는 누구나 페이지 소스에서 볼 수 있는 공개 값이라 환경변수로 숨길 이유가 없습니다. 그래서 각 앱 루트 레이아웃의 메타데이터에 코드로 넣었습니다. Next.js 에서는 한 줄입니다.

export const metadata: Metadata = {
  metadataBase: new URL(SITE_URL),
  verification: { other: { "naver-site-verification": "<사이트마다 받은 값>" } },
  // ...
};

열 곳은 값을 한꺼번에 받아 한 번에 넣고 배포했습니다. 배포가 끝난 뒤 사이트마다 첫 화면을 한 번씩 받아 태그가 실제로 나오는지 확인하고 나서 소유 확인을 눌렀습니다. 네이버가 확인하는 것은 코드가 아니라 공개된 페이지라, 배포보다 먼저 누르면 확인할 태그가 아직 없습니다.

등록보다 먼저 고친 사이트맵

사이트를 등록하기 전에 각 서브도메인의 robots.txt 와 sitemap.xml 을 한 번씩 받아 봤습니다. 제출하고 나서 콘솔의 오류로 알게 되는 것보다 빠르기 때문입니다. 열세 곳 중 네 곳은 사이트맵이 없거나 첫 화면 한 줄뿐이었습니다. 구글 콘솔에 먼저 제출해 둔 것들은 「가져올 수 없음」이나 「오류 1개」로 남아 있었습니다.

사이트맵이 있는 곳에서도 하나가 걸렸습니다. 한 사이트맵에 noindex 를 건 페이지 세 개가 같이 들어 있었습니다. 사이트맵은 「이 주소를 수집해 달라」는 목록인데 페이지는 「색인하지 말라」고 하니 서로 엇갈린 말을 하는 셈입니다. 목록은 페이지 설정에서 뽑도록 바꿔서, noindex 페이지는 사이트맵에 안 들어가게 했습니다.

사이트맵과 RSS, 가이드가 권하는 쪽

RSS 도 제출할 수 있어서 처음에는 RSS 가 새 글을 더 빨리 알린다고 생각했습니다. 블로그처럼 글이 계속 느는 곳이면 RSS 쪽이 유리할 거라고요. 가이드를 읽어 보니 그렇게 적혀 있지 않았습니다.

네이버 검색로봇은 웹마스터도구에 제출된 RSS 및 사이트맵을 "콘텐츠 피드"로 간주하여 주기적으로 재 방문 합니다.

둘 다 같은 「콘텐츠 피드」이고, 차이는 담는 내용입니다. RSS 는 본문까지 담는 최신 글 피드라 URL 을 많이 담기 어렵고, 가이드는 「되도록 RSS 보다는 사이트맵을 적극적으로 활용하는 것을 권장」한다고 적었습니다. RSS 에는 발행된 글이 1개 이상 있어야 하고, 본문 전체를 넣어 달라는 요청도 있습니다.

사이트맵 RSS
담는 것 URL 과 수정일 등 최신 글의 본문까지
한도 10MB · URL 50,000개 10MB · 글 1개 이상
가이드의 권고 사이트의 모든 URL 을 담기를 권장 본문 전체 공개 권장, 되도록 사이트맵 우선

그래서 RSS 는 블로그와 공개 문서처럼 이미 피드가 있는 곳에만 내기로 하고, 나머지 서브도메인은 사이트맵만 냈습니다. RSS 를 내려고 피드를 새로 만들지는 않았습니다.

수집 요청에 기대하면 안 되는 것

「웹 페이지 수집」 요청은 버튼을 누르면 로봇이 바로 올 것처럼 보입니다. 수집요청 가이드는 그렇지 않다고 분명히 적습니다.

사용자가 직접 웹페이지를 수집 요청하더라도 검색로봇이 실시간으로 요청된 URL을 방문하지 않습니다. (…) 우선순위에 따라 최소 1일에서 몇 주간의 시간이 소요될 수 있습니다.

같은 URL 을 매일 다시 요청할 필요가 없고, 수집에 성공해도 검색 노출은 보장되지 않는다고 합니다. 사이트별로 요청할 수 있는 범위도 제한돼 있습니다. 그래서 수집 요청은 이번에 첫 화면이 바뀐 서브도메인 몇 곳의 대표 페이지에만 쓰기로 했습니다. 나머지는 사이트맵에 맡깁니다.

서브도메인마다 따로 읽는 robots.txt

사이트를 호스트 단위로 보는 것은 robots.txt 도 마찬가지입니다. robots.txt 가이드에 따르면 규칙은 같은 호스트·프로토콜·포트 아래 페이지에만 유효합니다. 본진의 robots.txt 는 서브도메인에 아무 영향이 없습니다.

응답 코드에 따른 해석도 적혀 있습니다. 4xx 면 「모두 허용」, 5xx 면 「모두 허용하지 않음」입니다. robots.txt 가 404 인 서브도메인은 막아 둔 경로가 있어도 네이버에게는 전부 열린 사이트입니다. 이번에 robots.txt 가 404 이던 서브도메인 한 곳에 파일을 새로 만들었습니다.

가이드는 한 가지를 더 강조합니다. robots.txt 는 수집 규칙일 뿐 보호 수단이 아니라서, 노출되면 안 되는 콘텐츠는 로그인 같은 다른 방법으로 막으라고 합니다. 검색에 내지 않을 화면은 robots.txt 에만 맡기지 않고 페이지 쪽에서도 noindex 를 걸었습니다. 그것도 검색 결과에서 빼 줄 뿐 여는 것 자체를 막지는 않습니다. 정말 지켜야 하는 화면은 로그인 뒤에 있어야 합니다.

아직 모르는 반영 속도

등록과 제출은 오늘 끝났지만, 네이버 검색에 실제로 얼마나 반영될지는 아직 모릅니다. 가이드가 「최소 1일에서 몇 주」라고 적은 것이 수집 요청 기준이니, 사이트맵으로 들어온 주소도 비슷하게 걸릴 거라고 짐작만 하고 있습니다. 몇 주 뒤 서치어드바이저 리포트에서 서브도메인별 수집 현황을 다시 보려고 합니다.

참고: 네이버 서치어드바이저 RSS 및 사이트맵 제출 · 수집요청 및 검색제외 · robots.txt 설정하기

마지막 수정:

공유하실 때는 출처(Duolabs)와 원문 주소를 표시해 주세요.