사이트 구조와 AI 크롤러빌리티의 핵심은 두 개의 문(門)을 모두 여는 것이다. 첫째 문은 "AI 봇이 내 페이지를 가져갈 수 있는가"(크롤 가능성), 둘째 문은 "가져간 내용을 RAG가 깔끔한 조각으로 잘라 검색·인용할 수 있는가"(검색 가능성)다. robots.txt로 첫 문을 닫으면 인용 후보에서 통째로 탈락하고, 첫 문을 열어도 구조가 엉망이면 둘째 문에서 걸러진다. 이 글은 그 두 문이 작동하는 메커니즘을 RAG(retrieval→reranking→generation) 관점에서 뜯어보고, 오늘 바로 고칠 수 있는 구조 체크리스트를 ❌약한 예 / ✅강한 예로 정리한다.
왜 "구조"가 인용을 좌우하는가 — RAG 메커니즘부터
AI 검색엔진이 당신의 글을 답변에 인용하기까지는 세 단계를 거친다. 이 파이프라인을 이해하면 "구조"가 왜 결과를 바꾸는지가 한 번에 보인다.
- 검색(retrieval) — 사용자의 질문을 벡터로 바꿔, 미리 잘라(chunk) 색인해 둔 문서 조각들 중 의미가 가까운 것을 끌어온다. 의미 기반 검색의 기초는 Karpukhin 등(2020, arXiv:2004.04906)의 Dense Passage Retrieval로, 임베딩 검색이 전통적 키워드 매칭(BM25)을 능가함을 보였다.
- 재정렬(reranking) — 1차로 끌어온 후보들을 질문과 함께 다시 읽어(cross-encoder) 진짜 관련도 순으로 다시 줄 세운다. 난도가 높은 질의일수록 효과가 커서 NDCG가 5~15포인트, 어려운 경우 20포인트까지 오른다.
- 생성(generation) — 상위로 올라온 조각들만 컨텍스트로 받아 LLM이 답을 쓰고, 그 조각의 출처를 인용한다.
핵심은 이 세 단계가 모두 "페이지 전체"가 아니라 "조각(chunk)"을 다룬다는 점이다. 그래서 RAG의 1차 원전인 Lewis 등(2020, arXiv:2005.11401)이 말한 파라메트릭(모델이 외운 것)+비파라메트릭(외부에서 검색한 것) 메모리 결합에서, 당신이 통제할 수 있는 건 "비파라메트릭" 쪽 — 즉 검색되기 좋은 조각으로 잘리도록 글의 구조를 짜는 일이다.
비유하자면, RAG는 책 한 권을 통째로 읽지 않는다. 색인 카드(chunk) 더미에서 질문에 맞는 카드 몇 장만 뽑아 읽는 사서다. 당신의 페이지가 한 장에 열 가지 주제가 뒤엉킨 카드라면, 사서는 그 카드를 어떤 질문에도 자신 있게 뽑지 못한다.
첫째 문 — AI 크롤러가 들어올 수 있는가 (크롤러빌리티)
아무리 좋은 글도 봇이 가져가지 못하면 색인 대상이 아니다. AI 검색의 후보군에 들어가려면 robots.txt에서 해당 봇을 허용해야 한다. 2026년 현재 주요 AI 크롤러는 다음과 같다.
| 봇 이름 | 주체 | 용도 |
|---|---|---|
GPTBot | OpenAI | 모델 학습용 수집 |
OAI-SearchBot | OpenAI | ChatGPT 검색 인용 수집 |
PerplexityBot | Perplexity | 실시간 인용 색인 |
ClaudeBot / anthropic-ai | Anthropic | Claude 수집 |
Google-Extended | Gemini/AI 학습 허용 토글 |
여기서 흔한 사고가 두 가지 있다. (1) 보안 플러그인이나 CDN의 기본 봇 차단이 이들을 막아버리는 경우, (2) "AI에 내 콘텐츠 학습시키기 싫다"며 GPTBot을 막았는데 검색 인용용 OAI-SearchBot까지 같이 막혀 ChatGPT 검색에서 통째로 사라지는 경우다. 학습 거부와 검색 노출은 별개의 봇이라는 점을 구분해야 한다.
❌약한 예 / ✅강한 예 — robots.txt
# 약한 예 — 모든 봇 차단(보안 템플릿 기본값을 방치)
User-agent: *
Disallow: /
# 강한 예 — AI 검색 인용 봇을 명시 허용, sitemap 노출
User-agent: OAI-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: Google-Extended
Allow: /
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml
한 가지 더. JavaScript로만 본문을 그리는 사이트(CSR)는 봇이 빈 페이지를 가져갈 위험이 있다. 검색용 크롤러 상당수는 무거운 JS 렌더링을 끝까지 기다리지 않는다. 본문 텍스트가 초기 HTML에 들어 있도록 SSR(server-side rendering)이나 정적 생성(SSG)을 쓰는 것이 안전하다.
❌약한 예 / ✅강한 예 — 렌더링
- ❌ 약한 예: 초기 HTML은
<div id="root"></div>하나뿐, 본문은 클라이언트 JS가 fetch 후 그림 → 봇이 본문 0자를 수집. - ✅ 강한 예: 초기 HTML에
<h1>, 본문 문단, 표가 그대로 들어 있음(SSR/SSG) → 봇이 즉시 텍스트 확보.
둘째 문 — 가져간 내용이 "좋은 조각"으로 잘리는가 (청크 친화 구조)
봇이 본문을 확보했다면, 이제 그 텍스트는 색인 단계에서 조각으로 잘린다. 잘리는 경계는 대개 제목(h2/h3), 문단, 목록 같은 구조적 신호를 따른다. 그래서 구조가 곧 "조각의 품질"을 결정한다.
1) 한 섹션 = 하나의 질문에 답하기
RAG는 질문 벡터와 조각 벡터의 거리를 잰다. 한 섹션이 한 가지 의도에 집중돼 있으면, 그 섹션의 벡터는 특정 질문에 또렷하게 가까워진다. 반대로 한 h2 아래 가격·기능·후기·배송이 뒤섞이면 벡터가 흐려져 어떤 질문에도 어중간하게 멀어진다.
- ❌ 약한 예:
<h2>제품 소개</h2>아래 스펙·가격·환불·리뷰를 8문단에 몰아넣기. - ✅ 강한 예:
<h2>환불은 며칠 안에 되나요?</h2>→ 바로 아래 직답 한 문장 + 근거. 질문형 소제목이 질문 벡터와 직접 매칭된다.
2) 직답을 앞에 — "Lost in the Middle" 회피
Liu 등(2023, arXiv:2307.03172)은 LLM이 긴 맥락에서 중간에 묻힌 정보를 잘 못 쓴다는 U자형 현상("Lost in the Middle")을 보였다. 성능은 정보가 맥락의 앞이나 끝에 있을 때 가장 높다. 이는 생성 단계뿐 아니라 한 조각 안에서도 적용된다 — 핵심 답을 문단 첫 문장에 두면 인용될 확률이 오른다.
- ❌ 약한 예: "여러 요인을 고려해야 하는데… (배경 5문장)… 결론적으로 X다."
- ✅ 강한 예: "X다. 이유는 세 가지다. 첫째…" — 직답 먼저, 근거 뒤.
3) 조각이 홀로 읽혀도 말이 되게 — 맥락 자급(自給)
이 지점에서 Anthropic의 Contextual Retrieval 연구(2024)가 결정적이다. 각 조각 앞에 그 조각이 어떤 문서·어떤 맥락의 일부인지 짧게 덧붙였더니 검색 실패율이 35% 줄었다(5.7%→3.7%). 여기에 BM25 하이브리드를 더하면 49%, 재정렬까지 더하면 67% 감소했다. 권장 검색 폭은 top-20이었다.
비유: "그는 그것을 다음 분기까지 미뤘다"라고만 적힌 색인 카드는 누가·무엇인지 알 수 없어 어떤 질문에도 못 뽑힌다. "(2026 예산안 관련) 김 대표는 신규 채용을 다음 분기까지 미뤘다"처럼 카드 자체에 맥락이 박혀 있어야 사서가 자신 있게 뽑는다.
실무로 옮기면: 대명사("이것", "위에서 말한")로 앞 문단에 의존하지 말고, 각 섹션이 자체로 주어·대상을 다시 명시하라. 조각은 페이지에서 떨어져 나가 단독으로 LLM에 제시된다는 사실을 늘 염두에 둬야 한다.
- ❌ 약한 예: "위에서 설명한 이 방법은 비용이 절반이다." (무엇인지 조각 밖에 있음)
- ✅ 강한 예: "하이브리드 검색(키워드+의미 검색 결합)은 단일 방식 대비 비용이 절반이다."
4) 표·목록으로 사실을 구조화하기
GEO를 정량 분석한 Aggarwal 등(2023, arXiv:2311.09735, KDD 2024)은 통계·출처 인용·직접 인용문을 더하면 특정 조건에서 생성엔진 가시성이 최대 약 40%까지 오른다고 보고했다. 표와 목록은 사실을 압축해 한 조각에 담고, 숫자·정의를 또렷하게 만들어 인용 친화적이다.
사이트 전역 구조 — 사서가 길을 잃지 않게
개별 페이지를 넘어, 사이트 전체 구조도 크롤 효율과 권위 전달에 직결된다.
| 요소 | 약한 예 | 강한 예 |
|---|---|---|
| URL | /p?id=8842&ref=x | /guide/ai-crawlability (의미가 담긴 경로) |
| 제목 위계 | h1 여러 개, h3이 h2 없이 등장 | h1 하나 → h2 → h3 논리적 중첩 |
| 내부 링크 | 고립된 페이지(어디서도 링크 안 됨) | 관련 글끼리 주제 클러스터로 연결 |
| 사이트맵 | 없음 / 갱신 안 됨 | sitemap.xml 최신 유지 + robots.txt에 명시 |
| 중복 | 같은 글이 여러 URL로 존재 | canonical 태그로 정본 지정 |
내부 링크는 사서에게 "이 카드들은 같은 주제 서랍에 있다"고 알려주는 신호다. 주제 클러스터(허브 글 ↔ 세부 글 상호 링크)는 크롤러가 관련 페이지를 빠짐없이 발견하게 하고, 주제 권위를 한곳으로 모은다.
네이버라는 예외 — 닫힌 정원의 구조 전략
한국 시장에선 변수가 하나 더 있다. 네이버는 외부 크롤러를 차단하기 때문에, 글로벌 AI(ChatGPT·Claude 등)는 네이버 블로그 본문을 직접 수집하지 못하고 나무위키·위키백과·티스토리 같은 열린 출처로 우회한다. 즉 "네이버 안에서의 노출"과 "글로벌 AI에서의 인용"은 서로 다른 게임이다.
네이버 내부에선 자체 알고리즘이 작동한다. C-Rank(출처의 신뢰·전문성)와 D.I.A.+(문서의 의도 부합)가 핵심이며, 콘텐츠 5원칙(직접 경험·일관된 주제·진정성·읽기 쉬운 구조·최신성)을 따른다. 네이버 AI 브리핑(요약)은 이미 통합검색 쿼리의 20% 이상에 적용되고 있고, 한 표본 분석(272건)에서는 인용 출처의 약 58%가 블로그였으며 약 49%가 검색 Top10 밖에서 인용됐다. 구조 측면 시사점은 분명하다 — 순위가 전부가 아니라, AI가 뽑아 쓰기 좋은 "읽기 쉬운 구조"가 별도의 인용 경로를 연다. 참고로 큐:(Cue:)와 클로바X는 2026-04-09 종료되고, AI탭이 2026-06-25~26 정식 출시됐다.
측정은 한 번으로 끝나지 않는다 — 비결정성 주의
구조를 고친 뒤 "인용됐나?"를 확인할 때 흔히 빠지는 함정이 있다. LLM 출력은 temperature=0에서도 흔들린다(GPU 연산·배치 차이). 한 분석에서는 대형 모델이 같은 입력 1,000회에 80가지 출력을 냈다. AI 가시성의 불확실성을 정량화한 연구(arXiv:2603.08924)는 인용이 멱법칙으로 출렁이므로 다중 실행 + 부트스트랩 신뢰구간을 권장한다. 단일 측정은 노이즈다. 구조 개선의 효과를 보려면 여러 번 측정해 추세로 읽어야 한다.
실전 체크리스트
- □ robots.txt가 OAI-SearchBot·PerplexityBot·ClaudeBot·Google-Extended를 허용하는가
- □ 본문 텍스트가 초기 HTML에 들어 있는가(SSR/SSG)
- □
sitemap.xml이 최신이고 robots.txt에 명시됐는가 - □ 소제목이 "질문형"이고 그 아래 직답이 첫 문장에 오는가
- □ 각 섹션이 대명사 없이 단독으로 읽혀도 말이 되는가(맥락 자급)
- □ 핵심 사실이 표·목록으로 구조화돼 있는가
- □
h1→h2→h3위계가 논리적이고 중복h1이 없는가 - □ 중복 URL에
canonical이 지정됐는가 - □ 고립된 페이지 없이 주제 클러스터로 내부 링크됐는가
Citeon은 이 원리를 제품에 담았다
위의 두 문(門) — 크롤 가능성과 청크 친화 구조 — 은 눈으로 일일이 점검하기 어렵다. Citeon의 사이트 진단엔진은 URL 하나를 넣으면 SEO·AEO·GEO 관점에서 구조를 점수화하고, robots.txt의 AI 봇 허용 여부, 제목 위계, 직답 구조, 맥락 자급 같은 항목을 한국어 처방으로 돌려준다. 그리고 ChatGPT·Gemini·Perplexity·Claude 4개 엔진의 실제 인용을 측정(SOV)해, 구조를 고친 뒤 인용이 실제로 늘었는지 주간 모니터 추이로 확인한다 — 앞서 말한 "단일 측정은 노이즈" 문제를 추세 관찰로 보완하는 셈이다. 경쟁사가 어떤 구조로 인용을 가져가는지 역추적하는 기능도 있다.
지금 내 사이트가 AI 크롤러에게 열려 있는지, 조각으로 잘 잘리는 구조인지 궁금하다면 무료 진단(₩0)부터 받아보길 권한다. → citeon.cloud에서 무료 진단 받기
자주 묻는 질문(FAQ)
GPTBot을 막으면 ChatGPT 검색에서도 사라지나요?
꼭 그렇진 않습니다. GPTBot은 주로 모델 학습용 수집 봇이고, ChatGPT 검색의 인용 후보 수집은 OAI-SearchBot이 담당합니다. 학습은 거부하되 검색 노출은 유지하려면 GPTBot은 막더라도 OAI-SearchBot은 허용해야 합니다. 둘을 한 번에 막으면 검색 인용에서도 빠질 수 있습니다.
JavaScript로 만든 SPA는 AI 검색에 불리한가요?
본문을 클라이언트 JS로만 그리면 불리할 수 있습니다. 검색용 크롤러 상당수가 무거운 렌더링을 끝까지 기다리지 않아, 본문 텍스트가 비어 보일 위험이 있기 때문입니다. SSR(server-side rendering)이나 정적 생성(SSG)으로 핵심 본문을 초기 HTML에 포함시키면 안전합니다.
네이버 블로그에 잘 써두면 ChatGPT도 인용하나요?
직접 인용은 어렵습니다. 네이버는 외부 크롤러를 차단하기 때문에 글로벌 AI는 네이버 본문을 직접 수집하지 못하고, 위키백과·나무위키·티스토리 같은 열린 출처로 우회합니다. 네이버 내부 노출(C-Rank·D.I.A.+·AI 브리핑)과 글로벌 AI 인용은 별개 전략으로 접근해야 합니다.
구조를 고쳤는데 왜 인용 결과가 매번 다른가요?
LLM 출력은 temperature=0에서도 GPU 연산·배치 차이로 흔들리기 때문입니다. 한 분석에선 대형 모델이 동일 입력 1,000회에 80가지 출력을 냈습니다. 단일 측정은 노이즈이므로, 같은 질문을 여러 번 돌려 추세(신뢰구간)로 효과를 판단해야 합니다.
가장 먼저 고쳐야 할 한 가지는 무엇인가요?
robots.txt에서 AI 검색 봇이 허용돼 있는지 확인하는 것입니다. 이 문이 닫혀 있으면 본문 품질·구조와 무관하게 후보군에서 통째로 제외되기 때문입니다. 그다음이 "직답을 앞에, 한 섹션에 한 의도" 같은 청크 친화 구조입니다.
참고자료
- Anthropic — Introducing Contextual Retrieval (2024)
- Lewis et al., Retrieval-Augmented Generation (arXiv:2005.11401)
- Karpukhin et al., Dense Passage Retrieval (arXiv:2004.04906)
- Liu et al., Lost in the Middle (arXiv:2307.03172)
- Aggarwal et al., GEO: Generative Engine Optimization (arXiv:2311.09735, KDD 2024)
