OFERTA POR TEMPO LIMITADO|20% DE DESCONTO no Seedance 2.0 e 2.0 Mini!

Como transformar sites em JSON pronto para LLMs com o AnyCrawl

Aprenda a fazer o self-hosting do AnyCrawl com Docker, configurar o Atlas Cloud como fonte de API de modelos e extrair páginas da web para Markdown e JSON estruturado para aplicações de IA.

Como transformar sites em JSON pronto para LLMs com o AnyCrawl

AnyCrawl ajuda você a converter páginas web desorganizadas em Markdown ou JSON limpos para aplicativos de LLM. Este tutorial mostra como combinar o AnyCrawl com o Atlas Cloud como a fonte da API de modelos, extrair dados de uma página de projeto, obter campos estruturados e, em seguida, escalar o mesmo padrão para fluxos de trabalho de crawl e busca.

A maioria dos tutoriais de web scraping para por aí: "faça o download do HTML". Para aplicativos de IA, é aí que o trabalho real começa. Páginas brutas contêm cabeçalhos, rodapés, barras laterais, avisos de cookies, links repetidos e conteúdo renderizado por JavaScript. O que seu modelo realmente precisa é de uma interface de dados estável: texto limpo quando você quer contexto, e JSON tipado quando você quer campos específicos.

Esse é o modelo mental útil para o AnyCrawl. É um crawler e scraper Node.js / TypeScript criado para transformar sites em dados prontos para LLM, com suporte a scraping de página única, crawl de sites, coleta de SERP, cargas de trabalho com multi-threading/multi-processo e extração de JSON via LLM.

O que vamos construir

Vamos criar um pequeno “extrator de pesquisa de projetos”.

Entrada:

plaintext
1Uma URL de página de projeto público ou documentação

Saída:

plaintext
1{
2  "project_name": "AnyCrawl",
3  "one_sentence_summary": "...",
4  "core_features": ["..."],
5  "best_for": ["..."],
6  "input_types": ["url", "search query"],
7  "output_formats": ["markdown", "json"],
8  "evidence_urls": ["..."]
9}

A demonstração utiliza três funcionalidades do AnyCrawl:

td {white-space:nowrap;border:0.5pt solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}

   
NecessidadeFuncionalidade do AnyCrawlPor que é importante
Extrair uma página/v1/scrapeMelhor ponto de partida para transformar uma URL em Markdown ou JSON
Extrair muitas páginas/v1/crawlÚtil para sites de documentação, páginas de produtos, blogs e centrais de ajuda
Encontrar páginas antes/v1/searchÚtil quando você precisa de resultados de SERP antes de fazer o scraping das URLs
Forçar campos estáveisModo JSONÚtil quando seu aplicativo downstream precisa de saída tipada, não apenas texto

A API Scrape do AnyCrawl converte uma URL em dados estruturados prontos para LLM e pode retornar Markdown, HTML, texto, captura de tela, HTML bruto, JSON, resumo e links. A documentação descreve o Scrape como síncrono, portanto, você não precisa de um loop de polling para uma única página.

Passo a passo: Execute o AnyCrawl com o Atlas Cloud e extraia páginas web para JSON

Neste tutorial, vamos auto-hospedar o AnyCrawl com Docker, definir o Atlas Cloud como o provedor da API de modelos para extração e, em seguida, chamar o servidor AnyCrawl local para transformar uma página web em JSON estruturado.

Nota: Este tutorial foi escrito para ambientes de terminal macOS e Linux.

Passo 1: Crie uma pasta de projeto limpa

Abra seu terminal e crie uma pequena pasta para esta demonstração.

plaintext
1mkdir anycrawl-atlas-demo
2cd anycrawl-atlas-demo

Esta pasta conterá apenas o arquivo de ambiente e o corpo da requisição que usaremos para testar a API.

Passo 2: Obtenha uma chave de API do Atlas Cloud

Vá para o console do Atlas Cloud, abra a página de Chaves de API, clique em Criar Chave de API, e então copie e armazene a chave de forma segura. O Atlas Cloud observa que a chave é exibida apenas uma vez, portanto, salve-a em um local seguro ao criá-la.

