Desenvolvimento· Arrumando a casa · parte 2
Por que tirei os três sites do GPT Sites.
O GPT Sites colocou meus três sites no ar, mas não dava HSTS na raiz, código no repositório nem controle sobre o que cada página carrega.

Meus três sites entraram no ar pelo GPT Sites, da OpenAI, e isso teve valor. Para vender, porém, eles precisavam de velocidade, de cabeçalhos de segurança na raiz do domínio, de código no repositório de cada produto e de controle sobre o que cada página carrega. O arranjo atrapalhava cada uma dessas coisas. Foi um bom começo, que ficou pequeno.
Uso os modelos da OpenAI todos os dias, a ponto de ter o reconhecimento pelo uso de mais de 10 bilhões de tokens. A saída foi uma decisão técnica. Os números abaixo mostram o que pesou.
O domínio raiz não seguia as configurações da minha zona
A raiz do domínio apontava, por registros A, para o Cloudflare for SaaS da OpenAI. Nesse arranjo, as configurações da zona do dono do domínio não valem para a raiz, porque o encadeamento com o provedor só funciona por CNAME. Na prática, o que eu configurava na zona não chegava ao domínio raiz.
Medi o efeito em 29 de outubro de 2026. O HTTP da raiz ia para o HTTPS com um redirecionamento 302 da OpenAI, que é temporário, e não com 301, que é permanente. A raiz também não recebia HSTS, o cabeçalho que manda o navegador usar sempre HTTPS. O www, que passava pela minha zona, seguia o padrão. Além disso, a página recebia um script de desafio da Cloudflare injetado pela OpenAI.
O ClipLeve mostrou o custo do arranjo
O ClipLeve foi o caso mais claro. No Lighthouse para celular do site antigo, rodado em 30 de outubro, a nota foi 70 de desempenho, 100 de acessibilidade, 82 de boas práticas e 100 de SEO. Os 82 de boas práticas vinham do script de desafio injetado. O desempenho sofria por outro motivo: o LCP, que mede quando a parte principal da página aparece, era de 9,9 s, porque a imagem do topo era um PNG de 1,7 MB servido sem cache.
Faltavam dados estruturados, llms.txt (o arquivo que orienta modelos de linguagem sobre o site) e um modelo de página, então cabeçalho e rodapé se repetiam nas 8 páginas. Pior ainda, o código no ar tinha saído de um checkout temporário, que não existia no repositório do ClipLeve. O repositório guardava uma cópia dos arquivos publicados, atualizada à mão.
O site novo do ClipLeve, em Astro, foi ao ar em 30 de outubro. No Lighthouse de celular, a home em inglês, um guia e a calculadora tiveram 100 nas quatro notas, com LCP de 0,9 a 1,3 s.
Os sites novos mostraram a diferença na produção
O Pagenello é um site novo em Astro, com Worker da Cloudflare, no ar desde 30 de outubro, às 00:15 UTC. A primeira versão deu 83 de desempenho no PageSpeed do celular, com LCP de 4,5 s por causa das imagens do topo, e 97 de acessibilidade, por causa do contraste.
Na manhã de 30 de outubro, depois de duas correções, a produção chegou a 100 nas quatro categorias, no celular (LCP de 1,8 s e CLS 0) e no computador (LCP de 0,5 s). O último ponto a resolver era um pequeno deslocamento de layout, CLS 0,041, quando a fonte da marca chegava.
O Pagenello também precisa de formulário. O Worker grava cada pedido num banco D1, envia por e-mail um aviso e uma confirmação para quem pediu, e tem Turnstile, limite por IP e proteção contra pedidos duplicados.
O luisjunior.ai foi refeito do zero em Astro e está no ar desde 30 de outubro, às 17:46 UTC (os detalhes estão na parte 4). Em produção, no celular, marca de 98 a 99 de desempenho e 100 nas demais categorias. No computador, tem 100 em tudo, com LCP de 0,5 s.
Os três domínios passaram a seguir o mesmo padrão
Com a saída, o HTTP passa para HTTPS com 301 e a raiz recebe HSTS, nos três domínios. Cada site tem o código no repositório do próprio produto, e o deploy é um comando, npm run deploy, que publica e avisa os buscadores pelo IndexNow. Cada site também carrega só o que o próprio código manda.
Para colocar um site no ar rápido, o GPT Sites serve bem. Quando o site vira canal de venda, cada segundo de carregamento e cada cabeçalho passam a contar. A troca em si, feita sem sair do ar, é o assunto da parte 3.