このページでは、検索演算子に必要な構造化データを追加する方法について説明します。
ウェブページには自由形式のテキストが入力されることが多く、人間にとっては読むのは簡単ですが、コンピュータにとっては理解が難しくなります。ウェブページによっては、ページの 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 検索の検索結果で使用されるとは限りません。
レビューサイトのプレーン 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 は、ページマップ、<meta>
タグのサブセット、おおよそのページの日付など、主にプログラム可能検索エンジンで使用されるいくつかの種類のデータをサポートしています。
PageMap の使用
PageMaps は、ページ上のデータに関する情報を Google に提供する構造化データ形式です。ウェブサイト作成者は、ウェブページにデータやメモを埋め込むことができます。構造化データはユーザーや Google ウェブ検索には表示されませんが、プログラム可能検索エンジンはウェブページをインデックス登録するときにそれを認識し、プログラム可能検索要素で直接返します。
明示的に PageMap をページに追加したり、サイトマップを使用して PageMaps を送信したりできます。また、リッチ スニペットのマークアップや 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 つ以上の属性が含まれます。 |
注: PageMap は 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 データをサイトマップに追加する
PageMap データをページの HTML に含めたくない場合は、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 データの解析
プログラム可能検索要素を使用すると、各結果の RichSnippet プロパティでカスタム属性が返され、検索要素のコールバックで使用できます。
<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
を使用するなど、META タグの別のバリアントはサポートされていません。
通常、ウェブ オーサリング ツール(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> ...
- ロボット
- description
- キーワード
- 再訪問後
- ジェネレータ
- Verify-v1
- googlebot
- google-site-verification
- mssmarttags 防止解析
- キャッシュなし
Google は他のすべての <meta>
タグを含めようとしますが、<meta>
タグの name
フィールド内の句読点、特殊文字、埋め込みスペースが正しく解析されない可能性があることに注意してください。プログラム可能検索エンジンでは、<meta>
タグ名のピリオドとダッシュを明示的にサポートします。プログラム可能検索エンジンでは、<meta>
タグ名に含まれる他の特殊文字を明示的にサポートしていませんが、一部の特殊文字は、URL エンコードされていれば正しく受け入れられる場合があります。
制限事項
プログラム可能検索エンジンでは、処理されたすべてのプロパティの合計テキストサイズが 1 MB 以下(個々のプロパティが 1,024 文字を超えない限り)に限り、最大 50 個の <meta>
タグを PageMap に変換します。
ページの日付を使用する
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 |
YYYY 年 DD 日 | 2009 年 12 月 31 日 |
YYYY 年 DD 月 | 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 ツリーからブランチを取得します。そのブランチには、ツリー内の祖先ノードとすべての子孫ノードが含まれます。たとえば、MusicComposition をルートとするツリーで、すべての Event プロパティを含む Event 値を持つ firstPerformance プロパティがあるとします。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 をご覧ください。
microformats の使用
microformats は、レビュー、人物、商品、企業など、一般的に公開されるアイテムを表現するための仕様です。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>
次のスニペットは、上記の HTML コードを microformats で拡張したものです。
<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 を使用できます。
microformats の詳細については、構造化データのドキュメントと microformats.org をご覧ください。
Using Resource Description Framework in Attributes(RDFa)
属性内のリソース記述フレームワーク(RDFa)は、microformats よりも柔軟性があります。microformats は、構造化データを 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 と microformats の考え方が HTML 標準自体に直接組み込まれています。microdata では、HTML タグ内の単純な属性(多くの場合 span
や div
)を使用して、アイテムやプロパティに簡潔でわかりやすい名前を割り当てます。
RDFa や microformats と同様に、microdata の属性を使用すると、コンテンツがレビュー、人物、情報、イベントなど、特定の種類の情報を記述することを指定できます。たとえば、個人にはプロパティの名前、ニックネーム、URL、タイトル、アフィリエーションなどがあります。以下は、Bob Smith の基本的な連絡先情報を示す短い HTML ブロックの例です。
<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"
は人物の名前を表します。なお、span
と div
に限定されるわけではなく、itemprop="url"
タグは a
(アンカー)タグに付加されています。
microdata の詳細については、 構造化データのドキュメントと HTML microdata 標準をご覧ください。
抽出された構造化データの表示
JSON-LD 構造化データには、Google がサポートする特別な検証ツールであるリッチリザルト テストツールがあります。JSON-LD の構文とそのセマンティクスの一部を確認します。特に、構造化データに必須属性と推奨属性が含まれているかどうかをチェックします。他の形式の構造化データを確認するには、スキーマ マークアップ検証ツールを使用します。構造化データの構文を検証し、解釈された形式を表示します。
プログラム可能検索エンジンは構造化データのサブセットを保持するため、プログラム可能検索エンジンを使用して、ページの構造化データに関するプログラム可能検索エンジンのビューを次の方法で検査します。
ウェブページに構造化データのタグを設定していない状態で、抽出された構造化データの内容を確認したい場合は、他のウェブサイトの URL を入力します。レビュー情報や連絡先のリストがある人気のサイトでは、構造化データが含まれている可能性が高くなります。
構造化データを含むページが見つかったら、そのページのソースを表示して、サイトで実装されている構造化データを確認できます。たとえば、人物に関する構造化データを含む HTML の次のスニペットを microformats で実装した場合について考えてみましょう。
<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
その他の機能
構造化データは、次のようなプログラム可能検索エンジンの機能で使用できます。
- スニペットでの構造化データの使用について詳しくは、結果スニペットのカスタマイズをご覧ください。
- 結果の順序の変更について詳しくは、構造化検索をご覧ください。