SOYOYU
블로그로 돌아가기기술 SEO

Cafe24/Shopify 상품 스키마 마크업 구현 가이드

Google Product 구조화 데이터 요건부터 ProductGroup 변형 스키마, Shipping/Returns 마크업, Cafe24 스킨 편집 구현, Shopify 앱 비교까지. 한국 이커머스 상품 스키마의 모든 것.

소요유2026년 6월 18일10 min read
상품 스키마구조화 데이터Cafe24Shopify기술 SEO

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년 현재 상품 스키마가 중요한 이유는 세 가지입니다.

  1. Google 쇼핑 리치 결과 — 상품 스키마가 올바르게 구현된 페이지만 가격, 재고, 리뷰 별점이 표시되는 리치 결과에 노출됩니다
  2. AI 검색 인용 — ChatGPT, Perplexity, Google AI Overview 등 AI 검색 시스템은 구조화 데이터를 정보 추출의 핵심 수단으로 사용합니다
  3. 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"
      }
    }
  ]
}

출처: Google Search Central — Product Variants

주요 속성 설명

속성위치설명
variesByProductGroup변형을 구분하는 속성 (color, size 등)
hasVariantProductGroup하위 Product 변형 목록
isVariantOfProduct상위 ProductGroup 참조
productGroupIDProductGroup부모 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 SchemaJSON-LD 마크업 추가유/무료기존 테마 스키마와 중복 확인 필요
Webrex AI SEO OptimizerSEO 자동화 + 스키마플랜별기능 제한 있음
AnalyzifyMerchant Center 연동 최적화유료GA4 통합 포함

출처: Net Profit Marketing · Metricus App

앱 사용 시 반드시 확인할 것:

  • 기존 테마 스키마와 앱 스키마가 중복되지 않는지 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
EnergyConsumptionDetailsCertification 타입으로 교체

FAQ 스키마와 HowTo 스키마를 상품 페이지에 추가하는 것은 더 이상 리치 결과 효과가 없습니다. 이커머스 사이트에서는 Product, Merchant Listing, BreadcrumbList, ItemList에 집중하세요.

자주 발생하는 상품 스키마 오류

출처: Schema App

  1. 필수 속성 누락 — name, price, availability 중 하나라도 빠지면 리치 결과 자격 상실
  2. 보이지 않는 콘텐츠에 마크업 — 사용자에게 표시되지 않는 정보를 스키마에 포함하면 위반
  3. 카테고리 페이지에 단일 Product 스키마 — 카테고리 페이지에는 ItemList를 사용해야 함
  4. 데이터 타입 오류 — price에 "89,000원" 같은 텍스트 입력 (숫자만 허용)
  5. 가격/재고 미갱신 — 할인 종료 후 할인가가 그대로 마크업에 남아있는 경우
  6. 한 페이지에 중복 Product 마크업 — 여러 앱/스크립트가 동일 상품의 스키마를 중복 생성
  7. priceCurrency 누락 — price만 있고 통화 코드가 없는 경우
  8. 이미지 URL 깨짐 — 마크업의 이미지 URL이 실제로 접근 불가

검증 도구

구현 후 반드시 아래 도구로 검증하세요.


Google Merchant Center 연동 참고

출처: 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월부터 구글이 공식 지원하는 스키마이므로 변형 상품이 있는 사이트는 구현을 권장합니다.

출처: Google Search Central


상품 스키마 구현이 필요하시면 XEO 무료 진단을 신청하세요.

검색 최적화가 필요하신가요?

무료 상담을 통해 비즈니스에 맞는 최적화 전략을 확인하세요.