robots メタタグ、data-nosnippet、X-Robots-Tag の仕様

概要

このドキュメントでは、Google の検索結果でコンテンツが表示される方法を調整するための、ページレベルとテキストレベルの設定について説明します。ページレベルの設定を指定するには、HTML ページまたは HTTP ヘッダーにメタタグを含めます。テキストレベルの設定は、ページ内の HTML 要素の data- nosnippet 属性で指定できます。

robots メタタグの使用

robots メタタグを使用すると、個々のページを Google 検索結果でインデックスに登録してユーザーに表示する方法を、ページごとに細かく管理できます。対象ページの <head> セクションに、robots メタタグを次のように配置します。

<!DOCTYPE html>
<html><head>
<meta name="robots" content="noindex" />
(…)
</head>
<body>(…)</body>
</html>

上記の例では、robots メタタグで、検索結果でそのページを表示しないように検索エンジンに指示しています。name 属性の値(robots)は、このディレクティブをすべてのクローラに適用するよう指定しています。特定のクローラを対象とするには、name 属性の値 robots を、そのクローラの名前に置き換えます。特定のクローラは、ユーザーエージェントとも呼ばれます(クローラはユーザーエージェントを使用してページを要求します)。 Google の標準ウェブクローラのユーザー エージェントの名前は Googlebot です。Googlebot によるページのクロールだけをブロックするには、タグを次のように変更します。

<meta name="googlebot" content="noindex" />

このタグは、検索結果でこのページを表示しないよう、Google を特定して指示します。name 属性と content 属性はいずれも、大文字と小文字が区別されません。

検索エンジンは、プロパティや目的ごとに異なるクローラを使用する場合があります。Google クローラの一覧をご覧ください。たとえば、あるページを Google のウェブ検索結果では表示し、Google ニュースでは表示しないようにするには、次のメタタグを使用します。

<meta name="googlebot-news" content="noindex" />

複数のクローラを個別に指定するには、複数の robots メタタグを使用します。

<meta name="googlebot" content="noindex">
<meta name="googlebot-news" content="nosnippet">

X-Robots-Tag HTTP ヘッダーの使用

X-Robots-Tag は、指定した URL に対する HTTP ヘッダー応答の要素として使用できます。robots メタタグで使用できるディレクティブは、すべて X-Robots-Tag として指定することもできます。ページをインデックスに登録しないようクローラに指示する X-Robots-Tag を含む HTTP 応答の例を次に示します。

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
(…)
X-Robots-Tag: noindex
(…)

HTTP 応答で複数の X-Robots-Tag ヘッダーを組み合わせて使用できます。また、ディレクティブのカンマ区切りのリストを指定することもできます。noarchive X-Robots-Tagunavailable_after X-Robots-Tag を組み合わせた HTTP ヘッダー応答の例を次に示します。

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
(…)
X-Robots-Tag: noarchive
X-Robots-Tag: unavailable_after: 25 Jun 2010 15:00:00 PST
(…)

X-Robots-Tag では、必要に応じて、ディレクティブの前でユーザー エージェントを指定できます。たとえば、次のような一連の X-Robots-Tag HTTP ヘッダーを使用すると、条件に応じて、異なる検索エンジンに対して検索結果でのページの表示を許可できます。

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
(…)
X-Robots-Tag: googlebot: nofollow
X-Robots-Tag: otherbot: noindex, nofollow
(…)

ユーザーエージェントなしで指定されているディレクティブは、すべてのクローラに対して有効です。 HTTP ヘッダー、ユーザー エージェント名、指定された値では、大文字と小文字が区別されません。

インデックス登録と表示に関する有効なディレクティブ

robots メタタグと X-Robots-Tag で次のディレクティブを使用して、インデックス登録と表示を制御できます。各値は特定のディレクティブを表します。次の表は、Google が認識するすべてのディレクティブとその意味を示しています。複数のディレクティブをカンマ区切りのリストで組み合わせて指定することができます。これらのディレクティブでは大文字と小文字が区別されません。検索結果内のスニペットは、テキストを簡潔に抽出したもので、ユーザーのクエリとドキュメントとの関連性を示すために使用されます。

ディレクティブ

