๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
openipc.kr
SEO

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.');
        }
    });

    ์ธ๋ฑ์Šค๋‚˜์šฐ๋Š” ์ผ๋ถ€ ๋ธ”๋กœ๊ทธ(ํ‹ฐ์Šคํ† ๋ฆฌ)์—์„œ๋Š” ์‚ฌ์šฉ์„ ํ• ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋ฐ˜์‘ํ˜•

'SEO' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ ๋ธ”๋กœ๊ทธ ๊ธ€์ž ์ƒ‰์ƒ ์ตœ์ ํ™” ] ํ๋ฆฐ ์ƒ‰์ƒ์œผ๋กœ ์ธํ•œ ์ ‘๊ทผ์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ  (0) 2024.10.22
๊ตฌ๊ธ€ ์• ๋“œ์„ผ์Šค ์Šน์ธ ์‹ ์ฒญํ›„ ๋ฐ˜๋ ค์‹œ ๋Œ€์‘ ๋ฐฉ๋ฒ•๊ณผ ์š”๋ น  (1) 2024.10.21
์ž๋™ ๋‚ด๋ถ€ ์™ธ๋ถ€ ๋งํฌ ์„ค์ •์œผ๋กœ ๋ธ”๋กœ๊ทธ ํ’ˆ์งˆ ํ–ฅ์ƒํ•˜๊ธฐ  (0) 2024.10.20
ํŽ˜์ด์ง€ ์ฃผ์†Œ ์„ ํƒ ์‹œ ๋ฌธ์ž์™€ ์ˆซ์ž, ์–ด๋–ค ๊ฒƒ์ด ๋” ํšจ๊ณผ์ ์ธ๊ฐ€?  (2) 2024.10.20
[ LCP ์†๋„ ์ตœ์ ํ™” ]์ฝ˜ํ…์ธ  ํ‘œ์‹œ ์‹œ๊ฐ„ LCP ์†๋„ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์ด๋ฏธ์ง€ ์ตœ์ ํ™”  (0) 2024.10.20
[์ด๋ฏธ์ง€ ์ตœ์ ํ™” ] ์ด๋ฏธ์ง€ ์‚ฌ์šฉ์‹œ ๋ธ”๋กœ๊ทธ ์ €ํ’ˆ์งˆ ๋ฐฉ์ง€ ์˜ˆ๋ฐฉ ๋ฐฉ๋ฒ•  (9) 2024.10.19
[ ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™” ] ์›นํŽ˜์ด์ง€ ๋กœ๋”ฉ์˜ ๋‹จ๊ณ„๋ณ„ ๊ณผ์ •๊ณผ ์Šคํƒ€์ผ ์ ์šฉ ๋‹จ๊ณ„ ์„ค๋ช…  (0) 2024.10.18