ChatGPT·Perplexity·네이버가 내 글을 24시간 안에 읽게 만드는 법 — AI 검색 색인 완벽 가이드

GEO Team
#GEO#AI검색최적화#IndexNow#색인#ChatGPT#Perplexity

ChatGPT·Perplexity·네이버가 내 글을 24시간 안에 읽게 만드는 법

AI 검색 최적화(GEO)에서 가장 많이 오해하는 지점: "콘텐츠만 잘 쓰면 AI가 알아서 인용한다" — 틀렸다. ChatGPT·Perplexity·Gemini는 답변할 때 그 순간 검색엔진 인덱스에 있는 페이지를 실시간으로 요약한다. 인덱스에 없는 페이지는 세상에서 가장 좋은 글이어도 절대 인용되지 않는다. 그래서 GEO의 첫 관문은 글쓰기가 아니라 **"얼마나 빨리 색인되느냐"**다.

이 글은 새로 발행한 글을 24~72시간 안에 주요 검색엔진에 색인시키는 방법을, 채널별로 그대로 따라 할 수 있게 정리한 것이다.

핵심부터 말하면:


왜 "색인 속도"가 GEO의 전부인가

전통 SEO는 "콘텐츠 → 크롤링 → 인덱싱 → 랭킹 상승"에 몇 주가 걸린다. 그런데 AI 검색은 다르다.

ChatGPT(검색 모드)나 Perplexity는 질문을 받으면 내부적으로 검색 쿼리를 만들고, Bing/구글 인덱스 상위 결과를 즉석에서 긁어와 요약한다. 즉, 검색 결과창에 내 페이지가 올라가는 순간 AI 답변에도 등장할 수 있다. 모델을 재학습시킬 필요가 전혀 없다.

그래서 GEO의 승부처는 두 개로 쪼개진다:

  1. 색인 속도 — AI가 읽을 수 있는 상태로 만드는 것 (이 글의 주제)
  2. 인용 적합성 — 색인된 뒤 실제로 인용되도록 직답형·구조화하는 것 (별도 글)

이 글은 1번, 색인 속도를 다룬다.


0단계. 모든 채널 공통 준비

0-1. robots.txt에 사이트맵 선언

https://내도메인/robots.txt:

User-agent: *
Allow: /

Sitemap: https://내도메인/sitemap.xml

Next.js라면 app/robots.ts:

import type { MetadataRoute } from 'next'

export default function robots(): MetadataRoute.Robots {
  return {
    rules: { userAgent: '*', allow: '/' },
    sitemap: 'https://내도메인/sitemap.xml',
  }
}

0-2. sitemap.xml — <lastmod>을 정확하게

<lastmod>는 검색엔진이 "이 페이지를 다시 크롤링할까?"를 정하는 핵심 신호다. 글을 수정할 때마다 갱신해야 한다.

Next.js app/sitemap.ts:

import type { MetadataRoute } from 'next'

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const posts = await getPublishedPosts() // DB에서 발행글 조회
  return posts.map((p) => ({
    url: `https://내도메인/blog/${p.slug}`,
    lastModified: p.updatedAt,        // ← ISO 날짜. 글 수정 시 갱신
    changeFrequency: 'weekly',
    priority: 0.8,
  }))
}

1단계. IndexNow — 가성비 1위 (Bing + 네이버 + Yandex 동시)

IndexNow는 Bing, 네이버, Yandex, Seznam, Yep이 함께 쓰는 즉시 색인 프로토콜이다. api.indexnow.org에 한 번 제출하면 모든 파트너에 전파된다. (구글은 파트너가 아니다 → 4단계에서 따로.)

1-1. 키 생성

8~128자, [a-zA-Z0-9-] 문자. 랜덤 hex면 충분하다:

openssl rand -hex 16
# 예: a1b2c3d4e5f6071829abcdef01234567

1-2. 키 파일 호스팅

https://내도메인/{키}.txt키 문자열만 담아 올린다 (content-type: text/plain).

Next.js라면 public/a1b2c3d4e5f6071829abcdef01234567.txt 파일을 만들고 안에 키만 적으면 /a1b2…txt로 자동 서빙된다.

⚠️ 이 키 파일은 반드시 글을 제출할 그 도메인에 있어야 한다. 다른 도메인에 올려두고 남의 도메인 URL을 제출하는 건 불가능하다. (그래서 IndexNow는 "내가 통제하는 도메인"에서만 쓸 수 있다.)

1-3. URL 제출

단건(GET) — 테스트용:

curl "https://api.indexnow.org/indexnow?url=https://내도메인/blog/post-1&key=a1b2c3d4e5f6071829abcdef01234567"

배치(POST) — 운영용, 한 번에 최대 10,000개:

curl -X POST "https://api.indexnow.org/indexnow" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{
    "host": "내도메인",
    "key": "a1b2c3d4e5f6071829abcdef01234567",
    "keyLocation": "https://내도메인/a1b2c3d4e5f6071829abcdef01234567.txt",
    "urlList": [
      "https://내도메인/blog/post-1",
      "https://내도메인/blog/post-2"
    ]
  }'

1-4. 응답코드 해석 (이걸 모르면 디버깅 못 한다)

코드의미대처
200정상 수신·키 검증 OK
202수신, 키 검증 대기중정상. 곧 키파일을 확인함
400잘못된 요청(JSON 형식 등)body 점검
403키 파일이 없거나 내용 불일치1-2 다시 확인
422URL 호스트 ≠ 제출 host, 또는 키 불일치도메인 일치 확인
429너무 자주 보냄발행 시점에만, 같은 URL 반복 금지

