Guia de instalação

Duas coisas precisam estar no ar no seu site: o aviso que os seus visitantes veem e um pequeno arquivo público que declara o seu uso de IA (seusite.com/.well-known/ai-disclosure.json). A tag do snippet é colada uma única vez, é idêntica em todas as páginas, e a sua declaração decide quais avisos aparecem onde. Escolha a sua plataforma abaixo; a maioria leva cerca de dez minutos.

1 · Exibir os avisos

Banner e rótulos de IA que os seus visitantes veem na página.

2 · Publicar a sua declaração

ai-disclosure.json, um arquivo público legível a partir do seu próprio domínio.

Você conclui quando

o verificador mostrar Nível 2 · Renderizado.

Escolha a sua plataforma

WordPress

  1. Instale o plugin

    No painel do WordPress: Plugins → Adicionar novo → Enviar plugin, escolha o arquivo que você baixou abaixo e clique em Ativar.

    Baixe o plugin AIDisclose (.zip)

  2. Deixe-o cuidar das duas tarefas

    O plugin exibe os avisos e publica o seu arquivo de declaração automaticamente. Marque conteúdo de IA em qualquer post ou imagem com o botão "Conteúdo de IA". Sem edição de código.

  3. Verificar

    Concluído quando o verificador mostrar Nível 2 · Renderizado.

    Executar o verificador

Verificar

Execute o verificador. Ele confirma três coisas: o seu arquivo de declaração é válido, o snippet está em funcionamento e os avisos realmente aparecem na página. (Para engenheiros: verificações C1, C3 e C4 a C6.)

Executar o verificador

Se o seu site bloqueia o nosso verificador (AIDiscloseBot)

As verificações e as capturas de evidência vêm do AIDiscloseBot/1.0. Ele lê apenas páginas públicas: nunca faz login, nunca envia formulários e obedece ao robots.txt. Se o seu robots.txt ou a sua proteção contra bots bloqueia rastreadores desconhecidos, libere-o explicitamente:

robots.txt
User-agent: AIDiscloseBot
Allow: /

Liberar é um risco? Não. Uma permissão no robots.txt não concede nenhum acesso. Ela apenas informa a bots educados que eles podem ler páginas que já são públicas. Qualquer um pode falsificar uma string de User-Agent, mas um falsificador não ganha nada além do que as suas páginas públicas já oferecem.

Se você controla o tráfego com um WAF ou gerenciador de bots, nunca libere apenas com base no User-Agent. Combine isso com a verificação da origem. Publicamos a identidade do nosso rastreador, e as faixas de IP de saída à medida que são provisionadas, em aidisclose.io/bot.json.

Executar o verificador

Avançado

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

Trave o script em uma versão exata (SRI)

Um hash de integridade na tag de script faz o navegador se recusar a executar um arquivo modificado. Fixe a URL versionada e gere o hash a partir do arquivo exato que você publica:

shell
curl -sO https://cdn.aidisclose.io/v1/aidisclose.js
openssl dgst -sha384 -binary aidisclose.js | openssl base64 -A
Sirva o arquivo você mesmo (nginx / Apache)

Em servidores que você controla, sirva diretamente o ai-disclosure.json baixado:

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>
Sirva o arquivo hospedado no painel a partir do seu próprio domínio

O seu servidor encaminha para nós as requisições daquele endereço específico: você edita o arquivo no painel e ele continua sendo servido a partir do seu domínio. O painel mostra estes valores já preenchidos com a sua chave de site.

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);
  }
};
Aplicações de página única e hosts estáticos

Os frameworks que reescrevem todas as rotas para index.html, e alguns hosts estáticos, interceptam /.well-known/ai-disclosure.json e retornam o HTML do seu aplicativo com um status 200. O arquivo 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 arquivo estático seja servido com o tipo application/json, ou adicione data-aidisclose="YOUR_SITE_KEY" à tag de script para carregar o manifesto hospedado pelo AIDisclose e não servir o arquivo por completo.

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" }
] }