このページでは、検索演算子が依存する構造化データを追加する方法について説明します。
ウェブページは自由形式のテキストで埋められていることが多いため、人間には読むのは簡単ですが、コンピュータにとっては理解しにくくなります。一部のウェブページでは、URL やページタイトルに埋め込まれたページの日付や、HTML コードに機械で読み取り可能なフィールドが埋め込まれたなど、読みやすい構造の情報が含まれています。Google はウェブページからさまざまな構造化データを抽出します。このページでは、Google が抽出した構造化データタイプについて説明します。これらは、カスタム スニペットと構造化スニペットで使用できます。
概要
DVD を販売しているウェブページを読むと、タイトルの内容、レビュアーによる映画の評判、評価がすぐにわかります。しかし コンピュータは情報の構造を理解していないため 同じことは不可能です
たとえば、ページに DVD に関するコンテンツや、他のアイテムのおすすめ、他のショップの広告、ユーザーからのコメントが掲載されている場合、このページでは販売されている DVD だけでなく、アイテムごとに価格が異なる可能性があります。DVD の価格は簡単に計算できますが、パソコンでは他の価格を非表示にすることはできません。一部の高度なプログラムでは、ウェブページで価格のみを確認できますが、DVD の価格のみを確認するルールを決定することはできません。
構造化データ形式は、ウェブページの構造とコンテンツを標準化するルールです。これは、コンピュータでその意味やセマンティクスを処理できるように、テキスト スニペットに適用するマークアップです。マークアップによってウェブサイトのフォーマットが変更されることはなく、XHTML タグで囲まれたメタデータとテキストがコンピュータにとってわかりやすいものになるだけです。
プログラム可能検索エンジンでは、以下の形式が認識されます。
- PageMaps: ページにメタデータを追加する、目に見えない XML のブロック。
- JSON-LD: JSON 形式を使用した非表示の構造化データ。
- microformats: 事前定義されたタイプに沿って、表示されるページ コンテンツをマークアップするために使用されるタグです。
- RDFa: 表示されるページのコンテンツを任意のタイプに沿ってマークアップするための代替規格。
- microdata: 表示されるページ コンテンツをマークアップするための新しい HTML5 標準です。
<meta>
タグ: 標準の HTML タグで、そのサブセットが Google によって解析されます。- ページ日付: 日付を示すページ上の機能(Google が解析を試みる)
1 つまたは複数の形式を使用できます。プログラム可能検索エンジンと異なり、Google 検索ではリッチ スニペットの生成時に JSON-LD、Microdata、RDFa のみが使用されます。また、Google 検索には、ユーザーに表示する情報を決定するための独自のアルゴリズムとポリシーがあります。そのため、ページに追加した構造化データの要素がプログラム可能検索エンジンでは表示されても、そのデータが Google 検索の検索結果には使用されないことがあります。
以下に、レビューサイトのプレーン HTML の理想的なスニペットを示します。
<div> <div> <h1>Pizza My Heart</h1> </div> <span>88%</span> like it <a href="#reviews">See all 12 reviews</a> <span>Under $10 per entree</span> <div>
次のスニペットは、microformats という形式で拡張された前述の HTML コードを示しています。
<div class="hreview-aggregate"> <div class="vcard item"> <h1 class="fn">Pizza My Heart</h1> </div> <span class="rating average">88%</span> like it <a href="#reviews">See all <span class="count">12</span> reviews</a> <span class="pricerange">Under $10 per entree</span> <div>プログラム可能検索エンジンによって抽出された機能は、こちらの方法で表示できます。
標準の構造化データ形式をウェブページに組み込むと、プログラム可能検索エンジンだけでなく、同じ標準をサポートするサービスやツールでもデータを使用できるようになります。ウェブページ内の最も重要な情報に構造化データを適用することで、検索結果に直接表示できます。たとえば Android デバイスを販売するウェブサイトがある場合は、評価、価格、在庫状況などの構造化データに関する構造化データを追加します。ユーザーが Android デバイスを検索すると、評価、料金、在庫状況が一目でわかります。
これにより コンピュータがウェブページのデータの種類を認識できるようになります次に求めるのは、コンピュータでは、さまざまなウェブページで情報を見つけて組み合わせるという単純な作業を始めることもできます。これにより、ユーザーは、欲しいアイテムを見つけるために複数のページをふるいにかけるなど、まったく退屈なタスクから解放されます。プログラム可能検索エンジンなどの検索エンジンは、ウェブページ内の構造化データを処理して、カスタム スニペットや構造化データなどの便利でわかりやすい方法で表示できます。
プログラム可能検索エンジンにデータを提供する
Google では、Pagemap、<meta>
タグのサブセット、おおよそのページの日付など、主にプログラム可能検索エンジンで使用される数種類のデータをサポートしています。
PageMap の使用
PageMaps は、ページ上のデータに関する情報を Google に提供する構造化データ形式です。ウェブサイト作成者はウェブページにデータやメモを埋め込むことができます。構造化データはユーザーや Google ウェブ検索には表示されませんが、プログラム可能検索エンジンはウェブページをインデックス登録する際に認識し、プログラム可能検索要素に直接返します。
PageMap をページに明示的に追加したり、サイトマップを使用して PageMap を送信したりできます。
Google は、リッチ スニペットのマークアップや meta
タグのデータなど、ページ上の他の情報も使用して PageMap を作成します。
以下で説明する他の構造化データ形式とは異なり、PageMaps では標準のプロパティや用語に従わなくても、既存の語彙、スキーマ、テンプレートを参照する必要はありません。サイトに適したカスタム属性値を作成するだけです。HTML 本文でユーザーに表示されるコンテンツの周囲に追加される microformat、microdata、RDFa の構造化データ属性とは異なり、PageMaps メタデータは HTML ページの head
セクションに含まれます。このメソッドは、アプリが必要とする可能性があるが、ユーザーには表示したくない任意のデータをサポートします。
作成した PageMap は、次のいずれかの方法で Google に送信できます。
- PageMap データを HTML ページに直接追加します。Google はサイトをクロールする際に PageMap の情報を検出します。
- PageMap データをサイトマップに追加し、そのサイトマップを送信してインデックスに登録します。これは、ページの HTML ソースコードで PageMap を公開したくない場合に便利です。
PageMap タグの定義
次の表に、PageMap データをサイトマップに追加するための要件を示します。
タグ | 必須/省略可 | 説明 |
---|---|---|
PageMap |
○ | 関連 URL の PageMap 情報をすべて含めます。 |
DataObject |
○ | 1 つの要素に関するすべての情報(アクションなど)を囲みます。 |
Attribute |
○ | 各 DataObject には、1 つ以上の属性が含まれます。 |
注: PageMaps は XML ブロックであるため、正しくフォーマットする必要があります。特に XML の PageMap
タグ、DataObject
タグ、Attribute
タグは、type
、name
、value
属性と同様に、大文字と小文字が区別されます。
PageMap データを HTML ページに直接追加する
バドミントンに関するウェブページの PageMap データの例を次に示します。
<html> <head> ... <!-- <PageMap> <DataObject type="document"> <Attribute name="title">The Biomechanics of a Badminton Smash</Attribute> <Attribute name="author">Avelino T. Lim</Attribute> <Attribute name="description">The smash is the most explosive and aggressive stroke in Badminton. Elite athletes can generate shuttlecock velocities of up to 370 km/h. To perform the stroke, one must understand the biomechanics involved, from the body positioning to the wrist flexion. </Attribute> <Attribute name="page_count">25</Attribute> <Attribute name="rating">4.5</Attribute> <Attribute name="last_update">05/05/2009</Attribute> </DataObject> <DataObject type="thumbnail"> <Attribute name="src" value="http://www.example.com/papers/sic.png" /> <Attribute name="width" value="627" /> <Attribute name="height" value="167" /> </DataObject> </PageMap> --> </head> ... </html>
PageMap データをサイトマップに追加する
ページの HTML に PageMap データを含めたくない場合は、PageMap データをサイトマップに追加して、そのサイトマップを Search Console のサイトマップ ツールから送信できます。
2 つの URL(http://www.example.com/foo と http://www.example.com/bar)の PageMap 情報を含むサイトマップの例を次に示します。
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.example.com/foo</loc> <PageMap xmlns="http://www.google.com/schemas/sitemap-pagemap/1.0"> <DataObject type="document" id="hibachi"> <Attribute name="name">Dragon</Attribute> <Attribute name="review">3.5</Attribute> </DataObject> </PageMap> </url> <url> <loc>http://www.example.com/bar</loc> <PageMap xmlns="http://www.google.com/schemas/sitemap-pagemap/1.0"> <DataObject type="document" id="biggreenegg"> <Attribute name="name">Ribs</Attribute> <Attribute name="review">4.0</Attribute> </DataObject> </PageMap> </url> </urlset>
PageMap データの解析
プログラム可能検索要素を使用すると、カスタム属性が各結果のリッチリザルトのプロパティで返され、検索要素コールバックで使用できます。
<r n="1"> <u> http://www.xyz.com/business/vending_machine.html </u> ... <t> In Italy, a Vending Machine Even Makes the <b>Pizza</b> </t> ... <s>The European vending machine industry has annual sales of about #33 billion, much of it coming from factories and offices.</s> ... <PageMap> <DataObject type="image"> <Attribute name="image_src" value="http://www.nytimes.com/images/2009/03/14/business/14vend.751.jpg"/> </DataObject> <DataObject type="publication"> <Attribute name="author" value="John Tagliabue"/> <Attribute name="date" value="March 14, 2009"/> <Attribute name="category" value="Business/World Business"/> </DataObject> </PageMap> ... </r>
<meta>
タグを使用する
PageMap では各ページに必要なデータを正確に指定できますが、場合によっては、アノテーションを付けたくないコンテンツが大量にあることもあります。Google は、選択されたコンテンツを <meta name="KEY"
content="VALUE">
形式の META タグから抽出します。name
の代わりに property
を使用するなど、メタタグの別のバリエーションはサポートされていません。
通常、ウェブ オーサリング ツール(robots
、description
、keywords
など)によってプログラムで挿入される一般的なタグは明示的に除外されますが、サイトに固有のまれなタグが抽出され、metatags
タイプの特別なデータ オブジェクトに格納されます。これは、カスタム検索のすべての構造化データ機能で使用できます。たとえば、次の形式の <meta>
タグを使用します。
<meta name="pubdate" content="20100101">
は、次のような XML の結果で返される PageMap DataObject を作成します。
<r n="1"> ... <PageMap> <DataObject type="metatags"> <Attribute name="pubdate" value="20100101"/> </DataObject> </PageMap> ... </r>
この自動的に作成された PageMap のデータは、ページのコンテンツに明示的に含まれている PageMap のデータを使用できる場所であればどこでも使用できます。たとえば、属性で並べ替えなどの構造化検索演算子で使用できます。
https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=metatags-pubdate
または プログラム可能検索要素を使用した場合:
... <div class="gcse-search" sort_by="metatags-pubdate:d:s"></div> ...
Google が除外している <meta>
タグは次のとおりです。
- ロボット
- 説明
- キーワード
- revisit-after
- ジェネレータ
- verify-v1
- googlebot
- google-site-verification
- mssmarttags の解析を防ぐ
- キャッシュなし
Google は他のすべての <meta>
タグを含めようとしますが、<meta>
タグの name
フィールド内の句読点、特殊文字、埋め込みスペースが正しく解析されない可能性があります。プログラム可能検索エンジンは、<meta>
タグ名でピリオドとダッシュを明示的にサポートします。プログラム可能検索エンジンでは、<meta>
タグ名に含まれる他の特殊文字を明示的にサポートしていませんが、一部の特殊文字は URL エンコードしていれば正しく受け入れられる可能性があります。
制限事項
プログラム可能検索エンジンでは、処理されるすべてのプロパティの合計テキストサイズが 1 MB 以下(個々のプロパティが 1,024 文字を超えない限り)であれば、最大 50 個の <meta>
タグを PageMaps に変換します。
ページの日付を使用する
Google は、ユーザーがページで明示的に指定するメタデータだけでなく、ページの機能(タイトルや URL に含まれる日付など)に基づいてページの日付を推定します。プログラム可能検索エンジンでは、date
という特別なメタデータキーを使用することで、この日付を使用して結果の並べ替え、バイアス、範囲制限を行うことができます。この推定日は、属性による並べ替え、属性別のバイアス、範囲に制限など、&sort=
URL パラメータを使用するすべての演算子で使用できます。
注: ページの日付は PageMap には追加されないため、JSON API の結果では返されません。また、プログラム可能検索エンジン要素には使用できません。また、属性でフィルタ機能にも使用できます。
次の例は、これらの演算子でページの日付を使用する方法を示しています。
目的 | この URL を送信... | 詳細は以下をご覧ください... |
---|---|---|
結果を日付の降順で並べ替え | https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=date |
属性で並べ替え |
新しい日付を重視して結果に強いバイアスを設定する | https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=date:d:s |
属性別のバイアス |
古い日付に向けて弱いバイアスをかける | https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=date:a:w |
属性別のバイアス |
2010 年 1 月 1 日から 2 月 1 日までの結果を返す | https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=date:r:20100101:20100201 |
範囲に制限 |
Google は、ニュース記事の署名日やドキュメントのタイトルに明記されている日付などの要素に基づいて、ページの適切な日付を推定します。ページの日付が正しく指定されていないか、矛盾している場合、Google が推定したページの日付が意味をなせず、プログラム可能検索エンジンが予期しない順序で結果を返す可能性があります。
日付の形式
日付情報は、Google の推定ページ日付機能を利用してページの URL、タイトル、その他の機能に埋め込まれた日付を検出するか、構造化データ形式で明示的に日付を指定して、暗黙的に提供される場合があります。いずれの場合も、日付を効果的に使用するには、日付を正しくフォーマットする必要があります。
プログラム可能検索エンジンの属性による並べ替え、属性によるバイアス、範囲に制限の機能の場合、Google は従来の日付フォーマットと、ISO 8601 や IETF RFC 850 などの正式な標準の両方を使用して日付の解析を試みます。次の完全な日付形式を使用できます。
日付形式 | 日付の例 |
---|---|
YYYY-MM-DD | 2009-12-31 |
YYYY/MM/DD | 2009/12/31 |
YYYYMMDD | 20091231 |
月 DD 日 YYYY | 2009 年 12 月 31 日 |
DD 月 YYYY 日 | 2009 年 12 月 31 日 |
Google は、このような日付形式のバリアント(MM/DD/YYYY
や DD/MM/YYYY
など)の解析を試みます。ただし、日付があいまいになるほど、Google が正しく解析される可能性は低くなります。たとえば、日付 06/07/08
は非常にあいまいなため、Google が意図した解釈を割り当てることはまずありません。正確な結果を得るには、ISO 8601 日付形式を使用して、完全に年を指定します。
リッチ スニペット
また、Google は JSON-LD、Microformats、RDFa、Microdata からさまざまな構造化データを抽出し、標準的な Google 検索結果の拡張表示である
リッチ スニペットで使用されます。類似データは、プログラム可能検索エンジンの構造化データ演算子(通常はリッチ スニペットで使用されるのと同じデータ)で使用できます。たとえば、Microformat の hrecipe
標準でページをマークアップしている場合、&sort=recipe-ratingstars
のような演算子を使用して、レシピの評価の星の数で並べ替えることができます。Google は、抽出するデータと、プログラム可能検索エンジンで使用できるデータの量を継続的に拡張しています。Google が現在抽出しているデータを確認するには、Search Console の構造化データ テストツールを使用します。
JSON-LD の使用
JSON-LD は、構造化データで広く使用されている標準形式です。データは JSON としてフォーマットされ、type="application/ld+json"
を含む <script>
タグに配置されます。
以下に、単純な JSON-LD を使用した最小限の HTML の例を示します。
<script type="application/ld+json"> { "@id": "http://event.example.com/events/presenting-foo", "@type": "http://schema.org/Event", "http://schema.org/description": "Please attend. You'll love it!", "http://schema.org/name": "Presenting Foo", "http://schema.org/startdate": "2022-05-24", "http://schema.org/location": "Back room" } </script>
Google は、プログラム可能検索エンジン用にこのデータのサブセットを抽出し、正規化します。正規化により JSON-LD が簡略化され、多くの JSON-LD イディオムが削除されます。正規化されたデータがさらに処理されます。
- JSON-LD の graph 構造から樹木の森に変換されます。
- フォレストは、schema.org タイプのサブセットに関連するブランチにまとめられます。サブセットは schema.org の お客様のユースケースに役立つと思われる別のタイプがございましたら、サポート フォーラムでお知らせください。
- 選択したいずれかのタイプの JSON-LD ノードは、JSON-LD ツリーからブランチを pull します。ブランチには、ツリー内の祖先ノードと子孫ノードがすべて含まれます。たとえば、MusicComposition をルートとするツリーで、Event 値を持つ firstPerformance プロパティがあり、Event プロパティ一式が格納されているとします。MusicComposition から Event のプロパティまで、その子孫のすべてのノードが保持され、firstPerformance Event を含む有意義なツリーブランチが保持されます。
... "event": { "name": "Presenting Foo", "description": "Please attend. You'll love it!", "startdate": "2022-05-24", "location": "Back room" }, ...
Google 検索でページが抽出された内容を確認し、JSON-LD を検証するには、Google の Search Console サイトのリッチリザルト テストツールを使用します。
JSON-LD の詳細については、構造化データのドキュメントと json-ld.org をご覧ください。
microformat の使用
microformat は、レビュー、人物、商品、企業など、一般的に公開されるアイテムを表現するための仕様です。通常、microformat は <span>
要素、<div>
要素、クラス プロパティ、簡潔でわかりやすいプロパティ名(アイテムのレビュー日と評価を表す dtreviewed
や rating
など)で構成されます。
書式なし HTML コードのスニペットを以下に示します。
<p><strong>Kevin Grendelzilla</strong></p> <p>Technical writer at Google</p> <p>555 Search Parkway</p> <p>Googlelandia, CA 94043</p>
次のスニペットは、microformats で拡張した上記の HTML コードを示しています。
<div class="vcard"> <p><strong class="fn">Kevin Grendelzilla</strong></p> <p><span class="title">Technical writer</span> at <span class="org">Google</span></p> <p><span class="adr"> <span class="street-address">555 Search Parkway</span> <span class="locality">Googlelandia</span>, <span class="region">CA</span> <span class="postcode">94043</span> </span></p> </div>
Google はこのデータのサブセットを抽出し、リッチ スニペットでの表示に合わせて正規化および再編成します。このサブセットは、次のような XML の結果で返されます。
<r n="1"> ... <PageMap> <DataObject type="person"> <Attribute name="location" value="Googlelandia"/> <Attribute name="role" value="Technical Writer"/> </DataObject> </PageMap> ... </r>
Google がページを抽出した内容を確認するには、Google の Search Console サイトの構造化データ テストツールを使用します。Google がページから抽出するデータは継続的に拡張されているため、必要なデータが利用可能な状態になっているかどうか定期的に確認してください。それまでの間、定義済みの microformat と一致しないカスタムデータが必要な場合は、PageMaps を使用できます。
microformat の詳細については、構造化データのドキュメントと microformats.org をご覧ください。
Using Resource Description Framework in Attributes(RDFa)
属性内のリソース記述フレームワーク(RDFa)は、microformats よりも柔軟に使用できます。microformat は、構造化データを HTML ドキュメントに含めるための構文と、使用できる属性の固有の語彙をもつ microformat クラスのセットの両方を指定します。一方、RDFa は構文を指定するだけで、既存の属性の語彙を使用することも、独自の語彙を作成することもできます。複数の語彙を自由に組み合わせることもできます。既存の語彙がニーズに合わない場合は、新しいフィールドを作成して独自の標準と語彙を定義できます。
書式なし HTML コードのスニペットを以下に示します。
<div> <h3>5 Centimeters Per Second</h3> <h4>Makoto Shinkai</h4> ... </div>
次のスニペットは、RDFa で拡張された前述の HTML コードを示しています。
<div> <h3 property="dc:title">5 Centimeters Per Second</h3> <h4 property="dc:maker">Makoto Shinkai</h4> ... </div>
RDFa の詳細については、 構造化データのドキュメントをご覧ください。RDF スキーマの定義の詳細については、 RDF Primer をご覧ください。
microdata の使用
HTML5 は、ウェブページの作成言語の最新のリビジョンで、microdata という形式が定義されています。この形式には、RDFa と microformat の考え方を HTML 標準そのものに直接組み込んでいます。microdata では、HTML タグ内の単純な属性(多くの場合 span
や div
)を使用して、アイテムやプロパティに簡潔でわかりやすい名前を割り当てます。
RDFa や microformats と同様に、microdata の属性を使用すると、レビュー、人、情報、イベントなど、特定の種類の情報をコンテンツで記述することを指定できます。たとえば、個人にはプロパティの名前、ニックネーム、URL、役職、所属に関する情報などがあります。次の短い HTML ブロックの例は、Bob Smith の基本的な連絡先情報を示しています。
<div> My name is Bob Smith but people call me Smithy. Here is my home page: <a href="http://www.example.com">www.example.com</a> I live in Albuquerque, NM and work as an engineer at ACME Corp. </div>
microdata でマークアップした HTML の例を次に示します。この例では、schema.org にまだ正式には含まれていない「nickname」プロパティを使用しています。カスタム検索は、大規模なコミュニティに提案する前に、将来性のある schema.org の拡張機能をローカルで探索する優れた方法です。
<div itemscope itemtype="http://schema.org/Person"> My name is <span itemprop="name">Bob Smith</span> but people call me <span itemprop="nickname">Smithy</span>. Here is my home page: <a href="http://www.example.com" itemprop="url">www.example.com</a> I live in Albuquerque, NM and work as an <span itemprop="title">engineer</span> at <span itemprop="affiliation">ACME Corp</span>. </div>
この例の最初の行には、div
に microdata 項目が含まれていることを示す itemscope
属性を含む HTML div
タグが含まれています。同じタグの itemtype="http://schema.org/Person"
属性により、これが人物であることがわかります。人アイテムの各プロパティは itemprop
属性で識別されます。たとえば、span
タグの itemprop="name"
は人の名前を示しています。なお、itemprop="url"
タグは span
と div
に限定されず、a
(アンカー)タグに関連付けられます。
microdata について詳しくは、 構造化データのドキュメントと HTML microdata 標準をご覧ください。
抽出された構造化データの表示
JSON-LD 構造化データには、Google がサポートする特別な検証ツールであるリッチリザルト テストツールがあります。JSON-LD の構文とそのセマンティクスの一部もチェックされます。特に、構造化データに必須属性と推奨属性が含まれているかどうかがチェックされます。 他の形式の構造化データをチェックするには、スキーマ マークアップ検証ツールを使用します。構造化データの構文を検証し、解釈した形式を表示します。
プログラム可能検索エンジンは構造化データのサブセットを保持するため、プログラム可能検索エンジンを使用して、ページの構造化データに対するプログラム可能検索エンジンのビューを次の方法で検査します。
ウェブページに構造化データのタグを設定していない状態で、抽出された構造化データの状態を確認したい場合は、他のウェブサイトの URL を入力します。レビュー情報や連絡先リストがある一般的なサイトでは、特に構造化データが含まれている傾向があります。
構造化データを含むページが見つかったら、そのページのソースを表示して、サイトで実装されている構造化データを確認できます。たとえば、人物に関する構造化データを microformats として実装した次の HTML のスニペットがあるとします。
<div class="vcard"> <h1 class="fn"> <span class="given-name">Godzilla</span> <span class="family-name">Gigantis</span> </h1> <span class="title">Senior Giant Monster</span>, <span class="adr"> <span class="locality">Tokyo</span> </span> <div>
プログラム可能検索エンジンは、構造化データから次のサブセットを抽出し、構造化データに使用します。
person (source = MICROFORMAT) location = Tokyo
その他の機能
構造化データは、次のようなプログラム可能検索エンジンの機能で使用できます。
- スニペットでの構造化データの使用について詳しくは、結果スニペットのカスタマイズをご覧ください。
- 結果の順序を変更する方法について詳しくは、構造化検索をご覧ください。