# Seu site lido por buscas com IA

Curso da DNACX (IA by DNACX). Mini curso de 45 minutos, nível praticar, na prateleira "Site e busca".

- Você sai com: Uma lista de correções do seu site, página por página: texto no HTML entregue, robots.txt, sitemap, título e descrição, dados estruturados
- Ferramentas: Terminal Git Bash com `curl` (as Aulas 1 a 3 também funcionam com `curl.exe` no PowerShell do Windows, na forma indicada em cada passo) e um navegador para abrir endereços. Nenhuma conta nem plano pago; a Aula 5 usa também o Node.js
- Testado: Testado em 27/10/2026: comandos executados contra dnacx.online no Git Bash e, nas Aulas 1 a 3, no PowerShell do Windows; fontes oficiais lidas em 27/10/2026.
- Reconferir até 25/01/2027
- Página: https://dnacx.online/ia/cursos/seu-site-lido-por-buscas-com-ia

## Antes de começar

Este curso confere o seu site do jeito que um robô o recebe. Você pede páginas, lê o que volta e anota o que falta. Tudo é leitura: nada é alterado no site.

**O que o curso não faz:** não diz se o seu site aparece no Google nem se uma IA o cita. Isso exige Search Console e testes de citação. Conferir a acessibilidade é o primeiro passo, e não garante posição nem citação. A DNACX observou, no próprio site, que a indexação no Google foi o gargalo dominante (no Bing a cobertura era maior). Por isso a lista que você vai montar é o começo do trabalho.

**Como ler o HTML entregue.** Use o terminal: `curl` baixa o HTML sem executar JavaScript. Nos exemplos, troque `SEU-SITE` pelo seu endereço. No Windows, use o Git Bash. As Aulas 1 a 3 também funcionam com `curl.exe` no PowerShell (lá, `curl` sozinho é outro comando); as Aulas 4 e 5 usam `grep` e `wc`, então peça o Git Bash. Para `robots.txt` e `sitemap.xml`, abrir o endereço no navegador também serve.

Os resultados mostrados nas aulas vêm do teste feito em dnacx.online. O seu site dará outros números.

## Aula 1 · O texto está no HTML entregue? (8 min)

O `curl` mostra o HTML que o servidor entrega, antes de qualquer JavaScript. Se o texto da página só aparece depois do script, qualquer leitor que não execute JavaScript vê uma página vazia. Por isso a conferência usa o HTML bruto.

1. Escolha a página de conteúdo mais importante do seu site (um artigo, uma página de serviço).
2. Copie uma frase do meio do texto visível, de uns 4 a 6 palavras.
3. Baixe o HTML e conte as linhas com a frase. No Git Bash: `curl -s https://SEU-SITE/pagina | grep -a -c "sua frase"`. No PowerShell: `curl.exe -s https://SEU-SITE/pagina | Select-String -SimpleMatch "sua frase" | Measure-Object`.
4. Se o número for 1 ou mais, o texto está no HTML entregue. Se for 0, o texto vem depois do JavaScript, ou a frase está partida por uma tag: teste outra frase, curta, de uma só linha de texto.

**O que o teste mostrou em dnacx.online:** na página `/recursos/artigos/nps-vs-csat`, a frase "Como Funciona a Metodologia NPS" apareceu em 2 linhas do HTML bruto (a contagem é de linhas, não de ocorrências; o mesmo resultado, 2, saiu no Git Bash e no PowerShell), e o `<main>` tinha 2.150 palavras sem executar nenhum script. Na página `/pesquisas/nova`, da área logada, o `<main>` tinha só "Verificando sessão…": o conteúdo vem depois do JavaScript. Ali isso é esperado, porque é uma ferramenta com login e a página declara `noindex`. Numa página pública que você quer ver encontrada, seria um defeito a corrigir.

Anote na sua lista: página, frase testada, resultado (no HTML ou só depois do script).

## Aula 2 · O robots.txt libera os robôs (8 min)