Atlas Cloud

Mantenha a chave privada. Não a cole em um repositório público do GitHub, rascunho de artigo público ou captura de tela.

Passo 3: Crie o arquivo .env

Crie um arquivo .env na pasta atual:

plaintext
1cat > .env <<'EOF'
2NODE_ENV=production
3ANYCRAWL_API_PORT=8080
4ANYCRAWL_HEADLESS=true
5ANYCRAWL_API_AUTH_ENABLED=false
6
7ATLASCLOUD_BASE_URL=https://api.atlascloud.ai/v1
8ATLASCLOUD_API_KEY=SUA_CHAVE_ATLASCLOUD
9DEFAULT_LLM_MODEL=atlascloud/deepseek-v4
10DEFAULT_EXTRACT_MODEL=atlascloud/deepseek-v4
11EOF

Substitua SUA_CHAVE_ATLASCLOUD pela sua chave real.

Este é o local correto para configurar o provedor de modelos. A requisição de scraping em si deve manter o foco na URL, formato de saída e esquema JSON. O roteamento de modelo pertence ao ambiente do servidor AnyCrawl, porque o AnyCrawl é o serviço que executa a etapa de extração via LLM.

Passo 4: Inicie o AnyCrawl com Docker

Nota: No macOS, certifique-se de que o Docker Desktop esteja instalado e em execução antes de iniciar o AnyCrawl. Para Macs com Apple Silicon, use auto ou playwright em vez de puppeteer, a menos que você execute explicitamente a imagem amd64.

Execute o container tudo-em-um do AnyCrawl e monte o arquivo .env nele.

plaintext
1docker run -d \
2  --name anycrawl-atlas-demo \
3  -p 8080:8080 \
4  -v "$(pwd)/.env:/usr/src/app/.env:ro" \
5  ghcr.io/any4ai/anycrawl:latest

Verifique se o serviço está em execução:

plaintext
1curl http://localhost:8080/health

A documentação do Docker usa a porta 8080 para implantação local e indica /health como o endpoint de verificação.

Passo 5: Teste uma requisição básica de scraping primeiro

Antes de solicitar JSON, teste se o AnyCrawl consegue ler uma página e retornar Markdown.

plaintext
1curl -X POST "http://localhost:8080/v1/scrape" \
2  -H "Content-Type: application/json" \
3  -d '{
4    "url": "https://github.com/any4ai/AnyCrawl",
5    "engine": "auto",
6    "formats": ["markdown"],
7    "only_main_content": true
8  }'

A API Scrape do AnyCrawl transforma uma URL em dados estruturados prontos para LLM. Ela suporta mecanismos como auto, cheerio, playwright e puppeteer, e formatos de saída incluindo markdown, html, text, json, summary e links.

Para esta primeira requisição, markdown é suficiente. Você está verificando se o conteúdo da página está visível antes de solicitar que o modelo extraia campos estruturados.

Passo 6: Crie a requisição de extração JSON

Agora, crie um corpo de requisição que peça ao AnyCrawl para extrair um perfil de projeto estruturado.

plaintext
1cat > scrape-project.json <<'EOF'
2{
3  "url": "https://github.com/any4ai/AnyCrawl",
4  "engine": "auto",
5  "formats": ["markdown", "json"],
6  "only_main_content": true,
7  "extract_source": "markdown",
8  "json_options": {
9    "schema_name": "open_source_project_profile",
10    "schema_description": "Um perfil estruturado de um projeto open-source baseado apenas no conteúdo visível da página.",
11    "schema": {
12      "type": "object",
13      "properties": {
14        "project_name": {
15          "type": "string"
16        },
17        "one_sentence_summary": {
18          "type": "string"
19        },
20        "core_features": {
21          "type": "array",
22          "items": {
23            "type": "string"
24          }
25        },
26        "best_for": {
27          "type": "array",
28          "items": {
29            "type": "string"
30          }
31        },
32        "supported_tasks": {
33          "type": "array",
34          "items": {
35            "type": "string"
36          }
37        },
38        "developer_setup_notes": {
39          "type": "array",
40          "items": {
41            "type": "string"
42          }
43        }
44      },
45      "required": [
46        "project_name",
47        "one_sentence_summary",
48        "core_features"
49      ]
50    },
51    "user_prompt": "Extraia apenas fatos visíveis na página. Não tente adivinhar. Resuma o projeto para um desenvolvedor que deseja usar dados da web em um aplicativo de IA."
52  }
53}
54EOF

