결론부터 말씀드리겠습니다. ChatGPT나 Perplexity가 “이 제품의 가격과 재고 상태, 사양은 어떻게 되나요?”라는 질문에 답할 때, 인용하는 정보는 대부분 제품 페이지를 직접 ‘읽어서’ 얻은 것이 아니라 Product schema에서 가져온 것입니다. 이 구조화 데이터가 없으면 AI는 페이지 곳곳에 흩어진 텍스트를 바탕으로 가격과 재고를 추정해야 합니다. 추정이 빗나가면 가격을 비교하며 도입을 검토하는 잠재 고객에게 3개월 전 가격이나, 이미 재입고됐는데도 여전히 “품절”로 표시된 상태를 사실처럼 전달할 수 있습니다.
이 문제는 B2B, 특히 SaaS에서 치명적입니다. 요금제와 가격은 계속 바뀌지만 웹페이지의 수치는 분기마다 한 번만 업데이트될 수도 있습니다. AI가 수집한 스냅샷에 가격 유효 기간이 명시돼 있지 않으면 해당 수치가 언제 만료되는지 판단할 수 없고, 이후에도 그대로 사용할 가능성이 큽니다. Product schema의 역할은 모델이 알아서 추론하게 두는 것이 아니라, “기계가 어떤 수치를 신뢰해야 하는가”를 모호하지 않은 필드에 기록하는 것입니다.
AI 엔진이 구조화 데이터를 선호하는 이유
AI 엔진은 사람과 다른 방식으로 웹페이지를 읽습니다. 사람은 타이포그래피와 시각적 위계를 통해 핵심을 파악하지만, 모델에는 ‘주체-속성-값’ 형태로 깔끔하게 추출할 수 있는 사실이 필요합니다. Product schema는 제품명, 브랜드, SKU, 가격, 통화, 재고 상태를 JSON-LD 키-값 쌍으로 표시합니다. 모델에 답을 직접 건네는 것과 같아 문단을 바탕으로 추측할 위험을 줄여 줍니다. 두 출처의 사양이 다를 경우에는 구조화 데이터가 있고 페이지 전반의 정보가 일관된 쪽이 대체로 우선됩니다. Microdata 대신 JSON-LD를 사용하는 이유도 분명합니다. 구조화 데이터를 하나의 script 블록에 모아 화면 표시용 HTML과 분리하므로 페이지를 개편할 때 손상될 가능성이 가장 낮습니다. Google과 Bing 역시 이를 우선 방식으로 안내합니다.
최소 구성으로 바로 쓰는 Product schema 템플릿
먼저 복사한 뒤 값만 바꾸면 공개할 수 있는 최소 템플릿부터 살펴보겠습니다. 아래 JSON을 type이 application/ld+json인 script 태그로 감싸 제품 페이지에 넣고 각 값을 교체하면 됩니다. AI가 가장 자주 참조하는 필드는 name, brand, price, currency, availability, priceValidUntil입니다. SaaS 구독 상품이라면 @type을 Product에서 SoftwareApplication으로 바꾸면 되며, offers 작성 방식은 동일합니다.
필드별 해설: AI가 실제로 읽는 항목은 무엇인가?
- name: 제품의 공식 명칭입니다. 페이지의 대표 제목과 일치해야 하며 마케팅 슬로건은 넣지 않습니다. AI가 인용할 때 이 값을 그대로 ‘제품명’으로 사용합니다.
- brand: @type에 Brand를 사용하는 브랜드 객체입니다. B2B 환경에서 AI가 “어느 기업의 제품인가?”를 판단하는 핵심 필드입니다.
- sku 및 gtin: 제품을 구분하는 고유 식별자입니다. SKU는 내부 식별에 사용합니다. GTIN이 있으면 AI가 여러 사이트의 정보를 비교해 동일한 제품인지 판단할 수 있습니다.
- price 및 priceCurrency: 가격과 통화를 서로 다른 두 필드에 입력합니다. price에는 숫자만 넣어야 합니다. 39000처럼 작성하고 NT$39,000이나 쉼표가 포함된 형식은 사용하지 않습니다. priceCurrency에는 ISO 4217 코드를 사용하며, 대만 달러는 TWD, 미국 달러는 USD입니다.
- availability: 재고 상태에는 https://schema.org/InStock, OutOfStock, PreOrder와 같은 schema.org 열거형 값을 사용해야 합니다. “재고 있음” 같은 문구를 직접 입력하면 안 됩니다.
- priceValidUntil: 해당 가격이 유효한 마지막 날짜입니다. 가장 자주 누락되지만 B2B에서는 반드시 입력해야 하는 필드입니다. 이 값이 없으면 AI는 견적 가격이 언제 만료되는지 알 수 없습니다.

