웹사이트의 콘텐츠 변경 사항을 검색 엔진에 신속하게 알리는 IndexNow 사용 방법에 대해 알아봅니다. IndexNow API 키 발급 및 호스팅, JSON 형식의 URL 제출 방법, 그리고 RSS 피드를 이용한 자동 색인 요청 스크립트 적용 방법을 제공합니다. IndexNow를 통해 검색 결과에 빠르게 반영하고 SEO 최적화 효율을 높여보세요!
IndexNow 소개 및 검색 엔진 최적화(SEO)에서의 역할
IndexNow는 웹사이트의 콘텐츠 변경 사항(새 글 발행, 수정, 삭제)을 Google, Bing, Yandex 등 참여 검색 엔진에 신속하게 알릴 수 있는 오픈 표준 프로토콜입니다. 기존에는 검색 엔진 크롤러가 사이트를 방문할 때까지 기다려야 했지만, IndexNow 사용 방법을 적용하면 웹사이트에서 URL을 검색 엔진에 즉시 제출하여 웹사이트 콘텐츠 변경 사항을 즉시 반영할 수 있습니다. 이는 검색 결과에 빠르게 노출되어 SEO 최적화에 큰 도움이 되며, 크롤링 예산을 효율적으로 사용할 수 있게 합니다.
특히, API 키를 활용해 자동으로 URL을 제출할 수 있어 관리 효율성이 높아집니다. 또한, RSS 피드를 통해 최신 콘텐츠를 자동으로 알릴 수 있어 관리 효율성이 높아집니다. IndexNow는 웹사이트의 신속한 색인 요청을 위한 가장 효과적인 도구 중 하나입니다.
IndexNow API 키 발급 및 수동 URL 제출 절차
IndexNow를 사용하기 위해서는 API 키를 발급받고, 이 키를 이용해 URL을 제출하는 과정이 필요합니다. Bing Webmaster Tools를 통해 키를 발급받고 관리하는 것이 일반적입니다.
1. Bing Webmaster Tools 가입 및 사이트 등록
- Bing Webmaster Tools 웹사이트에 방문하여 Microsoft 계정으로 로그인합니다. (계정이 없다면 새로 생성합니다.)
- 로그인 후 대시보드에서 “사이트 추가”를 클릭하고, 자신의 웹사이트 URL을 입력합니다.
- 사이트 소유 확인 절차(HTML 파일 업로드, 메타 태그 추가, 또는 DNS 레코드 추가)를 완료합니다.
IndexNow 공식 웹사이트: IndexNow | Bing Webmaster Tools
2. IndexNow API 키 발급 방법
API 키 생성 및 호스팅
- 사이트 대시보드에서 “IndexNow” 섹션을 찾아 API 키를 생성합니다.
- 생성된 API 키를 복사하여 안전한 곳에 저장합니다. API 키는 각 사이트마다 고유하며, 보안에 주의해야 합니다.
- 생성한 API 키를 웹사이트의 루트 디렉토리에 UTF-8 형식의 텍스트 파일로 호스팅해야 합니다. 파일명은 API 키 값과 동일하게 지정됩니다.
- 예시 경로:
https://www.example.com/b9d89505474244e4898ec830e96aed1e.txt에 파일 내용으로 API 키를 포함시킵니다.
주의: API 키 파일은 IndexNow 서버가 소유권을 검증하기 위해 필수적으로 루트 디렉토리에 호스팅되어야 합니다.
3. URL 제출 (JSON POST 요청)
URL을 제출하기 위해서는 JSON 형식으로 HTTP POST 요청을 IndexNow 엔드포인트(https://api.indexnow.org/indexnow)로 보냅니다. 이 요청을 통해 여러 개의 URL을 한 번에 제출하여 신속한 URL 색인 요청이 가능합니다.
{
"host": "www.example.org",
"key": "b9d89505474244e4898ec830e96aed1e",
"keyLocation": "https://www.example.org/b9d89505474244e4898ec830e96aed1e.txt",
"urlList": [
"https://www.example.org/url1",
"https://www.example.org/folder/url2",
"https://www.example.org/url3"
]
}
4. HTTP 응답 및 상태 모니터링
요청 후 서버는 다양한 HTTP 응답 코드를 반환하며, URL 제출 상태를 나타냅니다.
- 200 (OK): URL 제출 성공 (가장 일반적인 성공 응답)
- 400 (Bad Request): 요청 형식 오류 (JSON 포맷, 필수 필드 누락 등 확인)
- 403 (Forbidden): 유효하지 않은 API 키 또는 키 파일 접근 불가
- 422 (Unprocessable Entity): 제출된 URL이 호스트에 속하지 않거나 키가 일치하지 않음
- 429 (Too Many Requests): 일일 허용 요청 횟수 초과 (요청 빈도 조절 필요)
Bing Webmaster Tools를 사용하여 제출한 URL이 검색 엔진에 제대로 전달되었는지 주기적으로 모니터링하여 색인 요청의 성공 여부를 확인할 수 있습니다.
자동화를 위한 RSS 피드 연동 및 스크립트 활용
IndexNow는 RSS 피드를 활용하여 자동으로 페이지 변경 사항을 감지하고 URL 제출을 요청하는 스크립트 방식으로도 구현할 수 있습니다. 이 방식은 웹사이트의 관리 효율성을 크게 높여줍니다.
자동 발송 스크립트 (RSS 연동)
아래 JavaScript 스크립트는 웹페이지 로드 시 RSS 피드에서 최신 URL 목록을 가져와 IndexNow API에 제출합니다. 중복 요청을 방지하기 위해 로컬 스토리지를 사용하여 하루에 한 번만 실행되도록 설계되었습니다. 이 코드를 웹사이트 HTML의 head 태그나 적절한 위치에 삽입하여 자동화를 구축할 수 있습니다.
- 페이지가 로드될 때 URL 제출을 하루에 한 번만 실행하도록 로컬 스토리지를 활용합니다. 이러한 방식은 불필요한 중복 요청을 방지하며, 효율적인 URL 제출을 보장합니다.
- API 키, 키 파일 URL, 호스트, RSS 피드 URL을 자신의 정보로 정확히 수정해야 합니다.
async function fetchRssUrls(rssUrl) {
const response = await fetch(rssUrl);
const text = await response.text();
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(text, "application/xml");
// RSS/Atom 피드 구조에 맞게 link 태그 또는 item의 link를 파싱해야 함
const urls = Array.from(xmlDoc.getElementsByTagName("link")).map(link = link.textContent);
return urls;
}
async function submitUrlsToIndexNow(rssUrl) {
const apiKey = 'b9d89505474244e4898ec830e96aed1e';
const keyLocation = 'https://www.example.com/b9d89505474244e4898ec830e96aed1e.txt'; // 호스팅된 키 파일의 URL
const host = 'www.example.com'; // 귀하의 도메인
// RSS 피드에서 URL 가져오기
const urls = await fetchRssUrls(rssUrl);
const requestBody = {
host: host,
key: apiKey,
keyLocation: keyLocation,
urlList: urls
};
try {
const response = await fetch('https://api.indexnow.org/indexnow', {
method: 'POST',
headers: {
'Content-Type': 'application/json; charset=utf-8'
},
body: JSON.stringify(requestBody)
});
const result = await response.json();
if (response.ok) {
console.log('URLs submitted successfully:', result);
} else {
console.error('Error submitting URLs:', result);
}
} catch (error) {
console.error('Fetch error:', error);
}
}
function shouldRunOnceADay() {
const lastRun = localStorage.getItem('lastIndexNowRun');
const now = Date.now();
// 하루 (24시간) 밀리초
const oneDay = 24 * 60 * 60 * 1000;
if (!lastRun || (now - lastRun) oneDay) {
localStorage.setItem('lastIndexNowRun', now);
return true;
}
return false;
}
// 페이지 로드 시 실행
window.addEventListener('load', () = {
const rssFeedUrl = 'https://example.com/rss'; // RSS 피드 URL
if (shouldRunOnceADay()) {
submitUrlsToIndexNow(rssFeedUrl);
} else {
console.log('Already executed today.');
}
});
이와 같은 절차를 통해 IndexNow를 효과적으로 활용하여 웹사이트의 URL을 검색 엔진에 신속하게 제출하고 SEO 성능을 향상시킬 수 있습니다.

참고: IndexNow는 모든 웹 호스팅 환경을 지원하지 않으며, 특히 일부 블로그 서비스(예: 티스토리)에서는 직접적인 API 키 호스팅 및 서버 측 스크립트 실행에 제한이 있어 사용이 불가능할 수 있습니다. 사용 전 호스팅 환경을 확인해야 합니다.
Q1. IndexNow는 Google에도 유효한가요?
A1. 네, IndexNow는 Bing에서 시작된 프로토콜이지만, 현재 Google을 포함한 여러 주요 검색 엔진이 이 프로토콜을 지원하고 있습니다. 따라서 IndexNow API를 통해 제출된 URL은 Google 검색 결과에도 신속한 색인 반영을 기대할 수 있습니다. 이를 통해 롱테일 키워드를 포함한 모든 콘텐츠의 노출 속도를 높일 수 있습니다.
Q2. IndexNow API 키를 직접 노출해도 안전한가요?
A2. IndexNow API 키는 웹사이트의 루트 디렉토리에 파일 형태로 호스팅되어야 하므로 완전히 숨기기는 어렵습니다. 하지만 이 키는 오직 URL 제출 용도로만 사용되며, 키를 발급받은 웹사이트의 URL만 제출할 수 있도록 시스템적으로 제한됩니다. 따라서 다른 사람이 키를 알아도 다른 사이트의 색인을 요청하는 데 사용할 수 없어 보안 위험은 상대적으로 낮습니다. 그럼에도 불구하고, 키 파일의 무단 변경을 방지하는 것이 중요합니다.
Q3. IndexNow를 사용하면 기존의 사이트맵(Sitemap) 제출이 불필요한가요?
A3. 그렇지 않습니다. IndexNow는 콘텐츠 변경 사항의 즉각적인 반영에 중점을 두는 반면, 사이트맵은 웹사이트의 전체 구조와 모든 URL 목록을 검색 엔진에 제공하는 역할을 합니다. IndexNow와 사이트맵은 상호 보완적인 관계이며, 검색 엔진 최적화 전략의 일환으로 두 가지 모두 사용하는 것이 권장됩니다.