Há um erro comum aqui: ao usar json_options, você deve incluir "json" em formats; caso contrário, a resposta não conterá dados JSON extraídos. O modo JSON do AnyCrawl suporta extração apenas por prompt, apenas por esquema ou por ambos. Para este tutorial, usamos prompt e esquema porque isso oferece controle de campos e orientação de extração.

Passo 7: Execute a extração JSON

Envie a requisição para seu servidor AnyCrawl local:

plaintext
1curl -X POST "http://localhost:8080/v1/scrape" \
2  -H "Content-Type: application/json" \
3  -d @scrape-project.json

Se tudo estiver configurado corretamente, a resposta deve incluir um resultado de scraping bem-sucedido e um resultado de extração JSON seguindo o esquema que você definiu.

Neste ponto, o fluxo está completo:

plaintext
1Página do projeto no GitHub
2→ API de scrape do AnyCrawl local
3→ Extração de Markdown
4→ Extração de JSON via LLM
5→ Perfil de projeto estruturado

O ponto importante é que a requisição nunca chama o provedor de modelos diretamente. O AnyCrawl gerencia o fluxo de trabalho de scraping e extração, enquanto a fonte da API de modelos já está configurada no nível do servidor.

Passo 8: Tente uma página pesada em JavaScript se o Markdown parecer vazio

Se o resultado em Markdown estiver muito curto, vazio ou faltando conteúdo visível da página, altere o mecanismo (engine) para playwright.

plaintext
1{
2  "url": "https://example.com",
3  "engine": "playwright",
4  "formats": ["markdown", "json"],
5  "only_main_content": true,
6  "json_options": {
7    "user_prompt": "Extraia o tópico principal, fatos importantes e links essenciais desta página."
8  }
9}

A documentação do AnyCrawl descreve o cheerio como rápido para HTML estático, playwright como melhor para páginas renderizadas em JavaScript e auto como a opção de uso geral que pode escolher o mecanismo automaticamente.

Passo 9: Pare e limpe o container de demonstração

Quando terminar os testes, pare o container:

plaintext
1docker stop anycrawl-atlas-demo
2docker rm anycrawl-atlas-demo

Você pode reiniciar o mesmo fluxo de trabalho mais tarde executando o comando Docker novamente a partir da pasta que contém seu arquivo .env.

O que você acabou de construir

Você agora tem um serviço AnyCrawl local que pode realizar o scraping de uma página web pública, limpá-la em Markdown e extrair JSON tipado por meio de um fluxo de trabalho de LLM guiado por esquema. A configuração mantém o crawler, o modelo de extração e a saída do aplicativo na ordem correta: primeiro a página web, segundo o conteúdo estruturado e, por último, a integração do aplicativo.

Perguntas Frequentes (FAQ)

Para que o AnyCrawl é usado?

O AnyCrawl é usado para transformar páginas web, sites e resultados de busca em dados prontos para LLM, como Markdown e JSON estruturado. Ele suporta scraping de página única, crawl de site completo, coleta de SERP e extração de JSON via LLM, o que o torna útil para aplicativos RAG, agentes de IA, ferramentas de pesquisa e pipelines de dados internos.

Como extraio JSON de uma página web com o AnyCrawl?

Use /v1/scrape, inclua "json" em formats e passe json_options com um prompt, esquema ou ambos. A documentação do modo JSON do AnyCrawl observa especificamente que, se você usar json_options mas esquecer de incluir "json" em formats, a resposta não conterá dados JSON extraídos.

Como uso o Atlas Cloud com o AnyCrawl?

