Applebot-Extended と robots.txt: 検索への扉は開いたまま、学習への扉にだけ鍵を掛けた横に GOAT君 が立つアイキャッチ(出典: Apple Inc.)
学習は断り、検索には残す

「iPhone の Siri や Safari の検索には店のサイトを出したい。でも Apple の AI の学習には使われたくない」。この 2 つは robots.txt で分けて扱えます。Apple のサポートページ「Applebotについて」は、「robots.txtファイルでApplebot-Extendedを禁止することにより、コンテンツが生成基盤モデルのトレーニングに使用されることを拒否できます」と書いています。

分かれ目は、止める相手が Applebot か Applebot-Extended かです。ここで扱うのは Apple のクローラだけです。OpenAI のクローラはOpenAI のクローラの記事、Google-Extended はGoogle-Extended の記事で扱っています。

Applebotが集めたデータの使い道と止め方

Apple のサポートページは、Applebot がクロールしたデータの使い道を、検索・基盤モデルのトレーニング・AI の回答の材料に分けて書いています。止め方は使い道ごとに違います。

使い道 止める書き方 止めた結果
Spotlight・Siri・Safari の検索 robots.txt で Applebot を禁止 Apple の検索結果に出なくなる
Apple の基盤モデルのトレーニング robots.txt で Applebot-Extended を禁止 検索結果には引き続き含められる
Siri や検索の一般知識の回答 ページに nosnippet メタタグを付ける 候補にはページのタイトルしか出ない

Applebot-ExtendedはWebページをクロールしない

Applebot-Extended は、ページを取りに来るクローラではありません。原文は「Applebot-ExtendedはWebページをクロールしません」と書いています。続けて、Applebot-Extended は「Applebotユーザエージェントによってクロールされたデータの使用方法を決定するためにのみ使用されます」と説明しています。

学習を断っても、Apple の検索の順位には影響しないと書かれています。原文は「Applebot-Extendedのサイトルールは、検索のランキングでは考慮されません」です。

nosnippetは一般知識の回答と説明文の両方を止める

最後は、AI モデルで出力を作るときに追加の材料として使われる場合がある、という使い道です。原文が挙げる例は、Siri や検索が一般知識の質問に答える場面です。そうした回答には「回答を生成するために使用された出典やWebサイトへのリンクを含む場合があります」と書かれています。これを止めるのは robots.txt ではなく、ページの nosnippet メタタグです。

nosnippet は AI の回答だけを止める指示ではありません。原文は nosnippet の働きを「Appletbotは、このページの説明またはWeb回答を生成しません。このURLが閲覧候補として提示される際も、ページのタイトルしか含まれません」と書いています。検索の候補に出たときの説明文も一緒に消えます。

両方止めてもApplebotがクロールできる場合がある

Applebot-Extended を禁止して nosnippet を付けても、Applebot が来なくなるわけではありません。原文は「Webサイトの指示によってはApplebotがWebページをクロールできる場合があります」と書いています。さらに「Spotlight、Siri、Safari、その他Appleデバイスのシステム全体にわたる機能を通じて、コンテンツは引き続き発見可能です」と続けています。

目的別のrobots.txtの書き方

規格の RFC 9309 は、クローラは自分の名前に一致するグループを探して「obey the rules of the group」と定めています。行を足す先のグループ名で、止まるものが変わります。

Applebot-Extended と robots.txt: 3 つの止め方で止まるものと残るもの(出典: Apple Inc.)
3つの止め方で止まるもの

学習だけ断ってSiriやSafariの検索には残す

User-agent: Applebot-Extended
Disallow: /

Apple の例は Disallow: /private/ で、学習から外す範囲をディレクトリで絞る書き方も示しています。Applebot-Extended を許可しないページについて、原文は「引き続き検索結果に含めることができます」と書いています。

一般知識の回答にも使わせない

回答への利用も止めたいページには、<head> に nosnippet を書きます。Apple は robots メタタグに対応しており、<meta name="applebot" content="nosnippet"> のように Apple だけを名指しした例も載せています。PDF や画像のように HTML でないファイルには、HTTP ヘッダの X-Robots-Tag: applebot: nosnippet を使います。

この指示は、付けたページごとに効きます。

Appleの検索からも外す

Spotlight・Siri・Safari の検索結果に出ること自体を避けたいときの形です。

User-agent: Applebot
Disallow: /

原文は「robots.txtでApplebotを有効にすると、世界中のこれらの製品のAppleユーザの検索結果にWebサイトのコンテンツを表示できます」と書いています。Applebot を止めれば、この表示の前提が外れます。

