Guia de instalação
Duas coisas precisam de estar em funcionamento no seu site: o aviso que os seus visitantes veem e um pequeno ficheiro público que declara a sua utilização de IA (oseusite.com/.well-known/ai-disclosure.json). A tag do snippet é colada uma vez, é idêntica em todas as páginas e a sua declaração decide que avisos aparecem e onde. Escolha a sua plataforma abaixo; a maioria demora cerca de dez minutos.
Banner e rótulos de IA que os seus visitantes veem na página.
ai-disclosure.json, um ficheiro público legível a partir do seu próprio domínio.
o verificador mostrar Nível 2 · Apresentado.
Escolha a sua plataforma
WordPress
Instalar o plugin
Na administração do WordPress: Plugins → Adicionar novo → Carregar plugin, escolha o ficheiro que transferiu abaixo e clique em Ativar.
Deixe-o fazer as duas tarefas
O plugin mostra os avisos e publica o seu ficheiro de declaração automaticamente. Marque conteúdo de IA em qualquer publicação ou imagem com o respetivo interruptor «Conteúdo de IA». Sem edições de código.
-
Verificar
Concluído quando o verificador mostrar Nível 2 · Apresentado.
Executar o verificador
Shopify
Adicionar o snippet
Loja online → Temas → ⋯ → Editar código → theme.liquid: cole esta única tag imediatamente antes de </body>. O theme.liquid é o layout por onde todas as páginas são apresentadas, pelo que uma única colagem cobre toda a loja. O Shopify não consegue alojar ficheiros na raiz do seu domínio, por isso a tag transporta a sua chave de site AIDisclose (data-aidisclose) e carrega o manifesto que alojamos por si.
theme.liquid <script src="https://cdn.aidisclose.io/v1/aidisclose.js" data-aidisclose="YOUR_SITE_KEY" defer></script>Ligar a sua declaração
Cole esta ligação dentro de <head> no mesmo ficheiro. O seu painel mostra ambas as linhas pré-preenchidas com a sua chave de site.
<head> <link rel="ai-disclosure" href="https://cdn.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY">Este é um método permitido pela especificação.
-
Verificar
Concluído quando o verificador mostrar Nível 1 · Declarado com uma nota. Esse é o resultado esperado nesta plataforma e está em conformidade.
Executar o verificador
Webflow
Adicionar o snippet
Definições do site → Código personalizado → Código do rodapé: cole o bloco do snippet abaixo e depois Publicar. O código personalizado ao nível do site carrega em todas as páginas.
Footer code <script src="https://cdn.aidisclose.io/v1/aidisclose.js" data-aidisclose="YOUR_SITE_KEY" defer></script>Ligar a sua declaração
No código do cabeçalho, adicione a linha de ligação da declaração (segundo bloco abaixo). Prefere servir o ficheiro a partir do seu próprio domínio? Utilize o proxy em Avançado se o seu DNS passa pela Cloudflare.
Head code <link rel="ai-disclosure" href="https://cdn.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY">Este é um método permitido pela especificação.
-
Verificar
Concluído quando o verificador mostrar Nível 1 · Declarado com uma nota. Esse é o resultado esperado nesta plataforma e está em conformidade.
Executar o verificador
Squarespace
Adicionar o snippet
Definições → Avançado → Injeção de código → Rodapé: cole o bloco do snippet abaixo. A injeção de código aplica-se a todas as páginas. Requer o plano Business.
Footer <script src="https://cdn.aidisclose.io/v1/aidisclose.js" data-aidisclose="YOUR_SITE_KEY" defer></script>Ligar a sua declaração
Na injeção de cabeçalho, adicione a linha de ligação da declaração (segundo bloco abaixo).
Header <link rel="ai-disclosure" href="https://cdn.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY">Este é um método permitido pela especificação.
-
Verificar
Concluído quando o verificador mostrar Nível 1 · Declarado com uma nota. Esse é o resultado esperado nesta plataforma e está em conformidade.
Executar o verificador
Google Tag Manager
Criar a tag
Nova tag → Configuração da tag → HTML personalizado → cole o snippet. Acionador: Todas as páginas (visualização de página). Não utilize um acionador com atraso ou por deslocamento: as regras de divulgação exigem o aviso desde a primeira exposição. Publique o espaço de trabalho.
Custom HTML <script src="https://cdn.aidisclose.io/v1/aidisclose.js" defer></script>Publique também a sua declaração
O Tag Manager trata apenas dos avisos. O seu ficheiro de declaração continua a precisar de ser publicado: siga o passo da sua plataforma nos outros separadores ou o separador Código personalizado se gere o seu próprio site.
-
Verificar
Concluído quando o verificador mostrar Nível 2 · Apresentado.
Executar o verificador
Código personalizado
Adicionar o snippet
Uma vez no template ou layout do seu site, antes de </body>, para que seja distribuído com todas as páginas. O reforço de segurança para produção (fixação de versão, SRI) está em Avançado.
HTML <script src="https://cdn.aidisclose.io/v1/aidisclose.js" defer></script>Servir o ficheiro de declaração
O ficheiro ai-disclosure.json tem de poder ser lido em /.well-known/ no seu domínio. No Vercel ou Netlify, inclua o ficheiro no repositório. Se a sua framework reescrever todas as rotas para index.html, esse ficheiro precisa de uma exceção: consulte Aplicações de página única em Avançado. As configurações de nginx e Apache também se encontram em Avançado.
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).-
Verificar
Concluído quando o verificador mostrar Nível 2 · Apresentado.
Executar o verificador
Verificar
Execute o verificador. Confirma três coisas: o seu ficheiro de declaração é válido, o snippet está a funcionar e os avisos aparecem efetivamente na página. (Para engenheiros: verificações C1, C3 e C4 a C6.)
Se o seu site bloquear o nosso verificador (AIDiscloseBot)
As análises e as capturas de prova provêm do AIDiscloseBot/1.0. Lê apenas páginas públicas: nunca inicia sessão, nunca submete formulários e respeita o robots.txt. Se o seu robots.txt ou a sua proteção contra bots bloqueia rastreadores desconhecidos, autorize-o explicitamente:
User-agent: AIDiscloseBot
Allow: /
Autorizá-lo é um risco? Não. Uma autorização no robots.txt não concede qualquer acesso. Apenas indica aos bots que respeitam as regras que podem ler páginas que já são públicas. Qualquer pessoa pode forjar uma cadeia de User-Agent, mas quem o faz não ganha nada que as suas páginas públicas já não ofereçam.
Se filtra o tráfego com uma WAF ou um gestor de bots, nunca autorize apenas com base no User-Agent. Combine-o com a verificação da origem. Publicamos a identidade do nosso rastreador, e os intervalos de IP de saída à medida que são disponibilizados, em aidisclose.io/bot.json.
Avançado
Theming with CSS variables, custom copy, single-page-app setup, and the full option reference are in the snippet reference.
Fixar o script a uma versão exata (SRI)
Um hash de integridade na tag de script faz com que o navegador se recuse a executar um ficheiro modificado. Fixe o URL com versão e gere o hash a partir do ficheiro exato que implementa:
curl -sO https://cdn.aidisclose.io/v1/aidisclose.js
openssl dgst -sha384 -binary aidisclose.js | openssl base64 -A
Servir o ficheiro por conta própria (nginx / Apache)
Nos servidores que controla, sirva diretamente o ai-disclosure.json transferido:
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>
Servir a partir do seu próprio domínio o ficheiro alojado no painel
O seu servidor reencaminha para nós os pedidos desse único endereço: edita o ficheiro no painel e este continua a ser servido a partir do seu domínio. O painel mostra estes valores pré-preenchidos com a sua chave de site.
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);
}
};
Aplicações de página única e hosts estáticos
As frameworks que reescrevem todas as rotas para index.html, e alguns hosts estáticos, intercetam /.well-known/ai-disclosure.json e devolvem o HTML da sua aplicação com um estado 200. O ficheiro parece estar incluído no repositório, mas o verificador lê HTML em vez do manifesto. Duas soluções: exclua /.well-known/ da reescrita geral para que o ficheiro estático seja servido com o tipo application/json, ou adicione data-aidisclose="YOUR_SITE_KEY" à tag de script para carregar o manifesto alojado pela AIDisclose e não servir o ficheiro de todo.
# 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" }
] }