개요

지금까지 검색 엔진에 웹페이지가 등록되는 방식은 검색 엔진의 로봇이 웹사이트를 방문해서 웹페이지의 정보를 수집하는 방식이었습니다. 하지만, 검색 엔진이 언제 어떻게 방문할지, 방문하더라도 해당 사이트의 모든 웹페이지의 정보를 한번에 수집하지는 않기 때문에 새로운 글을 작성하더라도 언제 검색 엔진에 등록될지 알 수 없는 것이 현실입니다. 그래서 직접 웹페이지를 등록할 수 있는 시스템이 생겼는데, 바로 그 시스템인 [IndexNow] 사용 방법을 소개해보겠습니다.

IndexNow 란?

[IndexNow]는 이처럼 기존의 검색 엔진에서 웹페이지 정보를 가져가는 크롤링 방식이 아니라, 웹페이지의 정보를 웹사이트를 운영하는 사람이 직접 검색 엔진에 등록할 수 있도록 해주는 시스템으로 Microsoft BingYandex, Seznam 등의 검색 엔진과 함께 만들었습니다. 그리고 네이버도 2023-07-25부터 [IndexNow]를 지원하기 시작했습니다.

그리고, [IndexNow] 가이드 문서에 따르면 [IndexNow]를 지원하는 검색 엔진들은 [IndexNow]를 이용해서 등록된 웹페이지의 정보를 공유하기 때문에 아무 검색 엔진이나 1곳에만 등록하면 다른 검색 엔진에도 같이 적용된다고 합니다.

IndexNow 사용 권고

Microsoft Bing(마이크로소프트 빙) Webmaster Tools(웹마스터 툴)에 접속하면 아래와 같이 [IndexNow]를 사용할 것을 권고하는 메시지를 확인할 수 있습니다.

블로그 문서를 Microsoft Bing, Naver, Seznam.cz, Yandex, Yep 등의 검색 엔진에 등록할 수 있는 IndexNow 사용 방법

IndexNow 안내

위 메시지를 클릭해서 이동하면 아래와 같이 IndexNow에 대한 소개 사이트를 확인할 수 있습니다.

블로그 문서를 Microsoft Bing, Naver, Seznam.cz, Yandex, Yep 등의 검색 엔진에 등록할 수 있는 IndexNow 사용 방법

IndexNow 적용 방법

웹사이트에 [IndexNow]를 적용하는 방법은 크게 3가지가 있다고 합니다.

웹사이트 제작 솔루션 이용 방법

가장 쉬운 방법은 [Wix.com], [duda], [xenForo]와 같은 홈페이지 제작 사이트나 솔루션을 이용하면 특별한 작업이 없이도 자동으로 [IndexNow]가 적용된다고 합니다.

블로그 문서를 Microsoft Bing, Naver, Seznam.cz, Yandex, Yep 등의 검색 엔진에 등록할 수 있는 IndexNow 사용 방법

IndexNow Plugin 사용 방법

두번째 방법으로는 [WordPress], [Shopify], [Joomla!] 등의 솔루션을 사용하면서 [IndexNow] Plugin을 설치해서 사용하면 적용할 수 있다고 합니다. 이용 가능한 서드파티 솔루션은 다음과 같습니다.

  • WordPress
  • Shopify
  • Joomla!
  • Bitrix24
  • Drupal
  • PrestaShop
  • MODX
  • Shopware
  • Opencart
  • Typo3
  • Umbraco
블로그 문서를 Microsoft Bing, Naver, Seznam.cz, Yandex, Yep 등의 검색 엔진에 등록할 수 있는 IndexNow 사용 방법

IndexNow API 호출 방법

마지막 방법으로는 [IndexNow] API를 직접 호출해서 웹페이지를 등록하는 방법입니다.

  • 1.우선 아래처럼 [Generate] 버튼을 클릭해서 사이트 인증을 위한 API Key를 생성하고, 해당 파일을 다운로드 받습니다.
  • 2.다운로드 받은 파일을 웹사이트의 루트 디렉토리에 업로드합니다.
  예시: https://www.example.com/9c5eb9821e7f4da3b3ada5a0290f694c.txt
  
블로그 문서를 Microsoft Bing, Naver, Seznam.cz, Yandex, Yep 등의 검색 엔진에 등록할 수 있는 IndexNow 사용 방법
  • 3.아래 양식에 맞게 등록할 웹페이지 URL 정보를 준비해서 API를 호출합니다.
    자세한 호출 과정과 코드는 아래쪽에서 다시 확인해보겠습니다.
블로그 문서를 Microsoft Bing, Naver, Seznam.cz, Yandex, Yep 등의 검색 엔진에 등록할 수 있는 IndexNow 사용 방법

IndexNow API 호출

[IndexNow] AIP를 호출하는 방법은 여러 가지가 있는데 여기서는 [Postman] 프로그램을 이용해서 테스트 해보겠습니다.

