PromleeBlog
sitemap
aboutMe

posting thumbnail
IndexNow 등록하기 - (Naver, Bing) 색인 요청 프로토콜
IndexNow - (Naver, Bing) Index Request Protocol

📅

🚀

들어가기 전에 🔗

웹사이트를 개발했으면 검색 엔진에 색인 요청을 해서 검색 결과에 뜨게 하는 것이 좋겠죠??
웹사이트가 검색 결과에 빠르게 반영되려면 검색 엔진에
색인 요청
을 보내는 것이 중요합니다. 기존에는 sitemap 제출이나 수동 색인 요청 외에는 별다른 방법이 없었지만, 최근에는
IndexNow
라는 표준 프로토콜을 통해 자동화된 색인 요청이 가능해졌습니다.
특히 네이버는 2023년부터 IndexNow를 정식으로 지원하면서, 개발자가 보다 쉽게 웹페이지를 검색에 반영할 수 있는 환경을 제공하고 있습니다. 이번 글에서는 IndexNow의 전체 흐름과 네이버에 연동하는 방법을 공식 문서 기준으로 차근차근 정리해보겠습니다.

🚀

IndexNow란? 🔗

https://www.indexnow.org/ko_kr/
IndexNow는 간단한 HTTP 요청을 통해 검색 엔진에 웹 페이지 추가, 수정, 삭제 등의 변화를 알릴 수 있는 오픈 프로토콜입니다. 주요 특징은 다음과 같습니다.
현재 IndexNow를 지원하는 대표 검색 엔진은 다음과 같습니다.

🚀

기본 흐름 🔗

IndexNow의 기본 동작 흐름은 다음과 같습니다.
  1. Key 생성 및 인증
    웹사이트가 소유자임을 증명하기 위해 고유한 key를 생성하고, 이를 루트 경로에 JSON 형식으로 업로드합니다.
  2. URL 전송 요청
    새로운 페이지가 생성되거나 수정되었을 때, 해당 URL을 IndexNow API에 POST 방식으로 전송합니다.
  3. 검색 엔진 색인 반영
    검색 엔진은 요청을 받고 해당 URL을 크롤링한 뒤 검색 결과에 반영합니다.

🚀

Key 생성 및 업로드 방법 🔗

IndexNow를 사용하려면 먼저 고유 키를 만들어야 합니다. 키는 문자, 숫자, - 를 조합해야 하며, 최소 8, 최대 128자로 구성됩니다.
키는 Bing에서 생성해주는 키를 사용하도록 하겠습니다. Bing - IndexNow 페이지에 접속하여, 아래와 같이 키를 생성합니다.
예를 들어 abc123...과 같은 형식입니다. 생성 후, 해당 키를 웹사이트 루트에 업로드해야 합니다. 생성된 키의 이름을 가진 txt 파일을 페이지 루트에 업로드합니다.
abc123....txt
abc123...
그리고 해당 파일은 반드시 https://yourdomain.com/abc123... 주소에서 접근 가능해야 합니다. 다른 디렉토리에 업로드해도 상관없지만, 추천하지는 않습니다.

🚀

IndexNow 요청 보내기 🔗

1. Get 방식 🔗

URL을 하나만 전송할 때는 GET 방식으로 요청할 수 있습니다. 이 경우, URL을 쿼리 스트링으로 전달합니다.
https://<searchengine>/indexnow?url=url-changed&key=your-key
예를 들어, https://yourdomain.com/updated-page라는 URL을 전송하고 싶다면 아래와 같이 요청합니다.
https://<searchengine>/indexnow?url=https://yourdomain.com/updated-page&key=abc123...

2. Post 방식 🔗

IndexNow에 URL 묶음을 전송할 때는 아래와 같이 POST 요청을 사용합니다. TypeScript 기준 예제는 다음과 같습니다.
import axios from 'axios'
const INDEXNOW_API = '<searchengine-host-url>'
async function sendToIndexNow(urls: string[], key: string) {
  await axios.post(INDEXNOW_API, {
    host: 'yourdomain.com',
    key,
    keyLocation: `https://yourdomain.com/${key}`,
    urlList: urls
  })
}
이 함수에 URL 목록과 키 값을 넘기면 해당 URL들이 자동으로 검색 엔진에 전달됩니다. 요청 당 최대 10,000개의 URL을 제출할 수 있으며, 필요한 경우 http와 https URL을 혼합하여 제출할 수 있습니다.

🚀

네이버 서치어드바이저와의 연동 🔗

네이버는 서치어드바이저를 통해 IndexNow API를 공식 지원하고 있습니다. 개발자는 API 키를 생성해해 네이버에색인 요청을 동시에 보낼 수 있습니다.
이외에 다른 검색 엔진 엔드포인트는 https://www.indexnow.org/ko_kr/faq에서 확인할 수 있습니다.

1. 전송 API 문서 🔗

네이버 색인 요청 전송 시에는 아래 API 문서를 참고하시면 됩니다. POST 요청 방식은 IndexNow와 거의 동일합니다.
https://searchadvisor.naver.com/guide/indexnow-request
요청 예시는 다음과 같습니다.
{
  "host": "yourdomain.com",
  "key": "naver-issued-key",
  "keyLocation": "https://yourdomain.com/naver-issued-key",
  "urlList": [
    "https://yourdomain.com/updated-page"
  ]
}

🚀

문제 발생 및 체크리스트 🔗

IndexNow를 사용할 때 자주 발생하는 문제와 해결 방법을 정리해 보았습니다.

CORS 문제 🔗

IndexNow는 CORS 정책을 따르지 않기 때문에, 서버에서 직접 요청을 보내는 것이 좋습니다. 클라이언트에서 요청할 경우 CORS 오류가 발생할 수 있습니다.
따라서 서버에서 요청을 보내는 것이 가장 안전합니다. 예를 들어, Node.js 서버에서 axios를 사용하여 요청을 보내는 방법은 다음과 같습니다.
import axios from 'axios'
const INDEXNOW_API = '<searchengine-host-url>'
async function sendToIndexNow(urls: string[], key: string) {
	await axios.post(INDEXNOW_API, {
		host: 'yourdomain.com',
		key,
		keyLocation: `https://yourdomain.com/${key}`,
		urlList: urls
	})
}
이렇게 하면 CORS 문제를 피할 수 있습니다. 서버에서 요청을 보내는 것이 가장 안전하고, 효율적인 방법입니다.

터미널에서 요청하기 🔗

curl -X POST -H "Content-Type: application/json" -d '{
	"host": "yourdomain.com",
	"key": "naver-issued-key",
	"keyLocation": "https://yourdomain.com/naver-issued-key",
	"urlList": [
		"https://yourdomain.com/updated-page"
	]
}' https://api.searchadvisor.naver.com/indexnow
다음과 같은 형식으로 요청을 보내면 됩니다. 이 방법은 간단하고 빠르게 테스트할 수 있는 방법입니다.
PostMan과 같은 툴을 사용해도 좋습니다.

🚀

결론 🔗

IndexNow는 웹사이트의 변경 사항을 빠르게 검색 결과에 반영할 수 있는 훌륭한 수단입니다. 특히 네이버가 이를 공식 지원하면서, 검색 최적화가 필요한 국내 웹사이트 운영자에게도 매우 유용한 도구가 되었습니다.
서치어드바이저를 통한 키 발급과 API 요청은 약간의 설정이 필요하지만, 한 번만 잘 세팅해두면 코드 한 줄로 색인 요청이 가능하다는 점에서 생산성과 효율성 모두를 높일 수 있습니다.

더 생각해 보기 🔗

참고 🔗