← 블로그 목록
SEO색인네이버IndexNowSearch Console

내 사이트를 네이버·구글 검색에 나오게 하는 법

사이트맵을 만들어뒀는데 검색에 안 나오는 이유를 짚고, 기술 점검 네 가지와 구글 Search Console·네이버 IndexNow로 색인을 요청하는 절차를 정리했습니다.

Vibeollio 팀-

사이트맵은 만들어뒀는데 검색에 안 나온다

글을 수십 편 써서 올렸는데 검색해도 안 나옵니다. 사이트맵도 있고 robots.txt도 막아둔 게 없습니다. 그런데 아무리 기다려도 소식이 없습니다.

여기서 가장 먼저 구분해야 할 것이 있습니다. 크롤링될 수 있는 것과 색인된 것은 다릅니다. 문을 열어둔 것과 손님이 온 것이 다른 것처럼요. 새로 만든 도메인은 외부에서 링크 하나 걸려 있지 않으면 검색엔진이 존재 자체를 모릅니다.

지금 상태부터 확인하기

검색창에 이렇게 넣어보세요.

site:내도메인.com

결과가 하나도 없으면 색인이 전혀 안 된 것입니다. 몇 개만 나온다면 일부만 들어간 것이고요. 이 한 줄이 가장 빠른 진단입니다.

기술적으로 막혀 있지는 않은지

색인이 안 되는 원인이 사이트 쪽에 있는 경우가 있습니다. 네 가지만 확인하면 됩니다.

1. robots.txt가 막고 있지 않은가

https://내도메인.com/robots.txt

Disallow: /가 있으면 전부 막힌 상태입니다. 관리자 경로 정도만 막혀 있어야 정상입니다.

2. 페이지에 noindex가 붙어 있지 않은가

curl -s https://내도메인.com/ | grep 'name="robots"'

content="noindex"가 나오면 그 페이지는 색인하지 말라고 직접 말하고 있는 것입니다. 개발 중에 넣어둔 설정이 그대로 배포된 경우가 흔합니다.

3. 사이트맵이 실제로 열리는가

curl -s https://내도메인.com/sitemap.xml | grep -c "<loc>"

숫자가 나오면 정상입니다. 0이거나 오류가 나면 사이트맵이 비어 있거나 깨진 것입니다.

4. 크롤러가 접근할 수 있는가

curl -s -o /dev/null -w "%{http_code}\n" \
  -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \
  https://내도메인.com/

200이 아니면 방화벽이나 보안 설정이 크롤러를 막고 있을 수 있습니다.

이 넷이 다 정상인데도 안 나온다면, 사이트 문제가 아니라 아직 발견되지 않은 것입니다. 그럼 직접 알려야 합니다.

구글: Search Console

구글에 알리는 방법은 사실상 하나입니다. Search Console에 사이트를 등록하고 사이트맵을 제출하는 것입니다.

등록에는 소유권 확인이 필요하고, 방법이 여러 가지입니다.

  • HTML 파일을 사이트 루트에 올리기
  • <head>에 확인용 메타 태그 넣기
  • DNS에 TXT 레코드 추가하기

가장 간단한 건 메타 태그입니다. 등록 화면에서 주는 값을 페이지 <head>에 넣고 배포한 뒤 확인 버튼을 누르면 됩니다.

확인이 끝나면 사이트맵 주소를 제출하고, 주요 페이지는 URL 검사 기능으로 색인을 개별 요청할 수 있습니다.

네이버: 계정 없이도 요청할 수 있다

네이버도 웹마스터도구가 있어 같은 방식으로 등록할 수 있습니다. 그런데 소유권 확인 없이 색인을 요청하는 방법이 따로 있습니다.

IndexNow라는 프로토콜인데, 원래 빙과 얀덱스가 만든 것을 2023년부터 네이버가 지원하기 시작했습니다. 하나의 주소로 보내면 참여 검색엔진에 함께 전달됩니다.

절차는 세 단계입니다.

1) 키를 만든다. 8~128자의 16진수 문자열이면 됩니다.

python3 -c "import secrets; print(secrets.token_hex(16))"