Postman 다운로드

[Postman]은 다음 경로에서 다운로드 받을 수 있습니다. 또는 웹버전에서 로그인만 하면 이용할 수도 있습니다.

블로그 문서를 Microsoft Bing, Naver, Seznam.cz, Yandex, Yep 등의 검색 엔진에 등록할 수 있는 IndexNow 사용 방법

API 서버 URL

호출할 API 서버의 경로는 위쪽 [IndexNow] 사이트에서 확인했듯이 다음과 같습니다.

  https://api.indexnow.org/IndexNow
  

Headers 설정

호출할 때 [Header] 값은 다음과 같이 설정합니다.

  Content-Type: application/json; charset=utf-8
  
블로그 문서를 Microsoft Bing, Naver, Seznam.cz, Yandex, Yep 등의 검색 엔진에 등록할 수 있는 IndexNow 사용 방법

Body 설정

호출하게 될 [Body]는 [raw] 옵션을 선택하고 오른쪽에서 형식은 [Json]을 선택합니다.

  {
  "host": "www.example.org",
  "key": "9c5eb9821e7f4da3b3ada5a0290f694c",
  "keyLocation": "https://www.example.org/9c5eb9821e7f4da3b3ada5a0290f694c.txt",
  "urlList": [
      "https://www.example.org/url1",
      "https://www.example.org/folder/url2",
      "https://www.example.org/url3"
      ]
}
  
블로그 문서를 Microsoft Bing, Naver, Seznam.cz, Yandex, Yep 등의 검색 엔진에 등록할 수 있는 IndexNow 사용 방법

API 호출 결과

준비가 끝났으면 위쪽의 [Send] 버튼을 클릭합니다. 정상적으로 호출되면 아래쪽에 [Status] 부분에 [200 OK]라고 표시됩니다.

블로그 문서를 Microsoft Bing, Naver, Seznam.cz, Yandex, Yep 등의 검색 엔진에 등록할 수 있는 IndexNow 사용 방법

응답코드

HTTP Code Response Reasons
200 Ok URL submitted successfully
400 Bad request Invalid format
403 Forbidden In case of key not valid (e.g. key not found, file found but key not in the file)
422 Unprocessable Entity In case of URLs don’t belong to the host or the key is not matching the schema in the protocol
429 Too Many Requests Too Many Requests (potential Spam)

IndexNow 적용 확인

API 호출 이후에 Microsoft Bing(마이크로소프트 빙) Webmaster Tools(웹마스터 툴) [IndexNow] 메뉴에 들어가면 아래와 같이 호출한 URL들이 등록된 것을 확인할 수 있습니다.

블로그 문서를 Microsoft Bing, Naver, Seznam.cz, Yandex, Yep 등의 검색 엔진에 등록할 수 있는 IndexNow 사용 방법

PHP 코드

그리고, [Postman]을 사용하지 않고 직접 코드를 작성하는 경우에는 다음과 같이 호출할 수 있습니다. 여기서는 PHP 예제코드를 소개해보겠습니다.

  <?php
    // API 호출 함수
    function api_call($api_server, $api_url, $is_post, $http_header, $json_portvars)
    {
        // api 호출
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $api_server.$api_url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);	
        curl_setopt($ch, CURLOPT_POST, $is_post);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $http_header);
        curl_setopt($ch, CURLOPT_HEADER, TRUE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $json_portvars);

        $response = curl_exec($ch);

        curl_close($ch);

        return $response;
    }

    // 전송해야 할 설정값
	$indexnow_apikey = "9c5e4324821e7f3b35545ada5a0290f694c";
	$blog_domain = "www.example.org";

	$is_post = true;

	// http 호출 헤더값 설정
	$http_header = array();
	$http_header[0] = "Content-Type: application/json; charset=utf-8";

	// 전송할 값들을 배열 형태로 저장한다
	$postvars = [
		"host"=> $blog_domain,
		"key"=> $indexnow_apikey,
		"keyLocation"=> "https://".$blog_domain."/".$indexnow_apikey."txt",
		"urlList"=> [
			"https://www.example.org/url1",
            "https://www.example.org/folder/url2",
            "https://www.example.org/url3"
		]
	];

	// 배열 형태로 저장한 값들을 json 형태로 변환해서 전송
	$json_portvars = json_encode($postvars);

    // IndexNow에 등록
	$api_server = "https://api.indexnow.org";
	$api_url = "/IndexNow";
	$response = api_call($api_server, $api_url, $is_post, $http_header, $json_portvars);	
	echo($response);

?>
  

참고 채널

  1. Bing IndexNow 소개 페이지
    https://www.bing.com/indexnow/

  2. IndexNow 공식 사이트
    https://www.indexnow.org/

  3. Naver Search Advisor IndexNow 소개 페이지
    https://searchadvisor.naver.com/guide/indexnow-about

문서 업데이트 내역

날짜 내용
2024-10-22 문서 최초 생성