본문으로 건너뛰기

구조화된 데이터(Schema)란?

image

정의

구조화된 데이터(Structured Data) 또는 스키마 마크업(Schema Markup)은 웹페이지의 콘텐츠를 검색엔진이 더 잘 이해할 수 있도록 표준화된 형식으로 표시하는 코드입니다. 일반적인 HTML이 사람이 읽기 위한 것이라면, 구조화된 데이터는 기계(검색엔진)가 정확히 이해하기 위한 것입니다. 예를 들어, "제임스 본드"라는 텍스트가 있을 때, 이것이 영화 제목인지 인물 이름인지 검색엔진이 명확히 알 수 있도록 메타데이터를 추가하는 것입니다.

구조화된 데이터는 주로 Schema.org의 어휘를 사용하며, JSON-LD, Microdata, RDFa 같은 형식으로 구현됩니다. 그중 JSON-LD(JavaScript Object Notation for Linked Data)가 가장 널리 사용되며 구글도 이를 권장합니다. JSON-LD는 HTML과 분리되어 있어 관리가 쉽고, 스크립트 태그 안에 JSON 형식으로 작성되어 기존 HTML 구조를 변경하지 않아도 됩니다.

구조화된 데이터를 올바르게 구현하면 검색 결과에서 리치 스니펫(Rich Snippet), 리치 카드(Rich Card), 지식 그래프(Knowledge Graph) 같은 향상된 검색 결과를 얻을 수 있습니다. 예를 들어, 레시피 페이지에 구조화된 데이터를 추가하면 검색 결과에 요리 시간, 칼로리, 평점 등이 직접 표시되어 클릭률을 크게 높일 수 있습니다.

특징

  • 검색 결과 향상: 구조화된 데이터를 사용하면 별점, 가격, 재고 상태, 이벤트 날짜 등이 검색 결과에 직접 표시되어 클릭률(CTR)을 크게 향상시킬 수 있습니다.
  • 음성 검색 최적화: 구글 어시스턴트, 시리, 알렉사 같은 음성 비서가 웹페이지의 정보를 더 정확히 이해하고 음성 답변에 활용할 수 있습니다.
  • 지식 패널 노출: 적절한 구조화된 데이터를 사용하면 구글의 지식 패널이나 카드 형태로 검색 결과 상단에 노출될 수 있습니다.
  • 다양한 콘텐츠 유형 지원: 제품, 레시피, 이벤트, 기사, 리뷰, 동영상, FAQ, 구인공고 등 매우 다양한 콘텐츠 유형에 대한 스키마가 존재합니다.
  • 검색엔진 이해도 향상: 페이지의 맥락과 관계를 명확히 전달하여 검색엔진이 콘텐츠를 더 정확하게 분류하고 관련 검색어에 매칭시킬 수 있습니다.

활용 방법

구조화된 데이터를 효과적으로 구현하고 관리하는 방법은 다음과 같습니다.

1단계: 콘텐츠 유형 식별 먼저 웹페이지의 콘텐츠가 어떤 유형인지 파악합니다. Schema.org에서 제공하는 수백 가지 스키마 중에서 적합한 것을 선택합니다. 일반적으로 많이 사용되는 유형은 Article(기사), Product(제품), Recipe(레시피), Event(이벤트), Organization(조직), Person(인물), LocalBusiness(지역 비즈니스), Review(리뷰) 등입니다.

2단계: JSON-LD 코드 작성 선택한 스키마 타입에 맞춰 JSON-LD 형식으로 구조화된 데이터를 작성합니다. Schema.org 문서를 참고하여 필수 속성과 권장 속성을 포함시킵니다. Google의 구조화된 데이터 마크업 도우미를 사용하면 더 쉽게 작성할 수 있습니다.

3단계: HTML에 삽입 작성한 JSON-LD 코드를 웹페이지의 <head> 또는 <body> 태그 내부에 <script type="application/ld+json"> 태그로 감싸서 삽입합니다. 일반적으로 <head> 섹션에 배치하는 것이 권장됩니다.

4단계: 테스트 및 검증 Google의 리치 결과 테스트 도구(Rich Results Test)나 스키마 마크업 검증 도구(Schema Markup Validator)를 사용하여 구조화된 데이터가 올바르게 구현되었는지 확인합니다. 오류나 경고가 있다면 즉시 수정합니다.

5단계: Google Search Console 모니터링 Google Search Console의 '향상' 섹션에서 구조화된 데이터의 상태를 모니터링합니다. 오류가 발견되면 알림을 받을 수 있으며, 어떤 페이지에 문제가 있는지 확인할 수 있습니다.

