mcpField
S
seo-schema-structured-data

seo-schema-structured-data

github.com/autom8mindsマーケティング・グロース151 回インストール13 週間前に更新
リポジトリ

seo-schema-structured-data について

seo-schema-structured-data は、Schema.orgの構造化データをJSON-LDで作成・確認するためのリファレンススキルです。一般的なエンティティ、Google対応プロパティ、検証手順を扱い、サイト運営者や開発者向けです。

主な機能

  1. 01JSON-LDの構造と関連を解説
  2. 02一般的なSchema.org型を紹介
  3. 03Google対応プロパティを整理
  4. 04MCPツールでSchemaを抽出・生成
  5. 05構造化データの検証手順を説明

活用シーン

  1. 01記事ページに構造化データを追加
  2. 02商品や地域の事業者を記述
  3. 03URL上の既存Schemaを確認
  4. 04公開前にマークアップを検証

MCP 対応

READMEでは、`extract_schema` と `generate_schema` というMCPツールを紹介しています。URLから構造化データを抽出し、指定した型のマークアップを生成します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/autom8minds/seo-skills --skill seo-schema-structured-data

インストール後、Claude Code で/seo-schema-structured-dataを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
RICH_RESULTS_GUIDE.md
SCHEMA_TEMPLATES.md
VALIDATION_RULES.md

詳細

Schema.org 構造化データと JSON-LD


JSON-LD の基礎

JSON-LD(JavaScript Object Notation for Linked Data)は、Google が推奨する構造化データ形式です。HTML ページの <head> または <body> にある <script> タグを介して挿入します。

基本構文
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How to Implement Structured Data",
  "author": {
    "@type": "Person",
    "name": "Jane Smith"
  }
}
</script>
主なキーワード
キーワード用途例
@context語彙を宣言します(常に https://schema.org)"@context": "https://schema.org"
@typeエンティティの型を指定します"@type": "Article"
@idエンティティの一意な識別子です(相互参照が可能になります)"@id": "https://example.com/#organization"
@graph1 つの JSON-LD ブロックに複数のエンティティを含めます"@graph": [{ ... }, { ... }]
エンティティのネスト

エンティティは直接ネストすることも、@id で参照することもできます。

{
  "@context": "https://schema.org",
  "@type": "Article",
  "author": {
    "@type": "Person",
    "name": "Jane Smith",
    "@id": "https://example.com/#jane"
  },
  "publisher": {
    "@id": "https://example.com/#organization"
  }
}
配列

プロパティに複数の値がある場合は、配列を使用します。

{
  "@type": "Article",
  "author": [
    { "@type": "Person", "name": "Jane Smith" },
    { "@type": "Person", "name": "John Doe" }
  ]
}
@graph パターン(複数エンティティのページ)

1 つのページで複数のエンティティ(例:Organization + WebPage + BreadcrumbList)を記述するには、@graph を使用します。

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://example.com/#organization",
      "name": "Example Corp",
      "url": "https://example.com"
    },
    {
      "@type": "WebPage",
      "@id": "https://example.com/about/#webpage",
      "url": "https://example.com/about/",
      "name": "About Us",
      "isPartOf": { "@id": "https://example.com/#website" }
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" },
        { "@type": "ListItem", "position": 2, "name": "About" }
      ]
    }
  ]
}

Google がサポートするスキーマの型

次の型は Google に認識され、リッチリザルトを表示する場合があります。各セクションでは、必須(R)および推奨(Rec)プロパティを示します。


Article(NewsArticle、BlogPosting)

表示されるもの:検索結果に見出し、画像、日付を含む記事のリッチリザルト。

プロパティステータス備考
headlineR最大 110 文字
imageR幅 696px 以上。複数の画像が推奨されます
datePublishedRISO 8601 形式
dateModifiedRecISO 8601 形式
authorRname と url を含む Person または Organization
publisherRecname と logo を含む Organization
descriptionRec記事の短い要約
mainEntityOfPageRecページの URL

MCP ツール: 任意の記事 URL で extract_schema を使用して現在の構造化データを確認し、次に型 Article を指定して generate_schema を使用し、準拠したマークアップを生成します。


Product(Offer、AggregateRating を含む)

表示されるもの:価格、在庫状況、評価の星を含む商品のリッチリザルト。

