---
description: "구조화 데이터(JSON-LD) 스키마 마크업 생성 및 최적화. Use when: 스키마 마크업, schema markup, 구조화 데이터, JSON-LD, 리치 스니펫, rich snippets, FAQ 스키마, 상품 스키마, 리뷰 스키마, 별점 표시, 구글 리치 결과, 보험 FAQ 스키마, HowTo 스키마."
---

# 스키마 마크업 (Schema Markup)

당신은 구조화 데이터 및 스키마 마크업 전문가입니다. 검색엔진이 콘텐츠를 이해하고 리치 스니펫(Rich Snippets)을 표시하도록 schema.org 마크업을 구현합니다.

## Before Starting

`.agents/product-marketing-context.md` 또는 `.claude/product-marketing-context.md`가 있으면 먼저 읽으세요.

**파악해야 할 정보:**
1. **페이지 유형** — 어떤 종류의 페이지인가? 어떤 리치 결과가 가능한가?
2. **현재 상태** — 기존 스키마가 있는가? 오류가 있는가?
3. **목표** — 어떤 리치 결과를 원하는가?

---

## 핵심 원칙

1. **정확성 우선** — 페이지 콘텐츠를 정확히 반영, 없는 내용 마크업 금지
2. **JSON-LD 사용** — Google 권장 형식, `<head>` 또는 `<body>` 끝에 배치
3. **Google 가이드라인 준수** — Google이 지원하는 마크업만 사용
4. **모든 것을 검증** — 배포 전 테스트, Search Console 모니터링

---

## 주요 스키마 유형

| 유형 | 사용처 | 필수 속성 |
|------|--------|----------|
| Organization | 회사 홈페이지 | name, url |
| Article | 블로그, 가이드 | headline, image, datePublished, author |
| FAQPage | FAQ 콘텐츠 | mainEntity (Q&A 배열) |
| HowTo | 단계별 가이드 | name, step |
| Product | 상품/서비스 | name, image, offers |
| Review | 리뷰/후기 | reviewRating, author |
| BreadcrumbList | 모든 내부 페이지 | itemListElement |

---

## 보험/금융 JSON-LD 예시

### InsuWiki FAQ 스키마

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "실손보험이란 무엇인가요?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "실손보험은 실제 병원에서 발생한 의료비 중 본인 부담금의 80~90%를 보험금으로 지급하는 상품입니다. 2009년 표준화 이후 가입한 경우 자기부담금 10~20%를 제외하고 지급됩니다."
      }
    },
    {
      "@type": "Question",
      "name": "종신보험과 정기보험의 차이는?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "종신보험은 사망 시 언제든 보험금을 지급하며 보험료가 높습니다. 정기보험은 계약 기간 내 사망 시에만 지급하며 동일 보험금 기준으로 3~5배 저렴합니다."
      }
    }
  ]
}
```

### 보험 가입 HowTo 스키마

```json
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "실손보험 가입 방법",
  "description": "실손보험을 처음 가입하는 단계별 안내",
  "totalTime": "PT30M",
  "step": [
    {
      "@type": "HowToStep",
      "position": 1,
      "name": "현재 가입 현황 파악",
      "text": "보험다모아 또는 국민건강보험공단에서 현재 실손보험 가입 여부 확인. 중복 가입은 보험료 낭비."
    },
    {
      "@type": "HowToStep",
      "position": 2,
      "name": "보험사별 보험료 비교",
      "text": "InsuWiki 비교 도구에서 동일 조건으로 비교. 같은 보장 조건도 보험사마다 최대 30% 차이."
    },
    {
      "@type": "HowToStep",
      "position": 3,
      "name": "청약 및 고지 의무 이행",
      "text": "건강 고지 의무를 정확히 이행. 고지 의무 위반 시 보험금 지급 거절 가능."
    }
  ]
}
```

### 보험 상품 리뷰 스키마

```json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "삼성생명 실손의료보험 4세대",
  "brand": { "@type": "Brand", "name": "삼성생명" },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.2",
    "reviewCount": "1847",
    "bestRating": "5"
  },
  "review": [{
    "@type": "Review",
    "author": { "@type": "Person", "name": "김○○" },
    "datePublished": "2025-11-15",
    "reviewRating": { "@type": "Rating", "ratingValue": "4" },
    "reviewBody": "도수치료 비급여 특약 가입 후 청구 처리가 빠르고 거절 없이 지급됐습니다."
  }]
}
```

### BreadcrumbList + Organization 결합 (@graph)

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "name": "InsuWiki",
      "url": "https://www.insuwiki.com",
      "description": "보험 지식 백과사전"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "홈", "item": "https://www.insuwiki.com" },
        { "@type": "ListItem", "position": 2, "name": "건강보험", "item": "https://www.insuwiki.com/insurance/health" },
        { "@type": "ListItem", "position": 3, "name": "실손보험", "item": "https://www.insuwiki.com/insurance/health/silson" }
      ]
    }
  ]
}
```

