안녕하세요, 천상나타입니다.

    지난 글에서 네이버 서치어드바이저에 공식 API가 없어서 콘솔 자체를 Playwright로 자동화한 이야기를 했었죠. 그런데 그 방식에는 치명적인 제한이 하나 있었습니다. 웹 페이지 수집 요청에 일일 한도가 있다는 것. 제 사이트처럼 페이지가 1,600개 넘는 곳에서 50개씩 끊기면 전체를 돌리는 데 한 달이 걸립니다.

    그러다 발견한 게 IndexNow입니다. 네이버가 2024년부터 공식 지원하는 프로토콜인데, 의외로 모르는 분이 많은 것 같아 정리해봅니다.

    IndexNow가 뭔가요

    "내 사이트 페이지가 추가·변경·삭제됐다"고 검색엔진에 즉시 알리는 단순한 핑 프로토콜입니다. Bing과 Yandex가 만들었고, 지금은 네이버, Bing, Yandex, Seznam, Yep이 참여하고 있습니다.

    네이버 서치어드바이저 공식 가이드 — IndexNow 페이지 갱신 요청

    핵심은 두 가지입니다.

    • 한 번의 POST에 최대 10,000개 URL을 담을 수 있습니다
    • 총 요청 수에 일일 한도가 없습니다 (순간적인 과다 요청만 제한)

    기존 수집 요청이 "URL을 하나씩 입력창에 넣고 버튼 누르기"였다면, 이건 프로그램이 호출하는 공식 HTTP API입니다. 제가 그토록 찾던 네이버의 공식 채널이 사실 여기 있었던 거죠.

    준비물: 소유권 키 파일

    인증 방식이 재밌습니다. API 키를 어디서 발급받는 게 아니라 직접 만들면 됩니다.

    API 키 생성 가이드 — 규칙은 16진수 문자로 8~128자

    규칙은 16진수 문자(a-f, 0-9, -)로 8~128자. 저는 이렇게 만들었습니다.

    
    node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"
    

    그 다음 {키}.txt라는 이름의 파일에 키 문자열을 적어서 사이트 루트에 올립니다. https://내사이트.com/aa0330....txt 같은 식이요. 네이버가 제출을 받으면 이 URL을 직접 가져가서 파일 내용이 보낸 키와 일치하는지 대조합니다. "파일을 올릴 수 있다 = 사이트 주인이다"를 증명하는 구조라, 키가 노출돼도 다른 사람이 악용할 방법이 없습니다.

    제출 코드는 30줄이면 됩니다

    
    POST https://searchadvisor.naver.com/indexnow
    {
      "host": "www.example.com",
      "key": "aa0330d23eb003508ebe17a4064a9eb3",
      "keyLocation": "https://www.example.com/aa0330d23eb003508ebe17a4064a9eb3.txt",
      "urlList": ["https://www.example.com/url1", "..."]
    }
    

    이게 전부입니다. 저는 여기에 사이트맵 파싱만 얹어서 sitemap.xml의 전체 URL을 한 번에 쏘는 스크립트를 만들었습니다. 외부 라이브러리 없이 fetch만으로 38줄입니다.

    indexnow.mjs — 사이트맵 파싱 + 2개 엔드포인트 제출

    엔드포인트는 두 군데로 보냅니다.

    • searchadvisor.naver.com/indexnow — 네이버 공식
    • api.indexnow.org/indexnow — 공유 엔드포인트. 한 번 보내면 Bing·Yandex·Seznam 등 참여 엔진끼리 전파됩니다

    구글은 IndexNow에 참여하지 않아서(자체 URL Inspection API가 있음) 구글용으로는 기존 방식을 계속 씁니다.

    테스트 결과 — 응답 코드 해석이 포인트

    키 파일을 배포하기 전에 먼저 쏴봤습니다. 의도적으로 "안 되는 상태"를 확인한 건데, 응답 코드 해석이 중요해서 공유합니다.

    • 403 Forbidden — 키 파일이 아직 서버에 없어서 인증 실패. 배포 후엔 200으로 바뀝니다
    • 202 Accepted — "접수는 했는데 키 검증이 비동기라 아직 대기 중". 파일이 올라가면 자동으로 검증됩니다
    • 200 OK — 완전 성공
    • 422 — URL이 host와 안 맞거나 형식 오류
    • 429 — 너무 빨리 많이 보냄

    실제 테스트 — 네이버 403, 공유 엔드포인트 202

    참고로 searchadvisor.naver.com/indexnow를 브라우저 주소창에 그냥 치면 indexnow.org로 리다이렉트됩니다. 파라미터 없는 GET 접속을 공식 문서 사이트로 보내는 의도된 동작이니 놀라지 마세요. API는 POST로 쓰는 겁니다.

    GET 접속 시 도착하는 indexnow.org — 이상한 사이트가 아니라 공식 프로토콜 문서

    정리하면

    • 네이버 수집 요청의 일일 한도 문제는 IndexNow로 우회할 수 있습니다 (다만 IndexNow는 "빠른 알림"이지 색인 보장은 아닙니다 — 수집 요청·사이트맵·RSS와 병행하는 게 공식 권장입니다)
    • 준비물은 루트의 키 파일 하나, 코드는 fetch 하나
    • 배포 훅에 붙이면 이후엔 신경 쓸 일이 없습니다
    • 덤으로 Bing·Yandex·Seznam 커버리지도 생깁니다. 다국어 페이지가 많은 사이트라면 특히 이득이죠

    네이버 입점을 노리는 사이트라면 수집 요청 한도에 갇혀 있지 말고 IndexNow를 붙여보세요. 키 파일 하나 올리는 데 5분, 스크립트는 30줄이면 끝납니다.

    728x90
    Posted by 천상나타.