1. Abra `https://SEU-SITE/robots.txt` no navegador ou rode `curl -s https://SEU-SITE/robots.txt`.
2. Confirme que a resposta é um texto, com status e tipo: `curl -s -o /dev/null -w "HTTP %{http_code} tipo=%{content_type}" https://SEU-SITE/robots.txt` (no teste: HTTP 200, `text/plain`). No PowerShell: `curl.exe -s -o NUL -w "HTTP %{http_code} tipo=%{content_type}" https://SEU-SITE/robots.txt`. Se der 404, o arquivo não existe.
3. Procure linhas `Disallow:`. Cada uma é um caminho que robôs não devem rastrear. Veja se alguma bloqueia a pasta de conteúdo que você quer ver encontrada.
4. Procure `User-agent:` com nomes de robôs. O arquivo pode tratar cada robô de um jeito.
5. Procure a linha `Sitemap:`. Ela aponta o endereço do sitemap.

**Três pontos que evitam erro:**

- **robots.txt controla rastreamento, e não indexação.** A documentação do Google diz que o arquivo não é um mecanismo para manter uma página fora do Google; para isso a indicação é `noindex` ou senha. Uma página bloqueada pode ter a URL indexada, sem descrição. No dnacx.online isso aconteceu: o Bing indexou `/login` enquanto o robots.txt a bloqueava, e a correção foi liberar o rastreamento e pôr `noindex` na página (observado pela DNACX em 08/09/2026).
- **Robô de treino e robô de busca são coisas diferentes.** Segundo a OpenAI, o OAI-SearchBot serve à busca do ChatGPT e o GPTBot ao treinamento, e cada um tem configuração independente. Bloquear um não bloqueia o outro. A decisão de permitir ou recusar treino é de negócio. Se você bloquear os robôs de busca, o seu conteúdo pode não aparecer nas respostas de busca desses produtos.
- **O ChatGPT-User age quando uma pessoa pede.** A OpenAI diz que ele não rastreia sozinho e que as regras do robots.txt podem não valer para ele.

**O que o teste mostrou em dnacx.online:** `User-agent: *` com `Allow: /`, o mesmo `Allow: /` repetido para Googlebot, GPTBot, ClaudeBot, PerplexityBot, Google-Extended e CCBot, nenhum `Disallow` ativo e a linha `Sitemap:`.

A OpenAI informa que uma mudança no robots.txt leva cerca de 24 horas para valer na busca dela.

Anote: existe? tem `Disallow` em pasta importante? tem `Sitemap:`? você tomou uma decisão consciente sobre robôs de treino?

## Aula 3 · O sitemap lista suas páginas (6 min)

1. Abra o endereço da linha `Sitemap:` (o padrão é `https://SEU-SITE/sitemap.xml`).
2. Confirme que abre um XML com blocos `<url>` e `<loc>`. Conte as páginas. No Git Bash: `curl -s https://SEU-SITE/sitemap.xml | grep -o '<loc>' | wc -l`. No PowerShell: `(curl.exe -s https://SEU-SITE/sitemap.xml | Select-String "<loc>" -AllMatches).Matches.Count`.
3. Procure no arquivo o endereço da página que você testou na Aula 1. Ele precisa estar lá.
4. Abra 5 endereços da lista, escolhidos de pontos diferentes do arquivo, e confira se todos respondem normalmente. Páginas que dão erro não devem estar no sitemap.

**O que o Google diz:** o sitemap ajuda a descobrir URLs e não garante rastreamento nem indexação. Sites pequenos, com cerca de 500 páginas ou menos e bem ligados por links internos, podem não precisar de um.

**O que o teste mostrou em dnacx.online:** HTTP 200, XML com 345 URLs, a página testada presente, e 10 endereços de amostra com resposta 200. O campo `<lastmod>` aparecia em 168 das 345 entradas.

Anote: o sitemap abre? sua página-chave está nele? alguma URL da amostra falhou?

## Aula 4 · Título, descrição, canonical e meta robots (7 min)

