Google AI Overviews·Perplexity·ChatGPT Search가 다국어 쿼리에 응답할 때, 인용 후보 선택은 두 신호 레이어에서 결정된다. 첫째, Googlebot이 색인 단계에서 처리하는 hreflang·Content-Language 시그널, 둘째, RAG 파이프라인이 실제 텍스트와 JSON-LD inLanguage에서 추출하는 언어 컨텍스트다. 두 레이어가 불일치하면 AI 엔진이 잘못된 언어 버전을 인용하거나 인용 후보에서 탈락하는 현상이 발생한다.
hreflang 메커니즘 — 크롤러 처리 경로 3가지
hreflang은 Googlebot이 색인 단계에서 처리하는 언어·지역 대상 신호다. 선언 경로는 세 가지이며 Googlebot은 세 경로를 동등하게 수집·합산한다.
- HTML
<head>link 태그 — 왜: 서버 렌더 페이지에서 가장 신뢰도가 높고 크롤 즉시 확인된다. 어떻게: 각 언어 버전의<head>에 동일한 hreflang 세트를 대칭 선언(A→B, B→A 양방향 필수). - HTTP
Link응답 헤더 — 왜: PDF·비HTML 문서나 Next.js App Router 환경에서 HTML 수정 없이 서버 레벨로 주입 가능. 어떻게:Link: <URL>; rel="alternate"; hreflang="ko"형식으로 응답 헤더에 추가. - XML Sitemap
xhtml:link— 왜: 페이지 수가 수만 개 이상일 때 HTML 수정 없이 일괄 선언 가능하고 크롤 예산을 아낀다. 어떻게:xmlns:xhtml="http://www.w3.org/1999/xhtml"네임스페이스 선언 후<xhtml:link>사용. x-default값 — 왜: 대상 언어가 없는 지역 사용자에게 언어 선택 페이지 또는 기본 URL을 명시하지 않으면 Googlebot이 임의 URL을 선택할 수 있다. 어떻게: 특정 언어 코드 대신hreflang="x-default"로 폴백 URL 선언.
AI 답변엔진이 다국어 신호를 처리하는 방식
hreflang은 크롤러 색인 신호다. Google AI Overviews가 인용 후보를 선택할 때는 색인된 URL의 언어가 쿼리 언어와 일치하는지 판단하며, 이때 실제 텍스트 언어와 JSON-LD inLanguage가 우선 참조된다. Perplexity의 RAG 파이프라인은 임베딩 생성 시 텍스트 언어를 직접 감지하므로 hreflang 선언만으로는 AI 인용 언어 버전을 제어할 수 없다.
- JSON-LD
inLanguage선언 — 왜: AI 엔진의 structured data 파서가 페이지 언어를 명시적으로 읽어 인용 언어 매칭에 활용한다. 어떻게: 각 언어 버전 페이지의 Article·WebPage 스키마에"inLanguage": "ko"추가. - URL 언어 세그먼트 (
/ko/,/en/) — 왜: 크롤러와 LLM 모두 경로 패턴을 언어 신호로 인식하며, RAG 리트리버가 언어별 청크를 분리하는 기준이 된다. 어떻게: 서브디렉토리(/ko/) 또는 서브도메인(ko.example.com) 중 한 방식으로 일관 적용. - 콘텐츠 완전 번역 품질 — 왜: LLM은 기계번역 특유의 문장 패턴을 감지해 인용 신뢰도 평가에 영향을 미치는 것으로 추정된다. 어떻게: AEO 타깃 핵심 페이지는 원어 전문가 번역 또는 사후 편집(MTPE) 적용.
구현: HTML·HTTP 헤더·sitemap 3계층 코드 예시
아래는 한국어·영어 2개 언어 버전을 hreflang으로 선언하고, Article JSON-LD에 inLanguage와 sameAs를 병행 선언하는 최소 구현이다. XML sitemap 선언도 포함한다.
<!-- HTML <head> — 한국어 버전 페이지 -->
<link rel="alternate" hreflang="ko" href="https://example.com/ko/guide/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/guide/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/guide/" />
<!-- JSON-LD: AI 인용 언어 컨텍스트 명시 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "전력량 계산 완전 가이드",
"inLanguage": "ko",
"url": "https://example.com/ko/guide/",
"sameAs": [
"https://example.com/en/guide/"
],
"author": { "@type": "Organization", "name": "Example Corp" }
}
</script>
<!-- HTTP Link 헤더 (Nginx 예시, PDF 등 비HTML 리소스에 적용) -->
add_header Link '<https://example.com/en/guide/>; rel="alternate"; hreflang="en",
<https://example.com/ko/guide/>; rel="alternate"; hreflang="ko"';
<!-- XML Sitemap — xhtml:link 선언 (sitemap.xml) -->
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/ko/guide/</loc>
<xhtml:link rel="alternate" hreflang="ko"
href="https://example.com/ko/guide/"/>
<xhtml:link rel="alternate" hreflang="en"
href="https://example.com/en/guide/"/>
<xhtml:link rel="alternate" hreflang="x-default"
href="https://example.com/guide/"/>
</url>
</urlset>
검증과 측정
- Google Search Console — 국제 타기팅 보고서: 언어 오류·지역 충돌·양방향 미선언 페이지를 URL 단위로 노출. 왜: Googlebot이 색인에 반영하기 전 단계에서 선언 오류를 잡는 유일한 공식 채널. 어떻게: Search Console → Index → 국제 타기팅 → 언어 탭에서 오류 URL 목록 다운로드.
- hreflang 검증 도구: Screaming Frog(
Hreflang탭), Ahrefs Site Audit(hreflang이슈 필터)로 대칭 미선언·절대 URL 미사용·자기 참조 누락 일괄 검출. - Search Console 언어별 노출 필터: Performance → 검색어 → 필터: 국가·언어로 노출/클릭/CTR 분리. AEO 관점에서 AI Overviews 노출 증가 여부도 해당 필터로 측정(2024년 하반기 AI Overviews 데이터 SC 통합 이후).
- Rich Results Test + Schema Markup Validator: 각 언어 버전 URL에서 JSON-LD
inLanguage가 정상 파싱되는지 확인. 어떻게:https://validator.schema.org/에 URL 입력 후inLanguage필드 존재 여부 체크.
| 신호 유형 | 전통 SEO | Google AI Overviews | Perplexity / ChatGPT Search |
|---|---|---|---|
hreflang (HTML/sitemap/헤더) |
직접 처리 — 언어·지역 URL 매핑 | 색인 단계 처리 — 인용 URL 풀에 간접 영향 | 처리 안 함 — RAG 파이프라인 외부 |
JSON-LD inLanguage |
보조 신호 | 인용 언어 매칭 시 직접 참조 | 임베딩 언어 컨텍스트로 활용(추정) |
URL 언어 세그먼트 (/ko/) |
중요 — 크롤 경로 분리 | 중요 — 색인 URL 언어 식별 | 중요 — 쿼리 언어 매칭 |
HTTP Content-Language 헤더 |
보조 (Chrome 자동번역 참조) | 보조 | 미처리 |
흔한 오해와 올바른 처리
오해: hreflang을 선언하면 AI 답변엔진도 해당 언어 버전을 인용한다.
hreflang은 Googlebot의 색인 단계 신호이며, AI Overviews의 RAG 레이어나 Perplexity의 임베딩 생성 단계에는 직접 전달되지 않는다. AI가 인용 언어 버전을 선택하는 실질 결정 요인은 (1) 쿼리 언어와 페이지 실제 텍스트 언어의 일치, (2) JSON-LD inLanguage 명시, (3) URL 언어 세그먼트다. 올바른 접근법은 hreflang을 크롤 단계 신호로 관리하되, AI 인용 제어에는 각 언어 버전 페이지에 inLanguage를 포함한 JSON-LD와 실제 해당 언어로 작성된 본문을 병행하는 것이다.
FAQ 1. hreflang 미선언 시 Google AI Overviews 인용에 실제 영향이 있는가?
직접 영향은 없으나 간접 경로로 문제가 발생한다. hreflang 미선언 또는 오선언 상태에서는 Googlebot이 어느 URL이 어느 언어·지역을 대상으로 하는지 파악하지 못해 잘못된 언어 버전이 주요 색인에 포함되거나 중복 콘텐츠 판정을 받을 수 있다. AI Overviews는 이 색인을 인용 풀로 사용하므로, hreflang 오선언이 결과적으로 잘못된 언어 버전 URL을 인용하는 형태로 나타난다. 따라서 hreflang 자체가 AI 인용을 제어하지는 않지만, 올바른 색인 상태 유지를 위한 필수 전제 조건이다.
FAQ 2. 서브도메인(ko.example.com)과 서브디렉토리(/ko/) 중 AEO 관점에서 어느 쪽이 유리한가?
AEO 관점에서도 서브디렉토리가 일반적으로 유리하다. 동일 도메인 내 언어 세그먼트는 도메인 수준의 권위가 분산되지 않고, 크롤러의 언어 매핑과 RAG 인용 풀 구성 면에서 일관성이 높다. 서브도메인은 독립 도메인처럼 취급되어 도메인 권위가 분산될 수 있다. 다만 CDN 분리·캐싱 정책·팀 운영 구조 등 인프라 요건이 우선이라면 서브도메인도 hreflang + JSON-LD sameAs를 통한 명시적 언어 연결로 인용 신뢰도를 보완할 수 있다. 어느 방식이든 한 번 선택한 URL 구조는 변경 시 hreflang 전체와 sitemap을 동시에 갱신해야 하므로 초기 결정이 중요하다.
참고 자료
이 글의 권고는 아래 공식 문서·연구를 근거로 합니다.