6단계: 지속적인 업데이트 콘텐츠가 변경될 때마다 구조화된 데이터도 함께 업데이트해야 합니다. 특히 가격, 재고 상태, 이벤트 날짜 같이 자주 변하는 정보는 정확하게 유지해야 합니다. 자동화 도구나 CMS 플러그인을 사용하면 관리가 더 쉬워집니다.

예시

예시 1: 블로그 기사(Article) 스키마

<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "백링크란? SEO 초보자를 위한 완벽 가이드",
"image": [
"https://zero-coke.com/img/backlink-guide.jpg"
],
"datePublished": "2024-03-23T09:00:00+09:00",
"dateModified": "2024-03-23T14:30:00+09:00",
"author": {
"@type": "Person",
"name": "김철수",
"url": "https://zero-coke.com/author/kim"
},
"publisher": {
"@type": "Organization",
"name": "Zero-Coke",
"logo": {
"@type": "ImageObject",
"url": "https://zero-coke.com/logo.png"
}
},
"description": "백링크의 정의, 특징, 활용 방법을 초보자도 이해하기 쉽게 설명합니다.",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://zero-coke.com/blog/what-is-backlink"
}
}
</script>

예시 2: 제품(Product) 스키마

<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "무선 블루투스 이어폰 XYZ-2000",
"image": [
"https://example.com/photos/earphone-front.jpg",
"https://example.com/photos/earphone-side.jpg"
],
"description": "노이즈 캔슬링 기능이 탑재된 프리미엄 무선 이어폰",
"brand": {
"@type": "Brand",
"name": "TechSound"
},
"sku": "XYZ2000-BLK",
"mpn": "925872",
"offers": {
"@type": "Offer",
"url": "https://example.com/product/xyz2000",
"priceCurrency": "KRW",
"price": "129000",
"priceValidUntil": "2024-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "342"
}
}
</script>

예시 3: 레시피(Recipe) 스키마

<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Recipe",
"name": "간단한 김치찌개 레시피",
"image": "https://example.com/photos/kimchi-jjigae.jpg",
"author": {
"@type": "Person",
"name": "요리사 박영희"
},
"datePublished": "2024-03-20",
"description": "20분 만에 완성하는 맛있는 김치찌개",
"prepTime": "PT10M",
"cookTime": "PT10M",
"totalTime": "PT20M",
"recipeYield": "4인분",
"recipeCategory": "메인 요리",
"recipeCuisine": "한식",
"keywords": "김치찌개, 한식, 간단요리",
"nutrition": {
"@type": "NutritionInformation",
"calories": "250 calories"
},
"recipeIngredient": [
"신김치 300g",
"돼지고기 200g",
"두부 1/2모",
"대파 1대",
"고춧가루 1큰술"
],
"recipeInstructions": [
{
"@type": "HowToStep",
"text": "김치와 돼지고기를 한입 크기로 자릅니다."
},
{
"@type": "HowToStep",
"text": "냄비에 김치와 고기를 넣고 볶습니다."
},
{
"@type": "HowToStep",
"text": "물을 붓고 끓이다가 두부와 대파를 넣습니다."
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"ratingCount": "127"
}
}
</script>

예시 4: FAQ 스키마

<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "백링크는 몇 개나 있어야 효과적인가요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "백링크의 수보다는 질이 훨씬 중요합니다. 권위있는 사이트 하나로부터의 백링크가 저품질 사이트 100개의 백링크보다 더 가치있을 수 있습니다."
}
},
{
"@type": "Question",
"name": "백링크를 구매하는 것은 어떤가요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "백링크 구매는 구글의 가이드라인을 명백히 위반하는 행위입니다. 발각될 경우 심각한 페널티를 받을 수 있으며, 최악의 경우 검색 결과에서 완전히 제외될 수도 있습니다."
}
}
]
}
</script>

예시 5: 이벤트(Event) 스키마

<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Event",
"name": "2024 웹 개발 컨퍼런스",
"description": "최신 웹 개발 트렌드와 기술을 배우는 연례 컨퍼런스",
"image": "https://example.com/conference-2024.jpg",
"startDate": "2024-09-15T09:00:00+09:00",
"endDate": "2024-09-15T18:00:00+09:00",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"location": {
"@type": "Place",
"name": "서울 코엑스 컨벤션센터",
"address": {
"@type": "PostalAddress",
"streetAddress": "영동대로 513",
"addressLocality": "서울",
"addressRegion": "강남구",
"postalCode": "06164",
"addressCountry": "KR"
}
},
"organizer": {
"@type": "Organization",
"name": "한국웹개발자협회",
"url": "https://example.com"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/tickets",
"price": "50000",
"priceCurrency": "KRW",
"availability": "https://schema.org/InStock",
"validFrom": "2024-06-01T00:00:00+09:00"
}
}
</script>