Use o Atlas Cloud como o provedor de LLM compatível com OpenAI no ambiente do servidor AnyCrawl, e não dentro de cada requisição de scrape. A documentação do Atlas Cloud descreve seu endpoint de LLM como compatível com OpenAI, com a URL base https://api.atlascloud.ai/v1, enquanto a configuração de provedor do AnyCrawl utiliza variáveis de ambiente como ATLASCLOUD_BASE_URL, ATLASCLOUD_API_KEY e configurações de modelo de extração padrão.

O AnyCrawl pode rastrear (crawl) um site inteiro?

Sim, o AnyCrawl pode rastrear um site por meio de /v1/crawl, que cria um trabalho de crawl assíncrono. A API Crawl permite controlar o escopo com opções como max_depth, limit, include_paths e exclude_paths, e então consultar o trabalho de crawl para buscar resultados paginados.

O AnyCrawl pode realizar scraping de resultados de busca do Google?

Sim, o AnyCrawl inclui uma API de Busca (Search API) para coletar resultados de SERP estruturados antes de realizar o scraping das URLs selecionadas. Sua API de Busca suporta parâmetros como query, pages, limit, lang, country e timeRange, tornando-a útil quando seu fluxo de trabalho de IA começa com uma consulta de pesquisa em vez de uma URL conhecida.

O AnyCrawl é melhor que o Firecrawl ou o Crawl4AI?

Não universalmente; depende das suas necessidades de implantação e fluxo de trabalho. O AnyCrawl é adequado para este tutorial porque buscamos um serviço Docker local, configuração de provedor de modelo no nível do servidor e um fluxo simples de /v1/scrape para JSON, enquanto Firecrawl e Crawl4AI possuem forças em extração gerenciada e crawling programável, respectivamente.

Devo usar Cheerio, Playwright ou Puppeteer no AnyCrawl?

Comece com auto ou cheerio, então mude para playwright quando a página precisar de renderização JavaScript. A documentação do AnyCrawl posiciona o Cheerio como leve para HTML estático e Playwright/Puppeteer como motores baseados em navegador para páginas mais complexas; portanto, o fluxo prático é inspecionar o Markdown primeiro e usar um mecanismo mais pesado apenas quando necessário.

Por que minha saída JSON do AnyCrawl está faltando?

O motivo mais comum é que "json" não foi incluído em formats. Outra causa comum é que o mecanismo selecionado não capturou o conteúdo da página corretamente, especialmente em sites renderizados em JavaScript; nesse caso, tente novamente com auto ou playwright e verifique o Markdown antes de depurar o esquema.

Posso usar o AnyCrawl para pipelines de dados RAG?

Sim, o AnyCrawl é uma escolha prática para a preparação de dados RAG, pois pode converter páginas web em Markdown e JSON guiado por esquema antes que o conteúdo entre em seu banco de dados vetorial ou sistema de conhecimento. Um bom padrão de produção é realizar o scraping primeiro, validar os campos extraídos, armazenar a URL de origem e manter Markdown suficiente para depuração.

Qual é o fluxo de trabalho do AnyCrawl mais fácil para iniciantes?

O fluxo mais fácil é: realizar o scraping de uma URL, solicitar Markdown, confirmar se o conteúdo está correto, adicionar o modo JSON, validar a saída e, somente então, avançar para crawl ou busca. Isso evita misturar problemas de acesso à página, problemas de renderização e problemas de esquema de extração em uma única requisição difícil de depurar.

Conclusão

O AnyCrawl é útil porque trata páginas web como entradas para sistemas de IA, não apenas como documentos HTML para download. Comece com uma página, inspecione o Markdown, adicione um esquema, valide o JSON e só então escale para crawl ou busca.

Essa ordem mantém o fluxo simples. Ela também mantém os pontos de falha visíveis, que é o que você deseja quando dados da web se tornam parte de um aplicativo de IA.

Modelos recentes

Uma API para toda a IA de mídia.

Explorar Todos os Modelos

Join our Discord community

Join the Discord community for the latest model updates, prompts, and support.