Install guide
Two things go live: the snippet (renders disclosures) and the manifest (declares them, served from your origin at /.well-known/). 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.
<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
- In GTM, create a new tag: Tag configuration → Custom HTML.
- Paste the script-tag block from step 1 into the HTML field.
- 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.
- Submit and publish the workspace.
- 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 — /.well-known/ai-disclosure.json cannot live on our domain for yours. Three supported paths:
A · Static file
Download the generated manifest and serve it directly.
location = /.well-known/ai-disclosure.json {
alias /var/www/site/ai-disclosure.json;
default_type application/json;
add_header Cache-Control "max-age=3600";
}
Alias "/.well-known/ai-disclosure.json" "/var/www/site/ai-disclosure.json"
<Files "ai-disclosure.json">
ForceType application/json
</Files>
# Vercel / Netlify — served as-is from the static dir:
public/.well-known/ai-disclosure.json
B · Reverse proxy to your hosted manifest
Keep the file on your origin path while we keep it editable from the dashboard: proxy the well-known path to your hosted manifest endpoint (the dashboard generates these pre-filled with your site key).
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;
}
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 (e.g. Shopify) cannot serve files at the domain root. Fall back to the page-level link the spec allows: <link rel="ai-disclosure" href="…">. The checker treats link-only discovery as L1 with a note — spec-compliant, since the spec lists it as MAY.
5 · Verify
Run the checker. C1 validates the manifest, C3 detects the snippet, C4–C6 confirm the disclosures render.