all
インデックスの登録や表示について、制限はありません。このディレクティブは既定値であり、明示的に指定しても影響はありません。
noindex
検索結果でこのページを表示しません。
nofollow
このページ内のリンクをたどりません。
none
noindex, nofollow と同じです。
noarchive
検索結果でキャッシュ リンクを表示しません。
nosnippet
このページの検索結果にテキスト スニペットや動画プレビューを表示しません。ユーザー エクスペリエンスの向上につながる場合は、静止画像のサムネイル(使用可能な場合)が引き続き表示されることがあります。 これは、すべての形式の検索結果(Google ウェブ検索、Google 画像検索、Discover)に適用されます。
max-snippet:[number]

この検索結果でテキスト スニペットとして使用される最大の文字数 [number] を設定します。(URL は、検索結果ページ内に複数の検索結果として表示される場合があります。) 画像や動画のプレビューには影響しません。これは、すべての形式の検索結果(Google ウェブ検索、Google 画像検索、Discover、アシスタントなど)に適用されます。ただし、サイト運営者がコンテンツの使用許諾を個別に付与した場合、この制限は適用されません。たとえば、サイト運営者がページはめ込みの構造化データの形式でコンテンツを提供している場合、または Google とライセンス契約を結んでいる場合、この設定はそれらの特別に許可された使用を妨げるものではありません。解析可能な [number] が指定されていない場合、このディレクティブは無視されます。

