Blog Schema -- JSON-LD 구조화된 데이터 생성
블로그 게시물에 대해 완전하고 검증된 JSON-LD 스키마 마크업을 @graph 패턴을 사용하여 생성합니다. 여러 스키마 유형을 단일 script 태그로 결합하고, 엔티티 연결을 위한 안정적인 @id 참조를 제공합니다.
워크플로
1단계: 콘텐츠 읽기
블로그 게시물을 읽고 모든 스키마 관련 데이터를 추출합니다:
- 제목 (headline)
- 작성자 (이름, 직함, 소셜 링크, 자격 증명)
- 날짜 (datePublished, dateModified / lastUpdated)
- 설명 (메타 설명)
- FAQ 섹션 (질문과 답변 쌍)
- 이미지 (커버 이미지 URL, 크기, 대체 텍스트; 인라인 이미지)
- 조직 정보 (사이트 이름, URL, 로고)
- 단어 수 (콘텐츠 길이로부터 근사)
- 태그/카테고리 (BreadcrumbList 카테고리용)
- 슬러그 (파일 이름 또는 프론트매터에서)
2단계: BlogPosting 스키마 생성
필수 및 권장 속성을 모두 포함한 완전한 BlogPosting 스키마:
{
"@type": "BlogPosting",
"@id": "{siteUrl}/blog/{slug}#article",
"headline": "게시물 제목 (최대 110자)",
"description": "메타 설명 (150-160자)",
"datePublished": "YYYY-MM-DD",
"dateModified": "YYYY-MM-DD",
"author": { "@id": "{siteUrl}/author/{author-slug}#person" },
"publisher": { "@id": "{siteUrl}#organization" },
"image": { "@id": "{siteUrl}/blog/{slug}#primaryimage" },
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "{siteUrl}/blog/{slug}"
},
"wordCount": 2400,
"articleBody": "콘텐츠의 처음 200자 발췌..."
}
필수 속성: @type, headline, datePublished, author, publisher, image. 권장 속성: description, dateModified, mainEntityOfPage, wordCount, articleBody (발췌).
3단계: Person 스키마 생성
안정적인 @id로 상호 참조가 가능한 작성자 스키마:
{
"@type": "Person",
"@id": "{siteUrl}/author/{author-slug}#person",
"name": "작성자 이름",
"jobTitle": "역할 또는 직함",
"url": "{siteUrl}/author/{author-slug}",
"sameAs": [
"https://twitter.com/handle",
"https://linkedin.com/in/handle",
"https://github.com/handle"
]
}
선택 속성 (사용 가능한 경우 포함):
alumniOf- 교육 기관 (Organization 유형)worksFor- 고용주 (동일 엔티티인 경우 Organization @id 참조)
4단계: Organization 스키마 생성
블로그의 상위 조직 엔티티:
{
"@type": "Organization",
"@id": "{siteUrl}#organization",
"name": "조직 이름",
"url": "{siteUrl}",
"logo": {
"@type": "ImageObject",
"url": "{siteUrl}/logo.png",
"width": 600,
"height": 60
},
"sameAs": [
"https://twitter.com/org",
"https://linkedin.com/company/org",
"https://github.com/org"
]
}
로고 요구사항: 유효한 이미지 URL이어야 합니다. Google은 로고가 최소 112x112px, 최대 600px 너비를 권장합니다. BlogPosting 발행자의 경우 직사각형 로고가 선호됩니다.
5단계: BreadcrumbList 생성
콘텐츠 계층 구조를 보여주는 내비게이션 빵부스러기 스키마:
{
"@type": "BreadcrumbList",
"@id": "{siteUrl}/blog/{slug}#breadcrumb",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "{siteUrl}"
},
{
"@type": "ListItem",
"position": 2,
"name": "카테고리 이름",
"item": "{siteUrl}/blog/category/{category-slug}"
},
{
"@type": "ListItem",
"position": 3,
"name": "게시물 제목",
"item": "{siteUrl}/blog/{slug}"
}
]
}
카테고리가 없는 경우, 두 번째 빵부스러기 항목으로 "Blog"를 사용하고 URL은 {siteUrl}/blog로 합니다.
6단계: FAQPage 스키마 생성
블로그 게시물의 FAQ 섹션에서 Q&A 쌍 추출:
{
"@type": "FAQPage",
"@id": "{siteUrl}/blog/{slug}#faq",
"mainEntity": [
{
"@type": "Question",
"name": "질문은 무엇인가요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "완전한 답변 텍스트 (통계 포함 40-60 단어)."
}
}
]
}
중요 참고: Google은 2023년 8월부터 FAQ 리치 결과를 정부 및 건강 사이트로 제한했습니다. 그러나 FAQ 스키마 마크업은 여전히 가치가 있습니다:
- AI 시스템(챗GPT, 퍼플렉시티, 제미나이)이 인용을 위해 FAQ 데이터를 추출합니다.
- 향후 리치 결과 자격 변경에 대비하여 콘텐츠를 구조화합니다.
- 콘텐츠 구성 신호를 개선합니다.
7단계: VideoObject 생성 (비디오가 있는 경우)
게시물에 포함된 각 YouTube 동영상에 대해 VideoObject 스키마를 생성합니다:
{
"@type": "VideoObject",
"@id": "{siteUrl}/blog/{slug}#video-{index}",
"name": "동영상 제목",
"description": "동영상 설명 발췌 (첫 200자)",
"thumbnailUrl": "https://img.youtube.com/vi/{videoId}/hqdefault.jpg",
"uploadDate": "{ISO 8601 날짜}",
"contentUrl": "https://www.youtube.com/watch?v={videoId}",
"embedUrl": "https://www.youtube.com/embed/{videoId}",
"duration": "PT{M}M{S}S",
"interactionStatistic": {
"@type": "InteractionCounter",
"interactionType": { "@type": "WatchAction" },
"userInteractionCount": {viewCount}
}
}
각 VideoObject를 @graph 배열에 추가합니다. @id 프래그먼트는 #video-1, #video-2 등을 사용합니다. 임베드의 noscript 폴백 또는 blog-google을 통해 YouTube Data API가 사용 가능한 경우 해당 메타데이터를 추출합니다.
7.5단계: ImageObject 생성
게시물의 주요 이미지에 대한 커버 이미지 스키마:
{
"@type": "ImageObject",
"@id": "{siteUrl}/blog/{slug}#primaryimage",
"url": "https://cdn.pixabay.com/photo/.../image.jpg",
"width": 1200,
"height": 630,
"caption": "이미지 대체 텍스트와 일치하는 설명 캡션"
}
이미지 요구사항:
- URL은 크롤링 가능하고 공개적으로 접근 가능해야 합니다.
- 너비와 높이는 실제 이미지 크기를 반영해야 합니다.
- 캡션은 이미지 대체 텍스트와 일치하거나 밀접하게 정렬되어야 합니다.
- 권장 크기: 1200x630 (OG 호환) 또는 1920x1080.
8단계: 검증 및 경고
더 이상 사용되지 않는 스키마 유형을 확인하고 검증 규칙을 적용합니다:
절대 사용하지 말아야 할 더 이상 사용되지 않는 유형:
- HowTo - 2023년 9월부터 사용 중단 (Google 더 이상 리치 결과 표시 안 함)
- SpecialAnnouncement - 2025년 7월부터 사용 중단
- Practice Problem - 사용 중단 (교육 마크업)
- Dataset - 일반 용도로 사용 중단
- Sitelinks Search Box - 사용 중단
- Q&A - 2026년 1월부터 사용 중단 (FAQPage와 구분됨)
검증 확인 항목:
- 모든 @id 참조가 @graph 내의 엔티티를 가리키는지 확인
- dateModified가 datePublished와 같거나 이후인지 확인
- headline이 110자를 초과하지 않는지 확인
- description이 50-160자 사이인지 확인
- 모든 URL이 절대 경로(상대 경로가 아님)인지 확인
- 이미지 크기가 양의 정수인지 확인
- BreadcrumbList 위치가 1부터 순차적인지 확인
- FAQPage에 최소 2개의 질문이 있는지 확인
AI 인용 최적화 참고: 3개 이상의 스키마 유형을 사용하는 페이지는 AI 인용 가능성이 약 13% 더 높습니다. 이 스킬은 최대 7가지 유형(BlogPosting, Person, Organization, BreadcrumbList, FAQPage, ImageObject, VideoObject)을 생성하여 검색 엔진 이해와 AI 추출을 모두 극대화합니다.
9단계: 출력
모든 스키마를 @graph 패턴을 사용하여 단일 <script> 태그로 결합합니다:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "BlogPosting", ... },
{ "@type": "Person", ... },
{ "@type": "Organization", ... },
{ "@type": "BreadcrumbList", ... },
{ "@type": "FAQPage", ... },
{ "@type": "VideoObject", ... },
{ "@type": "ImageObject", ... }
]
}
</script>
@graph 패턴의 이점:
- 여러 개 대신 단일 script 태그 - 더 깔끔한 HTML
- 안정적인 @id 참조를 통한 엔티티 연결 (예: author가 @id로 Person 참조)
- Google 및 AI 시스템이 @graph 배열을 올바르게 파싱
- 단일 블록으로 유지 및 업데이트가 더 쉬움
출력 옵션:
- Embedded HTML -
<head>또는</body>앞에 붙여넣을 준비 완료 - Standalone JSON - CMS 스키마 필드 또는 API 주입용
- MDX component - 프로젝트가 MDX를 사용하는 경우, 컴포넌트로 래핑
생성된 스키마를 사용자 선호에 따라 블로그 게시물 파일이나 별도의 스키마 파일에 저장합니다.