1-5. 발행 훅으로 자동화 (Python 예시)

글이 발행/수정되는 순간 자동으로 핑하게 만든다:

import httpx

INDEXNOW_KEY = "a1b2c3d4e5f6071829abcdef01234567"
HOST = "내도메인"

def ping_indexnow(urls: list[str]) -> int:
    resp = httpx.post(
        "https://api.indexnow.org/indexnow",
        json={
            "host": HOST,
            "key": INDEXNOW_KEY,
            "keyLocation": f"https://{HOST}/{INDEXNOW_KEY}.txt",
            "urlList": urls,
        },
        headers={"Content-Type": "application/json; charset=utf-8"},
        timeout=10,
    )
    return resp.status_code  # 200/202면 성공

# 글 status가 published로 바뀌는 지점에서 호출
# ping_indexnow(["https://내도메인/blog/post-1"])

2단계. Bing Webmaster (색인 현황 + 진단 보너스)

Bing은 내부적으로 IndexNow를 쓰므로 1단계만 해도 색인은 된다. Bing Webmaster를 추가로 등록하면 색인 현황·검색 쿼리·진단을 볼 수 있고 별도 제출 쿼터도 받는다.

  1. https://www.bing.com/webmasters 접속 → 사이트 추가
  2. 소유 확인: XML 파일 / meta 태그 / CNAME DNS 중 하나, 또는 Google Search Console에서 import(제일 빠름)
  3. API 키: Settings → API access → API Key

선택적으로 URL 직접 제출:

curl -X POST "https://ssl.bing.com/webmaster/api.svc/json/SubmitUrl?apikey=발급받은키" \
  -H "Content-Type: application/json" \
  -d '{"siteUrl":"https://내도메인","url":"https://내도메인/blog/post-1"}'

3단계. 네이버 서치어드바이저 (한국 GEO면 사실상 필수)

네이버가 IndexNow 파트너라 1단계로도 핑은 가지만, 네이버 색인의 정공법은 서치어드바이저다.

  1. https://searchadvisor.naver.com웹마스터도구 → 사이트 등록
  2. 소유 확인: HTML 파일 업로드 또는 <meta> 태그
  3. 요청 → 사이트맵 제출: https://내도메인/sitemap.xml
  4. 요청 → 웹페이지 수집: 새 글 URL 단건 제출 (하루 쿼터 있음 → 중요 글 위주)
  5. 검증 → 로봇룰스에서 네이버 봇(Yeti) 허용 확인

4단계. 구글 — "즉시 색인"은 없다, 현실적인 가속만 있다

구글엔 IndexNow 같은 즉시 핑이 없다. 그리고 구글 Indexing API는 JobPosting / BroadcastEvent(라이브) 페이지만 공식 지원한다 — 일반 블로그 글에 쓰면 무시되거나 정책 위반이다. 블로그는 쓰지 마라.

블로그 색인 가속의 정석:

4-1. Search Console 등록

https://search.google.com/search-console → 속성 추가 → 소유 확인(도메인 속성 = DNS TXT 권장)

4-2. 사이트맵 제출

색인생성 → Sitemaps → sitemap.xml 제출 (한 번 하면 이후 자동 재크롤)

4-3. URL 검사 → 색인 요청 (수동)

상단 URL 검사 → 글 URL 입력 → "색인 생성 요청". 하루 약 10건 쿼터 → 중요 글만.

4-4. 진짜 레버는 이것 — 발견 속도 단축


5단계. Sitemap ping은 죽었다 — 무엇으로 대체하나

대체: robots.txt에 Sitemap: 선언(0단계) + 각 도구(Search Console·Bing·네이버)에 사이트맵 한 번 등록하면 끝. 즉시성은 IndexNow가 ping 역할을 대체한다.


발행 → 색인 워크플로 체크리스트

새 글을 발행할 때마다 반복하는 루틴:

  1. ✅ 글 published → updatedAt 갱신 → sitemap.xml 자동 반영
  2. ping_indexnow([url]) 호출 (Bing·네이버·Yandex 동시)
  3. ✅ 네이버 서치어드바이저 "웹페이지 수집"에 URL 제출 (중요 글)
  4. ✅ 구글 Search Console URL 검사 → 색인 요청 (중요 글)
  5. ✅ 홈/인기글에서 새 글로 내부링크 1개 이상 걸기
  6. ⏱️ 24~72시간 후 색인 확인

일회성 셋업(처음 한 번만): IndexNow 키 파일 호스팅 → Bing/네이버/구글 소유 확인 → 각 도구에 사이트맵 제출. 이후엔 2~5번만 반복하면 된다.


색인됐는지 확인하는 법


마지막으로 — 색인은 시작일 뿐이다

여기까지 하면 "AI가 읽을 수 있는 상태"가 된다. 하지만 색인 ≠ 인용이다. 실제로 AI 답변에 인용되려면 콘텐츠가 해당 질문에 직답형으로, 구조화(FAQ·비교표·정의 블록)되어, 최신성 신호를 갖춘 형태여야 한다. 그건 다음 글에서 다룬다.

색인은 GEO의 입장권이고, 인용 적합성은 그 안에서의 승부다. 둘 다 갖춰야 "1주일 안에 AI가 우리를 언급한다"는 말이 현실이 된다.

ChatGPT·Perplexity·네이버가 내 글을 24시간 안에 읽게 만드는 법 — AI 검색 색인 완벽 가이드 | Geomix