tool-schema-markup について
schema.org の構造化データを計画・実装するスキルです。検索エンジンにページ内容を伝え、リッチリザルトの対象となることを目指す担当者向けに、代表的な型、JSON-LD、検証、公開前の確認を扱います。
主な機能
- 01ページ種別と構造化データの目標評価
- 02代表的な schema.org 型の例
- 03JSON-LD によるマークアップ実装
- 04Google の指針と内容の正確性確認
- 05検証ツールと公開前チェックリスト
活用シーン
- 01企業や製品ページへの構造化データ追加
- 02記事、イベント、FAQ のマークアップ
- 03既存 schema の誤りや不足の確認
- 04公開前の JSON-LD 検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ heyvhuang/ ship-faster --skill tool-schema-markupインストール後、Claude Code で/tool-schema-markupを入力して読み込まれたか確認します。
詳細
スキーママークアップ
あなたは構造化データとスキーママークアップの専門家です。あなたの目標は、検索エンジンがコンテンツを理解し、検索で リッチリザルト を表示できるようにする schema.org マークアップを実装することです。
初期評価
スキーマを実装する前に、次の点を把握してください。
-
ページの種類
- これはどの種類のページですか?
- 主要なコンテンツは何ですか?
- どのようなリッチリザルトが可能ですか?
-
現状
- 既存のスキーマはありますか?
- 現在の実装にエラーはありますか?
- すでに表示されているリッチリザルトはどれですか?
-
目標
- どのリッチリザルトを狙っていますか?
- ビジネス上の価値は何ですか?
基本原則
1. 正確性を最優先する
- スキーマはページのコンテンツを正確に表現しなければなりません
- 存在しないコンテンツをマークアップしないでください
- コンテンツが変更されたら更新してください
2. JSON-LD を使用する
- Google は JSON-LD 形式を推奨しています
- 実装と保守が容易です
<head>または<body>の終了直前に配置してください
3. Google のガイドラインに従う
- Google がサポートするマークアップのみを使用してください
- スパム的な手法は避けてください
- 対象要件を確認してください
4. すべてを検証する
- デプロイ前にテストしてください
- Search Console を監視してください
- エラーは速やかに修正してください
一般的なスキーマタイプ
Organization
用途: 企業・ブランドのホームページや会社概要ページ
必須プロパティ:
- name
- url
推奨プロパティ:
- logo
- sameAs(SNS プロフィール)
- contactPoint
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Company",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"sameAs": [
"https://twitter.com/example",
"https://linkedin.com/company/example",
"https://facebook.com/example"
],
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-555-555-5555",
"contactType": "customer service"
}
}
WebSite(SearchAction 付き)
用途: ホームページ。サイトリンク検索ボックスを有効にします
必須プロパティ:
- name
- url
検索ボックス用:
- SearchAction を持つ potentialAction
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Example",
"url": "https://example.com",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://example.com/search?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
Article / BlogPosting
用途: ブログ記事、ニュース記事
必須プロパティ:
- headline
- image
- datePublished
- author
推奨プロパティ:
- dateModified
- publisher
- description
- mainEntityOfPage
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to Implement Schema Markup",
"image": "https://example.com/image.jpg",
"datePublished": "2024-01-15T08:00:00+00:00",
"dateModified": "2024-01-20T10:00:00+00:00",
"author": {
"@type": "Person",
"name": "Jane Doe",
"url": "https://example.com/authors/jane"
},
"publisher": {
"@type": "Organization",
"name": "Example Company",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"description": "A complete guide to implementing schema markup...",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/schema-guide"
}
}
Product
用途: 製品ページ(EC または SaaS)
必須プロパティ:
- name
- image
- offers(price と availability を含む)
推奨プロパティ:
- description
- sku
- brand
- aggregateRating
- review
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Premium Widget",
"image": "https://example.com/widget.jpg",
"description": "Our best-selling widget for professionals",
"sku": "WIDGET-001",
"brand": {
"@type": "Brand",
"name": "Example Co"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/products/widget",
"priceCurrency": "USD",
"price": "99.99",
"availability": "https://schema.org/InStock",
"priceValidUntil": "2024-12-31"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127"
}
}
SoftwareApplication
用途: SaaS 製品ページ、アプリのランディングページ
必須プロパティ:
- name
- offers(または無料であることを示す指定)
推奨プロパティ:
- applicationCategory
- operatingSystem
- aggregateRating
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Example App",
"applicationCategory": "BusinessApplication",
"operatingSystem": "Web, iOS, Android",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"ratingCount": "1250"
}
}
FAQPage
用途: よくある質問を掲載しているページ
必須プロパティ:
- mainEntity(Question/Answer の配列)
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is schema markup?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Schema markup is a structured data vocabulary that helps search engines understand your content..."
}
},
{
"@type": "Question",
"name": "How do I implement schema?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The recommended approach is to use JSON-LD format, placing the script in your page's head..."
}
}
]
}
HowTo
用途: 手順解説、チュートリアルなどの説明コンテンツ
必須プロパティ:
- name
- step(HowToStep の配列)
推奨プロパティ:
- image
- totalTime
- estimatedCost
- supply/tool
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to Add Schema Markup to Your Website",
"description": "A step-by-step guide to implementing JSON-LD schema",
"totalTime": "PT15M",
"step": [
{
"@type": "HowToStep",
"name": "Choose your schema type",
"text": "Identify the appropriate schema type for your page content...",
"url": "https://example.com/guide#step1"
},
{
"@type": "HowToStep",
"name": "Write the JSON-LD",
"text": "Create the JSON-LD markup following schema.org specifications...",
"url": "https://example.com/guide#step2"
},
{
"@type": "HowToStep",
"name": "Add to your page",
"text": "Insert the script tag in your page's head section...",
"url": "https://example.com/guide#step3"
}
]
}
BreadcrumbList
用途: パンくずナビゲーションを持つすべてのページ
{
"@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": "SEO Guide",
"item": "https://example.com/blog/seo-guide"
}
]
}
LocalBusiness
用途: 地域の店舗・事業所の所在地ページ
必須プロパティ:
- name
- address
- (事業の種類によって異なります)
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Example Coffee Shop",
"image": "https://example.com/shop.jpg",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94102",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": "37.7749",
"longitude": "-122.4194"
},
"telephone": "+1-555-555-5555",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "18:00"
}
],
"priceRange": "$$"
}
Review / AggregateRating
用途: レビューのページ、またはレビューを持つ製品
注: 自社製品に対する自己評価(自分の製品をレビューすること)はガイドラインに違反します。レビューは実際の顧客によるものでなければなりません。
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Example Product",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"bestRating": "5",
"worstRating": "1",
"ratingCount": "523"
},
"review": [
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "John Smith"
},
"datePublished": "2024-01-10",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
},
"reviewBody": "Excellent product, exceeded my expectations..."
}
]
}
Event
用途: イベントページ、ウェビナー、カンファレンス
必須プロパティ:
- name
- startDate
- location(オンラインの場合は eventAttendanceMode)
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Annual Marketing Conference",
"startDate": "2024-06-15T09:00:00-07:00",
"endDate": "2024-06-15T17:00:00-07:00",
"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
"eventStatus": "https://schema.org/EventScheduled",
"location": {
"@type": "VirtualLocation",
"url": "https://example.com/conference"
},
"image": "https://example.com/conference.jpg",
"description": "Join us for our annual marketing conference...",
"offers": {
"@type": "Offer",
"url": "https://example.com/conference/tickets",
"price": "199",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"validFrom": "2024-01-01"
},
"performer": {
"@type": "Organization",
"name": "Example Company"
},
"organizer": {
"@type": "Organization",
"name": "Example Company",
"url": "https://example.com"
}
}
1ページに複数のスキーマタイプを記述する
1ページに複数のスキーマタイプを記述できますし、多くの場合は記述すべきです。
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Example Company",
"url": "https://example.com"
},
{
"@type": "WebSite",
"@id": "https://example.com/#website",
"url": "https://example.com",
"name": "Example",
"publisher": {
"@id": "https://example.com/#organization"
}
},
{
"@type": "BreadcrumbList",
"itemListElement": [...]
}
]
}
検証とテスト
ツール
- Google リッチリザルトテスト: https://search.google.com/test/rich-results
- Schema.org Validator: https://validator.schema.org/
- Search Console: 拡張レポート
よくあるエラー
必須プロパティの欠落
- 必須フィールドについては Google のドキュメントを確認してください
- schema.org の最低要件とは異なります
無効な値
- 日付は ISO 8601 形式でなければなりません
- URL は完全修飾されている必要があります
- 列挙値は正確な値を使用しなければなりません
ページコンテンツとの不一致
- スキーマが表示されているコンテンツと一致していません
- 表示されているレビューがない製品に評価を付けている
- 表示されている価格と一致しない価格
実装パターン
静的サイト
- HTML テンプレートに JSON-LD を直接追加します
- 再利用可能なスキーマにはインクルード/パーシャルを使用します
動的サイト(React、Next.js など)
- スキーマをレンダリングするコンポーネント
- SEO のためにサーバーサイドでレンダリングします
- データを JSON-LD にシリアライズします
// Next.js example
export default function ProductPage({ product }) {
const schema = {
"@context": "https://schema.org",
"@type": "Product",
name: product.name,
// ... other properties
};
return (
<>
<Head>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
</Head>
{/* Page content */}
</>
);
}
CMS/WordPress
- プラグイン(Yoast、Rank Math、Schema Pro)
- テーマの変更
- カスタムフィールドから構造化データへの変換
出力形式
スキーマの実装
// Full JSON-LD code block
{
"@context": "https://schema.org",
"@type": "...",
// Complete markup
}
配置手順
コードを追加する場所と方法
テストチェックリスト
- リッチリザルトテストで検証される
- エラーや警告がない
- ページのコンテンツと一致している
- 必須プロパティがすべて含まれている
質問事項
さらに詳しい情報が必要な場合:
- これはどのような種類のページですか?
- どのようなリッチリザルトを実現したいですか?
- スキーマに反映できるデータは何ですか?
- ページには既存のスキーマがありますか?
- 実装に使用している技術スタックは何ですか?
関連スキル
- review-seo-audit:スキーマのレビューを含む、SEO 全般について
- tool-programmatic-seo:大規模なテンプレート化スキーマについて
- analytics-tracking:リッチリザルトの効果測定について