特別な値:

  • 0: スニペットは表示されません。nosnippet と同じです。
  • -1: スニペットの文字数の制限はありません。
  • 例:

    <meta name="robots" content="max-snippet:20">
    max-image-preview:[setting]

    検索結果に表示されるこのページの画像プレビューの最大サイズを設定します。

    指定可能な setting 値:

  • none: 画像プレビューは表示されません。
  • standard: デフォルトの画像プレビューが表示されます。
  • large: ビューポートの幅までの画像プレビューを表示できます。
  • これは、すべての形式の検索結果(Google ウェブ検索、Google 画像検索、Discover、アシスタントなど)に適用されます。ただし、サイト運営者がコンテンツの使用許諾を個別に付与した場合は、この制限は適用されません。たとえば、サイト運営者がページはめ込みの構造化データの形式でコンテンツを提供している場合、または Google とライセンス契約を結んでいる場合、この設定はそれらの特別に許可された使用を妨げるものではありません。

    例:

    <meta name="robots" content="max-image-preview:standard">
    max-video-preview:[number]

    検索結果でこのページの動画の動画スニペットとして表示される最大の秒数 [number] を設定します。

    その他のサポートされている値:

  • 0: 静止画像のみ使用できます。max-image-preview 設定に従います。
  • -1: 制限はありません。
  • これは、すべての形式の検索結果(Google ウェブ検索、Google 画像検索、Google 動画、Discover、アシスタント)に適用されます。解析可能な [number] が指定されていない場合、このディレクティブは無視されます。

    例:

    <meta name="robots" content="max-video-preview:-1">
    notranslate
    検索結果でこのページの翻訳を提供しません。
    noimageindex
    このページの画像をインデックスに登録しません。
    unavailable_after: [RFC-850 date/time]

    指定した日時以降は、このページを検索結果に表示しません。日時は RFC 850 形式で指定する必要があります。有効な [date/time] が指定されていない場合、ディレクティブは無視されます。デフォルトでは、コンテンツの有効期限はありません。

    例:

    <meta name="robots" content="unavailable_after: Sunday, 01-Sep-24 01:00:00 PDT">

    インデックス登録と表示のディレクティブの組み合わせの処理

    robots メタタグ ディレクティブをカンマで結合することで、複数のディレクティブからなる指示を作成できます。次に示すのは、ページをインデックスに登録せず、ページ上のリンクをクロールしないようウェブクローラに指示する、robots メタタグの例です。

    <meta name="robots" content="noindex, nofollow">
    

    テキスト スニペットを 20 文字に制限し、大きな画像プレビューを許可する例を次に示します。

    <meta name="robots" content="max-snippet:20, max-image-preview:large">
    

    複数のクローラに異なるディレクティブが指定されている場合、検索エンジンはネガティブなディレクティブを組み合わせて使用します。例:

    <meta name="robots" content="nofollow">
    <meta name="googlebot" content="noindex">
    

    これらのメタタグを含むページを Googlebot がクロールする際は、noindex, nofollow ディレクティブが指定されていると解釈します。

    data-nosnippet HTML 属性の使用

    HTML ページのテキスト部分をスニペットとして使用しないように指定できます。これは、span 要素、div 要素、section 要素の data-nosnippet HTML 属性を使用して、HTML 要素レベルで行えます。data-nosnippet論理属性 とみなされ、値の有無に関係なく有効です。マシンによる解釈が確実に行われるように、HTML によるセクションの記述が正しく、すべてのタグが適切に閉じられていることを確認してください。

    例:

    <p>This text can be shown in a snippet
     <span data-nosnippet>and this part would not be shown</span>.</p>
    
    <div data-nosnippet>not in snippet</div>
    <div data-nosnippet="true">also not in snippet</div>
    
    <div data-nosnippet>some text</html>
    <!-- unclosed "div" will include all content afterwards -->
    
    <mytag data-nosnippet>some text</mytag>
    <!-- NOT VALID: not a span, div, or section -->
    

    Google では通常、ページをインデックスに登録する際にレンダリングを行いますが、レンダリングは保証されていません。 このため、レンダリングの前後に data-nosnippet の抽出が発生する可能性があります。レンダリングに伴う不確実性を回避するには、JavaScript を使用して既存のノードの data-nosnippet 属性の追加または削除を行わないようにします。JavaScript を使用して DOM 要素を追加する場合は、ページの DOM に最初に要素を追加する際に、必要に応じて data-nosnippet 属性を加えます。カスタム要素を使用していて、data- nosnippet を使う必要がある場合は、div 要素、span 要素、section 要素でラップまたはレンダリングしてください。

    構造化データの使用

    Robots メタタグでは、検索結果として表示するために Google がウェブページから自動的に抽出するコンテンツの量を調整します。一方、多くのサイト運営者が、特定の情報を検索プレゼンテーションで使用できるようにするために、schema.org の構造化データを使用しています。Robots メタタグの制限は、その構造化データの使用には影響を与えません。ウェブページの構造化データの使用を管理するには、構造化データの種類と値を変更し、情報を追加または削除して、必要なデータのみを提供するようにします。また、構造化データは data-nosnippet 要素内で宣言された場合も、検索結果に使用できます。

    X-Robots-Tag の実用的な実装

    サイトの HTTP 応答に X-Robots-Tag を追加するには、サイトのウェブサーバー ソフトウェアの構成ファイルを使用します。たとえば、Apache ベースのウェブサーバーでは、.htaccess ファイルや httpd.conf ファイルを使用できます。X-Robots-Tag を HTTP 応答で使用すると、サイト全体に適用されるクロール ディレクティブを指定できるという利点があります。正規表現がサポートされているため、柔軟な指定が可能です。

    たとえば、サイト全体の .PDF ファイルについて、HTTP 応答に noindex, nofollowX-Robots-Tag を追加する場合、次のスニペットを追加します。Apache であれば、サイトのルートに置いた .htaccess ファイルまたは httpd.conf ファイルに、NGINX であれば、サイトの .conf ファイルに追加します。

    Apache:

    <Files ~ "\.pdf$">
      Header set X-Robots-Tag "noindex, nofollow"
    </Files>
    

    NGINX:

    location ~* \.pdf$ {
      add_header X-Robots-Tag "noindex, nofollow";
    }
    

    X-Robots-Tag は、画像ファイルなど、HTML で robots メタタグを使用できない非 HTMLファイルにも使用できます。次に示す例では、サイト全体の画像ファイル(.png、.jpeg、.jpg、.gif)に noindex X-Robots-Tag ディレクティブを追加しています。

    Apache:

    <Files ~ "\.(png|jpe?g|gif)$">
      Header set X-Robots-Tag "noindex"
    </Files>
    

    NGINX:

    location ~* \.(png|jpe?g|gif)$ {
      add_header X-Robots-Tag "noindex";
    }
    

    インデックス登録や表示のディレクティブと、クロールの組み合わせ

    robots メタタグと X-Robots-Tag HTTP ヘッダーは、URL がクロールされるときに検出されます。robots.txt ファイルでページのクロールが許可されていない場合、インデックス登録や表示のディレクティブに関する情報は検出されず、その結果無視されます。インデックス登録や表示のディレクティブを適用する必要がある場合、それらのディレクティブを含む URL のクロールを不許可にすることはできません。