跳转到主要内容
AI 代理读取服务器发来的 HTML。它们不运行脚本,所以脚本绘制的价格、评价和规格到不了它们那里,图片里的文字也只能从 alt 文本读到。 AI Rendering 按人看到的样子渲染你发布的每个页面,去掉脚本,并把每张图片里的文字写进它的 alt 文本。你的 CDN 下载并保存这些副本, 用它们回应 AI 代理。人、搜索引擎和其他所有请求照常到达你的网站,querying.ai 从不在访问你网站的请求路径上。 GEO Score 衡量这个差距:rendering.score 是副本包含的页面比例。CDN 发出副本后,收到副本的代理就能读到这么多。

工作方式

  1. 连接网站。 网站密钥只显示一次。它只能读取你网站的副本。
  2. 发布页面。 发送页面 URL,querying.ai 从网站所在国家渲染页面并保存副本,之后每 refreshDays 天(默认 28 天)重新渲染。
  3. 同步副本。 你的 CDN 每 10 分钟用网站密钥读取副本列表,下载新副本,删除列表里已没有的副本。
  4. 回应 AI 代理。 AI 代理发来 GET 时,CDN 用保存的副本回应。没有副本的页面、过期的副本和任何错误都交给源站。

连接网站

请保存 key:只有这个响应里有它,CDN 会发送它。POST /v1/ai-rendering/sites/{id}/key 会给出新密钥,并立即停用旧密钥。 之后可用 PATCH /v1/ai-rendering/sites/{id} 修改。

发布页面

页面正在渲染:
渲染大约需要 30 秒。用 GET /v1/async/task/{taskId} 跟踪,或从 GET /v1/ai-rendering/sites/{id} 读取页面的 status:
  • ready:副本在副本列表里。copy 是它的 HTML 文件。
  • rendering:正在生成第一个副本。
  • failed:第一次渲染失败。页面会在 refreshAt 重新渲染。
  • expired:副本已过期,在下次渲染前不在列表里。
每个网站最多 1,000 个页面。再次发送已发布的页面会立即重新渲染。页面按路径和查询区分,去掉 utm_*、gclid 等追踪参数。 DELETE /v1/ai-rendering/sites/{id}/pages/{pageId} 下线页面。 要不重新渲染就发布 GEO Score 生成的副本,请发送它的 task id:{ "taskId": "0b6c1f7e-…" }。它必须是你账户里 已完成的 GEO Score,并且在网站所在国家测量。

设置 CDN

把下面的代码保存为 CDN 代码旁边的 ai-rendering.mjs。syncCopies 让存储与副本列表一致,copyFor 用存储里的副本回应 AI 代理的 GET:
Worker 把副本放在 Workers KV 中,并通过 cron 每 10 分钟同步一次。每个副本在 KV 中与副本文件同时过期。
wrangler.toml:
cloudflare-worker.mjs:
Workers 免费计划的 KV 每天只能写入 1,000 次,大型网站的首次同步可能超过一天。
下一次同步完成后,像 ChatGPT 打开页面那样检查已发布的页面。副本带有 X-Querying-Rendering: HIT:

副本列表

CDN 在 X-Querying-Site-Key 中放入网站密钥,读取 GET https://api.querying.ai/v1/ai-rendering/copies:
列表包含所有副本未过期的已发布页面。copy 无需密钥即可下载。页面重新渲染后 renderedAt 会改变,所以只在 renderedAt 是新的时候 下载。删除列表中已没有的页面的副本。列表和下载都免费。

代理

模块中的 AGENTS 决定谁能拿到副本,按 User-Agent 中任意位置的标记匹配,不区分大小写。
  • 默认: 人在提问时发往页面的代理(chatgpt-user、codex、claude-user、claude-code、perplexity-user、 gemini-deep-research、duckassistbot、amzn-user、mistralai-user),以及 ChatGPT 搜索的爬虫 oai-searchbot。ChatGPT 搜索根据这个爬虫保存的页面回答,GEO Score 的 score 衡量的就是这个页面。OpenAI 重新抓取页面后,它的索引才会变化。
  • 按需添加: claude-searchbot 和 perplexitybot。
  • 不要加入: 训练爬虫(GPTBot、ClaudeBot)和网页搜索爬虫(Googlebot、Bingbot)。Googlebot 会自己运行脚本。

遵守搜索引擎规则

给机器人发送与人不同的内容就是伪装(cloaking)。Google 只要内容相近,就不把为机器人渲染的页面视为伪装 (Dynamic rendering)。OpenAI 没有公开伪装政策, 因此让副本符合 Google 的规则:
  • 副本就是人的浏览器绘制的页面。querying.ai 去掉脚本,只把图片里的文字加进该图片的 alt 文本,alt 正是放图片文字的地方。
  • 副本只在页面自己的 URL 上发出。
  • 副本保持最新。querying.ai 每 refreshDays 重新渲染一次,模块不会发送过期的副本。
  • 如果编辑副本,只做删除或更正:改正识别错的字、去掉弹窗都可以。不要加入人看不到的说法、价格或链接。

副本的内容

副本是人的浏览器把页面滚动到底后绘制的 HTML:包含脚本加载的文字和嵌在原位的框架页面,除结构化数据(JSON-LD)外的脚本全部去掉, 每张大图的文字加进它的 alt 文本。链接和图片地址保持绝对地址,副本读起来就像页面本身。副本是最后一次渲染时的页面:价格或库存的变化要到 下一次渲染(最多 refreshDays 天后)再加上 CDN 同步的时间才会到达代理。图片文字按识别结果写入,识别错的字也会照样发出。

计费

每次渲染 5 积分,每张读取文字的图片 5 积分,你的账户过去 90 天读过的图片(同一文件、同一读取方式)每张 2 积分,最多 12 张。提交时预留 65 积分,完成时按实际用量扣除。失败的渲染不扣费。刷新按同样规则向网站所属账户计费,积分不足的账户 1 小时后重试。连接网站、发布 GEO Score 的副本、副本列表和下载副本都免费。副本由你的 CDN 发出,所以代理流量在 querying.ai 不产生费用。参见 积分与限制。

错误

端点见 API reference。