跳转到内容
搜索文档

网站

最后更新 查看 MarkdownAgent 设置

你可以将自己拥有的网站连接为 AI Search 实例的数据源。AI Search 会自动抓取并索引页面。

你只能抓取已加入同一 Cloudflare 账户的域名。有关如何将域名添加到 Cloudflare 账户,请参阅 接入域名

快速入门

你可以在通过 仪表板REST APIWrangler 创建新实例时连接网站。网站是可选数据源,可与 内置存储 一并添加。

网站抓取的工作原理

连接域名后,爬虫会查找网站的 sitemap,以确定要访问的页面:

  1. 如果你在仪表板的 Parser options > Specific sitemap 中配置了一个或多个自定义 sitemap URL,AI Search 仅抓取这些 sitemap URL。
  2. 否则,爬虫会检查 robots.txt 中列出的 sitemap。
  3. 如果未找到 robots.txt,爬虫会检查 /sitemap.xml 处的 sitemap。
  4. 如果没有任何 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 下配置解析选项。

指定 sitemap

默认情况下,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 请求头。

为受 Cloudflare Access 保护的站点提供访问权限

要允许 AI Search 抓取受 Cloudflare Access 保护的站点,需要创建服务令牌凭据,并将其配置为自定义请求头。

服务令牌会绕过用户身份验证,请确保 Access 策略已针对你要索引的内容正确配置。服务令牌将允许 AI Search 爬虫访问 Service Auth 策略所覆盖的所有内容。

  1. Cloudflare 仪表板 中,创建服务令牌。生成 Client ID(客户端 ID)Client Secret(客户端密钥) 后,请保存以供后续步骤使用。例如它们可能如下所示:

    CF-Access-Client-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.access
    CF-Access-Client-Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  2. 创建策略,配置如下:

    • 添加 Include(包含) 规则,将 Selector(选择器) 设为 Service token(服务令牌)
    • Value(值) 中,选择你在步骤 1 中创建的服务令牌。
  3. 将自托管应用添加到 Access,配置如下:

    • Access policies(Access 策略) 中,点击 Select existing policies(选择现有策略)
    • 选择刚创建的策略,然后选择 Confirm(确认)
  4. 在 Cloudflare 仪表板中,前往 AI Search 页面。

    Go to AI Search ↗
  5. 选择 Create(创建)

  6. 将数据源选择为 Website(网站)

  7. Parse options(解析选项) 下,找到 Extra headers(额外标头),使用已保存的凭据添加以下两个请求头:

    • Header 1:
      • Key(键)CF-Access-Client-Id
      • Value(值)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.access
    • Header 2:
      • Key(键)CF-Access-Client-Secret
      • Value(值)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  8. 完成 AI Search 设置流程以创建搜索实例。

自定义元数据

你可以使用 HTML <meta> 标签为网页附加自定义元数据。AI Search 会从每个已抓取页面的 <head> 部分提取元数据。

在提取自定义元数据之前,你必须在 AI Search 配置中 定义 schema

向网页添加元数据

使用 nameproperty 属性添加 <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 标签优先。

元数据提取的工作原理

爬虫获取页面时:

  1. <head> 部分解析所有带有 nameproperty 属性的 <meta> 标签。
  2. 将标签名称与你的 schema 匹配(不区分大小写)。
  3. content 属性值转换为已配置的数据类型。
  4. 提取的元数据与缓存的 HTML 一并存储。
  5. 在后续处理中,元数据会进入向量索引。

布尔值解析

对于 boolean 字段,接受以下值(不区分大小写):

真值 假值
true1yes false0no

其他任何值均视为无效,该字段将被省略。

内容选择器

内容选择器让你控制抓取页面的哪些部分被索引。每个条目将一个 URL glob 模式与一个 CSS 选择器配对。当页面 URL 匹配某个 glob 模式时,仅提取匹配对应 CSS 选择器的元素及其后代,并转换为 Markdown 以进行索引。

