TL;DR: 상품 스키마 마크업 핵심 요약
- Merchant Listing 필수 속성 — name, image, offers(price, priceCurrency, availability), shipping, returns. 이 중 하나라도 빠지면 Google 쇼핑 리치 결과에서 제외
- ProductGroup — 2024년 2월부터 구글이 공식 지원하는 변형(variant) 스키마. 색상/사이즈별 상품을 하나의 그룹으로 묶어 표현
- Cafe24 — 스킨 편집에서 JSON-LD 직접 삽입. 카페24 변수(
$product_name,$product_price)로 동적 매핑 - Shopify — 기본 테마 스키마에 shipping/returns 누락. Liquid 템플릿 수동 구현이 가장 확실
- 네이버 EP와 병행 — 스키마 마크업은 구글/AI 검색용, EP 피드는 네이버 쇼핑용. 한국 이커머스는 둘 다 필요
상품 스키마 마크업이 필요한 이유
상품 스키마 마크업은 검색엔진에게 "이 페이지는 상품 페이지이고, 가격은 얼마이며, 재고가 있고, 배송 조건은 이렇습니다"라는 정보를 기계가 읽을 수 있는 형태로 전달합니다.
2026년 현재 상품 스키마가 중요한 이유는 세 가지입니다.
- Google 쇼핑 리치 결과 — 상품 스키마가 올바르게 구현된 페이지만 가격, 재고, 리뷰 별점이 표시되는 리치 결과에 노출됩니다
- AI 검색 인용 — ChatGPT, Perplexity, Google AI Overview 등 AI 검색 시스템은 구조화 데이터를 정보 추출의 핵심 수단으로 사용합니다
- Google Merchant Center 연동 — 웹사이트 마크업과 피드 데이터의 일치가 필수입니다
Google Product 구조화 데이터 요건
두 가지 마크업 유형
구글은 상품 구조화 데이터를 두 가지 유형으로 구분합니다.
| 유형 | 용도 | 핵심 속성 |
|---|---|---|
| Product Snippet | 비구매 페이지 (리뷰 중심) | name, review, aggregateRating |
| Merchant Listing | 구매 페이지 (상품 정보 중심) | name, image, offers, price, availability, shipping, returns |
출처: Google Search Central — Merchant Listing
Merchant listing 마크업은 상품을 판매하는 페이지에 사용하며, 가격, 재고 상태, 배송 정보, 반품 정책을 포함해야 합니다.
대부분의 이커머스 상품 페이지는 Merchant Listing 유형을 사용해야 합니다.
필수 속성 목록
{
"@context": "https://schema.org",
"@type": "Product",
"name": "상품명 (필수)",
"image": "https://example.com/product.webp (필수)",
"description": "상품 설명 (권장)",
"sku": "SKU-12345 (권장)",
"brand": {
"@type": "Brand",
"name": "브랜드명 (권장)"
},
"offers": {
"@type": "Offer",
"price": "89000 (필수)",
"priceCurrency": "KRW (필수)",
"availability": "https://schema.org/InStock (필수)",
"url": "https://example.com/product/12345 (권장)",
"priceValidUntil": "2027-12-31 (권장)",
"itemCondition": "https://schema.org/NewCondition (Merchant Listing 필수)",
"shippingDetails": { },
"hasMerchantReturnPolicy": { }
}
}
핵심 기술 제약
출처: Google Search Central — Product
Google은 렌더링된 DOM의 JS 생성 구조화 데이터도 처리할 수 있습니다. 다만 초기 HTML에 포함하는 것이 가장 안정적이며, 렌더링 지연이나 실패 시 누락될 가능성이 있으므로 서버 사이드 렌더링을 권장합니다.
구글은 JSON-LD 포맷을 권장하며, 마크업 데이터가 사용자에게 표시되는 실제 값과 일치해야 합니다. 예를 들어 마크업에 89,000원으로 표시했는데 실제 페이지에서 99,000원을 보여주면 구조화 데이터 위반입니다.
ProductGroup: 변형 상품 스키마
구글의 공식 지원 (2024년 2월~)
출처: Google Search Blog — Product Variants
구글이 2024년 2월부터 ProductGroup 타입을 공식 지원합니다. 색상, 사이즈 등 변형이 있는 상품을 하나의 그룹으로 묶어 표현할 수 있습니다.
한국 이커머스에서 대부분의 상품은 색상, 사이즈 변형을 가지고 있습니다. 예를 들어 "나이키 에어맥스 90"이라는 상품이 블랙/화이트/그레이 색상과 250/260/270/280mm 사이즈로 판매된다면, 이를 ProductGroup으로 묶을 수 있습니다.
핵심 스키마 구조
- ProductGroup — 부모 상품 (예: "나이키 에어맥스 90")
- Product — 개별 변형 (예: "나이키 에어맥스 90 블랙 270mm")
JSON-LD 구현 예시
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"@id": "#product-group",
"name": "나이키 에어맥스 90",
"description": "나이키 에어맥스 90 러닝화",
"productGroupID": "NIKE-AM90",
"brand": {
"@type": "Brand",
"name": "Nike"
},
"variesBy": [
"https://schema.org/color",
"https://schema.org/size"
],
"hasVariant": [
{
"@type": "Product",
"name": "나이키 에어맥스 90 블랙 270",
"color": "블랙",
"size": "270",
"sku": "AM90-BLK-270",
"image": "https://example.com/am90-black.webp",
"isVariantOf": { "@id": "#product-group" },
"offers": {
"@type": "Offer",
"price": "179000",
"priceCurrency": "KRW",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
},
{
"@type": "Product",
"name": "나이키 에어맥스 90 화이트 260",
"color": "화이트",
"size": "260",
"sku": "AM90-WHT-260",
"image": "https://example.com/am90-white.webp",
"isVariantOf": { "@id": "#product-group" },
"offers": {
"@type": "Offer",
"price": "179000",
"priceCurrency": "KRW",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
}
]
}
주요 속성 설명
| 속성 | 위치 | 설명 |
|---|---|---|
variesBy | ProductGroup | 변형을 구분하는 속성 (color, size 등) |
hasVariant | ProductGroup | 하위 Product 변형 목록 |
isVariantOf | Product | 상위 ProductGroup 참조 |
productGroupID | ProductGroup | 부모 SKU (그룹 식별자) |
Shipping & Returns 스키마
배송 정보 (OfferShippingDetails)
Google Merchant Listing에서 배송 정보는 필수에 가까운 권장 속성입니다.
{
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "3000",
"currency": "KRW"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 1,
"unitCode": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 1,
"maxValue": 3,
"unitCode": "DAY"
}
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "KR"
}
}
}
반품 정보 (MerchantReturnPolicy)
{
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "KR",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 14,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
}
}
2025년 11월 업데이트: 사이트 전체 정책 지원
출처: PEMAVOR
2025년 11월부터 구글이 Organization 스키마를 통한 사이트 전체 배송/반품 정책 지원을 추가했습니다.
모든 상품에 동일한 배송/반품 정책을 적용한다면, 개별 상품 페이지가 아닌 Organization 스키마에서 한 번만 정의할 수 있습니다. 이는 대규모 이커머스 사이트의 구현 부담을 크게 줄여줍니다.
Cafe24 상품 스키마 구현
현재 한계
출처: Cafe24 고객센터 · Cafe24 Developers
Cafe24는 관리자에서 기본 SEO 설정(사이트맵, alt, OG)을 제공하지만 Product 스키마 자동 생성 기능은 없습니다.
| 한계 | 상세 |
|---|---|
| Product 스키마 자동 생성 없음 | 기본 SEO 기능에 미포함 |
| HTML 직접 편집 제한 | 스킨 편집을 통한 우회 필요 |
| 대분류까지만 경로 설정 | BreadcrumbList 스키마의 depth 제한 |
| API와 프론트 분리 | developer.cafe24.com API가 프론트엔드 스키마와 직접 연결되지 않음 |
구현 방법: 스킨 편집 JSON-LD 삽입
Cafe24 스킨 편집(스마트디자인)에서 상품상세 페이지 HTML의 </head> 앞에 아래 JSON-LD를 삽입합니다. Cafe24 변수 시스템을 활용하여 동적 데이터를 매핑합니다.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "{$product_name}",
"image": "{$product_image_big}",
"description": "{$product_summary}",
"sku": "{$product_code}",
"brand": {
"@type": "Brand",
"name": "{$manufacturer_name}"
},
"offers": {
"@type": "Offer",
"price": "{$product_price}",
"priceCurrency": "KRW",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"url": "{$shop_url}/product/detail.html?product_no={$product_no}",
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "3000",
"currency": "KRW"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "KR"
}
},
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "KR",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 14,
"returnMethod": "https://schema.org/ReturnByMail"
}
}
}
</script>
Cafe24 변수 매핑:
| 스키마 속성 | Cafe24 변수 | 설명 |
|---|---|---|
| name | {$product_name} | 상품명 |
| image | {$product_image_big} | 대표 이미지 URL |
| description | {$product_summary} | 상품 요약 |
| sku | {$product_code} | 상품 코드 |
| price | {$product_price} | 판매가 |
| brand | {$manufacturer_name} | 제조사/브랜드 |
주의사항:
{$product_price}변수가 숫자만 반환하는지 확인 (콤마, 원 기호 포함 시 구조화 데이터 오류)- 품절 상품의 availability를
OutOfStock으로 동적 변경하는 조건 분기 필요 - 스킨 업데이트 시 삽입한 코드가 유실될 수 있으므로 백업 필수
Shopify 상품 스키마 구현
기본 제공 스키마의 한계
출처: GoFish Digital
Shopify 테마에 기본 Product 스키마가 포함되어 있으나 shipping/returns 정보가 누락되어 Google merchant listing 요건을 충족하지 못합니다.
스키마 앱 비교
| 앱 | 기능 | 가격 | 주의사항 |
|---|---|---|---|
| Schema App Total Schema Markup | 자동 Product 스키마 생성 | 유료 월정액 | 가장 포괄적 |
| SA SEO JSON-LD Schema | JSON-LD 마크업 추가 | 유/무료 | 기존 테마 스키마와 중복 확인 필요 |
| Webrex AI SEO Optimizer | SEO 자동화 + 스키마 | 플랜별 | 기능 제한 있음 |
| Analyzify | Merchant Center 연동 최적화 | 유료 | GA4 통합 포함 |
앱 사용 시 반드시 확인할 것:
- 기존 테마 스키마와 앱 스키마가 중복되지 않는지 Rich Results Test로 검증
- 여러 앱이 동일 페이지에 스키마를 추가하면 중복 마크업 발생 가능
- 중복 스키마는 구글 페널티 요인
수동 구현: Liquid 템플릿
기술적 제어가 필요하다면 product.liquid 또는 main-product.liquid에 JSON-LD를 직접 작성합니다.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": {{ product.title | json }},
"image": {{ product.featured_image | image_url: width: 1024 | json }},
"description": {{ product.description | strip_html | truncate: 500 | json }},
"sku": {{ product.selected_or_first_available_variant.sku | json }},
"brand": {
"@type": "Brand",
"name": {{ product.vendor | json }}
},
"offers": {
"@type": "Offer",
"price": {{ product.price | money_without_currency | json }},
"priceCurrency": {{ shop.currency | json }},
"availability": {% if product.available %}"https://schema.org/InStock"{% else %}"https://schema.org/OutOfStock"{% endif %},
"itemCondition": "https://schema.org/NewCondition",
"url": "{{ shop.url }}{{ product.url }}",
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "3000",
"currency": "KRW"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "KR"
}
},
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "KR",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 14,
"returnMethod": "https://schema.org/ReturnByMail"
}
}
}
</script>
주의사항:
- Liquid 필터
money_without_currency가 소수점 형식을 반환하는지 확인 (KRW는 소수점 불필요) - 테마 업데이트 시 수동 코드가 유실될 수 있으므로 theme snippet으로 분리 관리 권장
- 기존 테마의 Product 스키마를 제거하거나, 수동 스키마와 중복되지 않도록 조정
네이버 EP 피드 vs 스키마 마크업
한국 이커머스는 네이버 쇼핑과 구글 양쪽을 대응해야 하므로, EP 피드와 스키마 마크업을 모두 구현해야 합니다.
| 항목 | EP 피드 | 스키마 마크업 |
|---|---|---|
| 대상 | 네이버 쇼핑 전용 | 구글, 네이버, 빙 등 범용 |
| 형식 | TXT 데이터 파일 (정기 업로드) | HTML 내 JSON-LD |
| 업데이트 | 주기적 파일 갱신 | 페이지 로드 시 실시간 |
| 구현 | EP txt 생성 후 URL에 저장, 네이버 수신 | HTML <script> 태그 삽입 |
| 필요성 | 네이버 쇼핑 노출 필수 | 구글 리치 결과 + AI 검색 노출 |
출처: 네이버 쇼핑 EP 가이드
EP(Engine Page) 피드는 네이버 쇼핑에 상품 정보를 전달하는 전용 데이터 파일입니다.
EP 피드는 네이버 쇼핑 연동에 필수이고, 스키마 마크업은 구글 리치 결과와 AI 검색 최적화에 필수입니다. 두 시스템의 상품 정보(가격, 재고, 카테고리)가 일치하도록 관리하는 것이 중요합니다.
폐기된 스키마와 흔한 오류
2025년 구글 구조화 데이터 변경사항
출처: Engage Coders · ViserX
구글이 2025년에 폐기하거나 제한한 스키마 유형을 정리합니다. 이미 구현된 사이트는 수정이 필요합니다.
| 변경 사항 | 상세 |
|---|---|
| FAQ 리치 결과 제한 | 정부/의료 사이트만 지원. 일반 이커머스 사이트는 FAQ 리치 결과 표시 불가 |
| HowTo 리치 결과 폐기 | 완전 폐기. 구현해도 리치 결과에 표시되지 않음 |
| 7가지 스키마 타입 폐기 | Book Actions, Course Info, Claim Review, Estimated Salary, Learning Video, Special Announcement, Vehicle Listing |
| EnergyConsumptionDetails | Certification 타입으로 교체 |
FAQ 스키마와 HowTo 스키마를 상품 페이지에 추가하는 것은 더 이상 리치 결과 효과가 없습니다. 이커머스 사이트에서는 Product, Merchant Listing, BreadcrumbList, ItemList에 집중하세요.
자주 발생하는 상품 스키마 오류
출처: Schema App
- 필수 속성 누락 — name, price, availability 중 하나라도 빠지면 리치 결과 자격 상실
- 보이지 않는 콘텐츠에 마크업 — 사용자에게 표시되지 않는 정보를 스키마에 포함하면 위반
- 카테고리 페이지에 단일 Product 스키마 — 카테고리 페이지에는
ItemList를 사용해야 함 - 데이터 타입 오류 — price에 "89,000원" 같은 텍스트 입력 (숫자만 허용)
- 가격/재고 미갱신 — 할인 종료 후 할인가가 그대로 마크업에 남아있는 경우
- 한 페이지에 중복 Product 마크업 — 여러 앱/스크립트가 동일 상품의 스키마를 중복 생성
- priceCurrency 누락 — price만 있고 통화 코드가 없는 경우
- 이미지 URL 깨짐 — 마크업의 이미지 URL이 실제로 접근 불가
검증 도구
구현 후 반드시 아래 도구로 검증하세요.
- Google Rich Results Test: https://search.google.com/test/rich-results — 리치 결과 자격 확인
- Schema Markup Validator: https://validator.schema.org/ — 문법 검증
- Google Search Console: Rich Results 리포트에서 운영 중 오류 모니터링
Google Merchant Center 연동 참고
2025년부터 AI 생성 콘텐츠는 공개 의무화되었습니다.
structured_title,structured_description속성으로 AI 생성 여부를 표시해야 합니다.
Merchant Center는 웹사이트의 구조화 데이터를 자동으로 수집합니다. 웹사이트 마크업과 Merchant Center 피드 데이터가 불일치하면 피드 오류가 발생하므로, 양쪽 데이터를 동기화하는 프로세스가 필요합니다.
구현 우선순위 정리
단계별로 구현할 때 아래 순서를 권장합니다.
1단계 — 필수: 개별 상품 페이지에 Product + Offer 스키마 (name, image, price, priceCurrency, availability)
2단계 — Merchant Listing: shipping, returns 정보 추가. Organization 스키마로 사이트 전체 정책 정의 검토
3단계 — 변형: ProductGroup + hasVariant로 색상/사이즈 변형 구조화
4단계 — 카테고리: 카테고리 페이지에 ItemList + BreadcrumbList 스키마
5단계 — 검증/유지보수: Rich Results Test 정기 검증, Search Console 오류 모니터링, 가격/재고 동기화 프로세스
자주 묻는 질문
Q1. Cafe24에서 상품 스키마를 자동으로 생성할 수 없나요?
Cafe24는 현재 Product 스키마 자동 생성 기능을 제공하지 않습니다. 스킨 편집(스마트디자인)에서 JSON-LD를 직접 삽입하는 방법이 가장 확실합니다. Cafe24 변수 시스템($product_name, $product_price 등)을 활용하면 동적 데이터 매핑이 가능합니다.
출처: Cafe24 고객센터
Q2. Shopify 앱과 수동 Liquid 구현 중 어떤 것이 좋은가요?
기술 역량이 있다면 Liquid 수동 구현이 더 정확하고 유연합니다. 앱은 편리하지만 기존 테마 스키마와 중복될 위험이 있고, 앱 간 충돌 가능성도 있습니다. 어떤 방법이든 Rich Results Test로 반드시 검증해야 합니다.
출처: GoFish Digital
Q3. 네이버 EP 피드를 사용하면 스키마 마크업은 필요 없나요?
EP 피드와 스키마 마크업은 완전히 다른 용도입니다. EP 피드는 네이버 쇼핑 전용이고, 스키마 마크업은 구글 리치 결과와 AI 검색 최적화에 사용됩니다. 한국 이커머스는 둘 다 구현해야 합니다.
출처: 네이버 쇼핑 EP 가이드
Q4. FAQ 스키마를 상품 페이지에 추가하면 효과가 있나요?
2025년부터 구글은 FAQ 리치 결과를 정부/의료 사이트로 제한했습니다. 일반 이커머스 사이트에서 FAQ 스키마를 구현해도 리치 결과에 표시되지 않습니다. 상품 페이지에서는 Product, Merchant Listing 스키마에 집중하세요.
출처: Engage Coders
Q5. ProductGroup 스키마를 구현하면 어떤 효과가 있나요?
ProductGroup으로 변형 상품을 묶으면 구글이 색상/사이즈 변형을 하나의 상품 그룹으로 인식합니다. 검색 결과에서 변형 옵션이 표시될 수 있으며, Merchant Center 데이터 품질이 향상됩니다. 2024년 2월부터 구글이 공식 지원하는 스키마이므로 변형 상품이 있는 사이트는 구현을 권장합니다.
상품 스키마 구현이 필요하시면 XEO 무료 진단을 신청하세요.