Field guide / structured-data
구조화 데이터(JSON-LD) 적용 가이드
Article, Organization, BreadcrumbList, WebSite 등 페이지 유형에 맞는 JSON-LD를 실수 없이 넣는 방법과 검증 도구 사용법을 예제로 설명합니다.
- 작성
- 수정
- 작성자
- 검토
- 애드브랜치 편집팀
구조화 데이터란 무엇인가
구조화 데이터란 페이지에 이미 보이는 정보를 검색엔진이 해석할 수 있는 정해진 어휘로 다시 적어 둔 데이터입니다. 사람이 읽는 “2026년 9월 3일 발행, 글쓴이 홍길동”을 기계가 오해 없이 읽도록 datePublished와 author라는 이름표를 붙여 주는 일이라고 보면 됩니다. 표현 방식은 여러 가지지만 Google이 권장하는 형식이 JSON-LD입니다. JSON-LD란 JSON 형태로 이런 데이터를 적어 <script> 블록 하나에 담는 방식을 말합니다.
왜 JSON-LD를 쓰는가
Microdata나 RDFa는 HTML 요소마다 속성을 흩뿌리기 때문에 디자인을 바꾸면 데이터가 함께 깨집니다. JSON-LD는 독립된 script 블록 하나에 모여 있어 화면 코드와 분리되고, 문제가 생겼을 때 그 블록만 보면 됩니다.
잘못 쓰면 생기는 일
가장 흔한 실패는 조용한 실패입니다. JSON 문법 오류가 있으면 블록 전체가 무시되는데, 화면에는 아무 변화가 없어서 몇 달 동안 모르고 지나갑니다. 애드브랜치 검사기는 json-ld-valid-json으로 파싱 가능 여부를, json-ld-context와 json-ld-type으로 필수 키를 확인합니다.
더 위험한 건 페이지 내용과 다른 값을 적는 경우입니다. 화면에 없는 별점을 마크업에만 넣거나, 실제와 다른 가격을 적는 것은 Google 구조화 데이터 정책 위반이며 수동 조치 대상이 될 수 있습니다. 마크업은 페이지에 실제로 있는 내용만 반영해야 합니다.
기본 문법
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "sitemap.xml 만들기와 제출하기",
"image": ["https://example.com/og/sitemap.png"],
"datePublished": "2026-09-03T09:00:00+09:00",
"dateModified": "2026-09-03T09:00:00+09:00",
"author": {
"@type": "Organization",
"name": "애드브랜치 편집팀",
"url": "https://example.com/about"
}
}
</script>
@context는 이 문서가 쓰는 어휘가 schema.org임을 선언하고, @type은 이 대상이 무엇인지 말합니다. 두 키 중 하나라도 빠지면 나머지 속성은 해석되지 않습니다. Google의 Article rich result 문서는 headline, image, datePublished를 요구 속성으로 안내하며 author와 dateModified도 함께 넣기를 권장합니다.
자주 쓰는 타입
| 타입 | 쓰는 곳 | 핵심 속성 |
|---|---|---|
Article | 블로그 글, 가이드, 뉴스 | headline, image, datePublished, author |
Organization | 회사·서비스 소개, 사이트 전역 | name, url, logo |
BreadcrumbList | 계층 구조가 있는 하위 페이지 | itemListElement의 position, name, item |
WebSite | 사이트 루트 | name, url |
WebPage | 일반 페이지 | name, url |
Organization
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "예제상점",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"sameAs": ["https://www.linkedin.com/company/example", "https://github.com/example"]
}
</script>
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/guides"
},
{
"@type": "ListItem",
"position": 3,
"name": "구조화 데이터",
"item": "https://example.com/guides/structured-data"
}
]
}
</script>
position은 1부터 빠짐없이 이어져야 합니다. 애드브랜치의 breadcrumb-required-properties가 이 연속성을 확인합니다.
@graph로 여러 엔터티 묶기
한 페이지에 여러 엔터티가 필요할 때는 @graph로 한 블록에 담고 @id로 서로를 참조하면 같은 조직 정보를 반복하지 않아도 됩니다.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#org",
"name": "예제상점",
"url": "https://example.com",
"logo": "https://example.com/logo.png"
},
{
"@type": "WebSite",
"@id": "https://example.com/#website",
"url": "https://example.com",
"name": "예제상점",
"publisher": { "@id": "https://example.com/#org" }
},
{
"@type": "Article",
"headline": "구조화 데이터 적용 가이드",
"image": ["https://example.com/og/sd.png"],
"datePublished": "2026-09-03",
"dateModified": "2026-09-03",
"author": { "@id": "https://example.com/#org" },
"publisher": { "@id": "https://example.com/#org" },
"isPartOf": { "@id": "https://example.com/#website" }
}
]
}
</script>
잘못된 예와 수정된 예
1. JSON 문법이 깨진 블록
<!-- 잘못된 예: 후행 콤마, 홑따옴표, 이스케이프 안 된 따옴표 -->
<script type="application/ld+json">
{
'@context': 'https://schema.org',
"@type": "Article",
"headline": "제품 "베스트" 후기",
}
</script>
JSON은 홑따옴표를 허용하지 않고, 마지막 속성 뒤 콤마도 오류이며, 값 안의 따옴표는 이스케이프해야 합니다. 이 블록은 통째로 무시됩니다.
<!-- 수정된 예 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "제품 \"베스트\" 후기",
"image": ["https://example.com/og/review.png"],
"datePublished": "2026-09-03"
}
</script>
템플릿에서 값을 끼워 넣을 때는 문자열 연결 대신 언어에 내장된 JSON 직렬화 함수를 쓰세요.
2. 페이지에 없는 내용을 마크업
<!-- 잘못된 예: 화면 어디에도 리뷰와 별점이 없는 페이지 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "노트북 거치대",
"aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.9", "reviewCount": "312" }
}
</script>
사용자에게 보이지 않는 평점을 마크업에만 넣는 것은 정책 위반입니다.
<!-- 수정된 예: 실제 페이지에 있는 정보만 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "노트북 거치대",
"image": ["https://example.com/img/stand.png"],
"brand": { "@type": "Brand", "name": "예제상점" }
}
</script>
검증 방법
- Google의 리치 결과 테스트: 실제 URL이나 코드 조각을 넣어 Google이 인식하는 항목과 오류를 확인합니다.
- Schema Markup Validator(validator.schema.org): 리치 결과와 무관하게 schema.org 문법 자체를 검사합니다.
- Search Console의 개선 사항 보고서: 실제 색인된 페이지에서 발생한 오류를 유형별로 모아 보여 줍니다.
- 애드브랜치 검사기:
json-ld-present부터breadcrumb-required-properties까지 초기 HTML만으로 판정 가능한 항목을 한 번에 확인합니다.
적용 시 주의점과 흔한 오해
- 구조화 데이터를 넣으면 리치 결과가 보장된다고 오해하기 쉽습니다. 마크업은 자격 요건일 뿐이고 표시 여부는 검색엔진이 결정합니다.
- 구조화 데이터는 검색 순위를 직접 올리는 장치가 아닙니다. 페이지의 주제와 엔터티를 명확히 전달하는 수단으로 보세요.
- 타입을 억지로 늘리지 마세요. 회사 소개 페이지에 Article을 붙이는 식의 마크업은 내용과 어긋납니다.
- 사이트 전체에서 조직 이름을 한 가지로 통일하세요. title, 푸터, JSON-LD
publisher.name이 제각각이면C04(엔터티명 일관성)에서 걸립니다. - JavaScript로 나중에 삽입하는 JSON-LD는 초기 HTML만 읽는 도구에 잡히지 않습니다. 가능하면 서버에서 렌더하세요.
자주 묻는 질문
구조화 데이터가 없으면 SEO에 불리한가요
일반적인 페이지에서 필수는 아닙니다. 애드브랜치도 JSON-LD가 없으면 치명적이 아니라 참고로 표시합니다. 다만 발행 주체와 날짜, 저자를 기계가 읽을 수 있게 적어 두면 페이지의 출처가 분명해지므로, 콘텐츠 사이트라면 넣는 편이 낫습니다.
script 블록은 몇 개까지 넣을 수 있나요
개수 제한은 없습니다. 여러 블록을 넣어도 되고 @graph로 묶어도 됩니다. 다만 같은 엔터티를 서로 다른 값으로 두 번 선언하면 어느 쪽이 맞는지 알 수 없으니 한 곳에서만 정의하세요.
FAQPage 마크업을 넣으면 검색결과에 FAQ가 표시되나요
표시를 보장하지 않습니다. Google은 FAQ 리치 결과의 표시 대상을 제한적으로 운영합니다. 리치 결과 노출과 별개로, 질문과 답변을 명시적인 쌍으로 표시해 두면 답변 단위를 골라내기 쉬운 구조가 됩니다.
JSON-LD를 head에 넣어야 하나요 body에 넣어야 하나요
둘 다 가능합니다. Google은 위치를 제한하지 않습니다. 관리하기 쉬운 곳에 두되, 페이지마다 값이 달라야 하는 항목을 공통 레이아웃에 고정해 두는 실수만 피하세요.
관련 가이드
Next reading
관련 가이드
제목 구조(H1~H6) 설계
문서 구조를 사람과 기계 모두에게 전달하는 제목 계층 설계 원칙, H1 개수 논쟁, 단계 건너뛰기, 디자인용 큰 글씨와의 구분을 다룹니다.
가이드 읽기
GEO 점검 체크리스트
AI 검색이 페이지의 주제와 답변을 이해하기 쉽게 만드는 구조를 두괄식 작성, 정의문, Q&A, 출처 표기 순서로 항목별 점검합니다.
가이드 읽기
SEO 기본 점검 체크리스트
페이지 하나를 검색엔진에 제대로 노출하기 위해 확인할 항목을 우선순위 순서로 정리하고, 항목마다 확인 방법과 고치는 코드까지 함께 다룹니다.
가이드 읽기
Check the evidence
이 페이지를 지금 검사해보기
읽고 있는 페이지나 운영 중인 URL을 넣으면 이 가이드와 연결된 SEO·GEO 항목을 바로 확인할 수 있습니다.