장단점

장점

  • 검색 결과 가시성 향상: 구조화된 데이터를 사용하면 검색 결과에서 더 눈에 띄는 리치 스니펫으로 표시되어 클릭률을 크게 높일 수 있습니다. 연구에 따르면 리치 스니펫이 있는 검색 결과는 평균 30% 이상 높은 클릭률을 보입니다.

  • 검색엔진 이해도 증가: 페이지의 콘텐츠와 맥락을 명확히 전달하여 검색엔진이 더 정확한 검색 결과를 제공할 수 있도록 돕습니다. 이는 간접적으로 검색 순위 향상에도 기여할 수 있습니다.

  • 음성 검색 및 AI 최적화: 구조화된 데이터는 음성 비서와 AI 기반 검색 엔진이 정보를 쉽게 추출하고 활용할 수 있게 해주어, 미래의 검색 트렌드에 대비할 수 있습니다.

단점

  • 구현 복잡성: 올바른 구조화된 데이터를 작성하려면 Schema.org의 방대한 문서를 이해하고, JSON-LD 형식을 정확히 작성해야 합니다. 특히 복잡한 페이지에서는 여러 스키마 타입을 중첩하거나 조합해야 할 수 있습니다.

  • 유지보수 부담: 콘텐츠가 변경될 때마다 구조화된 데이터도 함께 업데이트해야 합니다. 특히 전자상거래 사이트처럼 가격이나 재고가 자주 변하는 경우, 데이터 불일치가 발생하지 않도록 자동화가 필요합니다.

  • 즉각적인 효과 보장 안함: 구조화된 데이터를 추가한다고 해서 반드시 리치 스니펫이 표시되는 것은 아닙니다. 구글이 최종적으로 리치 결과를 표시할지 결정하며, 페이지의 품질과 관련성도 함께 고려됩니다. 또한 일부 스키마 타입은 특정 조건을 충족해야만 리치 결과로 나타납니다.

FAQ

Q: 구조화된 데이터가 검색 순위를 직접적으로 올려주나요? A: 아니요, 구조화된 데이터 자체는 직접적인 순위 요소가 아닙니다. 구글은 이를 공식적으로 확인했습니다. 하지만 리치 스니펫을 통해 클릭률이 높아지면 간접적으로 순위 향상에 도움이 될 수 있습니다. 또한 검색엔진이 페이지를 더 잘 이해하게 되어 관련 검색어에 더 정확히 매칭될 수 있습니다.

Q: 모든 페이지에 구조화된 데이터를 추가해야 하나요? A: 모든 페이지에 필수는 아니지만, 제품 페이지, 블로그 기사, 이벤트 페이지, FAQ 페이지 등 특정 유형의 콘텐츠가 있는 페이지에는 추가하는 것이 좋습니다. 홈페이지에는 Organization 스키마를, 블로그 포스트에는 Article 스키마를 추가하는 것이 일반적입니다. 우선순위를 정해서 중요한 페이지부터 시작하세요.

Q: JSON-LD, Microdata, RDFa 중 어떤 것을 사용해야 하나요? A: JSON-LD를 사용하는 것이 가장 권장됩니다. 구글도 공식적으로 JSON-LD를 선호하며, HTML과 분리되어 있어 관리가 쉽고 오류 가능성이 낮습니다. Microdata와 RDFa는 HTML 태그에 직접 속성을 추가하는 방식으로 더 복잡하고 유지보수가 어렵습니다. 특별한 이유가 없다면 JSON-LD를 선택하세요.

Q: 구조화된 데이터를 잘못 구현하면 페널티를 받나요? A: 일반적인 오류는 페널티를 받지 않지만, 의도적으로 허위 정보를 제공하거나 스팸성 마크업을 사용하면 수동 조치(Manual Action)를 받을 수 있습니다. 예를 들어, 실제로 없는 5성 리뷰를 구조화된 데이터에 추가하거나, 사용자에게 보이지 않는 콘텐츠를 마크업하는 것은 위반입니다. Google Search Console에서 경고를 받으면 즉시 수정해야 합니다.