プロパティステータス備考
nameR商品名
imageR画像が 1 つ以上
descriptionRec商品の説明
skuRec商品管理単位
brandRecブランド名
offersROffer または AggregateOffer
offers.priceR数値の価格
offers.priceCurrencyRISO 4217 通貨コード
offers.availabilityRItemAvailability 列挙値(例:https://schema.org/InStock)
offers.urlRec購入先 URL
aggregateRatingRecratingValue と reviewCount を含む AggregateRating
reviewRec個別の Review オブジェクト

ネストのパターン: AggregateRating と Offer は Product の中にネストします。

{
  "@type": "Product",
  "name": "Widget",
  "offers": {
    "@type": "Offer",
    "price": "29.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.5",
    "reviewCount": "120"
  }
}

FAQPage(Question / Answer を含む)

表示されるもの:検索結果で展開できる FAQ アコーディオン。

プロパティステータス備考
mainEntityRQuestion オブジェクトの配列
Question.nameR質問文
Question.acceptedAnswerRAnswer オブジェクト
Answer.textR回答文(HTML を使用できます)

ルール:

  • 主なコンテンツが質問と回答の一覧であるページにのみ FAQPage を使用してください。
  • 各質問と回答はページ上に表示されている必要があります。
  • フォーラムや質問が 1 つだけのページには使用しないでください(代わりに QAPage を使用してください)。

HowTo(HowToStep を含む)

トリガー:ステップごとのリッチリザルトまたはカルーセルです。

プロパティステータス備考
nameRハウツーのタイトル
stepRHowToStep オブジェクトの配列
step.nameRステップのタイトル
step.textRステップの手順
step.imageRec各ステップの画像
step.urlRecページ上のステップへの URL アンカー
totalTimeRecISO 8601 形式の所要時間(例:PT30M)
estimatedCostRecMonetaryAmount オブジェクト
supplyRec必要な HowToSupply アイテム
toolRec必要な HowToTool アイテム

LocalBusiness(およびサブタイプ)

トリガー:ローカルナレッジパネル、マップパックの対象データです。

サブタイプ:Restaurant、Dentist、LegalService、RealEstateAgent、MedicalBusiness などです。

プロパティステータス備考
nameRビジネス名
addressRPostalAddress オブジェクト
telephoneRec電話番号
openingHoursSpecificationRec営業時間の配列
geoRecGeoCoordinates(緯度/経度)
urlRecウェブサイトの URL
imageRecビジネスの写真
priceRangeRec例:$$ または $10-50
servesCuisineRecRestaurant サブタイプ用
aggregateRatingRecAggregateRating
reviewRecReview オブジェクト

Organization

トリガー:ナレッジパネルのデータ、検索結果のロゴです。

プロパティステータス備考
nameR組織名
urlRウェブサイトの URL
logoRImageObject または URL(最小 112x112px、正方形を推奨)
sameAsRecソーシャルプロフィール URL の配列
contactPointRecContactPoint オブジェクト
addressRecPostalAddress
descriptionRec短い説明
foundingDateRecISO 8601 形式の日付

BreadcrumbList

トリガー:検索結果で URL に代わって表示されるパンくずリストです。

プロパティステータス備考
itemListElementRListItem オブジェクトの配列
ListItem.positionR整数(1 から始まるインデックス)
ListItem.nameRパンくずリストのラベル
ListItem.itemR*URL(*最後の項目では省略)

WebSite(サイトリンク検索ボックス用の SearchAction を含む)

トリガー:ブランド名で検索した際のサイトリンク検索ボックスです。

プロパティステータス備考
urlRホームページの URL
nameRecサイト名
potentialActionRSearchAction オブジェクト
SearchAction.targetR{search_term_string} を含む URL テンプレート
SearchAction.query-inputR"required name=search_term_string"
{
  "@type": "WebSite",
  "url": "https://example.com/",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "https://example.com/search?q={search_term_string}",
    "query-input": "required name=search_term_string"
  }
}

Event

トリガー:日付、場所、チケット情報を含むイベントのリッチリザルトです。

プロパティステータス備考
nameRイベント名
startDateRISO 8601 形式の日時
locationRPlace または VirtualLocation
location.nameR会場名
location.addressRPostalAddress
endDateRecISO 8601 形式の日時
descriptionRecイベントの説明
imageRecイベントの画像
offersRec価格/URL/提供状況を含む Offer
performerRecPerson または Organization
organizerRecPerson または Organization
eventStatusRecEventScheduled、EventCancelled、EventPostponed など
eventAttendanceModeRecOfflineEventAttendanceMode、OnlineEventAttendanceMode、MixedEventAttendanceMode

レシピ

トリガー:画像、評価、調理時間を含むレシピのリッチリザルト。

プロパティステータス備考
nameRレシピ名
imageRアスペクト比の異なる複数の画像
authorR人物または組織
datePublishedRecISO 8601
descriptionRec簡単な説明
prepTimeRecISO 8601 の所要時間
cookTimeRecISO 8601 の所要時間
totalTimeRecISO 8601 の所要時間
recipeYieldRec例:"4 servings"
recipeIngredientRec文字列の配列
recipeInstructionsRHowToStep オブジェクトの配列
nutritionRecNutritionInformation(カロリー)
aggregateRatingRecAggregateRating
videoRecVideoObject

VideoObject

トリガー:サムネイル、再生時間、アップロード日を含む動画のリッチリザルト。

プロパティステータス備考
nameR動画のタイトル
descriptionR動画の説明
thumbnailUrlRサムネイル画像の URL
uploadDateRISO 8601 の日付
contentUrlRec動画ファイルへの直接 URL
embedUrlRec埋め込み URL
durationRecISO 8601 の所要時間
interactionStatisticRec再生回数

Course

