검색 결과에서 별점, 영업시간, 로고, 빵부스러기(breadcrumb) 같은 부가 정보가 함께 노출되는 것을 리치 결과(Rich Results)라고 합니다. 이는 우연이 아니라 페이지에 JSON-LD 형식의 구조화 데이터를 심어야 얻을 수 있는 결과입니다. 실무에서 가장 많이 쓰는 스키마 타입과 코딩 방법을 정리합니다.
JSON-LD가 하는 일
JSON-LD는 페이지 내용을 검색엔진이 기계적으로 이해할 수 있는 형식으로 별도 요약해주는 스크립트입니다. 방문자에게는 보이지 않고, 검색엔진 크롤러만 읽어 "이 페이지는 회사 정보다", "이 페이지는 상품이고 가격은 얼마다" 같은 사실을 명확히 전달합니다. 같은 정보를 본문에 텍스트로만 써두는 것보다 구조화된 형식으로 제공하면 리치 결과로 노출될 확률이 높아집니다.
기업/조직(Organization) 스키마
로고와 회사 정보를 검색 결과에 노출시키려면 Organization 스키마가 기본입니다.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "다빈치웹",
"url": "https://example.com",
"logo": "https://example.com/img/logo.png",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+82-2-547-4666",
"contactType": "customer service"
}
}
</script> 지역 업체(LocalBusiness) 스키마로 위치·영업시간 노출
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "매장명",
"address": {
"@type": "PostalAddress",
"streetAddress": "도로명주소",
"addressLocality": "서울",
"postalCode": "00000"
},
"openingHours": "Mo-Fr 09:00-18:00",
"telephone": "+82-2-000-0000"
}
</script>매장·병원·학원처럼 오프라인 위치가 중요한 업종은 이 스키마가 지도·지역 검색 노출에 직접적인 영향을 줍니다.
리뷰·평점(AggregateRating) 노출 시 주의할 점
별점을 노출하고 싶다고 임의의 점수를 코드에 박아 넣으면 스팸 구조화 데이터로 판단되어 리치 결과 자격이 박탈될 수 있습니다. 반드시 실제 사용자 리뷰 데이터를 기반으로 값을 채워야 합니다.
{
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "128"
}리뷰 시스템이 없는 사이트는 이 스키마를 아예 사용하지 않는 것이 안전합니다.
빵부스러기(BreadcrumbList) 스키마
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{"@type": "ListItem", "position": 1, "name": "홈", "item": "https://example.com/"},
{"@type": "ListItem", "position": 2, "name": "제작 가이드", "item": "https://example.com/guide/"},
{"@type": "ListItem", "position": 3, "name": "현재 페이지"}
]
}
</script>검색 결과에 URL 대신 계층형 경로가 표시돼, 방문자가 사이트 구조를 검색 결과에서부터 미리 파악할 수 있습니다.
스키마 타입별 활용 우선순위
| 스키마 | 적합한 페이지 | 기대 효과 |
|---|---|---|
| Organization | 홈페이지, 회사소개 | 검색결과 로고·정보 패널 |
| LocalBusiness | 매장·지점 정보 페이지 | 지역 검색·지도 노출 |
| Article | 블로그·가이드 글 | 게시일·저자 정보 노출 |
| FAQPage | FAQ가 있는 페이지 | 검색 결과 내 질문·답변 노출 |
| Product | 상품 상세 | 가격·재고 노출 |
검증 및 오류 점검
- 구글 리치 결과 테스트 도구에 URL 입력
- 인식된 스키마 타입과 필수 항목 누락 여부 확인
- 경고(warning)는 선택 항목 누락, 오류(error)는 필수 항목 누락이므로 오류부터 우선 해결
- 실제 검색 결과 반영은 며칠~몇 주 소요될 수 있어 재크롤링을 기다림
동적 페이지에서 JSON-LD를 자동 생성하는 구조
상품·게시글이 계속 추가되는 사이트는 스키마를 페이지마다 손으로 쓰는 대신, DB 값을 기반으로 자동 생성하는 구조가 유지보수에 유리합니다.
<?php
$schema = array(
"@context" => "https://schema.org",
"@type" => "Article",
"headline" => $post['subject'],
"datePublished" => $post['wr_datetime'],
);
echo '<script type="application/ld+json">'
. json_encode($schema, JSON_UNESCAPED_UNICODE)
. '</script>';
?>값이 비어 있는 필드는 스키마에서 제외하거나 기본값으로 대체해, 빈 문자열이 그대로 들어가 오류로 판정되는 것을 막아야 합니다.
실무 정리
구조화 데이터는 실제 존재하는 정보만 정확히 반영해야 효과와 신뢰도가 유지됩니다. FAQ 스키마는 시맨틱 헤딩 구조와 함께 페이지 정보 구조를 명확히 하는 데 도움이 됩니다. 스키마 설계·코딩이 필요하면 무료 견적요청으로 노출시키고 싶은 정보를 알려주세요.
자주 묻는 질문 (FAQ)
JSON-LD를 넣으면 검색 순위가 바로 오르나요? +
구조화 데이터 자체는 순위 신호가 아니라 검색 결과의 표현 방식(리치 결과)에 영향을 줍니다. 다만 클릭률이 올라가는 효과가 있어 간접적으로 트래픽에 도움이 됩니다.
리뷰 점수를 실제보다 높게 넣으면 안 되나요? +
실제 데이터와 다른 값을 넣는 것은 구조화 데이터 정책 위반으로, 발견 시 리치 결과 자격이 전면 박탈될 수 있어 반드시 실제 값을 사용해야 합니다.
여러 스키마를 한 페이지에 동시에 넣어도 되나요? +
가능합니다. 하나의 script 태그에 배열(@graph)로 묶거나, 여러 script 태그를 나눠서 넣어도 됩니다. 다만 서로 모순되는 정보를 담지 않아야 합니다.
리치 결과가 특정 검색어에서만 안 뜨는 이유는 무엇인가요? +
구조화 데이터가 정확해도 검색엔진이 특정 검색 의도·화면에서는 리치 결과를 노출하지 않기로 판단할 수 있습니다. 이는 구현 문제가 아니라 검색엔진의 표시 정책에 달려 있습니다.
FAQ 스키마는 이 페이지에 보이는 FAQ와 내용이 같아야 하나요? +
네, 화면에 실제로 노출되는 질문·답변과 구조화 데이터의 내용이 일치해야 하며, 화면에 없는 내용을 스키마에만 추가하는 것은 정책 위반입니다.
네이버 검색에도 JSON-LD가 영향을 주나요? +
네이버는 구글과 스키마 지원 범위가 다르지만, 표준 형식으로 정확한 정보를 제공하는 것은 여러 검색엔진과 AI 기반 검색 서비스에 공통적으로 도움이 되는 방향입니다.