jpskill.com
✍️ ライティング コミュニティ

blog-schema

ブログ記事の構造化データ(JSON-LD)を、Googleの要件に沿って自動生成し、検索エンジン最適化(SEO)を支援、さらに非推奨タイプを警告することで、より効果的なブログ運営をサポートするSkill。

📜 元の英語説明(参考)

Generate complete JSON-LD schema markup for blog posts including BlogPosting, Person, Organization, BreadcrumbList, FAQPage, and ImageObject. Validates against Google requirements and warns about deprecated types. Use when user says "schema", "blog schema", "json-ld", "structured data", "schema markup", "generate schema".

🇯🇵 日本人クリエイター向け解説

一言でいうと

ブログ記事の構造化データ(JSON-LD)を、Googleの要件に沿って自動生成し、検索エンジン最適化(SEO)を支援、さらに非推奨タイプを警告することで、より効果的なブログ運営をサポートするSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o blog-schema.zip https://jpskill.com/download/10531.zip && unzip -o blog-schema.zip && rm blog-schema.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/10531.zip -OutFile "$d\blog-schema.zip"; Expand-Archive "$d\blog-schema.zip" -DestinationPath $d -Force; ri "$d\blog-schema.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して blog-schema.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → blog-schema フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

ブログスキーマ -- JSON-LD 構造化データ生成

@graph パターンを使用して、ブログ投稿用の完全で検証済みの JSON-LD スキーママークアップを生成します。複数のスキーマタイプを、エンティティリンキングのための安定した @id 参照を持つ単一のスクリプトタグに結合します。

ワークフロー

ステップ 1: コンテンツの読み取り

ブログ投稿を読み取り、スキーマに関連するすべてのデータを抽出します。

  • タイトル(headline)
  • 著者(name、job title、ソーシャルリンク、資格)
  • 日付(datePublished、dateModified / lastUpdated)
  • 説明(meta description)
  • FAQ セクション(question と answer のペア)
  • 画像(カバー画像の URL、寸法、alt text、インライン画像)
  • 組織情報(サイト名、URL、ロゴ)
  • 単語数(コンテンツの長さからのおおよその数)
  • タグ/カテゴリ(BreadcrumbList カテゴリ用)
  • スラッグ(filename または frontmatter から)

ステップ 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": "ホーム",
      "item": "{siteUrl}"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "カテゴリ名",
      "item": "{siteUrl}/blog/category/{category-slug}"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "投稿タイトル",
      "item": "{siteUrl}/blog/{slug}"
    }
  ]
}

カテゴリが利用できない場合は、2 番目のパンくずリストの項目として「ブログ」を使用し、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 システム (ChatGPT、Perplexity、Gemini) は、引用のために FAQ データを抽出します
  • 将来のリッチリザルトの適格性の変更のためにコンテンツを構造化します
  • コンテンツの組織化シグナルを改善します

ステップ 7: ImageObject の生成

投稿のプライマリ画像のカバーイメージスキーマ:

{
  "@type": "ImageObject",
  "@id": "{siteUrl}/blog/{slug}#primaryimage",
  "url": "https://cdn.pixabay.com/photo/.../image.jpg",
  "width": 1200,
  "height": 630,
  "caption": "alt text に一致する説明的なキャプション"
}

画像の要件:

  • URL はクロール可能で、公にアクセス可能である必要があります
  • 幅と高さは、実際の画像の寸法を反映する必要があります
  • キャプションは、画像の alt text と一致するか、密接に一致する必要があります
  • 推奨される寸法: 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 は絶対 URL です (相対 URL ではありません)
  6. 画像の寸法は正の整数です
  7. BreadcrumbList の position は 1 から始まる連続した数値です
  8. FAQPage には少なくとも 2 つの質問があります

AI 引用の最適化に関する注意: 3 つ以上のスキーマタイプを使用しているページは、AI 引用の可能性が約 13% 高くなります。このスキルは、デフォルトで 6 つのタイプ (BlogPosting、Person、Organization、BreadcrumbList、FAQPage、Imag

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Blog Schema -- JSON-LD Structured Data Generation

Generates complete, validated JSON-LD schema markup for blog posts using the @graph pattern. Combines multiple schema types into a single script tag with stable @id references for entity linking.

Workflow

Step 1: Read Content

Read the blog post and extract all schema-relevant data:

  • Title (headline)
  • Author (name, job title, social links, credentials)
  • Dates (datePublished, dateModified / lastUpdated)
  • Description (meta description)
  • FAQ section (question and answer pairs)
  • Images (cover image URL, dimensions, alt text; inline images)
  • Organization info (site name, URL, logo)
  • Word count (approximate from content length)
  • Tags/categories (for BreadcrumbList category)
  • Slug (from filename or frontmatter)

Step 2: Generate BlogPosting Schema

Complete BlogPosting with all required and recommended properties:

{
  "@type": "BlogPosting",
  "@id": "{siteUrl}/blog/{slug}#article",
  "headline": "Post title (max 110 chars)",
  "description": "Meta description (150-160 chars)",
  "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": "First 200 characters of content as excerpt..."
}

Required properties: @type, headline, datePublished, author, publisher, image. Recommended properties: description, dateModified, mainEntityOfPage, wordCount, articleBody (excerpt).

Step 3: Generate Person Schema

Author schema with stable @id for cross-referencing:

{
  "@type": "Person",
  "@id": "{siteUrl}/author/{author-slug}#person",
  "name": "Author Name",
  "jobTitle": "Role or Title",
  "url": "{siteUrl}/author/{author-slug}",
  "sameAs": [
    "https://twitter.com/handle",
    "https://linkedin.com/in/handle",
    "https://github.com/handle"
  ]
}

Optional properties (include when available):

  • alumniOf — Educational institution (Organization type)
  • worksFor — Employer (reference to Organization @id if same entity)

Step 4: Generate Organization Schema

Blog's parent organization entity:

{
  "@type": "Organization",
  "@id": "{siteUrl}#organization",
  "name": "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"
  ]
}