Esses quatro campos ficam no `<head>` do HTML. Use os comandos abaixo.

1. **Título:** `curl -s URL | grep -a -o '<title>[^<]*</title>'`. Cada página precisa de um título próprio, que descreva o assunto dela.
2. **Descrição:** `curl -s URL | grep -a -o '<meta name="description"[^>]*>'`. Uma frase que resume a página.
3. **Canonical:** `curl -s URL | grep -a -o '<link rel="canonical"[^>]*>'`. Deve apontar para o endereço preferido da própria página. Se apontar para outra página, você está dizendo que ela é a cópia.
4. **Meta robots:** `curl -s URL | grep -a -o '<meta name="robots"[^>]*>'`. Se contiver `noindex`, a página pede para ficar fora da busca. Confirme que isso só acontece nas páginas que você quer escondidas (login, área do cliente, agradecimento).

**O que o teste mostrou em dnacx.online:** a página testada tinha título e descrição próprios, canonical igual à URL pedida e meta robots `index, follow`. `/login` e `/pesquisas/nova` tinham `noindex,nofollow`. Uma URL inexistente respondeu HTTP 404, mas o HTML dela trazia `index, follow` e o título da home. O status 404 está certo; a meta `index, follow` numa página de erro é uma observação a conferir no seu site.

Anote por página: título (tem? é próprio?), descrição, canonical (aponta para si?), `noindex` (só onde deve?).

## Aula 5 · Dados estruturados (6 min)

Dados estruturados são um bloco de texto no HTML que descreve a página para máquinas. O formato que o Google recomenda é JSON-LD, dentro de uma tag `<script type="application/ld+json">`.

1. Procure `application/ld+json` no HTML baixado. Conte quantos blocos existem: `curl -s URL | grep -a -o 'application/ld+json' | wc -l`.
2. Copie cada bloco e cole em um validador de JSON, ou use o script abaixo, que extrai cada bloco e testa com `JSON.parse` no Node. Salve como `extrai-ld.mjs` e rode `curl -s URL | node extrai-ld.mjs`. O bloco precisa ser JSON válido.

```js
import fs from 'node:fs';
const h = fs.readFileSync(0, 'utf8');
const re = /<script[^>]*type="application\/ld\+json"[^>]*>([\s\S]*?)<\/script>/g;
let m, n = 0, ok = 0;
while ((m = re.exec(h))) { n++; try { JSON.parse(m[1]); ok++; } catch (e) {} }
console.log(n + ' blocos, ' + ok + ' com JSON válido');
```

3. Leia o campo `@type` de cada bloco (Article, Organization, BreadcrumbList, FAQPage e assim por diante). Confira se o tipo combina com a página.
4. Confira se as informações do bloco aparecem de fato visíveis na página. A política de dados estruturados do Google diz para não marcar conteúdo que não é visível aos leitores da página.
5. Para saber se a página é elegível a resultado enriquecido, use o Rich Results Test do Google. Sem passar por ele, não afirme elegibilidade.

**O que o teste mostrou em dnacx.online:** a página testada tinha 5 blocos JSON-LD, todos com JSON válido: Organization, WebSite e Person juntos; ItemList; Article; BreadcrumbList; FAQPage. O teste verificou a sintaxe e o tipo. A elegibilidade a resultado enriquecido é assunto do Rich Results Test, que você roda no seu site.

**Um aviso sobre FAQPage:** segundo o registro de mudanças do Google Search Central (entrada de 08/05/2026, lida em 27/10/2026), o resultado expandido de perguntas frequentes deixou de aparecer na busca a partir de 07/05/2026. A marcação continua válida. Se ela ajuda motores de resposta, a DNACX trata como hipótese em aberto, sem medição. Não coloque FAQPage por causa do Google e não remova em massa sem motivo.

Anote: quantos blocos, todos válidos, tipos corretos, dados batem com o texto visível.

## Aula 6 · Monte a lista de correções (5 min)

