--- id: wiki-2026-0508-json-ld-structured-data title: JSON-LD Structured Data category: 10_Wiki/Topics status: verified canonical_id: self aliases: [JSON-LD, Structured Data, Schema.org JSON-LD] duplicate_of: none source_trust_level: A confidence_score: 0.9 verification_status: applied tags: [seo, json-ld, schema-org, structured-data, web] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: javascript framework: schema.org --- # JSON-LD Structured Data ## 매 한 줄 > **"매 JSON-LD = 검색엔진에게 페이지 의미를 직접 말해주는 메타 데이터 레이어"**. HTML 마크업과 분리된 ` ``` ### Product + Offer (E-commerce) ```html ``` ### BreadcrumbList ```json { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" }, { "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://example.com/blog" }, { "@type": "ListItem", "position": 3, "name": "JSON-LD" } ] } ``` ### FAQPage (rich snippet 효과 큼) ```json { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "JSON-LD를 어디에 넣어야 하나요?", "acceptedAnswer": { "@type": "Answer", "text": "
또는 어디든 가능. 권장." } }] } ``` ### Next.js 13+ App Router 동적 생성 ```tsx // app/blog/[slug]/page.tsx export default async function Page({ params }) { const post = await getPost(params.slug); const jsonLd = { "@context": "https://schema.org", "@type": "Article", headline: post.title, datePublished: post.publishedAt, author: { "@type": "Person", name: post.author }, }; return ( <>