Community코딩 & 개발github.com

blog-schema

블로그 게시물을 위한 완전한 JSON-LD 구조화된 데이터 마크업(@graph 패턴)을 생성합니다.

blog-schema란 무엇인가요?

이 스킬은 블로그 게시물에 대해 검증된 JSON-LD 스키마 마크업을 생성하는 전문 도구입니다. @graph 패턴을 사용하여 BlogPosting, Person, Organization, BreadcrumbList, FAQPage, ImageObject, VideoObject 등 최대 7가지 스키마 유형을 단일 script 태그에 결합합니다. 안정적인 @id 참조를 통해 엔티티 간 연결을 지원하며, 더 이상 사용되지 않는 스키마 유형(HowTo, SpecialAnnouncement 등)을 자동으로 감지하고 경고합니다. Claude Code, Cursor, Codex 등 AI 에이전트와 함께 사용하도록 설계되었으며, 블로그 콘텐츠에서 제목, 작성자, 날짜, 설명, FAQ, 이미지, 조직 정보, 단어 수, 태그 등 관련 데이터를 추출하여 완전한 스키마를 생성합니다. 멀티 스키마 페이지(3개 이상)는 AI 인용 가능성이 약 13% 높아지므로, 이 스킬은 검색 엔진 최적화와 AI 시스템(챗GPT, 퍼플렉시티, 제미나이)에서의 콘텐츠 추출을 동시에 극대화합니다.

지원 대상~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/AgriciDaniel/claude-blog/tree/main/skills/blog-schema

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

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와 구분됨)

검증 확인 항목:

  1. 모든 @id 참조가 @graph 내의 엔티티를 가리키는지 확인
  2. dateModified가 datePublished와 같거나 이후인지 확인
  3. headline이 110자를 초과하지 않는지 확인
  4. description이 50-160자 사이인지 확인
  5. 모든 URL이 절대 경로(상대 경로가 아님)인지 확인
  6. 이미지 크기가 양의 정수인지 확인
  7. BreadcrumbList 위치가 1부터 순차적인지 확인
  8. 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를 사용하는 경우, 컴포넌트로 래핑

생성된 스키마를 사용자 선호에 따라 블로그 게시물 파일이나 별도의 스키마 파일에 저장합니다.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

관련 스킬