---

## 유효성 검사

**도구:**
- Google 리치 결과 테스트: https://search.google.com/test/rich-results
- Schema.org 검증기: https://validator.schema.org/
- Search Console 향상 보고서

**일반적인 오류:**

| 오류 | 해결책 |
|------|--------|
| 필수 속성 누락 | Google 문서에서 필수 필드 확인 |
| 잘못된 날짜 형식 | ISO 8601 형식 사용 (2025-01-15) |
| 페이지 내용과 불일치 | 페이지에 표시된 내용만 마크업 |

---

## 구현 방법

- **정적 사이트:** HTML 템플릿에 JSON-LD 직접 추가
- **Next.js/React:** 서버사이드 렌더링으로 스키마 컴포넌트 구현
- **WordPress:** Yoast SEO, Rank Math, Schema Pro 플러그인 활용

---

## 확인 질문

1. 어떤 유형의 페이지인가?
2. 어떤 리치 결과를 원하는가?
3. 기존 스키마가 있는가?
4. 기술 스택은?

---

## GEO 최적화를 위한 Schema 선택 의사결정 트리

AI 플랫폼별로 Schema 마크업의 인식 방식이 다릅니다. GEO(생성형 AI 검색) 관점에서 어떤 Schema를 적용해야 AI 인용 가능성이 높아지는지 안내하는 의사결정 트리입니다.

### 왜 GEO 관점에서 Schema가 중요한가

- **AI 검색엔진의 구조화 데이터 활용**: ChatGPT, Perplexity, Google AI Overviews, Gemini 등 생성형 AI 검색엔진은 구조화 데이터를 콘텐츠 이해에 적극 활용합니다.
- **의미 파악 향상**: Schema 마크업이 있으면 AI가 콘텐츠의 의미, 유형, 신뢰도를 더 정확히 파악합니다.
- **FAQPage의 우선순위**: 특히 FAQPage Schema는 AI가 질문에 직접 답변할 때 가장 많이 참조하는 구조화 데이터입니다.
- **Google AI Overviews에서의 인용율**: Schema 적용 페이지의 인용 가능성이 Schema 미적용 페이지보다 높습니다.

### AI 플랫폼별 Schema 인식 차이

| 플랫폼 | FAQPage | HowTo | Article | Organization | Review | 특징 |
|--------|---------|-------|---------|--------------|--------|------|
| **Google AI Overviews** | ★★★ | ★★★ | ★★ | ★★ | ★ | Schema를 가장 적극적으로 활용하는 플랫폼 |
| **ChatGPT (검색 포함)** | ★★ | ★ | ★★ | ★ | — | 콘텐츠 본문 구조를 더 중시, Schema는 보조 신호 |
| **Perplexity** | ★★ | ★ | ★★ | ★ | ★★ | 다중 소스 인용 중심, Schema는 신뢰도 보조 신호 |
| **Gemini** | ★★★ | ★★★ | ★★ | ★★ | ★ | Google 생태계 통합, Schema 활용도 높음 |
| **네이버 AIO** | ★★ | ★ | ★ | ★ | — | 네이버 자체 플랫폼 신호 우선, Schema는 보조적 |

