パースタイプは、ウェブサイトデータソース 上で AI Search がインデックス対象のページを見つける方法を制御します。AI Search は 2 つのパースタイプをサポートします。
| パースタイプ | ページ検出 | 使うタイミング |
|---|---|---|
sitemap(デフォルト) |
robots.txt で宣言された XML サイトマップ、または設定したサイトマップ URL を読みます。リンクはたどりません。 |
サイトが完全で最新のサイトマップを公開しているとき。 |
discover |
ソース URL から開始し、デフォルトではサイトマップと、クロールしたページ上のリンクの両方を使います。 | サイトにサイトマップがない、またはインデックスしたいすべてのページをカバーしていないとき。 |
パースタイプは source_params.web_crawler.parse_type で設定します。設定しない場合、AI Search は sitemap を使います。
どちらのパースタイプも、同じ Cloudflare アカウントにオンボード済みのドメイン上のソース URL が必要です。ドメインがまだ Cloudflare にない場合は ドメインをオンボードする を参照してください。
どちらのパースタイプもサイトマップを読めるため、選択は単なる「サイトマップかリンクか」ではありません。discover のデフォルトの 検出ソース は all で、サイトマップを読み かつ リンクをたどります。違いは、それぞれがサイトマップをどれだけ徹底して使うかです。
インデックスしたいページをカバーするサイトマップをサイトが公開しているなら、sitemap を選んでください。次の理由で、2 つのうち信頼性が高いです。
- 更新はサイトマップが駆動します。
sitemapは<lastmod>日付が変わったときにページを再クロールするため、次回同期で編集が取り込まれます。discoverは<lastmod>と<changefreq>を完全に無視し、代わりに固定の キャッシュ期間 で再取得します。 - 途中で切れません。
discoverは設定した ページ上限と深さ で止まるため、リンクグラフの深い位置や上限を超えたページはスキップされることがあります。sitemapはサイトマップに載っているすべてをインデックスします。 - 順序を制御できます。
sitemapは<priority>値でページをインデックスするため、インスタンス上限に達しても重要なページから先にインデックスされます。 - クロール範囲を狭められます。 特定のサイトマップ は
discoverではサポートされません。
サイトマップがない、不完全、または古い場合は discover を選びます。
sitemap パースタイプがデフォルトです。AI Search はサイトが公開する XML サイトマップを読んでインデックス対象ページを決め、<lastmod> 日付が変わったときにページを再クロールします。
ドメインを接続すると、クローラーはウェブサイトのサイトマップを探し、訪問するページを決めます。
- dashboard の Parser options > Specific sitemap で 1 つ以上のカスタムサイトマップ URL を設定している場合、AI Search はそのサイトマップ URL だけをクロールします。
- それ以外の場合、クローラーは
robots.txtに列挙されたサイトマップを確認します。 robots.txtが見つからない場合、クローラーは/sitemap.xmlのサイトマップを確認します。- サイトマップがない場合、そのドメインは
sitemapパースタイプではクロールできません。代わりにdiscoverを使います。
サイトマップに <priority> 属性がある場合、AI Search はすべてのサイトマップを読み、ページがどのサイトマップにあっても、各ページの優先度値に基づいてインデックスします。
<priority> が指定されていない場合、ページはサイトマップの提供順でインデックスされます。設定したカスタムサイトマップ URL、または robots.txt の上から下です。
AI Search は .gz 圧縮サイトマップをサポートします。robots.txt とサイトマップの両方で部分 URL を使えます。
スケジュール済みまたは手動の 同期ジョブ 中、クローラーはサイトマップの <lastmod> 属性の変更を確認します。前回同期日より後の日付に変わっていれば、そのページをクロールし、更新版を保存し、自動的に再インデックスします。検索結果が常に最新コンテンツを反映するようにするためです。
<lastmod> 属性が定義されていない場合、AI Search は <changefreq> 属性で再クロール頻度を決めます。<lastmod> も <changefreq> も定義されていない場合、AI Search は各リンクを 1 日 1 回自動クロールします。
デフォルトでは、AI Search は robots.txt に列挙されたすべてのサイトマップを、上から下の順でクロールします。クローラーにすべてをインデックスさせたくない場合、またはサイトマップが標準以外のパスにある場合は、dashboard の Parser options > Specific sitemap でカスタムサイトマップ URL を設定できます。
カスタムサイトマップ URL を設定すると、AI Search は robots.txt や /sitemap.xml からの自動検出ではなく、それらのサイトマップ URL を使います。サイトマップ URL は最大 5 件まで追加できます。
AI Search クローラーはユーザーエージェント Cloudflare-AI-Search を使います。robots.txt ファイルはサイトマップを参照し、クローラーを許可してください。
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml複数のサイトマップを列挙するか、サイトマップインデックスファイルを使えます。
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/blog-sitemap.xml
Sitemap: https://example.com/sitemap.xml.gz他のすべてのクローラーをブロックし、AI Search だけを許可するには:
User-agent: *
Disallow: /
User-agent: Cloudflare-AI-Search
Allow: /
Sitemap: https://example.com/sitemap.xmlサイトマップを構造化し、AI Search が効率よくクロールできる情報を与えます。
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/important-page</loc>
<lastmod>2026-01-15</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/other-page</loc>
<lastmod>2026-01-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
</urlset>これらの属性でクロール動作を制御します。
| 属性 | 目的 | 推奨 |
|---|---|---|
<loc> |
ページの URL | 必須です。完全 URL または部分 URL を使います。 |
<lastmod> |
最終更新日 | 変更検出を有効にするには含めます。AI Search はこの日付が変わるとページを再クロールします。 |
<changefreq> |
想定される変更頻度 | <lastmod> がないときに使います。値: always、hourly、daily、weekly、monthly、yearly、never。 |
<priority> |
相対的な重要度(0.0-1.0) | 重要なページには高い値を設定します。AI Search は優先度順にページをインデックスします。 |
Sitemap Index を使って、ドメイン固有の他のサイトマップをまとめることもできます。
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://www.example.com/sitemap-blog.xml</loc>
<lastmod>2024-08-15T10:00:00+00:00</lastmod>
</sitemap>
<sitemap>
<loc>https://www.example.com/sitemap-docs.xml</loc>
<lastmod>2024-08-10T12:00:00+00:00</lastmod>
</sitemap>
</sitemapindex>Sitemap Index を解析するとき、AI Search はすべての子サイトマップを集め、再帰的にクロールし、サイトマップ内の関連 URL をすべて収集します。
- すべての URL に
<lastmod>を含め、同期中の効率的な変更検出を有効にします。 <priority>を設定してインデックス順を制御します。優先度の高いページが先にインデックスされます。<lastmod>がないときはフォールバックとして<changefreq>を使います。- 複数サイトマップがある大規模サイトでは、サイトマップインデックスファイルを使います。
- 大きなサイトマップは
.gz形式で圧縮し、帯域を減らします。 - サイトマップはファイルあたり 50MB、50,000 URL 未満に保ちます(標準的なサイトマップ制限)。
discover パースタイプは、ページ検出を Browser Run の /crawl エンドポイント に委任します。AI Search はソース URL でクロールジョブを開始し、取得したすべてのページを 組み込みストレージ に保存します。
デフォルトでは、discover はサイトマップと、クロールしたページ上のリンクの両方から候補 URL を集めます。検出ソース オプションで、どちらか一方に制限できます。
discover はサイトマップに依存しないため、サイトマップが省略したページにも到達します。
- AI Search はソース URL でクロールジョブを開始します。
- クローラーは、検出ソースに応じて、サイトマップ、クロールしたページ上のリンク、またはその両方から候補 URL を集めます。
- クローラーは設定した深さまでリンクをたどり、ページ上限に達したら停止します。
- 取得した各ページは組み込みストレージに保存され、Markdown に変換され、チャンク化され、インデックスされます。
クローラーは、Cloudflare アカウント内のドメインでは Cloudflare-AI-Search として識別します。外部リンクまたはサブドメイン を有効にし、クロールがアカウント外のドメインに到達した場合は、Cloudflare-AI-Search-External として識別します。robots.txt が禁止するページは、インデックスされず、blocked_by_robots_txt の インデックスエラーコード で記録されます。
-
Cloudflare dashboard で AI Search ページを開きます。
AI Search を開く ↗ -
Create を選択し、データソースとして Website を選択します。
-
Crawl target にウェブサイト URL を入力します。
-
Parse type で Discover を選択します。
-
Crawl options で、Crawl source、Page limit、Crawl depth、Max cache age、Include external links、Include subdomains を調整します。
-
セットアップを完了し、インスタンスを作成します。
あとからこれらのオプションを変更するには、インスタンスを選択し、Settings タブを開き、Parser options の Crawl options を編集します。変更を保存すると、すべてのアイテムを再インデックスする新しいインデックスジョブが始まります。
parse_type を discover に設定し、デフォルト以外の設定を discover_options に渡します。
curl -X POST "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/ai-search/namespaces/default/instances" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"id": "my-ai-search",
"type": "web-crawler",
"source": "example.com",
"source_params": {
"web_crawler": {
"parse_type": "discover",
"discover_options": {
"source": "links",
"limit": 5000,
"depth": 3,
"max_age": 86400,
"include_subdomains": true
}
}
}
}'次のオプションは parse_type が discover の場合にのみ適用されます。すべて任意です。
| オプション | 型 | デフォルト | 範囲または値 | 説明 |
|---|---|---|---|---|
source |
string | all |
all、sitemaps、links |
クローラーが候補 URL を探す場所です。 |
limit |
number | 100000 |
1 から 100,000 | クロールするページの最大数です。 |
depth |
number | 5 |
1 から 100,000 | ソース URL からたどるリンクホップの最大数です。 |
max_age |
number | 86400 |
0 から 604,800 秒 | クローラーがキャッシュ済みページコンテンツを再利用してから再取得するまでの時間です。 |
include_external_links |
boolean | false |
true、false |
他ドメインを指すリンクをたどるかどうかです。 |
include_subdomains |
boolean | false |
true、false |
ソース URL のサブドメインを指すリンクをたどるかどうかです。 |
source オプションは、候補 URL の取得元を選びます。
all: サイトマップと、クロールしたページ上のリンクの両方を使います。sitemaps: サイトマップに列挙された URL のみを使います。links: クロールしたページ上のリンクのみを使います。
サイトマップがない、または信頼できないときは links を使います。ページ内リンクをたどらずサイトマップのカバー範囲だけが欲しいときは sitemaps を使います。
limit オプションは、クローラーがインデックスするページ数を最大 100000 まで制限します。この最大を超える値は、インスタンスの作成時または更新時に拒否されます。インスタンスのオブジェクト上限 も適用されるため、実効上限は低い方の値です。
depth オプションは、クローラーがソース URL からどれだけ遠くまで進むかを制限します。深さが 1 の場合、ソース URL から直接リンクされたページだけをクロールします。
max_age オプションは、クローラーがオリジンからページを再取得する前に受け入れるキャッシュ済みページコンテンツの最大経過時間(秒)です。常にオリジンから取得するには 0 にします。
dashboard の Max cache age は No cache、1 hour、1 day、3 days、7 days を提供します。
デフォルトでは、クローラーはソース URL のホスト上に留まります。サブドメインへのリンクをたどるには include_subdomains を有効にし、他ドメインへのリンクをたどるには include_external_links を有効にします。
各 同期ジョブ は新しいクロールジョブを開始します。AI Search はクロールが返したページを再インデックスし、到達できなくなったページを削除します。
クロールが完了しない、またはページ上限で止まった場合、AI Search は到達できなかったページを削除せず、以前インデックスしたページを保持します。
discover はサイトマップの <lastmod> や <changefreq> 属性を読みません。クローラーがオリジンへ戻る頻度は max_age で制御します。
parse_options.specific_sitemaps は parse_type が sitemap のときだけ有効です。discover と一緒に送ると検証エラーになります。
次のウェブサイト設定は、選んだパースタイプに関係なく適用されます。
- パスフィルタリング: URL パターンの包含と除外。除外されたページは取得されません。
- コンテンツセレクター: CSS セレクターに一致する要素だけをインデックスします。
- 認証ヘッダー: 各リクエストと一緒に送るカスタム HTTP ヘッダー。
- カスタムメタデータ:
<meta>タグから抽出したメタデータ。 - レンダリングモード: ページをヘッドレスブラウザーで読み込むかどうか。
discover クロールは最大 100,000 ページをインデックスし、ソース URL から最大 100,000 リンクホップをたどります。limit と depth で設定します。
インスタンスあたりのファイル数 の制限も適用されるため、実効上限は低い方の値です。ウェブサイトデータソースに適用されるすべての制限は Website を参照してください。