🎯 O build: de um site público a um CSV estruturado
Legenda: o caminho completo do build — o Firecrawl traz o conteúdo bruto do site, o agente organiza o que interessa e grava um CSV que abre direto numa planilha.
Novo aqui? Scraping é o nome técnico pra "extrair informação de uma página da web de forma automática". CSV é um arquivo de tabela simples (Comma-Separated Values — valores separados por vírgula) que qualquer planilha abre direto. Neste build você vai pedir pro agente ler uma página pública e entregar os dados dela organizados numa tabela — sem você tocar em código de scraping nenhum.
Este é o módulo "mão na massa" da Trilha 2: até aqui você aprendeu o que é o protocolo MCP (2.1), como um servidor MCP é organizado por dentro (2.2), como instalar e autenticar um (2.3), e como guardar instruções permanentes num cheat sheet (2.4). Agora tudo isso vira um resultado concreto — um arquivo de dados que você consegue abrir e mostrar pra alguém. É esse tipo de entrega tangível que separa "aprendi sobre MCP" de "usei MCP pra resolver um problema real".
Passo 1 — Servidor MCP ligado
O Firecrawl já está instalado e autenticado (isso foi o módulo 2.3) — sem isso, nenhum dos comandos deste build funciona.
Passo 2 — Você descreve o pedido
Um parágrafo em português: qual site, quais campos, qual nome de arquivo. O agente traduz isso pra chamadas técnicas.
Passo 3 — O agente executa e organiza
Ele escolhe entre map/crawl/extract, lida com erros no caminho, e monta a tabela.
Passo 4 — Você confere o CSV
Abre numa planilha, olha se as colunas fazem sentido e se não faltam dados.
🔍 Ver por dentro
Entre o seu pedido e o CSV pronto, o que trafega são chamadas do agente pro servidor MCP do Firecrawl — cada uma pede uma operação (scrape, map, crawl ou extract) e recebe de volta texto ou dados estruturados em formato JSON (um jeito de organizar dados em pares "campo: valor", parecido com uma ficha). A chave de API (a senha que identifica sua conta no Firecrawl) fica guardada localmente, nunca aparece na tela nem circula pelo pedido em texto — só o agente e o servidor MCP trocam ela por trás dos panos. E sim: cada chamada tem um custo pequeno dentro do seu plano do Firecrawl, então pedidos objetivos (poucas páginas, campos específicos) saem mais baratos que "traga tudo que encontrar".
📊 As quatro operações do Firecrawl, lado a lado
Novo aqui? O Firecrawl é o servidor MCP que este build usa pra ler sites. Ele oferece quatro operações com propósitos bem diferentes — saber qual pedir (ou deixar o cheat sheet do módulo 2.4 guiar o agente) evita pedidos vagos e resultados vazios.
| Operação | O que faz | Quando usar | Exemplo de pedido |
|---|---|---|---|
| scrape | Traz o conteúdo de uma página só. | Você já sabe o endereço exato. | "Traga o texto dessa página" |
| map | Lista todos os endereços (URLs) de um site, sem trazer o conteúdo. | Você quer ver o mapa do site antes de decidir o que baixar. | "Liste todas as páginas desse site" |
| crawl | Percorre várias páginas e traz o conteúdo de cada uma. | Você quer o site inteiro (ou uma seção dele). | "Baixe o conteúdo de todo o blog" |
| extract | Traz só os campos que você pediu, já organizados (preço, nome, data...). | Você quer dados específicos, não o texto inteiro. | "Extraia nome e preço de cada produto" |
💡 Dica Prática
Pra este build, você vai combinar map (achar as páginas de produto)
com extract (tirar nome e preço de cada uma) — é a combinação mais comum pra virar CSV.
Um erro comum de quem está começando é pedir crawl quando na verdade queria extract
— o resultado vem cheio de texto solto, difícil de organizar em colunas. Se o seu objetivo final é uma
tabela (linhas e colunas, como um CSV), comece pensando em
extract; se o objetivo é "ler o conteúdo" sem estrutura fixa, crawl ou
scrape bastam.
✓ Pedido bem descrito
- ✓"Extraia nome, preço e categoria de cada produto da página de loja"
- ✓Diz o site, os campos e o nome do arquivo de saída
✗ Pedido vago
- ✗"Pega os dados desse site aí"
- ✗Não diz quais campos nem em que formato quer o resultado
🗂️ Passo a passo: do pedido ao CSV
Com o servidor MCP do Firecrawl já ligado (módulo 2.3), o build inteiro é um pedido bem descrito — o agente decide sozinho entre map/crawl/extract com base no que você pediu.
Objetivo: gerar um CSV com dados reais extraídos do site. Como verificar: abra produtos.csv numa planilha (Excel, Google Sheets, LibreOffice) e confirme que cada linha tem nome, preço e categoria preenchidos — sem células vazias em excesso.
Legenda: você nunca escreve as três chamadas técnicas — só descreve o resultado que quer. O agente é quem traduz o pedido em map, extract e a gravação do arquivo.
Dois erros que travam esse passo antes mesmo de começar: chave de API
inválida ou expirada — o Firecrawl responde com um erro de autenticação e o agente não consegue nem
tentar; o conserto é revisitar o módulo 2.3 e reautenticar. E endereço digitado
errado — um https:// faltando ou um domínio com erro de digitação faz a primeira
chamada falhar antes de qualquer scraping acontecer. Confira o endereço colado antes de rodar.
🕳️ Quando o extract volta vazio
Legenda: o agente não desiste no primeiro "não achei nada" — ele tenta um esquema mais simples, depois recorre ao scrape bruto pra organizar manualmente, e só relata falha de verdade se as duas tentativas não funcionarem. É a auto-correção da Trilha 1, agora aplicada a scraping.
Às vezes o extract devolve uma lista vazia — a página pode ter uma estrutura diferente do
esperado, ou os campos pedidos não existirem daquele jeito ali. É exatamente aqui que a auto-correção da
Trilha 1 aparece na prática: um bom agente não desiste no primeiro "nada encontrado" — ele simplifica o pedido
(menos campos), tenta de novo, e se ainda assim não der, recorre ao scrape bruto e organiza os
dados manualmente a partir do texto completo.
🔍 Por dentro
Você pode pedir isso explicitamente: "se o extract não trouxer nada, tente simplificar os campos e, se ainda falhar, use scrape e organize você mesmo os dados a partir do texto." Isso vira uma instrução permanente se você guardar no cheat sheet do módulo 2.4.
Lista vazia não é o único jeito de o build falhar — outros dois erros comuns aparecem no meio do caminho. Um site que bloqueia scraping devolve uma resposta de erro (às vezes chamada de "403" ou "acesso negado") em vez de conteúdo — nesse caso, insistir não resolve; o site simplesmente não permite esse tipo de acesso automatizado, e o certo é procurar se ele oferece uma API pública própria ou desistir daquela fonte. E um limite de uso estourado (a cota mensal do seu plano do Firecrawl) faz toda chamada nova falhar até o próximo ciclo — o agente geralmente avisa isso na resposta de erro; se acontecer no meio de um crawl grande, é sinal de que valia a pena ter pedido menos páginas de uma vez.
⚖️ Limites, custo e educação de scraping
Novo aqui? Cada chamada ao Firecrawl consome uma cota (um limite de uso
mensal do seu plano) e alguns sites proíbem scraping nos termos de uso ou num arquivo chamado
robots.txt. Antes de rodar um crawl grande, confira se o site permite e evite pedir volume maior
do que você precisa de verdade.
✓ Fazer
- ✓Pedir só as páginas que você realmente precisa
- ✓Checar se o site permite scraping antes de um crawl grande
✗ Evitar
- ✗Fazer crawl do site inteiro "só pra ver"
- ✗Ignorar avisos de bloqueio ou de limite excedido
O robots.txt é um arquivo simples que sites publicam na raiz do endereço (algo como
exemplo.com/robots.txt) dizendo o que pode e o que não pode ser acessado por robôs automáticos —
o Firecrawl costuma respeitar essas regras sozinho, mas vale saber que elas existem, porque explicam por que
às vezes uma parte do site simplesmente não retorna nada. Se o dado que você quer envolve
informação pessoal de terceiros (nomes, e-mails, telefones de pessoas
físicas), trate com o mesmo cuidado que trataria qualquer outro dado sensível: pergunte se você realmente
precisa daquele campo antes de incluí-lo no CSV, e nunca redistribua esse tipo de dado sem necessidade.
💡 Dica Prática
Se um crawl grande vier pela frente, comece com um pedido pequeno (5-10 páginas) pra validar que o formato do CSV saiu como você queria — só depois amplie pro volume total. Corrigir um pedido pequeno é rápido; refazer um crawl gigante por causa de um campo errado, não.
🗓️ Repetindo o build em outro site
Uma vez que o servidor MCP e o cheat sheet estão prontos, repetir esse build em outro site é só trocar o endereço e os campos desejados no pedido — o resto do fluxo (map → extract → CSV, com fallback pra scrape) já está ensinado. É o tipo de trabalho que compensa automatizar de verdade — assunto que a Trilha 4 (Deploy) vai levar adiante.
Novo aqui? "Automatizar" aqui significa deixar essa mesma rotina rodar sozinha, sem você precisar copiar e colar o pedido de novo — por exemplo, gerar o CSV atualizado toda segunda de manhã. Este módulo te dá o build manual, sob demanda; a Trilha 4 ensina a colocar esse mesmo pedido numa agenda fixa, rodando num servidor, sem depender do seu laptop ligado. Pense nesse módulo como o protótipo que prova que o pedido funciona — só depois de validado é que vale a pena investir tempo em automatizá-lo de verdade.
💡 Dica Prática
Guarde o pedido do passo 3 num arquivo de notas — na próxima vez, você só troca o endereço do site e os campos, sem reescrever tudo do zero.