Cada vez mais pessoas perguntam ao ChatGPT, ao Claude ou ao Perplexity "qual é a melhor ferramenta para X?" em vez de pesquisarem no Google. Se o teu produto não aparece nessas respostas, não existes para esse público. A isto chama-se AEO (Answer Engine Optimization), e as apps feitas com IA partem com uma desvantagem: pela forma como as ferramentas as geram, a maioria mostra aos bots de IA uma página em branco. Este guia explica porque acontece precisamente nestas apps, como o verificar em dois minutos e o que corrigir consoante a ferramenta com que construíste.
Porque acontece precisamente às apps feitas com IA
O Lovable, o Bolt, o v0 e a maioria dos templates que o Cursor usa geram por defeito uma SPA: uma aplicação de página única com Vite e React em que o HTML que chega ao navegador está quase vazio e o JavaScript desenha tudo depois. É a arquitetura certa para um painel com login, mas essas ferramentas usam-na também para a landing, a página de preços e o blog. Três consequências:
- O conteúdo não está no HTML. O servidor envia um
<div id="root"></div>e pouco mais. O que tu vês é construído pelo navegador. - Os metadados também não. O título, a descrição e as etiquetas de partilha são definidos a partir do JavaScript, por isso um bot que não o executa vê o título genérico do template.
- Um só domínio para tudo. A parte pública e a parte privada partilham código, e ninguém pára para pensar no que deveria ser legível a partir de fora.
A armadilha é que muitos rastreadores de IA não executam JavaScript, ou fazem-no com limites. O Googlebot renderiza, embora com atraso e orçamento limitado; os bots da OpenAI, da Anthropic ou do Perplexity leem sobretudo o HTML tal como chega. Para eles a tua app é uma folha em branco: não conseguem perceber o que fazes nem citar-te.
O que um bot vê do teu site
Isto é, quase literalmente, o que um rastreador recebe de uma app gerada com uma destas ferramentas:
<!doctype html>
<html>
<head>
<title>Vite + React</title>
<script type="module" src="/assets/index-a1b2c3.js"></script>
</head>
<body>
<div id="root"></div>
</body>
</html>
Nem uma frase sobre o teu produto. Se, além disso, o template traz um robots.txt que bloqueia rastreadores, ou a tua CDN tem um modo anti-bots ativado, a porta está fechada duas vezes.
Como saber se te afeta (dois minutos)
- Ver código-fonte. Abre o teu site, clique direito, "Ver código-fonte da página" (não "Inspecionar", que mostra o resultado já renderizado). Procura o teu título principal e um parágrafo. Se não estiverem lá, os bots também não os veem.
- Sem JavaScript. Desativa-o no navegador e recarrega. O que ficar é o que um bot básico vê.
- Como o bot do ChatGPT. No terminal, pede a página com o user agent dele e conta as palavras que chegam:
curl -s -A "GPTBot" https://oteudominio.com/ | sed 's/<[^>]*>//g' | wc -w
Se saírem umas dezenas, o conteúdo vive no JavaScript. Se saírem várias centenas, chega no HTML. O detalhe de que bot faz o quê está em como saber se o ChatGPT consegue ver o teu site.
As cinco coisas que resolvem o problema
1. Conteúdo público que chega no HTML
Não é preciso renderizar no servidor a app inteira; basta as páginas que queres que a IA perceba: home, produto, preços, blog, perguntas frequentes. Três caminhos, do menos ao mais trabalhoso:
- Pré-renderizar no build. Um plugin de prerender para Vite gera um HTML completo por cada rota pública no momento de construir. Funciona bem para páginas que não mudam a cada visita.
- Separar o site do produto. Landing, preços e blog num site estático (Astro, Webflow, Framer, até Nuxt ou Next em modo estático) em
oteudominio.com, e a app como SPA emapp.oteudominio.com. É a arquitetura mais saudável e a que mais se parece com o que fazem os produtos maduros. - Migrar a parte pública para uma framework com SSR (Next.js, Nuxt, SvelteKit). Mais trabalho, mas o problema desaparece de vez.
2. Metadados no HTML, não no JavaScript
Título, descrição e etiquetas Open Graph têm de estar no HTML inicial. Se pré-renderizas ou separas o site, isto vem de graça. Se não, pelo menos põe no index.html um título e uma descrição reais em vez dos do template.
3. Dados estruturados que digam o que és
Um bloco JSON-LD com Organization e SoftwareApplication dá ao modelo factos sem ambiguidade: nome, o que faz, preço, onde está. Se tens perguntas frequentes, marca-as como FAQPage. O como está em dados estruturados: porque é que a IA cita uns sites e outros não.
4. Um llms.txt
Um ficheiro de texto na raiz do domínio que resume numa frase o que és e lista as tuas páginas importantes. Não é obrigatório nem mágico, mas é um ponto de entrada limpo e obriga-te a escrever a frase que define o teu produto. Tens um gerador gratuito de llms.txt.
5. Não bloquear os bots sem querer
Revê o robots.txt: um template copiado ou um Disallow: / da fase de testes fecham a porta ao GPTBot, ao ClaudeBot e companhia. E verifica o modo anti-bots da tua CDN. Podes ver que rastreadores de IA permites com o verificador de bots de IA.
O que não é preciso
Não precisas que a IA veja o teu painel privado: o que está atrás de um login não é lido por ninguém, e assim deve ser. Também não precisas de reescrever a app. O objetivo é que as quatro ou cinco páginas que explicam o que fazes sejam legíveis sem JavaScript, mais nada.
Como medir ao longo do tempo
Dois sinais. Nos logs do teu servidor ou CDN, filtra pelos user agents dos bots de IA e vê que páginas pedem; se não aparecer nenhum, revê primeiro o robots.txt. E uma vez por mês, pergunta ao ChatGPT, ao Claude e ao Perplexity pela tua categoria e pela tua marca, e aponta se te mencionam e se te descrevem bem. Essa ronda é a tua linha de base; o resto são suposições.
O Scanaris verifica isto em 30 segundos
O pilar de visibilidade para IA do Scanaris verifica se o teu conteúdo é legível sem JavaScript, se os teus metadados chegam no HTML, se tens dados estruturados e llms.txt, e se bloqueias bots de IA no robots.txt. Por cada falha dá-te um fix prompt para colar no Lovable, no Bolt ou no Cursor com a correção exata. E o rastreador de visibilidade vigia todos os dias se apareces quando alguém pede uma recomendação na tua categoria. Para perceber o contexto completo, começa por o que é o AEO.
Perguntas frequentes
O Google também vê a minha app em branco?
O Google renderiza JavaScript, mas numa segunda passagem que pode demorar dias e com um orçamento limitado por site. Uma app que chega vazia é indexada pior e mais tarde. Corrigir isto para a IA melhora também o teu SEO.
O Lovable, o Bolt ou o v0 conseguem renderizar no servidor?
Geram SPAs por defeito. A solução prática é pré-renderizar as páginas públicas ou passar o site de marketing para um site estático à parte e deixar a app num subdomínio.
Basta publicar um llms.txt?
Não. É um complemento útil, mas se o HTML chega vazio o bot continua sem conseguir ler as tuas páginas. Primeiro o conteúdo no HTML, depois o resto.