본문 바로가기
openipc.kr
빙.네이버 검색엔진 최적화

IndexNow 인덱스 나우 사용 Bing 웹마스터에서 URL을 신속하게 제출하는 방법


반응형

IndexNow로 웹사이트 콘텐츠 변경 사항 즉시 반영하는 방법

Bing Webmaster Tools에서 IndexNow로 웹사이트 URL 자동 제출하기

IndexNow 인덱스 나우 사용 방법

빙 웹마스터 웹사이트에서 URL을 검색 엔진에 신속하게 제출할 수 있는 IndexNow 사용 방법 입니다. 이를 통해 웹사이트의 콘텐츠 변경 사항을 즉시 반영하여 검색 결과에 빠르게 노출될 수 있습니다.

특히, API 키를 활용해 자동으로 URL을 제출할 수 있어 SEO 최적화에 큰 도움이 됩니다. 또한, RSS 피드를 통해 최신 콘텐츠를 자동으로 알릴 수 있어 관리 효율성이 높아집니다.

Bing Webmaster Tools 가입

  • Bing Webmaster Tools 웹사이트에 방문합니다.
  • Microsoft 계정으로 로그인합니다. 계정이 없다면 새로 생성해야 합니다.

사이트 추가

  • 로그인 후 대시보드에서 "사이트 추가" 를 클릭합니다.
  • 자신의 웹사이트 URL을 입력하고 "추가" 버튼을 클릭합니다.

사이트 소유 확인

  • 사이트 소유를 확인하기 위해 HTML 파일 업로드, 메타 태그 추가, 또는 DNS 레코드 추가 중 하나의 방법을 선택합니다.
  • 확인이 완료되면 대시보드에서 사이트가 목록에 나타납니다.

IndexNow | Bing Webmaster Tools

IndexNow | Bing Webmaster Tools

Greater control over content Whether you’re adding, updating, or deleting content, IndexNow notifies multiple search engines of your content changes as soon as they happen. Syncing your content through timely updates or removals from search engine listin

www.bing.com

IndexNow API 키 발급 방법

1. API 키 생성

  • 사이트 대시보드에서 "IndexNow" 섹션을 찾아 클릭합니다.
  • 여기에서 API 키를 생성할 수 있는 옵션이 표시됩니다.
  • 생성된 API 키를 복사하여 안전한 곳에 저장합니다.

API 키는 각 사이트마다 고유합니다. 다른 사이트에 적용하려면 별도의 키를 발급받아야 하며, 발급받은 API 키는 보안에 주의해야 합니다.

2. API 키 호스팅

  • 생성한 API 키는 웹사이트의 루트 디렉토리에 UTF-8 형식의 텍스트 파일로 호스팅해야 합니다.
  • 예를 들어, https://www.example.com/b9d89505474244e4898ec830e96aed1e.txt와 같은 경로에 파일을 업로드하고, 파일 내용에는 생성한 API 키를 포함시킵니다.

3. URL 제출

  • URL을 제출하기 위해 JSON 형식으로 HTTP POST 요청을 보냅니다. 요청의 구조는 다음과 같습니다:
  • 이 요청을 통해 여러 개의 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 응답 코드를 반환합니다. 각 코드의 의미는 다음과 같습니다:

  • 200 (OK): URL 제출 성공
  • 400 (Bad Request): 잘못된 형식
  • 403 (Forbidden): 유효하지 않은 키
  • 422 (Unprocessable Entity): URL이 호스트에 속하지 않거나 키가 일치하지 않음
  • 429 (Too Many Requests): 요청이 너무 많음
  • 5. URL 확인

    • Bing Webmaster Tools를 사용하여 제출한 URL이 검색 엔진에 제대로 전달되었는지 확인할 수 있습니다. 이를 통해 제출 상태를 모니터링할 수 있습니다.

    IndexNow
    IndexNow

    RSS 를 이용해서 자동 발송하기

    자동으로 페이지가 로드될때 마다 일정기간을 설정해서 자동으로 색인 요청을 진행할수 있습니다. 아래 스크립트 파일을 사이트와 API 키, RSS 주소를 수정해서 HTML 헤드에 넣어주시면 됩니다.

    • 페이지가 로드될 때 URL 제출을 하루에 한 번만 실행하도록 설정할 수 있습니다.
    • 이를 위해 로컬 스토리지에 마지막 실행 시간을 저장하고, 현재 시간과 비교하여 하루가 경과했는지를 확인합니다. 이러한 방식은 중복 요청을 방지하며, 효율적인 URL 제출을 보장합니다.

    이와 같은 절차를 통해 IndexNow를 효과적으로 활용하여 웹사이트의 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");
        
        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.');
        }
    });

    인덱스나우는 일부 블로그(티스토리)에서는 사용을 할수 없습니다.
반응형