JSON-LD
JSON-LD는 링크드 데이터(Linked Data)를 JSON으로 표현하는 W3C 표준 형식으로, '구조화 데이터'를 웹 페이지에 삽입하는 구현 방식 중 하나입니다. 구글은 구조화 데이터를 마크업하는 세 가지 방식(JSON-LD, Microdata, RDFa) 가운데 JSON-LD를 권장합니다.
- JSON-LD는 'JSON for Linked Data'의 약자로, 링크드 데이터를 JSON 형식으로 직렬화하는 W3C 표준입니다.
- JSON-LD는 그 자체가 어휘(vocabulary)가 아니라, 구조화 데이터를 페이지에 넣는 세 가지 구현 형식(JSON-LD·Microdata·RDFa) 중 하나입니다.
- 구글은 구현·유지보수가 가장 쉽다는 이유로 세 형식 중 JSON-LD를 공식 권장합니다.
- JSON-LD는
<script type="application/ld+json">태그로 삽입되며, 화면에 보이는 본문과 분리되어 동작합니다. - schema.org 어휘와 결합해 사용하면 리치 결과(rich result) 같은 검색 노출 기능의 자격 요건을 충족할 수 있습니다.
JSON-LD란 무엇인가
JSON-LD는 링크드 데이터(Linked Data)를 JSON으로 표현하기 위해 W3C가 표준화한 데이터 형식이며, 동시에 구글이 권장하는 구조화 데이터 마크업 방식입니다. 'JSON-LD'는 'JSON for Linked Data'의 약자로, json-ld.org는 이를 "사람이 읽고 쓰기 쉬운 경량 링크드 데이터 형식이며, 이미 널리 쓰이는 JSON 형식을 기반으로 데이터가 웹 규모로 상호운용되도록 돕는다"라고 정의합니다.
여기서 핵심은 JSON-LD가 의미를 정의하는 '어휘'가 아니라 의미를 담아내는 '형식'이라는 점입니다. 즉 구조화 데이터(structured data)라는 큰 개념 아래에서, 어떤 데이터를 표현할지는 보통 schema.org 어휘가 정의하고, 그 데이터를 페이지에 어떤 문법으로 적어 넣을지를 JSON-LD가 담당합니다. 구글 검색이 인식하는 구조화 데이터 형식은 JSON-LD, Microdata, RDFa 세 가지이며, JSON-LD는 그중 구현에 초점을 둔 방식입니다.
JSON-LD vs Microdata vs RDFa
세 형식 모두 schema.org 어휘를 표현할 수 있고, 마크업이 유효하기만 하면 구글에서 동등하게 처리됩니다. 차이는 '어디에·어떻게' 데이터를 적느냐에 있습니다.
| 구분 | JSON-LD | Microdata | RDFa |
|---|---|---|---|
| 작성 위치 | 별도 스크립트 블록 (본문과 분리) | HTML 태그 속성에 인라인 삽입 | HTML 태그 속성에 인라인 삽입 |
| 마크업 방식 | script 태그 안에 JSON 객체로 기술 | itemscope·itemprop 등 속성 | typeof·property 등 속성 |
| 본문 HTML과의 결합 | 분리 (본문 구조 영향 없음) | 강하게 결합 (본문에 종속) | 강하게 결합 (본문에 종속) |
| 여러 어휘 혼합·관계 역전 | 쉬움 | 상대적으로 어려움 | 가능 |
| JS·CMS로 동적 삽입 | 용이 (구글이 인식) | 까다로움 | 까다로움 |
| 구글 권장 여부 | 권장 | 지원 | 지원 |
schema.org FAQ는 Microdata에 대해 "여러 어휘를 섞거나 속성 관계의 방향을 뒤집는 일처럼 더 어려운 부분이 있다"라고 설명하며, 이 때문에 RDFa와 JSON-LD를 함께 지원하게 되었다고 밝히고 있습니다.
예시 코드
아래는 한 조직(Organization)을 표현한 JSON-LD 예시입니다. <script type="application/ld+json"> 블록 안에 schema.org 어휘를 참조하는 JSON 객체를 넣으며, 일반적으로 페이지의 <head> 또는 <body> 안에 배치합니다.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "SearchOS",
"url": "https://searchos.io",
"logo": "https://searchos.io/logo.png",
"sameAs": [
"https://twitter.com/searchos",
"https://www.linkedin.com/company/searchos"
]
}
</script>여기서 @context는 사용할 어휘(schema.org)를 지정하고, @type은 데이터의 유형을, 나머지 키는 해당 유형의 속성을 나타냅니다. @context·@type 같은 키워드가 바로 JSON을 '링크드 데이터'로 만들어 주는 JSON-LD 고유의 문법입니다.
근거와 출처
JSON-LD 1.1은 2020년 7월 16일 W3C 권고안(Recommendation)으로 발표되었으며, 이때 함께 권고안이 된 명세는 Syntax, Processing Algorithms and API, Framing 세 가지입니다(W3C 공지). json-ld.org 역시 이 세 명세를 W3C Recommendation으로 명시하고 있습니다.
구글 검색 센트럴 문서는 JSON-LD를 "권장(Recommended)"으로 표기하며, "사이트 환경이 허용한다면 JSON-LD 사용을 권장하는데, 대규모로 구현·유지보수하기 가장 쉬운 방식이기 때문"이라고 설명합니다. 또한 "세 형식(JSON-LD·Microdata·RDFa)은 마크업이 유효하고 기능 문서에 맞게 구현되기만 하면 구글에 동등하게 적합하다"라고 안내합니다. JSON-LD 마크업이 본문 텍스트와 분리되어 동적 삽입에도 인식된다는 점도 권장의 근거로 제시됩니다.