2) 키 파일을 사이트 루트에 둔다. 파일 이름이 키 값이고, 내용도 같은 키 값입니다.

https://내도메인.com/3c15eece....txt   ← 내용: 3c15eece....

Next.js라면 public/ 폴더에 넣으면 그대로 서비스됩니다. 배포 후 주소로 열어 200이 나오는지 확인하세요. 이 파일이 소유권 증명 역할을 합니다.

3) URL 목록을 보낸다.

{
  "host": "내도메인.com",
  "key": "3c15eece....",
  "keyLocation": "https://내도메인.com/3c15eece....txt",
  "urlList": ["https://내도메인.com/", "https://내도메인.com/blog/first-post"]
}
curl -X POST "https://api.indexnow.org/IndexNow" \
  -H "Content-Type: application/json; charset=utf-8" \
  --data @indexnow.json

202가 돌아오면 접수된 것입니다. 사이트맵에서 URL 목록을 뽑아 한 번에 보내면 편합니다.

curl -s https://내도메인.com/sitemap.xml \
  | grep -o '<loc>[^<]*</loc>' | sed 's|<loc>||;s|</loc>||' > urls.txt

구글은 IndexNow를 지원하지 않습니다. 그래서 구글은 Search Console, 네이버·빙은 IndexNow로 나눠서 처리하게 됩니다.

알린 다음에 필요한 것

요청을 넣었다고 바로 나오지는 않습니다. 검색엔진이 방문해서 내용을 보고 색인할 가치가 있는지 판단하는 과정이 남아 있습니다. 신규 도메인은 특히 시간이 걸립니다.

기다리는 동안 도움이 되는 것들입니다.

  • 외부 링크를 하나라도 만들기. 커뮤니티 글, 프로필, 깃허브 저장소 설명 어디든 좋습니다. 링크가 있으면 크롤러가 자연스럽게 따라옵니다.
  • 내부 링크 연결하기. 글끼리 서로 링크하면 크롤러가 사이트 안을 돌아다닐 수 있습니다. 목록 페이지에서만 닿을 수 있는 구조는 불리합니다.
  • 글을 새로 올릴 때마다 색인 요청 보내기. 위 요청을 배포 과정에 넣어두면 자동화됩니다.

색인까지 얼마나 걸리나요?

정해진 기간이 없습니다. 며칠 만에 들어가기도 하고 몇 주가 걸리기도 합니다. 도메인이 새것일수록, 외부 링크가 없을수록 오래 걸립니다. 조급하게 같은 요청을 반복해서 보내는 것은 도움이 되지 않습니다. site: 검색으로 주 단위로 확인하는 정도가 적당합니다.

사이트맵만 있으면 되는 거 아닌가요?

사이트맵은 "이런 페이지들이 있다"는 목록일 뿐, 검색엔진이 그 파일의 존재를 알아야 의미가 있습니다. robots.txt에 사이트맵 주소를 적어두면 크롤러가 방문했을 때 발견하지만, 애초에 방문하지 않으면 그것도 소용없습니다. 처음 한 번은 직접 알려야 하는 이유입니다.

색인은 됐는데 검색 결과에 안 보이는 건 왜인가요?

색인과 순위는 다른 문제입니다. site: 검색으로는 나오는데 일반 검색어로 안 나온다면 색인은 됐고 순위가 낮은 상태입니다. 이때는 알리는 문제가 아니라 내용의 문제입니다. 어떤 검색어로 노출되고 있는지를 Search Console에서 확인하고, 그 검색어에 맞게 제목과 내용을 다듬는 쪽이 맞습니다.

만들어두고 알리지 않으면 없는 것과 같다

사이트맵과 robots.txt를 정성껏 만들어두고 정작 검색엔진에 알리지 않아 몇 달을 흘려보내는 경우가 흔합니다. 위 절차는 한 번에 30분이면 끝납니다.

만든 프로젝트가 배포된 상태라면 Vibeollio에 프로젝트 등록해서 공개해보세요. 외부에 링크가 하나 생기는 것만으로도 크롤러가 찾아올 경로가 만들어집니다.