Citeon
업종별 가이드

이커머스를 위한 AI 검색 최적화 전략

김태오
김태오 · 그로스·퍼포먼스 리드

Google AI Overviews·Perplexity·ChatGPT Browse는 "가성비 런닝화 추천", "방수 기능 있는 트레킹화 종류" 같은 상품 쿼리에서 직접 답변을 합성하며 특정 상품 페이지를 출처로 인용한다. 인용 후보 선정 기준은 기존 SEO의 PageRank 중심 모델과 다르다. 구조화 데이터의 파싱 가능성, 가격·재고 정보의 최신성, 리뷰 신호의 신뢰도가 핵심 변수다. 이커머스 사이트는 동시에 패싯 탐색이 만드는 URL 폭발로 크롤 예산이 핵심 상품 페이지에서 이탈하는 구조적 문제를 안고 있다. AI 인용 최적화는 이 두 문제를 동시에 해결하는 방향으로 설계해야 한다.

AI 검색이 이커머스 상품 페이지를 처리하는 구조

Googlebot·Perplexitybot·GPTBot이 상품 페이지를 크롤한 뒤, 각 플랫폼은 독립적인 색인·랭킹 파이프라인을 거쳐 AI 합성 단계에서 인용 후보를 선정한다. 세 가지 판단 기준이 공통으로 작동한다.

Product JSON-LD 구현: 최소 유효 구조

아래는 이커머스 상품 페이지의 실제 동작하는 최소 JSON-LD다. availabilitypriceValidUntil은 반드시 서버 사이드에서 동적으로 주입해야 한다. 정적 HTML에 하드코딩하면 재고 소진 후에도 "InStock"이 유지되어 정보 신뢰성 평가가 하락할 수 있다.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "워커 레더 첼시 부츠 블랙 260",
  "sku": "WB-2024-BK-260",
  "brand": { "@type": "Brand", "name": "BrandName" },
  "image": [
    "https://example.com/images/chelsea-boot-front.webp",
    "https://example.com/images/chelsea-boot-side.webp"
  ],
  "description": "풀그레인 소가죽 갑피, 굿이어 웰트 제법. 밑창 교체 가능, 발 너비 C 기준.",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "312",
    "bestRating": "5"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/products/chelsea-boot-bk-260",
    "priceCurrency": "KRW",
    "price": "189000",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "seller": { "@type": "Organization", "name": "Example Store" }
  }
}
</script>

패싯 탐색과 크롤 예산 통제

이커머스 AI 검색 최적화를 저해하는 가장 큰 구조적 문제는 패싯 탐색이 생성하는 URL 폭발이다. /products?color=black&size=260&sort=price_asc 같은 조합이 수십만 URL을 만들어 핵심 상품 페이지의 크롤 예산을 잠식한다.

대화형 쿼리 최적화와 GEO 신호 설계

AI 검색은 "방수 되는 트레킹화 알려줘" 같은 대화형 쿼리를 처리한다. 이런 쿼리에서 인용되려면 상품 페이지가 단순 스펙 나열을 넘어 구매 결정 맥락을 직접 텍스트로 포함해야 한다.

흔한 오해: "상품 페이지 URL을 최대한 많이 색인하면 AI 인용 기회가 늘어난다"

패싯 URL까지 전부 색인에 포함시키면 크롤 예산이 분산되고 중복 콘텐츠 신호로 인해 핵심 상품 페이지의 신뢰도가 오히려 낮아진다. 올바른 처리는 색인 대상을 상품 상세 페이지와 의미 있는 카테고리 페이지로 제한하고, 패싯 변형 URL은 canonical + robots.txt Disallow로 처리하는 것이다. URL 수를 줄이는 대신 각 핵심 페이지의 구조화 데이터 품질과 freshness를 높이는 방향이 AI 인용 확률에 유리하다.

측정 방법과 신호 비교

구분 핵심 신호 이커머스 구현 포인트 측정 방법
SEO 백링크, Core Web Vitals, E-E-A-T LCP < 2.5s, 내부 링크 구조, Product 스키마 Google Search Console 유기 클릭·노출
AEO FAQPage, HowTo, 구조화 데이터 완성도 FAQPage + Product JSON-LD 병행 마크업 Rich Results Test 파싱 성공, Featured Snippet 점유율
GEO 인용 가능성, freshness, 신뢰도 priceValidUntil 실시간 갱신, llms.txt, Last-Modified 헤더 GSC "AI Overviews 있음" 필터 CTR 변화, Perplexity 수동 샘플링

AI Overviews 인용 횟수는 현재 공식 API로 직접 측정이 불가능하다. 실무에서는 Google Search Console에서 AI Overviews 필터를 적용한 뒤 쿼리별 CTR 변화를 추적하거나, 주요 상품 카테고리 쿼리를 Perplexity·ChatGPT에 직접 입력해 인용 빈도를 수동 샘플링하는 방법을 병행한다.

FAQ 1: Product JSON-LD를 삽입했는데 Google Rich Results Test에서 파싱 오류가 발생한다. 원인은?

가장 흔한 원인 세 가지는 다음과 같다. 첫째, JavaScript 렌더링 이후에 JSON-LD가 DOM에 삽입되는 경우다. Googlebot은 JavaScript를 실행하지만 렌더링 대기 시간이 있어 파싱이 누락될 수 있다. 서버 사이드 렌더링(SSR) 또는 정적 생성(SSG) 단계에서 JSON-LD를 HTML에 직접 포함시켜야 한다. 둘째, availability 값을 "InStock" 문자열로만 입력한 경우다. Schema.org 명세는 "https://schema.org/InStock"처럼 완전한 URL을 요구한다. 셋째, price 필드에 "189,000원"처럼 통화 기호와 쉼표가 포함된 경우다. priceCurrency는 ISO 4217 코드("KRW"), price는 숫자 문자열("189000")로 분리해야 한다.

FAQ 2: Perplexitybot이 robots.txt의 Disallow 설정을 무시하는 것 같다. 어떻게 대응하나?

Perplexitybot은 공식적으로 robots.txt를 준수한다고 명시하고 있으나, 실제 크롤 동작에서 일시적으로 규칙을 무시하는 사례가 보고된 바 있다. 단기 대응으로는 HTTP 응답 헤더에 X-Robots-Tag: noindex, nofollow를 추가하는 방법이 있다. HTTP 헤더 수준 지시는 robots.txt보다 더 직접적으로 크롤러에 전달된다. 장기적으로는 Cloudflare WAF 또는 Nginx에서 User-Agent 문자열로 접근 자체를 제한하거나, /llms.txt에 인용 허용 범위를 명확히 명시해 의도하지 않은 크롤을 줄이는 방법을 병행한다. robots.txt 단독 차단만으로 완전한 통제는 보장되지 않는다.

참고 자료

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

김태오
김태오 · 그로스·퍼포먼스 리드

AI 검색 유입을 전환·매출로 잇는 광고·어트리뷰션을 다룹니다. 숫자로 말하는 걸 좋아합니다.

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

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

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