비즈니스 schema.org 구조화 데이터 완벽 가이드
검색 결과에 별점·이미지·FAQ 펼침 같은 리치 스니펫이 나오는 사이트와 그렇지 않은 사이트의 클릭률은 보통 30~50% 차이가 납니다. 그 차이의 핵심이 schema.org 구조화 데이터입니다.
JSON-LD가 가장 안전한 형식
구조화 데이터는 Microdata·RDFa·JSON-LD 세 가지 형식으로 표현 가능하지만, 구글이 공식 권장하는 형식은 JSON-LD입니다. 이유:
- HTML 마크업과 분리되어 유지보수가 쉬움
- 동적 사이트(SPA·CMS)에서 주입하기 쉬움
- 한 곳에 모아 관리 가능 (head 또는 body 어디든 OK)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "OO 컴퍼니",
"url": "https://example.com",
"logo": "https://example.com/logo.png"
}
</script>
모든 사이트 필수 4종
1. Organization
회사·브랜드의 기본 정보. 검색 결과 우측 지식 패널의 핵심 데이터.
{
"@type": "Organization",
"name": "OO 컴퍼니",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"sameAs": [
"https://instagram.com/example",
"https://www.youtube.com/@example"
],
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+82-2-0000-0000",
"contactType": "customer support",
"areaServed": "KR"
}
}
2. WebSite
사이트 자체. 잘 마크업하면 구글 검색 결과에 사이트링크 검색창이 노출됩니다.
{
"@type": "WebSite",
"name": "OO 컴퍼니",
"url": "https://example.com",
"potentialAction": {
"@type": "SearchAction",
"target": "https://example.com/search?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}
3. BreadcrumbList
페이지 경로. 검색 결과의 URL 자리에 빵 부스러기 형태로 노출됩니다.
{
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "홈", "item": "https://example.com" },
{ "@type": "ListItem", "position": 2, "name": "블로그", "item": "https://example.com/blog" },
{ "@type": "ListItem", "position": 3, "name": "글 제목", "item": "https://example.com/blog/post" }
]
}
4. FAQPage (해당 페이지만)
자주 묻는 질문 섹션이 있는 페이지에 적용. 검색 결과에서 펼쳐지는 FAQ 박스가 노출되어 클릭률·체류시간 양쪽에 강합니다.
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "배송은 얼마나 걸리나요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "주문일 기준 평균 1.4일 출고, 도서산간 제외 2일 내 도착합니다."
}
}
]
}
업종별 추가 마크업
오프라인 매장이 있다면 — LocalBusiness
{
"@type": "LocalBusiness",
"name": "OO 카페",
"address": {
"@type": "PostalAddress",
"streetAddress": "강남대로 123",
"addressLocality": "강남구",
"addressRegion": "서울",
"postalCode": "06000",
"addressCountry": "KR"
},
"telephone": "+82-2-0000-0000",
"openingHours": "Mo-Fr 09:00-22:00",
"geo": {
"@type": "GeoCoordinates",
"latitude": 37.498,
"longitude": 127.027
}
}
업종별 세부 타입(Restaurant, MedicalClinic, BeautySalon, Store 등)으로 구체화하면 더 효과적입니다.
상품을 판다면 — Product
{
"@type": "Product",
"name": "OO 신발",
"image": "https://example.com/img/shoe.jpg",
"brand": { "@type": "Brand", "name": "OO" },
"offers": {
"@type": "Offer",
"price": "89000",
"priceCurrency": "KRW",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "184"
}
}
aggregateRating이 있으면 검색 결과에 별점이 노출됩니다 (CTR 20% 이상 상승 일반적).
블로그·뉴스라면 — Article / BlogPosting
저자(author) + 발행일(datePublished) + 수정일(dateModified)이 핵심. 저자 권위는 EEAT의 핵심 신호입니다.
강의·교육이라면 — Course
provider, courseCode, educationalLevel, inLanguage 등을 포함.
@graph 패턴 — 모든 노드를 한 블록에
여러 타입을 사이트 전체에 분산해서 적기보다, 메인 페이지에서 @graph 배열로 한 번에 선언하는 것이 권장됩니다.
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Organization", "@id": "https://example.com/#organization", ... },
{ "@type": "WebSite", "@id": "https://example.com/#website", ... },
{ "@type": "BreadcrumbList", ... }
]
}
@id로 노드를 식별하면 다른 페이지의 마크업이 메인 노드를 참조할 수 있어 일관성이 유지됩니다.
검증 — 3가지 도구
게시 전에 반드시 검증하세요:
- Schema Markup Validator — 문법·스키마 표준 준수 검증
- Google Rich Results Test — 실제 리치 결과 노출 후보인지 확인
- Google Search Console — 게시 후 색인 상태와 리치 결과 노출 모니터링
자기 사이트의 구조화 데이터가 어디까지 통과했는지 무료 진단으로 즉시 확인해보세요. JSON-LD 파싱 실패·필수 속성 누락·@graph 중첩 문제까지 한 번에 잡아드립니다.