列表按顺序处理,首个匹配的路径生效。如果页面 URL 匹配多个 glob 模式,仅应用第一个匹配项的选择器。请将条目从最具体到最宽泛排序。

默认行为

在没有内容选择器时,AI Search 会应用默认处理流程,在将剩余内容转换为 Markdown 之前移除 <header><footer><head> 等元素。有关 HTML 处理的更多详细信息,请参阅 HTML 的处理方式

在仪表板中配置内容选择器

  1. 在 Cloudflare 仪表板中,前往 AI Search 页面。

    Go to AI Search ↗
  2. 选择你的 AI Search 实例,或选择 Create(创建) 以创建带有 Website(网站) 数据源的新实例。

  3. 在数据源设置下,找到 Content selectors(内容选择器) 部分。

  4. 选择 Add selector(添加选择器)

  5. Path(路径) 字段中,输入用于匹配页面 URL 的 glob 模式。例如 **/blog/**

  6. Selector(选择器) 字段中,输入用于从匹配页面提取内容的 CSS 选择器。例如 article .post-body

  7. 要添加更多条目,再次选择 Add selector(添加选择器)。条目按从上到下的顺序进行评估。

通过 API 配置内容选择器

内容选择器在创建或更新 AI Search 实例时,配置于 source_params.web_crawler.parse_options.content_selector 字段。该字段接受对象数组,每个对象包含 pathselector 属性。

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 的最佳实践

配置 robots.txt 和 sitemap,帮助 AI Search 高效抓取你的站点。

robots.txt

AI Search 爬虫使用的用户代理为 Cloudflare-AI-Search。你的 robots.txt 文件应引用 sitemap 并允许该爬虫:

robots.txttxt
User-agent: *
Allow: /

Sitemap: https://example.com/sitemap.xml

你可以列出多个 sitemap,或使用 sitemap 索引文件:

robots.txttxt
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:

robots.txttxt
User-agent: *
Disallow: /

User-agent: Cloudflare-AI-Search
Allow: /

Sitemap: https://example.com/sitemap.xml

Sitemap

构建 sitemap,向 AI Search 提供高效抓取所需的信息:

sitemap.xmlxml
<?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> 时使用。取值:alwayshourlydailyweeklymonthlyyearlynever
<priority> 相对重要性(0.0-1.0) 为重要页面设置更高值。AI Search 按优先级顺序索引页面。

你也可以使用 Sitemap Index 捆绑其他特定于域名的 sitemap:

sitemap-index.xmlxml
<?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 限制)。

允许 AI Search 爬虫通过 WAF

如果你配置了用于阻止机器人活动的安全规则,可以添加规则将爬虫机器人加入允许列表。

  1. 在 Cloudflare 仪表板中,前往 Security rules(安全规则) 页面。

    Go to Security rules ↗
  2. 要创建新的空规则,选择 Create rule(创建规则) > Custom rules(自定义规则)

  3. Rule name(规则名称) 中输入描述性名称,例如 Allow AI Search

  4. When incoming requests match(当传入请求匹配时) 下,使用 Field(字段) 下拉列表选择 Bot Detection IDOperator(运算符) 选择 equalsValue(值) 输入 122933950

  5. Then take action(然后执行操作) 下,在 Choose action(选择操作) 下拉列表中选择 Skip

  6. Place at(放置位置) 下,在 Select order(选择顺序) 下拉列表中将规则顺序选为 First。将顺序设为 First 可使该规则在后续规则之前应用。

  7. 要保存并部署规则,选择 Deploy(部署)

限制与定价

使用 Website 数据源时,适用常规的 AI Search 限制

爬虫只会下载并索引页面,直至达到 AI Search 实例支持的最大对象数限制,并处理它访问到的第一批页面直到达到该限制。此外,已下载但超过文件大小限制的文件将不会被索引。

AI Search 抓取包含 Browser Run 和存储。完整定价详情请参阅 限制与定价

这篇文档对您有帮助吗?