Applebot-Extended と robots.txt: 学習を断ろうとして検索からも消えた GOAT君 が、止める相手は Extended だと気づく 4 コマ(出典: Apple Inc.)
止めるのはApplebot-Extended

robots.txtで間違えやすい点

JavaScript や CSS を robots.txt でブロックしたときのレンダリングへの影響と、会員限定(ペイウォール)のページを構造化データで示す方法は本記事の対象外です。

Applebotの指定が無いとGooglebotの指示に従う

Applebot のグループを書いていないサイトでは、Googlebot に書いた指示が Applebot にも使われます。原文は「robotsの制御指示でApplebotには言及していなくてもGooglebotについて指定されている場合、AppleのロボットはGooglebotに対する指示に従います」と書いています。Applebot のグループが無ければ、Googlebot だけに書いた Disallow は Apple の検索にも効きます。

Applebotのグループと*のグループの関係

規格では、名前に一致するグループがあると * のグループは使われません。RFC 9309 は「If no matching group exists, crawlers MUST obey the group with a user-agent line with the "*" value, if present.」と定めています。

一方で Apple の例は、Applebot のグループ(Disallow: /private/)と * のグループ(Disallow: /not-allowed/)を並べ、「Applebotは「/private/」や「/not-allowed/」の下位にある書類はクローリングしません」と説明しています。規格の書き方と Apple の例では、* のグループの扱いが違って読めます。

Crawl-delayではApplebotの頻度は落とせない

原文は「Applebotはクロール遅延には従いません」と書いています。代わりに、サイトの動作が遅くなったりエラーが返されたりした場合は「Applebotのクロール頻度は自動的に調整されます」と説明しています。

Applebotを止めているサイトの多くは名指ししていない

Ahrefs の約 1 億 4,000 万サイトの robots.txt の調査では、Applebot-Extended を止めているサイトは 5.64%、Applebot は 5.55% でした。この数字には、ボットを名指しした拒否だけでなく、すべてのボットを止める一般的な拒否も含まれます。Applebot を名指しして止めているサイトに絞ると 0.12% です。

DigitalGOAT編集部の推奨は、robots.txt を触る前に現行のファイルを保存し、既存の User-agent グループを一覧にして、足す行がどのグループに入るかを確かめることです。

本物のApplebotか確かめる方法

アクセスログの名前のほかに、Apple は IP アドレスから確かめる方法を挙げています。原文は「Applebotからの着信トラフィックは、通常、*.applebot.apple.com ドメインの逆引きDNSを使用して識別されます」と書いています。

逆引きDNSで名前とIPアドレスを突き合わせる

Apple の例は、host コマンドで IP アドレスと名前を往復させる形です。

$ host 17.58.101.179
179.101.58.17.in-addr.arpa domain name pointer 17-58-101-179.applebot.apple.com.

$ host 17-58-101-179.applebot.apple.com
17-58-101-179.applebot.apple.com has address 17.58.101.179.

1 つ目でアクセス元の IP アドレスから名前を引き、applebot.apple.com で終わる名前が返るかを見ます。2 つ目でその名前を引き直し、同じ IP アドレスに戻るかを見ます。別の方法として、Apple は「JSONファイル(Applebot IP CIDRs)に含まれるCIDRプレフィックスとIPアドレスをマッチングします」とも書いています。

ログに出るのはApplebotの名前

user-agent 文字列について、原文は「user-agent文字列には「Applebot」とその他の情報が含まれています」と書いています。Applebot-Extended はクロールしないので、ログで探す名前は Applebot です。

Apple Podcast に番組を登録している場合だけ、別の名前も来ます。原文は「iTMSユーザエージェントは、一般的な検索クローラーではないため、robots.txtに従いません」と書き、クロールするのは「Apple Podcastに登録されているコンテンツに関連するURLのみ」だと説明しています。

まとめ

  • Apple の基盤モデルの学習だけ断るなら、robots.txt で Applebot-Extended を禁止する
  • 一般知識の回答にも使わせないなら、ページに nosnippet を付ける。候補の説明文も消える
  • Apple の検索からも外すなら、Applebot そのものを禁止する
  • Applebot のグループが無いと、Googlebot に書いた指示が Applebot にも使われる

いまの robots.txt に User-agent: * や Googlebot のグループがあるかを確かめ、Applebot-Extended の行をどこに足すかを決めるところが次の作業です。