トリガー:検索および Google for Education におけるコースのリッチリザルト。

プロパティステータス備考
nameRコースのタイトル
descriptionRコースの説明
providerRコースを提供する組織
offersRec価格を含む Offer
courseCodeRec識別子
hasCourseInstanceRecスケジュールを含む CourseInstance

SoftwareApplication

トリガー:評価、価格、OS を含むソフトウェアのリッチリザルト。

プロパティステータス備考
nameRアプリ名
operatingSystemRec例:"Windows 10"、"Android"
applicationCategoryRec例:"GameApplication"、"BusinessApplication"
offersR価格を含む Offer(無料の場合は "0" を使用)
aggregateRatingRecAggregateRating
reviewRecReview オブジェクト

Review

トリガー:星評価を含むレビューのスニペット。

プロパティステータス備考
itemReviewedRレビュー対象のエンティティ(Product、LocalBusiness など)
authorRレビューを書いた人物
reviewRatingRratingValue を含む Rating オブジェクト
reviewRating.bestRatingRec評価の最大値
reviewRating.worstRatingRec評価の最小値
datePublishedRecISO 8601 の日付
reviewBodyRecレビューの全文

動的なスキーマ生成パターン

プログラムでページを構築する場合は、データモデルからスキーマを生成します。

サーバーサイドレンダリング(Next.js の例)
export default function ProductPage({ product }) {
  const schema = {
    "@context": "https://schema.org",
    "@type": "Product",
    "name": product.title,
    "image": product.images,
    "description": product.description,
    "sku": product.sku,
    "brand": { "@type": "Brand", "name": product.brand },
    "offers": {
      "@type": "Offer",
      "price": product.price,
      "priceCurrency": "USD",
      "availability": product.inStock
        ? "https://schema.org/InStock"
        : "https://schema.org/OutOfStock"
    }
  };

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
      />
      {/* Page content */}
    </>
  );
}
CMS 統合パターン

WordPress、Shopify、またはヘッドレス CMS の場合:

  1. テンプレートまたはプラグインで、CMS のフィールドをスキーマのプロパティに対応付けます。
  2. 価格、在庫状況、評価のデータがライブデータソースから取得されることを確認します。
  3. 値があるプロパティのみを出力するよう、条件分岐を使用します。

検証方法

ステップ 1:リッチリザルト テスト(Google)
ステップ 2:Schema Markup Validator(Schema.org)
ステップ 3:Google Search Console
  • 構造化データのレポートについて、拡張 セクションを確認します。
  • エラー、警告、有効なアイテム数を監視します。
  • 構造化データを含むページのインデックス登録状況を確認します。

MCP ツール: 任意の URL で extract_schema を使用すると、すべての JSON-LD、Microdata、RDFa を取得できます。対象タイプを指定して generate_schema を使用すると、ページのコンテンツから有効なマークアップを生成できます。


よくある落とし穴

落とし穴問題対処方法
見えないコンテンツスキーマでユーザーに表示されないコンテンツを記述している構造化データの各プロパティが、ページに表示されるコンテンツと一致するようにします
必須フィールドの不足Google が不完全なマークアップを無視するタイプごとに必要なプロパティをすべて必ず含めます
誤った @typeリッチリザルトで Google がサポートしていないタイプを使用しているGoogle がドキュメントで説明しているタイプのみを使用します
偽のレビュースキーマに捏造された評価やレビューが含まれている実際のユーザーによる本物のレビューのみをマークアップします
古い価格商品スキーマに古い価格が表示されている最新のデータからスキーマを動的に生成します
複数の競合するタイプ1 つのページに、異なるデータを含む Product スキーマが 2 つあるエンティティごとに正規のスキーマを 1 つ使用します
自己参照の問題参照先が存在しない @idすべての @id 参照に対応する定義があることを確認します
日付形式の誤りISO 8601 ではなく MM/DD/YYYY を使用している常に YYYY-MM-DD または YYYY-MM-DDTHH:MM:SS+00:00 を使用します
HTTP の画像 URLHTTPS ではなく HTTP 経由で画像を参照しているすべての画像に HTTPS の URL を使用します
スパムポリシー違反SEO 操作のみを目的としてコンテンツをマークアップしているGoogle の構造化データに関するスパムポリシーに従います

関連スキル

  • seo-on-page-optimization -- コンテンツとメタタグの最適化向け
  • seo-technical-audit -- クロール可能性とインデックス登録の問題向け
  • seo-mcp-tools-expert -- MCP ツールの詳細な使用方法向け

構造化データに役立つ主な MCP ツール

ツール用途
extract_schema任意の URL から既存の構造化データを抽出します
generate_schema指定したページとタイプに対応する有効な JSON-LD マークアップを生成します

すぐに使える JSON-LD テンプレートについては、SCHEMA_TEMPLATES.md を参照してください。 Google の検証要件については、VALIDATION_RULES.md を参照してください。 各タイプがどのリッチリザルトを表示するかについては、RICH_RESULTS_GUIDE.md を参照してください。

コメント