*(★★★ = 높은 영향, ★★ = 중간 영향, ★ = 낮은 영향)*

### Schema 선택 의사결정 트리

**Q1: 콘텐츠에 FAQ(질문-답변) 섹션이 있는가?**
- **예** → FAQPage Schema 필수 적용 (GEO 최우선)
- **아니오** → Q2로

**Q2: 콘텐츠가 단계별 절차를 설명하는가?**
- **예** → HowTo Schema 적용
- **아니오** → Q3으로

**Q3: 콘텐츠가 블로그 포스트/아티클인가?**
- **예** → BlogPosting 또는 Article Schema 적용 (dateModified 필수 포함)
- **아니오** → Q4로

**Q4: 콘텐츠가 상품/서비스 리뷰를 포함하는가?**
- **예** → Review Schema 적용 (실제 리뷰 데이터만)
- **아니오** → Organization 또는 WebPage Schema 기본 적용

**공통 적용 원칙**:
- Organization + Person Schema는 사이트 전역 적용 (EEAT 권위성 신호)
- @graph를 사용하여 복수 Schema 결합 (중복 마크업 방지)

**복합 적용 가이드**:
- **FAQ가 있는 블로그** → BlogPosting + FAQPage (가장 흔한 조합)
- **단계별 가이드 블로그** → BlogPosting + HowTo
- **리뷰 + FAQ** → Review + FAQPage
- **모든 내부 페이지** → BreadcrumbList 추가 (네비게이션 신호)

### GEO 전용 Schema 체크리스트

- [ ] 콘텐츠 유형에 맞는 Schema 선택 (의사결정 트리 기반)
- [ ] FAQPage Schema: FAQ 섹션의 모든 Q&A를 포함했는가?
- [ ] dateModified: 콘텐츠 업데이트 시마다 갱신하는가? (AI는 최신 콘텐츠 우선 인용)
- [ ] Organization Schema: 사이트 전역에 브랜드 정보 포함했는가?
- [ ] Person Schema: 저자의 전문성(jobTitle, knowsAbout) 명시했는가?
- [ ] @graph 사용: 복수 Schema를 하나의 JSON-LD 블록에 결합했는가?
- [ ] Google 리치 결과 테스트(search.google.com/test/rich-results)로 검증했는가?
- [ ] Schema 내용이 페이지 실제 콘텐츠와 정확히 일치하는가?

### InsuWiki/InsuRo 보험 서비스 적용 예시

**InsuWiki 보험 용어 가이드 페이지**
- 적용 Schema: FAQPage + Article + Organization + BreadcrumbList
- **FAQPage**: "실손보험이란?", "종신보험 vs 정기보험 차이" 등 핵심 Q&A
- **Article**: headline, datePublished, dateModified, author(서울대보험쌤)
- **Organization**: InsuWiki 브랜드 정보
- **BreadcrumbList**: 홈 → 건강보험 → 실손보험

**InsuRo 보험료 비교 페이지**
- 적용 Schema: WebApplication + FAQPage + Organization
- **WebApplication**: 비교 도구 기능 설명
- **FAQPage**: "보험료 비교는 어떻게 하나요?" 등 도구 사용 관련 Q&A
- **Organization**: InsuRo 서비스 정보

**서울대보험쌤 블로그 포스트**
- 적용 Schema: BlogPosting + FAQPage + Person
- **BlogPosting**: headline, dateModified(분기 갱신), author
- **FAQPage**: 포스트 내 FAQ 섹션 마크업
- **Person**: 서울대보험쌤 전문가 프로필 (jobTitle, knowsAbout: ["보험", "연금", "재무설계"])

---

## 관련 스킬

- **seo-audit**: 스키마 포함 전체 SEO 감사
- **ai-seo**: AI 검색에서 스키마가 콘텐츠 이해에 미치는 영향
- **site-architecture**: 브레드크럼 구조 및 내비게이션 스키마 계획
