geo-schema について
geo-schema は、GEO 向けにウェブサイトの構造化データを分析し、Schema.org の JSON-LD を作成するスキルです。既存マークアップの検出と検証、業種に応じた不足スキーマの特定、コードとレポートの生成を行います。
主な機能
- 01JSON-LD・Microdata・RDFa の検出
- 02スキーマの構文とプロパティの検証
- 03業種別のスキーマ不足の特定
- 04JSON-LD コードブロックの生成
- 05構造化データの網羅性評価
活用シーン
- 01企業サイトのマークアップ確認
- 02スキーマエラーや非推奨タイプの特定
- 03業種に合った構造化データの追加
- 04GEO スキーマレポートの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ zubair-trabzada/ geo-seo-claude --skill geo-schemaインストール後、Claude Code で/geo-schemaを入力して読み込まれたか確認します。
詳細
GEO スキーマと構造化データ
目的
構造化データは、エンティティが何であり、何を行い、他のエンティティとどのようにつながっているかを AI システムに伝える、主要な機械可読シグナルです。従来、スキーママークアップは Google のリッチリザルトを獲得するためのものでしたが、GEO における役割は根本的に異なります。構造化データは、AI モデルがエンティティを理解し、信頼するための手段です。構造化データで完全なエンティティグラフを構築すると、すべての AI 検索プラットフォームで引用される確率が大幅に高まります。
このスキルの使用方法
fetch_page.pyを使用して対象ページの HTML を取得します(以下の注記を参照)。- 既存の構造化データ(JSON-LD、Microdata、RDFa)をすべて検出します。
- 検出したスキーマを Schema.org の仕様に照らして検証します。
- ビジネスタイプに基づき、不足している推奨スキーマを特定します。
- すぐに使える JSON-LD コードブロックを生成します。
- GEO-SCHEMA-REPORT.md を出力します。
Step 1: 検出
重要: WebFetch は HTML を Markdown に変換し、<head> の内容を削除するため、JSON-LD ブロックも取り除かれます。代わりに fetch_page.py を使用してください。
python3 ~/.claude/skills/geo/scripts/fetch_page.py <url> page
出力には、ページから解析されたすべての JSON-LD ブロックを含む structured_data 配列があります。
JSON-LD のスキャン
HTML 内の <script type="application/ld+json"> ブロックを探します。各ブロックを JSON として解析します。ページには複数の JSON-LD ブロックが含まれる場合があるため、すべて収集してください。
Microdata のスキャン
itemscope、itemtype、itemprop 属性を持つ要素を探します。ネストされた項目の階層をマッピングします。注:Microdata は JSON-LD よりも AI クローラーによる解析が困難です。Microdata だけが見つかった場合は、JSON-LD への移行を推奨してください。
RDFa のスキャン
typeof、property、vocab 属性を持つ要素を探します。Microdata と同様に、JSON-LD への移行を推奨してください。
優先順位
GEO では、JSON-LD が強く推奨される形式です。Google、Bing、AI プラットフォームはいずれも、JSON-LD を最も確実に処理します。サイトが Microdata または RDFa のみを使用している場合は、優先度の高い移行事項として指摘してください。
Step 2: 検証
検出した各スキーマブロックについて、以下を検証します。
- 有効な JSON:JSON-LD の構文は正しいですか?末尾のカンマ、引用符で囲まれていないキー、不正な形式の文字列がないか確認します。
- 有効な @type:
@typeは認識済みの Schema.org タイプと一致していますか?https://schema.org/docs/full.html と照合します。 - 必須プロパティ:スキーマに、そのタイプの必須プロパティがすべて含まれていますか?(タイプごとの要件は以下を参照。)
- 推奨プロパティ:AI からの発見可能性を高める推奨プロパティがスキーマに含まれていますか?
- sameAs リンク:他のプラットフォーム上のプレゼンスにリンクする
sameAsプロパティがスキーマに含まれていますか? - URL の有効性:スキーマ内のすべての URL にアクセスできますか(404 ではありませんか)?
- ネスト:スキーマは適切にネストされていますか(例:Article 内の author、Organization 内の address)?
- レンダリング方法:JSON-LD はサーバーでレンダリングされた HTML 内にありますか、それとも JavaScript 経由で挿入されていますか?Google の 2025 年 12 月のガイダンスによると、JavaScript で挿入された構造化データは処理が遅れる可能性があります。JavaScript の実行を必要とするスキーマがあれば指摘してください。
Step 3: GEO のスキーマタイプ
Organization(必須 — すべてのビジネスサイト)
すべての AI プラットフォームでのエンティティ認識に不可欠です。AI モデルがビジネスの内容を識別するために使用します。
必須プロパティ:
@type:"Organization"(または Corporation、LocalBusiness などのサブタイプ)name:正式なビジネス名url:公式ウェブサイトの URLlogo:ロゴ画像の URL(ImageObject が推奨されます)
GEO で推奨されるプロパティ:
sameAs:すべてのプラットフォームの URL の配列(以下の sameAs 戦略を参照)description:組織の説明(1~2 文)foundingDate:ISO 8601 形式の日付founder:Person スキーマaddress:PostalAddress スキーマcontactPoint:電話番号、メールアドレス、contactType を含む ContactPointareaServed:対象地域numberOfEmployees:QuantitativeValueindustry:テキストまたは DefinedTermaward:受賞歴の配列knowsAbout:組織が専門とするトピックの配列(GEO に強いシグナル)
LocalBusiness(実店舗があるビジネス向け)
Organization を拡張します。ローカル AI 検索結果と Google Gemini に不可欠です。
追加の必須プロパティ:
address:完全な PostalAddresstelephone:電話番号openingHoursSpecification:営業時間
GEO で推奨されるプロパティ:
geo:GeoCoordinates(緯度、経度)priceRange:価格帯の指標aggregateRating:AggregateRating スキーマreview:Review スキーマの配列hasMap:Google Maps の URL
Article + Author(出版社には必須)
Author スキーマは、AI プラットフォームにおいて最も強力な E-E-A-T シグナルの 1 つです。
Article の必須項目:
@type:"Article"(または NewsArticle、BlogPosting、TechArticle)headline:記事のタイトルdatePublished:ISO 8601 形式dateModified:ISO 8601 形式(鮮度シグナルに不可欠)author:Person または Organization スキーマpublisher:ロゴを含む Organization スキーマimage:代表画像
GEO に必要な Author(Person):
name:氏名url:サイト上の著者ページ URLsameAs:LinkedIn、Twitter、個人サイト、Google Scholar、ORCIDjobTitle:職業上の肩書きworksFor:Organization スキーマknowsAbout:専門分野の配列alumniOf:出身教育機関award:専門分野での受賞歴
Product(E コマース向け)
必須:
name、description、imageoffers:価格、priceCurrency、availability を含む Offerbrand:Brand スキーマskuまたはgtin/mpn
GEO で推奨されるプロパティ:
aggregateRating:AggregateRatingreview:個別のレビューの配列category:製品カテゴリmaterial、weight、width、height(該当する場合)
FAQPage
2024 年時点の状況:Google は、FAQ のリッチリザルトを政府機関および医療関連サイトに限定しています。ただし、FAQPage スキーマは引き続き GEO に役立ちます。AI プラットフォームは、質問と回答を抽出するために FAQ の構造化データを解析します。リッチリザルトが表示されない場合でも、AI が読み取りやすくなるよう実装してください。
構造:
@type:"FAQPage"mainEntity:Question スキーマの配列。各要素には Answer スキーマを含むacceptedAnswerを設定します
SoftwareApplication(SaaS 向け)
必須:
name、descriptionapplicationCategory:例:"BusinessApplication"operatingSystem:対応プラットフォームoffers:価格
GEO で推奨されるプロパティ:
aggregateRating:ユーザー評価featureList:機能の配列(引用に強いシグナル)screenshot:スクリーンショットsoftwareVersion:現在のバージョンreleaseNotes:変更履歴へのリンク
WebSite + SearchAction(サイトリンク検索ボックス向け)
構造:
{
"@type": "WebSite",
"name": "Site Name",
"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"
}
}
Person(単独で使用 — 個人ブランド、著者、オピニオンリーダー向け)
About/Bio ページで単独のスキーマとして使用します。個人の専門性を示すエンティティグラフを構築できます。
必須: name、url
GEO で推奨: sameAs、jobTitle、worksFor、knowsAbout、alumniOf、award、description、image
speakable プロパティ(音声/AI アシスタント向け)
speakable プロパティは、コンテンツの特定のセクションが音声や AI アシスタントでの利用に特に適していることを示します。Article または WebPage のスキーマに追加してください。
{
"@type": "Article",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [".article-summary", ".key-takeaway"]
}
}
これにより、引用または読み上げに最適な文章がどれかを AI アシスタントに伝えられます。
ステップ 4:廃止・変更されたスキーマにフラグを立てる
| スキーマ | ステータス | 注記 |
|---|---|---|
| HowTo | リッチリザルトは 2023 年 8 月に廃止 | AI による解析には引き続き有用ですが、リッチリザルトは保証しないでください |
| FAQPage | 2023 年 8 月より政府機関/医療機関に制限 | AI による解析には引き続き有用です(上記を参照) |
| SpecialAnnouncement | 2023 年に廃止 | COVID 向けのスキーマでした。まだ存在する場合は削除してください |
| CourseInfo | 2024 年の Course の更新により置き換え | 更新された Course スキーマのプロパティを使用してください |
VideoObject contentUrl | 2024 年に動作が変更 | ページの URL ではなく、実際の動画ファイルを指定する必要があります |
| Review スニペット | 2024 年に適用が厳格化 | 商品ページの自己宣伝的なレビューは表示されない場合があります |
廃止されたスキーマが見つかった場合はフラグを立て、代替案を推奨してください。
ステップ 5:sameAs 戦略(エンティティ認識にとって極めて重要)
sameAs プロパティは、GEO において最も重要な構造化データプロパティです。AI システムに「自分のウェブサイト上のこのエンティティは、他の場所にあるこれらのプロフィールと同一のエンティティです」と伝えます。これにより、AI プラットフォームが情報源を検証し、信頼して引用するために利用するエンティティグラフが作成されます。
推奨する sameAs リンク(優先順位順)
- Wikipedia の記事 — 最も権威のあるエンティティリンク
- Wikidata の項目 — 機械可読なエンティティ識別子(例:
https://www.wikidata.org/wiki/Q12345) - LinkedIn — 会社ページまたは個人プロフィール
- YouTube — チャンネル URL
- Twitter/X — プロフィール URL
- Facebook — ページ URL
- Crunchbase — 会社プロフィール(スタートアップ/テック企業向け)
- GitHub — 組織または個人のプロフィール(テック企業向け)
- Google Scholar — 著者プロフィール(研究者/学術関係者向け)
- ORCID — 研究者識別子(学術関係者向け)
- Instagram — プロフィール URL
- Apple App Store/Google Play — アプリの掲載ページ(ソフトウェア向け)
- BBB — Better Business Bureau の掲載情報(米国企業向け)
- 業界ディレクトリ — 関連する業界特化型ディレクトリ
sameAs の監査プロセス
- エンティティに関する既知のウェブ上の情報をすべて収集します
- 各 URL が正常に表示されること(404 やリダイレクトになっていないこと)を確認します
- Organization/Person スキーマにすべての URL が含まれていることを確認します
- 各プラットフォーム上の情報(名前、説明、設立日など)に一貫性があることを確認します
- エンティティが存在すべきなのに存在していないプラットフォームにフラグを立てます
ステップ 6:JSON-LD の生成
検出したビジネスタイプに基づき、そのまま貼り付けて使える JSON-LD ブロックを生成します。必ず次のものを生成してください。
- Organization または Person(エンティティタイプに応じて) — 常に生成
- SearchAction を含む WebSite — ホームページ用に常に生成
- ビジネスタイプに応じたスキーマ — 出版社には Article、EC サイトには Product、地域のビジネスには LocalBusiness、SaaS には SoftwareApplication
- BreadcrumbList — ホームページより下層にあるページ向け
生成ルール
- 複数のスキーマを 1 つの JSON-LD ブロックに含めるには、
@graphパターンを使用します - すべての URL は絶対 URL(相対 URL ではないもの)にします
- スキーマ間の相互参照には
@idプロパティを含めます - すべての日付に ISO 8601 を使用します
- Article スキーマには、主要なコンテンツセクションを指す CSS セレクターを指定して
speakableを含めます - JSON-LD は
<head>セクションに配置します。JavaScript 経由で挿入しないでください
テンプレート:GEO シグナルをすべて含む Organization
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Company Name",
"url": "https://example.com",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png",
"width": 600,
"height": 60
},
"description": "Concise description of what the company does.",
"foundingDate": "2020-01-15",
"founder": {
"@type": "Person",
"name": "Founder Name",
"sameAs": "https://www.linkedin.com/in/founder"
},
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "City",
"addressRegion": "State",
"postalCode": "12345",
"addressCountry": "US"
},
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-555-555-5555",
"contactType": "customer service",
"email": "[email protected]"
},
"sameAs": [
"https://en.wikipedia.org/wiki/Company_Name",
"https://www.wikidata.org/wiki/Q12345",
"https://www.linkedin.com/company/company-name",
"https://www.youtube.com/@companyname",
"https://twitter.com/companyname",
"https://github.com/companyname",
"https://www.crunchbase.com/organization/company-name"
],
"knowsAbout": [
"Topic 1",
"Topic 2",
"Topic 3"
]
}
スコアリング基準(0~100)
| 基準 | 点数 | 採点方法 |
|---|---|---|
| Organization/Person スキーマが存在し、完全である | 15 | 完全なら15点、基本的な内容なら10点、なければ0点 |
| sameAs リンク(5つ以上のプラットフォーム) | 15 | 有効な sameAs リンク1つにつき3点、最大15点 |
| 著者の詳細を含む Article スキーマ | 10 | 著者スキーマが完全なら10点、名前のみなら5点、なければ0点 |
| ビジネスタイプ固有のスキーマが存在する | 10 | 完全なら10点、一部なら5点、なければ0点 |
| WebSite + SearchAction | 5 | 存在する場合は5点、存在しない場合は0点 |
| 内部ページに BreadcrumbList がある | 5 | 存在する場合は5点、存在しない場合は0点 |
| JSON-LD 形式(Microdata/RDFa ではない) | 5 | JSON-LD なら5点、混在している場合は3点、Microdata/RDFa のみの場合は0点 |
| サーバー側でレンダリングされている(JS による挿入ではない) | 10 | HTML ソースに含まれていれば10点、JS で head 内にある場合は5点、動的な JS の場合は0点 |
| 記事に speakable プロパティがある | 5 | 存在する場合は5点、存在しない場合は0点 |
| 有効な JSON + 有効な Schema.org タイプ | 10 | エラーがなければ10点、軽微な問題があれば5点、重大なエラーがあれば0点 |
| Organization/Person に knowsAbout プロパティがある | 5 | 3つ以上のトピックとともに存在する場合は5点、存在しない場合は0点 |
| 非推奨のスキーマがない | 5 | 問題がなければ5点、非推奨のスキーマが見つかった場合は0点 |
出力形式
次を含む GEO-SCHEMA-REPORT.md を生成します。
# GEO Schema & Structured Data Report — [Domain]
Date: [Date]
## Schema Score: XX/100
## Detected Schemas
| Page | Schema Type | Format | Status | Issues |
|---|---|---|---|---|
| / | Organization | JSON-LD | Valid | Missing sameAs |
| /blog/post-1 | Article | JSON-LD | Valid | No author schema |
## Validation Results
[List each schema with pass/fail per property]
## Missing Recommended Schemas
[List schemas that should be present based on business type but are not]
## sameAs Audit
| Platform | URL | Status |
|---|---|---|
| Wikipedia | [URL or "Not found"] | Present/Missing |
| LinkedIn | [URL or "Not found"] | Present/Missing |
[Continue for all recommended platforms]
## Generated JSON-LD Code
[Ready-to-paste JSON-LD blocks for each missing or incomplete schema]
## Implementation Notes
- Where to place each JSON-LD block
- Server-rendering requirements
- Testing with Google Rich Results Test and Schema.org Validator