你可以将自己拥有的网站连接为 AI Search 实例的数据源。AI Search 会自动抓取并索引页面。
你只能抓取已加入同一 Cloudflare 账户的域名。有关如何将域名添加到 Cloudflare 账户,请参阅 接入域名。
你可以在通过 仪表板、REST API 或 Wrangler 创建新实例时连接网站。网站是可选数据源,可与 内置存储 一并添加。
连接域名后,爬虫会查找网站的 sitemap,以确定要访问的页面:
- 如果你在仪表板的 Parser options > Specific sitemap 中配置了一个或多个自定义 sitemap URL,AI Search 仅抓取这些 sitemap URL。
- 否则,爬虫会检查
robots.txt中列出的 sitemap。 - 如果未找到
robots.txt,爬虫会检查/sitemap.xml处的 sitemap。 - 如果没有任何 sitemap,则无法抓取该域名。
如果你的 sitemap 包含 <priority> 属性,AI Search 会读取所有 sitemap,并按每个页面的 priority 值进行索引,而不论该页面属于哪个 sitemap。
如果未指定 <priority>,则按 sitemap 提供的顺序索引页面:来自已配置的自定义 sitemap URL,或来自 robots.txt 的自上而下顺序。
AI Search 支持 .gz 压缩的 sitemap。robots.txt 和 sitemap 都可以使用部分 URL。
在计划或手动 同步作业 期间,爬虫会检查 sitemap 中 <lastmod> 属性的变化。如果该日期晚于上次同步日期,则会抓取该页面、存储更新版本,并自动重新索引,使搜索结果始终反映最新内容。
如果未定义 <lastmod> 属性,AI Search 会使用 <changefreq> 属性确定重新抓取该 URL 的频率。如果 <lastmod> 与 <changefreq> 均未定义,AI Search 会每天自动抓取每个链接一次。
抓取的页面会自动存储在内置存储中。
要查看从网站解析出的条目,请使用 Items API 列出实例的条目,或在仪表板中打开 Items(项目) 选项卡(AI > AI Search > 你的实例 > Items(项目))。
你可以通过定义 URL 路径的包含与排除规则,控制哪些页面被索引。用它将索引限制在站点的特定部分,或排除你不希望可搜索的内容。
例如,仅索引博文并排除草稿:
- Include:
**/blog/** - Exclude:
**/blog/drafts/**
有关模式语法、过滤行为及更多示例,请参阅 路径过滤。
有关支持的文件类型和大小限制,请参阅 数据源。
你可以在接入过程中,或在实例设置的 Parser options 下配置解析选项。
默认情况下,AI Search 会按 robots.txt 中列出的顺序(自上而下)抓取所有 sitemap。如果你不希望爬虫索引全部内容,或 sitemap 托管在非标准路径,可在仪表板的 Parser options > Specific sitemap 中配置自定义 sitemap URL。
配置自定义 sitemap URL 后,AI Search 会使用这些 sitemap URL,而不再从 robots.txt 或 /sitemap.xml 自动发现。最多可添加五个 sitemap URL。
你可以选择抓取时如何解析页面:
- Static sites(静态站点):下载每个页面的原始 HTML。
- Rendered sites(渲染站点):使用无头浏览器加载页面,并下载完整渲染版本(包括动态 JavaScript 内容)。
如果你的网站有位于身份验证之后的页面,或仅对已登录用户可见的页面,可配置自定义 HTTP 请求头,使 AI Search 爬虫能够访问这些受保护内容。你最多可为 AI Search 抓取站点时发送的请求添加五个自定义 HTTP 请求头。
要允许 AI Search 抓取受 Cloudflare Access 保护的站点,需要创建服务令牌凭据,并将其配置为自定义请求头。
服务令牌会绕过用户身份验证,请确保 Access 策略已针对你要索引的内容正确配置。服务令牌将允许 AI Search 爬虫访问 Service Auth 策略所覆盖的所有内容。
-
在 Cloudflare 仪表板 ↗ 中,创建服务令牌。生成 Client ID(客户端 ID) 和 Client Secret(客户端密钥) 后,请保存以供后续步骤使用。例如它们可能如下所示:
CF-Access-Client-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.access CF-Access-Client-Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -
创建策略,配置如下:
- 添加 Include(包含) 规则,将 Selector(选择器) 设为 Service token(服务令牌)。
- 在 Value(值) 中,选择你在步骤 1 中创建的服务令牌。
-
将自托管应用添加到 Access,配置如下:
- 在 Access policies(Access 策略) 中,点击 Select existing policies(选择现有策略)。
- 选择刚创建的策略,然后选择 Confirm(确认)。
-
在 Cloudflare 仪表板中,前往 AI Search 页面。
Go to AI Search ↗ -
选择 Create(创建)。
-
将数据源选择为 Website(网站)。
-
在 Parse options(解析选项) 下,找到 Extra headers(额外标头),使用已保存的凭据添加以下两个请求头:
- Header 1:
- Key(键):
CF-Access-Client-Id - Value(值):
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.access
- Key(键):
- Header 2:
- Key(键):
CF-Access-Client-Secret - Value(值):
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- Key(键):
- Header 1:
-
完成 AI Search 设置流程以创建搜索实例。
你可以使用 HTML <meta> 标签为网页附加自定义元数据。AI Search 会从每个已抓取页面的 <head> 部分提取元数据。
在提取自定义元数据之前,你必须在 AI Search 配置中 定义 schema。
使用 name 或 property 属性添加 <meta> 标签:
<!DOCTYPE html>
<html>
<head>
<meta name="title" content="Getting Started Guide" />
<meta name="description" content="Learn how to set up the application" />
<meta property="og:title" content="Getting Started Guide" />
<meta property="og:image" content="https://example.com/og-image.png" />
<meta name="category" content="documentation" />
<meta name="version" content="2.5" />
<meta name="is_public" content="true" />
</head>
<body>
<!-- Page content -->
</body>
</html>对于以下字段,AI Search 知道应从哪些 meta 标签提取。你仍须在 schema 中定义这些字段才能启用提取。
| 字段 | 来源 |
|---|---|
title |
<meta name="title"> 或 <meta property="og:title"> |
description |
<meta name="description"> 或 <meta property="og:description"> |
image |
<meta property="og:image"> |
当标准 meta 标签与 Open Graph 标签同时存在时,标准 meta 标签优先。
爬虫获取页面时:
- 从
<head>部分解析所有带有name或property属性的<meta>标签。 - 将标签名称与你的 schema 匹配(不区分大小写)。
- 将
content属性值转换为已配置的数据类型。 - 提取的元数据与缓存的 HTML 一并存储。
- 在后续处理中,元数据会进入向量索引。
对于 boolean 字段,接受以下值(不区分大小写):
| 真值 | 假值 |
|---|---|
true、1、yes |
false、0、no |
其他任何值均视为无效,该字段将被省略。
内容选择器让你控制抓取页面的哪些部分被索引。每个条目将一个 URL glob 模式与一个 CSS 选择器配对。当页面 URL 匹配某个 glob 模式时,仅提取匹配对应 CSS 选择器的元素及其后代,并转换为 Markdown 以进行索引。
列表按顺序处理,首个匹配的路径生效。如果页面 URL 匹配多个 glob 模式,仅应用第一个匹配项的选择器。请将条目从最具体到最宽泛排序。
在没有内容选择器时,AI Search 会应用默认处理流程,在将剩余内容转换为 Markdown 之前移除 <header>、<footer> 和 <head> 等元素。有关 HTML 处理的更多详细信息,请参阅 HTML 的处理方式。
-
在 Cloudflare 仪表板中,前往 AI Search ↗ 页面。
Go to AI Search ↗ -
选择你的 AI Search 实例,或选择 Create(创建) 以创建带有 Website(网站) 数据源的新实例。
-
在数据源设置下,找到 Content selectors(内容选择器) 部分。
-
选择 Add selector(添加选择器)。
-
在 Path(路径) 字段中,输入用于匹配页面 URL 的 glob 模式。例如
**/blog/**。 -
在 Selector(选择器) 字段中,输入用于从匹配页面提取内容的 CSS 选择器。例如
article .post-body。 -
要添加更多条目,再次选择 Add selector(添加选择器)。条目按从上到下的顺序进行评估。
内容选择器在创建或更新 AI Search 实例时,配置于 source_params.web_crawler.parse_options.content_selector 字段。该字段接受对象数组,每个对象包含 path 和 selector 属性。
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/ai-search/instances" \
-H "Authorization: Bearer {api_token}" \
-H "Content-Type: application/json" \
-d '{
"id": "my-ai-search",
"source": "https://example.com",
"type": "web-crawler",
"source_params": {
"web_crawler": {
"parse_options": {
"content_selector": [
{
"path": "**/blog/**",
"selector": "article .post-body"
},
{
"path": "**/docs/**",
"selector": "main .content"
}
]
}
}
}
}'| 字段 | 类型 | 说明 |
|---|---|---|
path |
string | 用于匹配完整页面 URL 的 glob 模式。使用与 路径过滤 相同的 glob 语法——* 匹配段内内容,** 可跨越目录。最长 200 个字符。 |
selector |
string | 用于从匹配路径模式的页面提取内容的 CSS 选择器。支持标准 CSS 选择器,包括元素、类、ID 和属性选择器。最长 200 个字符。 |
仅索引博文页面中的文章正文,并忽略导航、侧边栏和页脚:
| Path | Selector |
|---|---|
**/blog/** |
article .post-body |
索引文档站点的主要内容区域:
| Path | Selector |
|---|---|
**/docs/** |
main .content |
你可以定义多个条目,为站点的不同部分应用不同选择器。首个匹配的路径生效,因此请将更具体的模式放在前面:
| Path | Selector |
|---|---|
**/blog/releases/** |
.release-notes |
**/blog/** |
article .post-body |
**/docs/** |
main .content |
在此示例中,https://example.com/blog/releases/v2 匹配第一个模式并使用 .release-notes 选择器。https://example.com/blog/my-post 跳过第一个模式并匹配第二个。
- 路径过滤:路径过滤 优先于内容选择器。被路径过滤排除的页面不会被抓取,因此内容选择器不会应用于它们。
- 渲染模式:内容选择器应用于 AI Search 收到的 HTML。对于使用 JavaScript 渲染内容的站点,请使用 Rendered sites 模式,以便选择器能够定位完整渲染后的 DOM。
- 自动重新索引:更新内容选择器会立即触发新的 同步作业,以便将更改应用于所有已索引页面。
| 限制 | 值 |
|---|---|
| 内容选择器条目上限 | 10 |
| 路径模式最大长度 | 200 个字符 |
| 选择器最大长度 | 200 个字符 |
配置 robots.txt 和 sitemap,帮助 AI Search 高效抓取你的站点。
AI Search 爬虫使用的用户代理为 Cloudflare-AI-Search。你的 robots.txt 文件应引用 sitemap 并允许该爬虫:
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml你可以列出多个 sitemap,或使用 sitemap 索引文件:
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构建 sitemap,向 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。 |
<lastmod> |
上次修改日期 | 包含该属性以启用变更检测。当此日期变化时,AI Search 会重新抓取页面。 |
<changefreq> |
预期变更频率 | 在没有 <lastmod> 时使用。取值:always、hourly、daily、weekly、monthly、yearly、never。 |
<priority> |
相对重要性(0.0-1.0) | 为重要页面设置更高值。AI Search 按优先级顺序索引页面。 |
你也可以使用 Sitemap Index 捆绑其他特定于域名的 sitemap:
<?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 会收集所有子 sitemap,然后递归抓取它们,收集 sitemap 中出现的所有相关 URL。
- 在所有 URL 上包含
<lastmod>,以便在同步期间高效检测变更。 - 设置
<priority>以控制索引顺序。优先级更高的页面会先被索引。 - 在没有
<lastmod>时,将<changefreq>用作回退。 - 对于有多个 sitemap 的大型站点,使用 sitemap 索引文件。
- 使用
.gz格式压缩大型 sitemap,以减少带宽。 - 将每个 sitemap 文件控制在 50MB 和 50,000 个 URL 以内(标准 sitemap 限制)。
如果你配置了用于阻止机器人活动的安全规则,可以添加规则将爬虫机器人加入允许列表。
-
在 Cloudflare 仪表板中,前往 Security rules(安全规则) 页面。
Go to Security rules ↗ -
要创建新的空规则,选择 Create rule(创建规则) > Custom rules(自定义规则)。
-
在 Rule name(规则名称) 中输入描述性名称,例如
Allow AI Search。 -
在 When incoming requests match(当传入请求匹配时) 下,使用 Field(字段) 下拉列表选择 Bot Detection ID。Operator(运算符) 选择 equals。Value(值) 输入
122933950。 -
在 Then take action(然后执行操作) 下,在 Choose action(选择操作) 下拉列表中选择 Skip。
-
在 Place at(放置位置) 下,在 Select order(选择顺序) 下拉列表中将规则顺序选为 First。将顺序设为 First 可使该规则在后续规则之前应用。
-
要保存并部署规则,选择 Deploy(部署)。
使用 Website 数据源时,适用常规的 AI Search 限制。
爬虫只会下载并索引页面,直至达到 AI Search 实例支持的最大对象数限制,并处理它访问到的第一批页面直到达到该限制。此外,已下载但超过文件大小限制的文件将不会被索引。
AI Search 抓取包含 Browser Run 和存储。完整定价详情请参阅 限制与定价。