JSON-LD 구조화 데이터 설계: 검색엔진과 AI가 동시에 읽을 수 있는 시맨틱 레이어
JSON-LD 기반 구조화 데이터를 활용하여 검색엔진 크롤러와 LLM이 동시에 문서를 파싱할 수 있는 시맨틱 레이어를 설계하는 방법. 주요 Schema.org 타입별 SEO 효과와 실무 적용 가이드를 제시한다.
구조화 데이터(Structured Data)는 검색엔진이 웹 페이지의 콘텐츠를 기계적으로 이해하기 위한 표준화된 어휘 체계다. Schema.org가 정의한 타입과 속성을 JSON-LD 형식으로 마크업하면, Googlebot은 해당 페이지가 "기사인지, 상품인지, FAQ인지"를 파싱 단계에서 즉시 분류한다. 이것이 리치 결과(Rich Results) 노출의 기술적 전제 조건이며, 동시에 LLM 기반 생성형 엔진이 문서의 구조를 파악하는 핵심 입력값이다.
Google Search Central의 "Structured Data General Guidelines"는 JSON-LD를 구조화 데이터 구현의 권장 포맷으로 명시하고 있다. Microdata나 RDFa도 기술적으로 지원되지만, JSON-LD는 HTML 본문과 분리되어 <script> 태그 안에 독립적으로 존재하므로 유지보수성이 압도적으로 높다. 특히 React, Next.js와 같은 컴포넌트 기반 프레임워크에서는 JSON-LD를 서버 사이드에서 동적으로 생성하여 <head>에 주입하는 패턴이 표준으로 자리 잡았다.
실무에서 가장 빈번하게 사용되는 스키마 타입과 그 SEO 효과를 정리하면 다음과 같다.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebSite",
"@id": "https://example.com/#website",
"name": "사이트명",
"url": "https://example.com",
"potentialAction": {
"@type": "SearchAction",
"target": "https://example.com/search?q={search_term}",
"query-input": "required name=search_term"
}
},
{
"@type": "Article",
"@id": "https://example.com/post/1/#article",
"headline": "기사 제목",
"author": { "@id": "https://example.com/authors/author-1/#person" },
"datePublished": "2026-03-01",
"dateModified": "2026-03-15"
}
]
}
@graph 배열을 활용한 다중 엔터티 선언은 단일 페이지에서 여러 스키마를 논리적으로 연결하는 표준 패턴이다. @id를 통해 엔터티 간 참조 관계를 설정하면, 검색엔진은 "이 기사는 이 저자가 작성했고, 이 웹사이트에 속한다"는 관계를 그래프 데이터로 인식한다.
흔히 범하는 실수는 구조화 데이터의 내용과 실제 페이지 콘텐츠의 불일치다. Google의 스팸 정책(Spam Policies)은 "구조화 데이터가 사용자에게 보이는 콘텐츠와 일치하지 않는 경우 수동 조치(Manual Action)의 대상"이라고 명시하고 있다. 예를 들어 JSON-LD의 headline이 실제 <h1> 태그의 텍스트와 다르거나, author에 실제 저자가 아닌 가공의 이름을 넣는 행위는 페널티의 직접적 원인이 된다.
구현 체크리스트는 다음과 같다. 첫째, 모든 페이지에 WebSite, WebPage 기본 스키마를 적용한다. 둘째, 콘텐츠 페이지에는 Article 또는 FAQPage 스키마를 추가하되, author, datePublished, dateModified를 필수 속성으로 포함한다. 셋째, Google의 Rich Results Test 도구로 마크업 유효성을 발행 전 반드시 검증한다. 넷째, @graph와 @id를 활용하여 사이트 전체의 스키마를 하나의 일관된 지식 그래프로 설계한다.