Logo requirements: must be a valid image URL. Google recommends logos be 112x112px minimum, 600px wide maximum. Rectangular logos preferred for BlogPosting publishers.

Step 5: Generate BreadcrumbList

Navigation breadcrumb schema showing content hierarchy:

{
  "@type": "BreadcrumbList",
  "@id": "{siteUrl}/blog/{slug}#breadcrumb",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "{siteUrl}"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Category Name",
      "item": "{siteUrl}/blog/category/{category-slug}"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Post Title",
      "item": "{siteUrl}/blog/{slug}"
    }
  ]
}

If no category is available, use "Blog" as the second breadcrumb item with {siteUrl}/blog as the URL.

Step 6: Generate FAQPage Schema

Extract Q&A pairs from the blog post's FAQ section:

{
  "@type": "FAQPage",
  "@id": "{siteUrl}/blog/{slug}#faq",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is the question?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The complete answer text (40-60 words with statistic)."
      }
    }
  ]
}

Important note: Google restricted FAQ rich results to government and health sites since August 2023. However, FAQ schema markup still provides value because:

  • AI systems (ChatGPT, Perplexity, Gemini) extract FAQ data for citations
  • It structures content for future rich result eligibility changes
  • It improves content organization signals

Step 7: Generate ImageObject

Cover image schema for the post's primary image:

{
  "@type": "ImageObject",
  "@id": "{siteUrl}/blog/{slug}#primaryimage",
  "url": "https://cdn.pixabay.com/photo/.../image.jpg",
  "width": 1200,
  "height": 630,
  "caption": "Descriptive caption matching alt text"
}

Image requirements:

  • URL must be crawlable and publicly accessible
  • Width and height should reflect actual image dimensions
  • Caption should match or closely align with the image alt text
  • Preferred dimensions: 1200x630 (OG-compatible) or 1920x1080

Step 8: Validate & Warn

Check for deprecated schema types and apply validation rules:

NEVER use these deprecated types:

  • HowTo — Deprecated September 2023 (Google no longer shows rich results)
  • SpecialAnnouncement — Deprecated July 2025
  • Practice Problem — Deprecated (education markup)
  • Dataset — Deprecated for general use
  • Sitelinks Search Box — Deprecated
  • Q&A — Deprecated January 2026 (distinct from FAQPage)

Validation checks:

  1. All @id references resolve to entities within the @graph
  2. dateModified is equal to or after datePublished
  3. headline does not exceed 110 characters
  4. description is between 50-160 characters
  5. All URLs are absolute (not relative)
  6. Image dimensions are positive integers
  7. BreadcrumbList positions are sequential starting from 1
  8. FAQPage has at least 2 questions

AI citation optimization note: Pages using 3 or more schema types have approximately 13% higher AI citation likelihood. This skill generates 6 types by default (BlogPosting, Person, Organization, BreadcrumbList, FAQPage, ImageObject) to maximize both search engine understanding and AI extraction.

Step 9: Output

Combine all schemas into a single <script> tag using the @graph pattern:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    { "@type": "BlogPosting", ... },
    { "@type": "Person", ... },
    { "@type": "Organization", ... },
    { "@type": "BreadcrumbList", ... },
    { "@type": "FAQPage", ... },
    { "@type": "ImageObject", ... }
  ]
}
</script>

@graph pattern benefits:

  • Single script tag instead of multiple — cleaner HTML
  • Entity linking via stable @id references (e.g., author references Person by @id)
  • Google and AI systems parse @graph arrays correctly
  • Easier to maintain and update as a single block

Output options:

  • Embedded HTML — Ready to paste into <head> or before </body>
  • Standalone JSON — For CMS schema fields or API injection
  • MDX component — If the project uses MDX, wrap in a component

Save the generated schema to the blog post file or to a separate schema file as the user prefers.