Citeon
논문·연구 분석

AI 검색 트래픽은 정말 늘고 있을까: 2026 데이터 점검

박도현
박도현 · AEO 리서처

AI 검색 트래픽 증가 여부는 GA4 채널 리포트 한 줄로 답할 수 없는 측정 문제다. Perplexity·ChatGPT Search·Gemini AI Overviews는 크롤러가 문서를 색인하는 단계, 모델이 인용 후보를 선정하는 단계, 사용자가 인용 링크를 클릭하는 단계를 분리하여 동작한다. 각 단계는 서버에 다른 신호를 남기므로 세 신호를 구분하지 않으면 실규모를 과소 또는 과대 계상한다. 특히 일부 플랫폼은 Referrer-Policy: no-referrer를 적용하거나 HTTPS→HTTP 다운그레이드 시 Referer를 드롭하여, 표준 애널리틱스 도구만으로는 AI 기인 클릭을 direct 트래픽으로 오계상하는 구조적 결함이 있다.

신호 계층: 크롤·인용·클릭의 기술적 구분

2025년까지의 공개 데이터 점검

절대 수치는 플랫폼이 공개하지 않으므로 간접 지표를 교차 검증한다.

플랫폼별 측정 신호 비교

플랫폼 크롤 UA 식별자 클릭 Referer GA4 기본 채널 Attribution 난이도
Perplexity PerplexityBot/1.0 perplexity.ai (HTTPS→HTTPS 시 전송) Referral / 기타 중간
ChatGPT Search GPTBot (색인), ChatGPT-User (실시간) chatgpt.com Referral / 기타 낮음
Google AI Overviews Googlebot (공용, 분리 불가) google.com Organic Search 높음
Claude.ai ClaudeBot claude.ai Referral 낮음
Gemini (standalone) Googlebot 공용 (robots.txt Google-Extended 토큰으로 AI 학습 제외 가능) gemini.google.com Referral 낮음

측정 구현: Nginx 로그 기반 AI 트래픽 집계

GA4에 의존하지 않고 서버 로그에서 크롤과 인용 클릭을 직접 분리하는 Python 예시다.

import re
from collections import defaultdict

# 크롤 봇 UA 패턴 (색인 목적 요청)
AI_CRAWL_PATTERNS = [
    r'PerplexityBot',
    r'GPTBot',
    r'ChatGPT-User',   # 실시간 브라우징 (색인과 별도 집계)
    r'ClaudeBot',
    r'anthropic-ai',
]

# 인용 클릭 레퍼러 도메인
AI_REFERRER_DOMAINS = [
    'perplexity.ai',
    'chatgpt.com',
    'claude.ai',
    'gemini.google.com',
]

# Nginx combined 로그 포맷 파서
LOG_RE = re.compile(
    r'(?P\S+) \S+ \S+ \[.*?\] "\S+ (?P\S+) \S+" '
    r'(?P\d{3}) \d+ "(?P[^"]*)" "(?P[^"]*)"'
)

crawl_hits   = defaultdict(int)
referral_clicks = defaultdict(int)

with open('/var/log/nginx/access.log', encoding='utf-8', errors='replace') as f:
    for line in f:
        m = LOG_RE.match(line)
        if not m:
            continue
        ua  = m.group('ua')
        ref = m.group('referrer')

        for pat in AI_CRAWL_PATTERNS:
            if re.search(pat, ua, re.IGNORECASE):
                crawl_hits[pat] += 1
                break  # UA당 중복 계수 방지

        for domain in AI_REFERRER_DOMAINS:
            if domain in ref:
                referral_clicks[domain] += 1
                break

print("=== AI 크롤 요청 (색인 봇) ===")
for k, v in sorted(crawl_hits.items(), key=lambda x: -x[1]):
    print(f"  {k:25s}: {v:,}회")

print("\n=== AI 레퍼러 클릭 (인용 유입) ===")
for k, v in sorted(referral_clicks.items(), key=lambda x: -x[1]):
    print(f"  {k:25s}: {v:,}회")

흔한 오해: "GA4 채널 리포트에 없으면 AI 트래픽도 없다"

GA4의 기본 채널 그룹은 AI 검색 레퍼러를 위한 별도 분류를 제공하지 않는다. perplexity.aichatgpt.com 레퍼러는 Referral 채널에 묻히고, Google AI Overviews 클릭은 Organic Search에 합산된다. 결과적으로 Overview 대시보드만 보면 AI 트래픽은 사실상 보이지 않는다.

올바른 처리법: GA4 관리자 → 데이터 표시 → 채널 그룹 → 새 채널 그룹에서 소스 조건에 perplexity\.ai|chatgpt\.com|claude\.ai|gemini\.google\.com 정규식을 포함하는 "AI Search" 규칙을 추가한다. 이 채널 그룹은 설정 시점 이후 데이터부터만 적용되므로, 소급 계측이 필요하면 서버 로그 분석을 병행한다. 크롤 요청과 인용 클릭을 혼동하지 않기 위해 두 지표를 독립 열로 관리한다.

GPTBot과 ChatGPT-User는 어떻게 다르며, robots.txt 차단 범위는 각각 어떻게 되는가?

GPTBot은 OpenAI가 문서 색인(학습 데이터 수집)에 사용하는 UA로 주기적으로 전체 페이지를 요청한다. ChatGPT-User는 사용자가 ChatGPT 브라우징 기능을 활성화했을 때 특정 URL을 실시간으로 조회하는 UA다. robots.txt에서 GPTBot을 차단해도 ChatGPT-User는 별도 설정이 필요하다. 또한 GPTBot 차단이 ChatGPT Search 인용 여부에 직접 영향을 준다는 공식 확인은 없으므로, 차단 결정 전에 두 신호를 최소 2주 이상 독립 집계하여 실규모를 확인한 뒤 결정하는 것이 권장된다.

AI 검색 트래픽을 기존 SEO KPI와 통합해야 하는가, 별도 지표로 관리해야 하는가?

현재는 별도 지표로 운영하는 것이 권장된다. AI 검색 트래픽은 Search Console에 쿼리 키워드가 노출되지 않고, 인용 선택 메커니즘(RAG 재순위화)이 기존 랭킹 알고리즘과 다르다. KPI를 혼용하면 SEO 랭킹 개선 효과와 AI 인용 증가 효과를 분리 평가하기 어려워진다. AI 레퍼러 클릭 수, 크롤 요청 빈도, 수동 모니터링으로 확인한 인용 등장 횟수를 독립 지표로 운영하고, 기여도 분석 단계에서 기존 SEO 지표와 교차 분석하는 구조를 권장한다.

참고 자료

이 글의 권고는 아래 공식 문서·연구를 근거로 합니다.

박도현
박도현 · AEO 리서처

생성형 검색·LLM 인용에 관한 논문과 데이터를 읽고 실무 언어로 옮깁니다. 근거 없는 '카더라'를 싫어합니다.

내 사이트의 AI 검색 점수가 궁금하다면

30초 무료 진단으로 SEO·AEO·GEO 점수와 처방을 받아보세요.

무료 진단 시작
← 블로그 목록으로