1. Para cada item das Aulas 1 a 5, classifique: **OK**, **corrigir** ou **não sei**.
2. Ordene as correções por efeito provável: primeiro o que impede a leitura (texto só depois do script, `Disallow` em pasta de conteúdo, `noindex` por engano, canonical errado), depois o que ajuda a entender (título, descrição, sitemap, dados estruturados).
3. Escreva cada correção como uma linha: **página, problema, o que mudar, quem muda**. Exemplo: "página de serviços, `noindex` ativo, retirar a meta robots, quem mantém o site".
4. Entregue a lista a quem cuida do site, ou faça a mudança você mesmo se for o caso. Depois de mudar, repita só o teste da correção.

## Prática (5 min, depois das Aulas 1 a 5)

1. Escolha 3 páginas do seu site: a inicial, uma de serviço e um artigo.
2. Para cada uma, rode os testes das Aulas 1, 4 e 5.
3. Rode as Aulas 2 e 3 uma vez para o site inteiro.
4. Preencha a lista da Aula 6 com o que achou.

## Checklist

- [ ] Procurei uma frase do meio da página no HTML entregue.
- [ ] Li o robots.txt e anotei `Disallow`, robôs nomeados e a linha `Sitemap:`.
- [ ] Abri o sitemap, achei minha página-chave nele e abri 5 endereços de amostra.
- [ ] Conferi título, descrição, canonical e meta robots de 3 páginas.
- [ ] Contei os blocos JSON-LD e validei o JSON de cada um.
- [ ] Escrevi a lista de correções com página, problema, mudança e responsável.
- [ ] Anotei o que não consegui verificar, sem presumir que está certo.

## Como testamos

| Passo | Conta ou ambiente | Resultado |
| --- | --- | --- |
| robots.txt do dnacx.online com `curl` | Git Bash, 27/10/2026 | HTTP 200, `Allow: /` para todos e para 6 robôs nomeados, linha `Sitemap:` |
| sitemap.xml: abrir, contar, achar a página, amostra de 10 URLs | Git Bash | 345 URLs, página presente, 10 de 10 com 200 |
| Texto no HTML bruto de uma página de conteúdo | Git Bash e node | 2.150 palavras no `<main>` sem JavaScript; frase achada em 2 linhas |
| Contraste com página sem texto no HTML | Git Bash | `/pesquisas/nova`: `<main>` com 63 caracteres |
| Título, descrição, canonical, meta robots, `noindex` | Git Bash | Conferidos na página testada, em `/login` e em `/pesquisas/nova` |
| JSON-LD: contar e validar JSON | node | 5 de 5 blocos com JSON válido |
| `curl.exe` no PowerShell do Windows: robots.txt, frase no HTML, contagem do sitemap, título | PowerShell, 27/10/2026 | HTTP 200 `text/plain`; frase em 2 linhas; 345 `<loc>`; título igual ao do Git Bash |
| Comandos como escritos nas Aulas 2, 3 e 5: `curl -w` no robots.txt, contagem de `<loc>` no Git Bash e no PowerShell, contagem de `application/ld+json` e script `extrai-ld.mjs` | Git Bash e PowerShell, 27/10/2026 | HTTP 200 `text/plain`; 345 nas duas contagens; 5 ocorrências; 5 blocos, 5 com JSON válido |

## Fontes

Teste da DNACX de 27/10/2026 em dnacx.online. Páginas oficiais abertas em 27/10/2026:

- Google, "Introduction to robots.txt": https://developers.google.com/search/docs/crawling-indexing/robots/intro
- Google, "Sitemaps overview": https://developers.google.com/search/docs/crawling-indexing/sitemaps/overview
- Google, "Introduction to structured data": https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data
- Google, políticas de dados estruturados: https://developers.google.com/search/docs/appearance/structured-data/sd-policies
- Google, registro de mudanças do Search Central: https://developers.google.com/search/updates
- OpenAI, rastreadores: https://developers.openai.com/api/docs/bots

Observações da DNACX no próprio site, de 08/09/2026 e 21/09/2026.
