Installationsguide
To ting skal være aktive på dit site: den meddelelse, dine besøgende ser, og en lille offentlig fil, der erklærer din brug af AI (ditsite.dk/.well-known/ai-disclosure.json). Snippet-tagget indsættes én gang, er identisk på hver side, og din erklæring afgør, hvilke meddelelser der vises hvor. Vælg din platform nedenfor; de fleste tager cirka ti minutter.
Banner og AI-mærkater, dine besøgende ser på siden.
ai-disclosure.json, en offentlig fil, der kan læses fra dit eget domæne.
tjekkeren viser Niveau 2 · Vist.
Vælg din platform
WordPress
Installer pluginnet
I din WordPress-administration: Plugins → Add New → Upload Plugin, vælg filen, du downloadede nedenfor, og klik derefter på Activate.
Lad det klare begge opgaver
Pluginnet viser meddelelserne og udgiver din erklæringsfil automatisk. Marker AI-indhold på ethvert indlæg eller billede med dets "AI content"-skifteknap. Ingen kodeændringer.
-
Verificér
Færdig, når tjekkeren viser Niveau 2 · Vist.
Kør tjekkeren
Shopify
Tilføj snippettet
Online Store → Themes → ⋯ → Edit code → theme.liquid: indsæt dette ene tag lige før </body>. theme.liquid er det layout, hver side vises igennem, så én indsættelse dækker hele butikken. Shopify kan ikke hoste filer i dit domænes rod, så tagget bærer din AIDisclose-sitenøgle (data-aidisclose) og indlæser det manifest, vi hoster for dig.
theme.liquid <script src="https://cdn.aidisclose.io/v1/aidisclose.js" data-aidisclose="YOUR_SITE_KEY" defer></script>Link til din erklæring
Indsæt dette link inde i <head> i den samme fil. Dit dashboard viser begge linjer forudfyldt med din sitenøgle.
<head> <link rel="ai-disclosure" href="https://cdn.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY">Dette er en tilladt metode ifølge specifikationen.
-
Verificér
Færdig, når tjekkeren viser Niveau 1 · Erklæret med en note. Det er det forventede resultat på denne platform, og det er i overensstemmelse med reglerne.
Kør tjekkeren
Webflow
Tilføj snippettet
Site settings → Custom code → Footer code: indsæt snippet-blokken nedenfor, og klik derefter på Publish. Brugerdefineret kode på siteniveau indlæses på hver side.
Footer code <script src="https://cdn.aidisclose.io/v1/aidisclose.js" data-aidisclose="YOUR_SITE_KEY" defer></script>Link til din erklæring
Tilføj erklæringslinklinjen i Head code (anden blok nedenfor). Foretrækker du at levere filen fra dit eget domæne? Brug proxyen under Avanceret, hvis din DNS kører gennem Cloudflare.
Head code <link rel="ai-disclosure" href="https://cdn.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY">Dette er en tilladt metode ifølge specifikationen.
-
Verificér
Færdig, når tjekkeren viser Niveau 1 · Erklæret med en note. Det er det forventede resultat på denne platform, og det er i overensstemmelse med reglerne.
Kør tjekkeren
Squarespace
Tilføj snippettet
Settings → Advanced → Code Injection → Footer: indsæt snippet-blokken nedenfor. Kodeindsprøjtning gælder for hver side. Det kræver Business-abonnementet.
Footer <script src="https://cdn.aidisclose.io/v1/aidisclose.js" data-aidisclose="YOUR_SITE_KEY" defer></script>Link til din erklæring
Tilføj erklæringslinklinjen i Header injection (anden blok nedenfor).
Header <link rel="ai-disclosure" href="https://cdn.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY">Dette er en tilladt metode ifølge specifikationen.
-
Verificér
Færdig, når tjekkeren viser Niveau 1 · Erklæret med en note. Det er det forventede resultat på denne platform, og det er i overensstemmelse med reglerne.
Kør tjekkeren
Google Tag Manager
Opret tagget
New tag → Tag configuration → Custom HTML → indsæt snippettet. Triggering: All Pages (Page View). Brug ikke en forsinket trigger eller scroll-trigger: oplysningsreglerne kræver meddelelsen fra første eksponering. Udgiv workspacet.
Custom HTML <script src="https://cdn.aidisclose.io/v1/aidisclose.js" defer></script>Udgiv også din erklæring
Tag Manager håndterer kun meddelelserne. Din erklæringsfil skal stadig gøres aktiv: følg trinnet for din platform i de andre faner, eller fanen Brugerdefineret kode, hvis du driver dit eget site.
-
Verificér
Færdig, når tjekkeren viser Niveau 2 · Vist.
Kør tjekkeren
Brugerdefineret kode
Tilføj snippettet
Én gang i dit sites skabelon eller layout, før </body>, så det følger med hver side. Produktionssikring (versionslåsning, SRI) findes under Avanceret.
HTML <script src="https://cdn.aidisclose.io/v1/aidisclose.js" defer></script>Server erklæringsfilen
ai-disclosure.json skal kunne læses på /.well-known/ på dit domæne. På Vercel eller Netlify committer du filen. Hvis dit framework omskriver hver rute til index.html, skal den fil have en undtagelse: se Single-page-apps under Avanceret. nginx- og Apache-konfigurationer findes også under Avanceret.
Vercel / Netlify # Vercel / Netlify: commit the file public/.well-known/ai-disclosure.json # SPA that rewrites every route to index.html? # Exclude /.well-known/ from the rewrite (see Advanced).-
Verificér
Færdig, når tjekkeren viser Niveau 2 · Vist.
Kør tjekkeren
Verificér
Kør tjekkeren. Den bekræfter tre ting: din erklæringsfil er gyldig, snippettet kører, og meddelelserne vises faktisk på siden. (For ingeniører: tjek C1, C3 og C4 til C6.)
Hvis dit site blokerer vores tjekker (AIDiscloseBot)
Scanninger og dokumentationsoptagelser kommer fra AIDiscloseBot/1.0. Den læser kun offentlige sider: den logger aldrig ind, indsender aldrig formularer og adlyder robots.txt. Hvis din robots.txt eller botbeskyttelse blokerer ukendte crawlere, skal du tillade den eksplicit:
User-agent: AIDiscloseBot
Allow: /
Er det en risiko at tillade den? Nej. En tilladelse i robots.txt giver ingen adgang. Den fortæller kun høflige bots, at de må læse sider, der allerede er offentlige. Alle kan forfalske en User-Agent-streng, men en forfalsker opnår intet, som dine offentlige sider ikke allerede giver.
Hvis du styrer trafik med en WAF eller bot-manager, må du aldrig tillade adgang alene på baggrund af User-Agent. Kombiner det med kildeverifikation. Vi offentliggør vores crawleridentitet, og de udgående IP-intervaller efterhånden som de tildeles, på aidisclose.io/bot.json.
Avanceret
Theming with CSS variables, custom copy, single-page-app setup, and the full option reference are in the snippet reference.
Lås scriptet til en bestemt version (SRI)
Et integritetshash i script-tagget får browseren til at nægte at køre en ændret fil. Lås den versionerede URL, og generer hashet fra præcis den fil, du udruller:
curl -sO https://cdn.aidisclose.io/v1/aidisclose.js
openssl dgst -sha384 -binary aidisclose.js | openssl base64 -A
Server filen selv (nginx / Apache)
For servere, du kontrollerer, kan du levere den downloadede ai-disclosure.json direkte:
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>
Server den dashboard-hostede fil fra dit eget domæne
Din server videresender forespørgsler til den ene adresse til os: du redigerer filen i dashboardet, og den leveres stadig fra dit domæne. Dashboardet viser disse forudfyldt med din sitenøgle.
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;
}
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);
}
};
Single-page-apps og statiske hosts
Frameworks, der omskriver hver rute til index.html, og nogle statiske hosts opfanger /.well-known/ai-disclosure.json og returnerer din apps HTML med statussen 200. Filen ser ud til at være committet, men checkeren læser HTML i stedet for manifestet. To løsninger: udeluk /.well-known/ fra catch-all-omskrivningen, så den statiske fil leveres med typen application/json, eller føj data-aidisclose="YOUR_SITE_KEY" til script-tagget for at indlæse det AIDisclose-hostede manifest og helt undlade at levere filen.
# 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" }
] }