Install guide

Two things go live: the snippet that renders your disclosures, and the manifest that declares them from /.well-known/ on your origin. About ten minutes, no build step.

1 · Script tag

Add before </body> on every page. The snippet is 12 KB, dependency-free, and does nothing until it reads your manifest.

HTML
<script>window.AIDiscloseConfig = { manifestUrl: "/.well-known/ai-disclosure.json" };</script>
<script src="https://cdn.aidisclose.io/v0/aidisclose.js" defer></script>

Pin the version and add the published SRI hash in production.

2 · Google Tag Manager

  1. In GTM, create a new tag: Tag configuration → Custom HTML.
  2. Paste the script-tag block from step 1 into the HTML field.
  3. Triggering → All Pages (Page View). Do not use a delayed or scroll trigger: Article 50 requires the disclosure to be visible from the first interaction or exposure.
  4. Submit and publish the workspace.
  5. Verify with the checker — C3 confirms the snippet is detected.

3 · WordPress

The official plugin enqueues the snippet, writes the manifest at /.well-known/ via a rewrite rule, and adds a per-post and per-media “AI content” toggle that outputs data-ai-content. No code edits.

4 · Hosting the manifest

ai-disclosure.json must be served from your own origin. The well-known path on our domain cannot answer for yours. Three supported paths:

A · Static file

Download the generated manifest and serve it directly.

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>
Vercel / Netlify — commit the file, done
# Vercel / Netlify — served as-is from the static dir:
public/.well-known/ai-disclosure.json

B · Reverse proxy to your hosted manifest

Keep the manifest editable from the dashboard while it still serves from your origin. Proxy the well-known path to your hosted manifest endpoint. The dashboard generates these snippets pre-filled with your site key.

nginx
location = /.well-known/ai-disclosure.json {
  proxy_pass https://api.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY;
  proxy_set_header Host api.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://api.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY");
    }
    return fetch(request);
  }
};

C · Platforms without root file access

Some platforms, such as Shopify, cannot serve files at the domain root. Use the page-level link the spec allows: <link rel="ai-disclosure" href="…">. The checker treats link-only discovery as L1 with a note. The spec lists it as MAY, so it is compliant.

5 · Verify

Run the checker. C1 validates the manifest, C3 detects the snippet, C4–C6 confirm the disclosures render.

Run the checker