個人用ウェブサイトへの JSON-LD の実装

個人用ウェブサイトへのJSON-LDの実装

JSON-LD (JSON Linked Data) は、ウェブページに構造化データを追加するための標準化された形式であり、ウェブクローラーやAIエンジンがサイトのセマンティックな構造を理解することを可能にします。JSON-LDを実装することで、より豊かなリンクプレビュー、検索順位の向上、およびLLMクローラーによる引用精度の向上が期待できます。

JSON-LDの基本

JSON-LDは、HTMLドキュメントの <head> セクションに MIME タイプ application/ld+json を持つ <script> タグを追加することで実装されます。これにより、ブラウザのJavaScriptエンジンはコンテンツを無視し、Googlebotなどの特化型クローラーがそれを解析できるようになります。

JSON-LDドキュメントのコアコンポーネント

  • @context: 使用される語彙を定義します。ほとんどのウェブクローラーは Schema.org を標準としています。
  • @graph: 弧によって接続された複数のノードを含む、ラベル付きの有向グラフです。
  • Nodes: グラフ内の個々のエンティティであり、以下によって定義されます:
    • @type: ノードのカテゴリ(例: WebSite, Person)。
    • @id: 一意の識別子。通常はハッシュを含むURL(例: https://example.com/#website)であり、これによりクローラーは異なるページにわたって同じエンティティのプロパティを統合できます。
    • Properties: ノードの属性を記述するキーと値のペア。

個人用ウェブサイトに不可欠なノード

SEOと発見可能性を最大化するために、個人用ウェブサイトは特定のSchema.orgノードを実装すべきです。

WebSite と WebPage

WebSite ノードは、サイト名や説明など、ドメイン全体の高レベルなメタデータを提供します。ルートページには詳細な WebSite ノードを含めるべきですが、後続のページでは、シングルページクローラーに十分なコンテキストを提供するために、簡略化されたバージョンを使用できます。

WebPage は、物理的なHTMLページとそのコンテンツを記述します。これは、ProfilePage(「About」ページ用)や CollectionPage(ブログのインデックスやプロフィールのリスト用)などのサブタイプにさらに特化させることができる汎用的なノードです。

Person

Person ノードは、コンテンツの品質指標とLLMの引用において極めて重要です。一貫したアイデンティティを確立するために、個人のサイトのすべてのページに含めるべきです。主なプロパティは以下の通りです:

  • url: アイデンティティを固定するルートページ。
  • name, givenName, familyName: 個人の明確な識別。
  • sameAs: 他のプロフェッショナルなプロフィール(GitHub, LinkedIn, など)へのURLのリスト。これにより、クローラーはナレッジグラフを構築し、同姓同名の人物を区別できます。
  • image: その人物に関連付けられた標準的な写真またはロゴ。

SoftwareApplication

プロジェクトを紹介する開発者の場合、SoftwareApplication ノード(または MobileApplicationWebApplication などのサブタイプ)は、ソフトウェアに関するメタデータを提供します。完全なメタデータを確保するために、無料およびオープンソースソフトウェア (FOSS) の場合は、価格が 0 である offers プロパティを含めることが推奨されます。

コンテンツとナビゲーションの整理

BreadcrumbList

BreadcrumbList は、サイト所有者が検索エンジンに対して、検索結果におけるページ階層をどのように表現するかを制御することを可能にします。これは、特に長いURLパスを読みやすい形式(例: Home > Blog > Post Title)に短縮するのに役立ちます。

Blog と BlogPosting

技術ブログを持つサイトの場合、2層構造が使用されます:

  1. Blog: このノードはブログのインデックスページに配置され、WebSite と個々の投稿の間の架け橋として機能します。license プロパティ(例: Creative Commons)を含めることで、クローラーに利用規約を通知できます。
  2. BlogPosting: このノードは個々の記事に適用されます。headline, datePublished, dateModified, および authorPerson ノードを指す)を含めるべきです。image プロパティは、ソーシャルリンクプレビューに使用される Open Graph (OG) 画像と一致させる必要があります。

実装の要約テーブル

Node Type Recommended Placement Primary Purpose
WebSite すべてのページ (ルートでは詳細に) ドメインレベルのメタデータとサイト名付け
Person すべてのページ アイデンティティ、権威性、および LLM 引用
WebPage すべてのページ 特定の HTML ドキュメントの説明
BreadcrumbList すべてのページ (ルート以外) 検索エンジンのパス表現
Blog ブログのインデックスページ ブログ投稿のアグリゲーター
BlogPosting 一部のア記事 (個別のブログ投稿) 記事固有のメタデータとリッチスニペット

Sources