NLWeb: Como Preparar Seu Site para Ser Usado por Agentes de IA
Seu site não precisa ser apenas uma página que humanos leem. Ele pode virar uma ferramenta que agentes de IA consultam. Essa é a ideia central do NLWeb: transformar o conteúdo estruturado que você já tem em uma interface de linguagem natural, acessível tanto por pessoas quanto por agentes via MCP.
Se GEO é a camada que ajuda a IA a citar você, NLWeb é a camada que ajuda a IA a perguntar diretamente ao seu site. Em vez de esperar que o modelo encontre, raspe e interprete suas páginas, você oferece um endpoint próprio para perguntas como: "quais posts explicam MCP em produção?", "quais produtos atendem empresas pequenas?" ou "qual receita sem glúten combina com café da manhã?".
Este guia cobre:
- O que é NLWeb e por que ele importa para a AI Web
- Como ele se conecta com
Schema.org, RSS, GEO e MCP - A arquitetura mínima para deixar um site "agent-ready"
- Um plano prático para testar NLWeb no seu próprio conteúdo
- Riscos, limites e checklist antes de colocar em produção
O Problema: Seu Site Ainda Fala HTML, Mas Agentes Querem Intenção
A web foi desenhada para humanos. Uma página HTML é ótima para leitura visual, navegação, layout, imagens e links. Mas um agente de IA não quer "ver" seu site como um visitante normal. Ele quer responder perguntas, comparar itens, filtrar opções, resumir trechos e tomar decisões.
Hoje, quando um agente precisa usar um site, ele geralmente faz uma destas coisas:
| Caminho | Como funciona | Problema |
|---|---|---|
| Raspagem de HTML | O agente lê a página como texto bruto | Frágil, lento e dependente do layout |
| Busca tradicional | Usa Google/Bing ou índice interno | Pode não encontrar o trecho certo |
| API própria | O site cria uma API específica | Caro, pouco padronizado e difícil para cada agente descobrir |
| MCP customizado | O site expõe ferramentas específicas | Forte, mas exige modelar cada ação manualmente |
NLWeb tenta resolver uma parte desse caos com uma ideia simples: se o site já tem conteúdo estruturado, ele pode expor uma interface conversacional padrão.
Não é "colocar um chatbot genérico no rodapé". Isso é pouco ambicioso. A proposta é mais estrutural: criar uma porta em linguagem natural para o conteúdo do site.
A mudança mental: no SEO clássico, você publica páginas para humanos e crawlers. No GEO, você estrutura conteúdo para ser citado por modelos. No NLWeb, você cria um endpoint para que agentes consultem seu site como uma fonte ativa.
O Que é NLWeb
NLWeb é um conjunto de protocolos e ferramentas open source para adicionar interfaces de linguagem natural a websites. Ele usa dados estruturados existentes, como Schema.org e RSS, para responder perguntas em JSON e também expor o site como servidor MCP.
Na prática, NLWeb oferece duas coisas:
- Um protocolo simples de pergunta e resposta para consultar um site em linguagem natural.
- Uma implementação de referência que ingere conteúdo estruturado, indexa em um backend de busca/vetores e responde via endpoints como
/aske/mcp.
O detalhe importante é o segundo endpoint. Segundo a documentação do projeto, toda instância NLWeb também atua como um servidor MCP. Isso significa que um agente compatível com MCP pode descobrir e chamar a capacidade ask do seu site sem você criar uma integração diferente para cada cliente.
O README oficial resume a ambição com uma analogia forte: NLWeb quer ser para MCP/A2A algo parecido com o que HTML foi para HTTP. Não no sentido de substituir a web atual, mas de criar uma camada comum para interação semântica.
Como NLWeb Se Encaixa com GEO, MCP e A2A
NLWeb não compete com os outros temas que já discutimos aqui no blog. Ele fica entre eles.
Pense assim:
| Camada | Pergunta que responde |
|---|---|
| SEO | Como humanos encontram minha página em buscadores? |
| GEO | Como modelos citam meu conteúdo em respostas geradas? |
Schema.org |
Como máquinas entendem o tipo e os atributos do meu conteúdo? |
| MCP | Como agentes chamam ferramentas externas de forma padronizada? |
| NLWeb | Como meu site responde perguntas em linguagem natural e expõe isso para agentes? |
| A2A | Como agentes conversam entre si usando contratos explícitos? |
O encaixe é especialmente forte para sites com coleções: blogs, catálogos, receitas, eventos, imóveis, vagas, documentação técnica, bases de conhecimento, produtos B2B, turismo, reviews e diretórios.
Se o seu site só tem uma landing page estática, NLWeb talvez seja exagero. Mas se você tem dezenas ou centenas de itens consultáveis, ele começa a fazer sentido.
O Que Acontece por Dentro
A implementação de referência do NLWeb usa um fluxo que parece familiar para quem já mexeu com RAG, mas com uma diferença importante: a resposta carrega objetos estruturados, não apenas texto solto.
O fluxo básico:
- Ingestão: NLWeb lê RSS,
Schema.orgou outra fonte estruturada. - Indexação: os itens entram em um backend de busca ou vetor, como Qdrant, Postgres, Elasticsearch, Azure AI Search, Milvus, Snowflake ou Cloudflare AutoRAG.
- Consulta: o usuário ou agente envia uma pergunta natural para
/askou/mcp. - Ranking: o sistema recupera os itens mais relevantes.
- Resposta: NLWeb retorna JSON com
query_id, resultados, URLs, nomes, scores, descrições e objetosSchema.org.
O endpoint /ask é voltado para interfaces humanas. O endpoint /mcp devolve respostas em formato utilizável por clientes MCP e também suporta métodos centrais do MCP como listagem de tools e chamada de tool.
Um exemplo conceitual de consulta:
curl "https://seusite.com/ask?query=quais%20posts%20explicam%20MCP%20para%20iniciantes&mode=summarize"
E uma resposta simplificada:
{
"query_id": "q_2026_06_26_001",
"results": [
{
"url": "https://andrecosta.ia.br/blog/posts/mcp-na-pratica/",
"name": "MCP para Não-Programadores",
"site": "andrecosta.ia.br",
"score": 0.91,
"description": "Guia introdutório sobre Model Context Protocol, com analogias e exemplos de uso.",
"schema_object": {
"@type": "BlogPosting",
"headline": "MCP para Não-Programadores: Como Conectar Sua IA a Qualquer Ferramenta"
}
}
]
}
Esse formato muda a relação do agente com o site. Em vez de inferir tudo a partir de HTML, ele recebe uma resposta com item, URL, score e objeto semântico.
Por Que Schema.org Volta a Ser Importante
Durante anos, muita gente tratou Schema.org como "aquele JSON-LD que talvez ajude nos rich snippets do Google". Com agentes, ele ganha outro papel: vira uma camada de entendimento operacional.
Um BlogPosting, Product, Recipe, Event, Course, FAQPage ou SoftwareApplication bem marcado não serve apenas para buscador tradicional. Serve para o agente entender:
- que tipo de entidade está vendo;
- quais atributos são confiáveis;
- qual URL representa a fonte canônica;
- quais campos podem ser comparados;
- quais itens pertencem à mesma coleção.
Exemplo mínimo para um post:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "MCP para Não-Programadores",
"description": "Guia visual para conectar IA a ferramentas usando Model Context Protocol.",
"author": {
"@type": "Person",
"name": "André Costa"
},
"datePublished": "2026-04-30",
"url": "https://andrecosta.ia.br/blog/posts/mcp-na-pratica/"
}
</script>
Para um catálogo, isso fica ainda mais valioso. Um agente pode perguntar "qual produto tem suporte para times com mais de 50 pessoas?" e o NLWeb consegue recuperar itens estruturados, não apenas trechos dispersos.
Regra prática: quanto mais seu conteúdo parece uma coleção de objetos, mais NLWeb pode ajudar. Quanto mais seu conteúdo parece uma página institucional única, menos retorno imediato ele tende a trazer.
NLWeb Não é Só Chatbot
Esse ponto merece uma seção própria porque é onde muita gente vai errar.
Um chatbot tradicional no site normalmente funciona assim:
- recebe a pergunta;
- joga tudo em um RAG genérico;
- responde em texto;
- talvez cite uma URL;
- quase nunca expõe uma interface útil para agentes externos.
NLWeb tem outra orientação. Ele padroniza uma interface de consulta para o site. A UI conversacional é apenas uma das formas de consumo. A outra é mais interessante: agentes podem chamar o site como ferramenta.
Imagine três cenários:
- Um assistente pessoal planejando viagem pergunta ao site de turismo quais atrações são boas para criança e ficam abertas em domingo.
- Um agente de compras B2B consulta catálogos de fornecedores e compara produtos por atributos estruturados.
- Um agente de pesquisa técnica consulta blogs e docs para montar uma resposta com fontes canônicas.
Em todos os casos, o valor não está em ter um balão de chat bonito. Está em transformar o site em uma fonte interrogável.
Quando Vale a Pena Implementar
NLWeb é promissor, mas não é automático que todo site precise dele agora. Use este filtro:
| Situação | Vale? | Por quê |
|---|---|---|
| Blog técnico com muitos guias | Sim | Agentes podem encontrar posts por intenção, não só por título |
| E-commerce com catálogo rico | Sim | Produtos têm atributos comparáveis e Schema.org natural |
| Site de receitas, eventos ou turismo | Sim | Conteúdo estruturado e consultável por filtros |
| SaaS com documentação pública | Sim | Reduz fricção para suporte, vendas e agentes de dev |
| Landing page simples | Talvez não | Pouco conteúdo para indexar |
| Conteúdo privado ou sensível | Com cuidado | Exige autenticação, escopo e auditoria |
| Site desorganizado sem metadados | Ainda não | Primeiro arrume estrutura, canônicos, RSS e Schema.org |
Minha leitura: em 2026, NLWeb é mais interessante para quem já tem uma estratégia de conteúdo, documentação ou catálogo. Não é o primeiro passo. O primeiro passo continua sendo ter conteúdo bom, estruturado e canônico.
Depois disso, NLWeb vira multiplicador.
Implementação Mínima: Do Zero ao Protótipo
A documentação oficial oferece um "hello world" local com Python 3.10+, Qdrant local, RSS de exemplo e um servidor AIOHTTP. O caminho abaixo adapta essa ideia para um site de conteúdo.
Passo 1: Audite suas fontes estruturadas
Antes de instalar qualquer coisa, liste onde está seu conteúdo:
Conteúdo canônico:
- /blog/posts/*/
- /docs/*
- /produtos/*
Fontes estruturadas disponíveis:
- RSS do blog
- sitemap.xml
- JSON-LD por página
- frontmatter em Markdown
- base de dados do catálogo
Para este site, por exemplo, o frontmatter dos posts já contém title, date, tags, description, heroImage e relações internas. Isso é um bom começo, mas NLWeb se beneficia ainda mais quando esses dados viram JSON-LD consistente na página final.
Passo 2: Rode NLWeb localmente
O setup oficial começa clonando o repositório e instalando dependências:
git clone https://github.com/microsoft/NLWeb
cd NLWeb
python -m venv myenv
source myenv/bin/activate
cd AskAgent/python
pip install -r requirements.txt
Depois você copia o .env.template, escolhe provedor de LLM e embeddings, ajusta os arquivos em config/ e carrega dados no backend local.
O comando de carga para RSS segue este formato:
python -m data_loading.db_load <RSS_URL> <site-name>
Para um blog, a primeira prova de conceito poderia ser:
python -m data_loading.db_load https://andrecosta.ia.br/feed.xml andrecosta-blog
Depois, o servidor:
python app-aiohttp.py
E a interface local:
http://localhost:8000/
Passo 3: Teste perguntas reais
Não teste com pergunta fácil demais. Teste com intenção real:
Quais posts explicam a diferença entre MCP e A2A?
Quais guias falam sobre colocar agentes em produção com segurança?
Tenho um time de marketing e quero automatizar conteúdo. Por onde começo?
Quais posts têm código Python e são adequados para nível intermediário?
Essas perguntas revelam a qualidade da estrutura. Se o sistema só funciona quando você digita o título exato do post, ele ainda está muito próximo de busca por palavra-chave. O ganho real aparece quando ele entende intenção.
Passo 4: Compare /ask e /mcp
O endpoint /ask é útil para uma UI pública de busca conversacional. O /mcp é o caminho para agentes.
Um cliente MCP deveria conseguir descobrir que seu site tem uma tool de pergunta e fazer chamadas parecidas com:
{
"tool": "ask",
"arguments": {
"query": "quais posts explicam observabilidade de agentes?",
"site": "andrecosta-blog",
"mode": "summarize"
}
}
Essa é a diferença entre "meu site tem busca" e "meu site virou uma fonte acionável por agentes".
O Que Eu Implementaria Primeiro Neste Site
Se eu fosse aplicar NLWeb no andrecosta-site, não começaria pelo servidor. Começaria por arrumar a base semântica.
Camada 1: Dados canônicos dos posts
Garantir que todo post tenha:
titleclaro;descriptionútil;datecorreta;tagsconsistentes;related_posts;- URL canônica;
- JSON-LD
BlogPosting; - breadcrumbs;
- autor e data de atualização quando houver.
Camada 2: Feed e sitemap
NLWeb pode consumir RSS, mas o feed precisa ser bom:
- título completo, não truncado;
- descrição com intenção clara;
- link canônico;
- data de publicação;
- categorias/tags;
- idealmente conteúdo ou resumo expandido.
O sitemap continua importante porque ajuda crawlers e ferramentas a descobrirem tudo.
Camada 3: Endpoint experimental
Só depois eu subiria um protótipo NLWeb com:
- backend local ou Postgres;
- ingestão dos posts;
/askprivado para teste;/mcpprotegido inicialmente;- logs de perguntas;
- avaliação manual das respostas.
O objetivo inicial não seria "lançar para o mundo". Seria descobrir quais perguntas reais o conteúdo consegue responder bem.
Camada 4: Métricas
Eu mediria:
- taxa de resposta útil;
- posts mais recuperados;
- perguntas sem boa resposta;
- queries que revelam lacunas editoriais;
- URLs citadas por agentes;
- diferença entre busca interna tradicional e NLWeb.
Isso fecha um loop poderoso: NLWeb não serve só para responder. Ele também mostra o que seu público e os agentes estão tentando encontrar.
Riscos e Armadilhas
NLWeb ainda é uma camada nova. Vale experimentar, mas com cabeça fria.
Risco 1: Expor coisa demais
Se você aponta NLWeb para uma base que mistura conteúdo público e privado, você pode criar um vazamento elegante. O agente pergunta em português, mas por baixo existe uma busca em dados sensíveis.
Mitigação:
- separar índices públicos e privados;
- aplicar autorização antes da recuperação;
- logar queries e resultados;
- nunca confiar apenas no prompt para bloquear conteúdo.
Risco 2: Responder com confiança falsa
Se o modo generate for usado como RAG tradicional, o sistema pode sintetizar além do que os resultados suportam.
Mitigação:
- usar
listousummarizepara casos de descoberta; - mostrar fontes e scores;
- limitar respostas a itens recuperados;
- avaliar respostas com perguntas de teste.
Risco 3: Estrutura ruim entra, resposta ruim sai
NLWeb não conserta conteúdo bagunçado. Se seus títulos são genéricos, descrições vagas e tags inconsistentes, o endpoint vai refletir isso.
Mitigação:
- padronizar metadados;
- revisar
Schema.org; - melhorar descrições;
- agrupar conteúdo por intenção;
- criar páginas canônicas para temas importantes.
Risco 4: Tratar MCP como mágica
Expor /mcp não significa que agentes vão usar seu site automaticamente. Descoberta, confiança, autorização e UX de agente ainda importam.
Mitigação:
- documentar o endpoint;
- declarar capacidades com clareza;
- retornar objetos estruturados;
- manter URLs estáveis;
- começar com casos de uso explícitos.
Checklist Agent-Ready para Sites
Antes de pensar em NLWeb em produção, eu usaria este checklist:
- O site tem conteúdo suficiente para justificar busca conversacional?
- As páginas têm título, descrição, data, autor e URL canônica?
- O RSS ou feed equivalente está completo e atualizado?
- O sitemap inclui todas as páginas importantes?
- Há JSON-LD consistente nos tipos principais?
- As tags e categorias são usadas com critério?
- Existe uma separação clara entre conteúdo público e privado?
- O endpoint de consulta retorna fontes, URLs e scores?
- As respostas podem ser auditadas?
- O
/mcptem escopo e autenticação quando necessário? - Há logs de perguntas sem resposta?
- Existe um processo editorial para preencher lacunas reveladas pelas queries?
Se você marcou menos da metade, ainda não comece pelo NLWeb. Comece pela fundação semântica. Se marcou quase tudo, NLWeb vira um experimento muito interessante.
Conclusão
NLWeb é uma das ideias mais importantes para quem acredita que a web não vai morrer com a IA, mas mudar de interface. O site continua existindo. O conteúdo continua importando. Só que agora ele precisa ser legível por humanos, citável por modelos e consultável por agentes.
O melhor jeito de pensar em NLWeb é este:
SEO faz seu site ser encontrado. GEO faz seu site ser citado. NLWeb faz seu site ser perguntado.
Para blogs técnicos, catálogos, docs e bases de conhecimento, essa diferença é enorme. O próximo passo da web não é só aparecer em uma resposta de IA. É virar uma fonte que agentes conseguem usar com contrato, estrutura e rastreabilidade.
Fontes e Referências
- NLWeb — repositório oficial
- NLWeb Hello World
- NLWeb REST API
- Schema.org
- Model Context Protocol — especificação
- GEO — Generative Engine Optimization
- MCP para Não-Programadores
Publicado em andrecosta.ia.br.