AI가 가장 자주 잘못 전달하는 두 가지: 가격과 재고
가격 오류의 90%는 형식 문제입니다. price에는 숫자만 입력해야 합니다. 통화 기호나 천 단위 쉼표가 들어간 문자열로 작성하면 파싱에 실패하고, AI가 offers 전체를 건너뛸 수 있어 사실상 마크업을 하지 않은 것과 같아집니다. 재고 오류는 프런트엔드의 변경 사항이 스키마에 반영되지 않을 때 가장 자주 발생합니다. 백엔드에서 제품 판매를 중단해 페이지에는 품절로 표시되는데 구조화 데이터는 여전히 InStock인 경우입니다. 이런 불일치는 AI의 오답을 유발할 뿐 아니라 Google이 오해를 부르는 정보로 판단해 제품의 검색 노출을 낮추는 원인이 될 수도 있습니다. 실무적으로는 price, availability, priceValidUntil을 템플릿에 직접 입력하지 말고 제품 데이터베이스를 기준으로 동적 생성하는 것이 좋습니다. 가격이나 재고가 바뀌면 스키마도 자동으로 동기화되도록 구성해야 합니다.
평점과 리뷰도 추가해야 할까?
aggregateRating과 review는 인용 가능성을 높이고 AI 답변에 사회적 증거가 포함되도록 할 수 있지만, 반드시 지켜야 할 두 가지 기준이 있습니다. 첫째, 구조화 데이터의 평점은 사용자가 페이지에서 실제로 확인할 수 있는 리뷰와 일치해야 합니다. Google은 스키마에만 존재하고 페이지에서는 찾을 수 없는 평점을 명시적으로 금지합니다. 이를 위반하면 직접 조치 대상이 될 수 있습니다. 둘째, B2B SaaS는 공개 리뷰가 충분하지 않은 경우가 많습니다. 억지로 평점을 넣으면 이점보다 위험이 큽니다. 실제 리뷰가 없다면 추가하지 마세요. 사양, 가격, 재고라는 세 가지 핵심 정보를 명확하게 표시하는 데 집중하는 편이 인용 가능성을 높이는 데 더 효과적입니다.
AI가 제품 페이지를 인용하는 이유는 디자인이 더 아름다워서가 아닙니다. 틀릴 가능성이 가장 낮다고 판단한 수치 묶음을 인용합니다. Product schema의 역할은 그 수치가 바로 여러분의 데이터가 되게 만드는 것입니다.— Tenten GEO
공개 후 AI가 실제로 읽었는지 확인하는 방법
- Google의 Rich Results Test 또는 Schema Markup Validator에 URL을 붙여 넣습니다. Product와 Offer에 오류가 없는지, 필수 필드가 빠지지 않았는지 확인합니다.
- Search Console에서 제품 관련 보고서를 확인합니다. Google이 구조화 데이터를 정상적으로 파싱했는지, 경고는 없는지 점검합니다.
- AI에 직접 질문합니다. ChatGPT와 Perplexity에서 “제품 가격은 얼마인가요
- 가격이나 재고가 변경될 때마다 다시 테스트해 구조화 데이터와 실제 화면이 동시에 업데이트됐는지 확인합니다. 가장 흔하지만 쉽게 놓치는 허점입니다.
마크업 전체를 무효로 만드는 세 가지 오류
- 가격을 기호가 포함된 문자열로 작성하는 경우(예: NT$39,000): 즉시 파싱에 실패하며 AI가 offers 전체를 무시합니다.
- 스키마와 페이지 표시 내용이 다른 경우: 페이지에는 품절로 표시하면서 스키마에는 InStock으로 작성하면 오해를 부르는 정보로 판단될 수 있습니다.
- 한 페이지에 제품이 여러 개 있는데 하나만 마크업한 경우: 요금제 비교 페이지나 목록 페이지에서는 ItemList를 사용하거나 각 요금제를 개별 Product 묶음으로 표시합니다.
Product schema를 정확히 정비하는 작업은 GEO 기술 구현에서 투자 대비 효과가 가장 높은 단계입니다. 비용이 적게 들고, AI는 표시된 수치를 거의 즉시 활용할 수 있습니다. 어려운 점은 JSON 자체를 작성하는 것이 아니라 사이트의 모든 페이지에서 구조화 데이터가 빠짐없이 정확하게 작성되고, 실제 화면과 동기화되도록 유지하는 데 있습니다. 그래서 페이지별 점검은 GEO 감사의 핵심 항목 중 하나입니다. 제품 페이지에서 어떤 필드가 빠졌거나 잘못 표시됐는지 확신하기 어렵거나, AI가 현재 제품과 가격을 어떻게 설명하는지 확인하고 싶다면 30분 GEO 진단을 예약할 수 있습니다. 실제 제품을 바탕으로 AI에 질문해 정보 격차와 우선 보완 항목을 보여드립니다.



