サイトマップと robots
Blume がクローラー向けに書き出す sitemap.xml と robots.txt、そして AI クローラーにドキュメントの利用方法を伝える Content-Signal 行について。
検索クローラーも AI クローラーも、サイトルートにある同じ 2 つのファイルから始めます。Blume はビルドのたびに両方を書き出し、robots.txt には AI クローラーが参照するコンテンツ利用シグナルが含まれます。つまり、ここは発見可能性の検索側とエージェント側が交わる場所です。
サイトマップ
Blume はビルド時に、インデックス対象となるすべてのページを含む sitemap.xml を書き出します。絶対 URL の deployment.site が必要で、下書き・非表示・noindex のページを除くすべてのページを列挙します。バージョン管理されたサイトでは、canonical が現行版を指しているアーカイブページも除外されます — インデックスすべきなのは現行のページだからです。デフォルトで有効です:
seo: {
sitemap: true,
}
独自の public/sitemap.xml を配置すれば、そちらが優先されます — Blume が public/ に置いたファイルを上書きすることはありません。
Robots
Blume は、すべてのクローラーを許可し、コンテンツシグナルを宣言し、サイトマップが利用可能な場合はそれを指す Sitemap: 行を追加した robots.txt を書き出します。デフォルトで有効です:
seo: {
robots: true,
}
User-agent: *
Content-Signal: search=yes, ai-input=yes, ai-train=yes
Allow: /
Sitemap: https://docs.example.com/sitemap.xml
コンテンツシグナル
Content-Signal 行は、コンテンツ利用に関する新たな慣例であり、AI クローラーがドキュメントをどのように再利用してよいかを宣言します。Blume は、ドキュメントは人間にもエージェントにも開かれているという方針に沿って、デフォルトで有効、かつすべてのシグナルを yes として出力します:
search— 従来の検索および AI 検索のインデックスaiInput— 回答時のグラウンディング / RAGaiTrain— モデルの学習
いずれかのシグナルを制限するには false を設定します。指定しなかったものは yes のままです:
seo: {
contentSignals: {
aiTrain: false, // opt out of training, keep search + grounding
},
}
User-agent: *
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
宣言そのものを削除するには contentSignals: false を設定します:
seo: {
contentSignals: false,
}
seo.contentSignals?boolean | object
Content-Signal 宣言。true または省略した場合はすべてのシグナルを yes として出力し、false の場合は行を削除、オブジェクトを指定するとシグナルを個別に設定します。
boolean | objectcontentSignals.search?boolean
検索インデックス (search) での利用を許可します。デフォルトは true。
booleancontentSignals.aiInput?boolean
回答時の AI グラウンディング / RAG (ai-input) での利用を許可します。デフォルトは true。
booleancontentSignals.aiTrain?boolean
AI モデルの学習 (ai-train) での利用を許可します。デフォルトは true。
booleanコンテンツシグナルは希望を表明するものであり、アクセス制御ではありません。行儀のよいクローラーに対してコンテンツをどのように利用してほしいかを伝えるものであり、それを尊重するかどうかはクローラー側に委ねられています。同じポリシーはエージェント可読性マニフェストに contentUsage として反映されるため、robots.txt を一切読まないエージェントでもこれを参照できます。
独自の public/robots.txt を配置すれば、そちらが優先されます。