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:
plaintext1Uma URL de página de projeto público ou documentação
Saída:
plaintext1{ 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;}
| Necessidade | Funcionalidade do AnyCrawl | Por que é importante |
| Extrair uma página | /v1/scrape | Melhor 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áveis | Modo 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.
plaintext1mkdir 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.

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:
plaintext1cat > .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.
plaintext1docker 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:
plaintext1curl 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.
plaintext1curl -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.
plaintext1cat > 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:
plaintext1curl -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:
plaintext1Pá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.
plaintext1{ 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:
plaintext1docker 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.







