安装指南

您的网站上需要有两样东西在线:访客看到的通知,以及一个声明您人工智能使用情况的小型公开文件(yoursite.com/.well-known/ai-disclosure.json)。代码片段标签只需粘贴一次,在每个页面上都相同,而您的声明决定了哪些通知出现在哪里。请在下方选择您的平台;大多数约需十分钟。

1 · 展示通知

访客在页面上看到的横幅和人工智能标签。

2 · 发布您的声明

ai-disclosure.json,一个可从您自己域名读取的公开文件。

完成的标志是

检测工具显示第 2 级 · 已呈现。

选择您的平台

WordPress

  1. 安装插件

    在您的 WordPress 后台:插件 → 安装插件 → 上传插件,选择您在下方下载的文件,然后点击“启用”。

    下载 AIDisclose 插件(.zip)

  2. 让它同时完成两项工作

    该插件会自动展示通知并发布您的声明文件。用文章或图片上的“人工智能内容”开关标记人工智能内容。无需修改代码。

  3. 验证

    当检测工具显示第 2 级 · 已呈现时即完成。

    运行检测工具

验证

运行检测工具。它会确认三件事:您的声明文件有效、代码片段正在运行、通知确实出现在页面上。(面向工程师:检查 C1、C3 以及 C4 至 C6。)

运行检测工具

如果您的网站屏蔽了我们的检测工具(AIDiscloseBot)

扫描和证据采集来自 AIDiscloseBot/1.0。它只读取公开页面:从不登录,从不提交表单,并遵守 robots.txt。如果您的 robots.txt 或机器人防护屏蔽未知爬虫,请明确允许它:

robots.txt
User-agent: AIDiscloseBot
Allow: /

允许它有风险吗?没有。robots.txt 中的允许不授予任何访问权限。它只是告诉守规矩的机器人可以读取那些本已公开的页面。任何人都可以伪造 User-Agent 字符串,但伪造者从中得不到您公开页面尚未提供的任何东西。

如果您用 WAF 或机器人管理器把控流量,切勿仅凭 User-Agent 加入白名单。请配合来源验证。我们会公布爬虫身份,以及随分配而更新的出口 IP 段,位置见 aidisclose.io/bot.json.

运行检测工具

高级

Theming with CSS variables, custom copy, single-page-app setup, and the full option reference are in the snippet reference.

将脚本锁定到确切版本(SRI)

script 标签中的完整性哈希会让浏览器拒绝运行被修改过的文件。请锁定带版本号的 URL,并从您部署的确切文件生成该哈希:

shell
curl -sO https://cdn.aidisclose.io/v1/aidisclose.js
openssl dgst -sha384 -binary aidisclose.js | openssl base64 -A
自行提供文件(nginx / Apache)

对于您自己控制的服务器,直接提供下载的 ai-disclosure.json:

nginx
location = /.well-known/ai-disclosure.json {
  alias /var/www/site/ai-disclosure.json;
  default_type application/json;
  add_header Cache-Control "max-age=3600";
}
Apache
Alias "/.well-known/ai-disclosure.json" "/var/www/site/ai-disclosure.json"
<Files "ai-disclosure.json">
  ForceType application/json
</Files>
从您自己的域名提供控制面板托管的文件

您的服务器会将对那一个地址的请求转发给我们:您在控制面板中编辑文件,它仍从您的域名提供。控制面板会显示这些已预填好您站点密钥的代码。

nginx
location = /.well-known/ai-disclosure.json {
  proxy_pass https://cdn.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY;
  proxy_set_header Host cdn.aidisclose.io;
  proxy_ssl_server_name on;
}
Cloudflare Worker
export default {
  async fetch(request) {
    const url = new URL(request.url);
    if (url.pathname === "/.well-known/ai-disclosure.json") {
      return fetch("https://cdn.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY");
    }
    return fetch(request);
  }
};
单页应用与静态托管

会把每个路由都重写到 index.html 的框架,以及某些静态托管,会拦截 /.well-known/ai-disclosure.json 并以 200 状态返回你应用的 HTML。文件看起来已经提交,但检查器读取到的是 HTML 而不是清单。两种修复方式:将 /.well-known/ 从通配重写中排除,让静态文件以 application/json 类型提供;或在 script 标签中加入 data-aidisclose="YOUR_SITE_KEY",改为加载由 AIDisclose 托管的清单,从而完全省去提供该文件。

netlify.toml / vercel.json
# netlify.toml: serve the real file before the SPA fallback
[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200
  force = false   # a real file at the path wins over this fallback

# vercel.json: rewrite everything EXCEPT /.well-known to the app
{ "rewrites": [
  { "source": "/((?!\.well-known/).*)", "destination": "/index.html" }
] }