Voltar as noticias
De um pedido no LinkedIn a um Ator Apify acionável por IA
Casos de UsoAltaEN

De um pedido no LinkedIn a um Ator Apify acionável por IA

Dev.to - MCP·14 de agosto de 2026

Eu construí um scraper de Página do Facebook para um projeto real de automação, publiquei no Apify e, em seguida, conectei ao Claude através do servidor Apify MCP.
Autor: Daniyal Zia
O problema começou com uma mensagem no LinkedIn
A ideia para este Ator não começou como um projeto paralelo. Começou com uma mensagem no LinkedIn. Alguém entrou em contato comigo porque precisava de dados de anúncios do Meta coletados através da automação. Comecei a trabalhar no fluxo de trabalho e rapidamente percebi que a parte difícil não era apenas coletar dados relacionados a anúncios. A automação também precisava de informações úteis das Páginas do Facebook por trás desses anúncios.
O cliente queria os contatos públicos disponíveis e links sociais de cada Página do Facebook. Isso poderia incluir o perfil do Instagram, site, número ou link do WhatsApp, número de telefone, endereço de e-mail, TikTok, YouTube, LinkedIn e outros perfis sociais.
Eu queria o resultado em dados estruturados porque isso alimentaria o restante da automação. Abrir Páginas manualmente e copiar links derrotaria o propósito de automatizar o fluxo de trabalho.

Solicitação original do LinkedIn

A solicitação do LinkedIn que me levou a construir o fluxo de extração de dados da Página do Facebook

Eu encontrei Atores existentes, mas precisava de um fluxo de trabalho mais específico
Meu primeiro passo foi procurar um Ator Apify existente em vez de imediatamente construir outro scraper. Encontrei opções de scraping do Facebook, incluindo o próprio Ator do Apify, que já poderia extrair informações úteis das Páginas do Facebook.
Mas meu requisito era mais específico do que simplesmente raspar uma Página do Facebook.
Eu estava construindo uma automação para um cliente que queria dados de anúncios do Meta enriquecidos com o maior número possível de links de contato públicos e sociais relevantes. Eu precisava que a saída estivesse em uma estrutura previsível para que os próximos passos no meu fluxo de trabalho pudessem processá-la automaticamente.
Eu queria campos como a URL da Página do Facebook, site, Instagram, número de telefone, WhatsApp, e-mail, TikTok, YouTube, LinkedIn e outros perfis sociais disponíveis.
Os Atores existentes me deram um ponto de partida, mas eu queria mais controle sobre o que o Ator extraía, como ele lidava com URLs de redirecionamento do Facebook, como normalizava e desduplicava resultados, e como a saída era estruturada para meu fluxo de trabalho.
Em vez de mudar a automação do cliente em torno da saída de um Ator existente, decidi construir um Ator personalizado em torno dos requisitos exatos do meu fluxo de trabalho.
Essa decisão também me deu algo mais que eu queria: um scraper que eu poderia modificar, publicar e depois expor como uma ferramenta para um agente de IA através do servidor Apify MCP.
Construindo meu próprio scraper de Página do Facebook

Eu construí o Ator com Python, Playwright e o SDK do Ator Apify. A entrada básica é uma URL de Página do Facebook. O Ator abre a Página, coleta links e texto visível, e então verifica páginas relevantes de Sobre ou Contato quando habilitado.
Mantive a lógica de extração separada do ponto de entrada do Ator. O Ator principal lida com o navegador e o ciclo de vida da execução, enquanto o módulo auxiliar classifica links, normaliza telefones, decodifica redirecionamentos, remove parâmetros de rastreamento e mescla valores duplicados.
Essa separação se tornou útil porque os links do Facebook nem sempre são apresentados como URLs de destino limpas. O código auxiliar pode desembrulhar URLs de redirecionamento, como o formato de redirecionamento do Facebook, e então classificar o verdadeiro destino.
Eu também adicionei extração de texto porque detalhes de contato úteis às vezes são exibidos como texto simples em vez de um link clicável. Por exemplo, o Ator pode procurar números de telefone e domínios no texto visível da página quando essas opções estão habilitadas.
O esquema de entrada principal começa com uma URL de Página do Facebook obrigatória:
{
"$schema": "https://apify.com/schemas/v1/input.ide.json",
"title": "Scraper de Contato & Social da Página do Facebook",
"description": "Insira uma URL de página do Facebook para extrair seu Instagram, site, número de telefone / WhatsApp, e-mail e todos os outros links sociais (TikTok, YouTube, LinkedIn, Twitter/X, Telegram, Snapchat, Pinterest e mais).",
"type": "object",
"schemaVersion": 1,
"properties": {
"url": {
"title": "URL da Página do Facebook",
"type": "string",
"description": "Exemplo: https://www.facebook.com/aiwithdaniyal",
"editor": "textfield",
"prefill": "https://www.facebook.com/aiwithdaniyal"
},
"urls": {
"title": "Mais URLs de Páginas do Facebook (opcional)",
"type": "array",
"description": "Adicione páginas extras aqui para raspar muitas em uma única execução. Cada página se torna sua própria linha de conjunto de dados.",
"editor": "stringList",
"sectionCaption": "Lote",
"sectionDescription": "Deixe vazio se você quiser apenas a única URL acima.",
"default": []
},
"scrapeAboutPage": {
"title": "Também abrir a página Sobre",
"type": "boolean",
"description": "Números de telefone, e-mail e o site geralmente estão na aba Sobre / Informações de contato, então mantenha isso ativado para os melhores resultados. Desativá-lo torna as execuções mais rápidas, mas encontra muito menos.",
"default": true,
"sectionCaption": "O que extrair"
},
"maxAboutPages": {
"title": "Máx. sub-páginas Sobre por perfil",
"type": "integer",
"description": "Quantas abas Sobre tentar (informações de contato, detalhes, sobre). O Ator para cedo uma vez que tem o site mais um número.",
"default": 2,
"minimum": 0,
"maximum": 3
},
"extractPhonesFromText": {
"title": "Encontrar números de telefone / WhatsApp no texto da página",
"type": "boolean",
"description": "Muitas páginas escrevem seu número como texto simples em vez de um link. Desative isso se você quiser apenas números que vêm de links reais tel: / wa.me.",
"default": true
},
"extractWebsitesFromText": {
"title": "Encontrar sites escritos como texto simples",
"type": "boolean",
"description": "Captura domínios digitados na biografia ou postagens, por exemplo, \"compre agora: mystore.pk\". Desative para resultados apenas de links.",
"default": true
}
},
"required": [
"url"
]
}

Eu também adicionei URLs de lote opcionais e controles para abrir páginas Sobre, extrair números de telefone do texto e encontrar sites escritos como texto simples. As descrições explicam por que essas opções existem, em vez de deixar a IA ou um humano adivinhar o que cada configuração faz.
Para o lado do navegador, usei a API assíncrona do Playwright. O Ator primeiro tenta carregar uma página com uma espera de rede ociosa. Se o Facebook travar, ele tenta novamente com o conteúdo do DOM carregado.
async def open_page(page, url):
try:
await page.goto(url, wait_until="networkidle", timeout=60000)
except Exception:
Actor.log.warning(f"networkidle timed out, retrying: {url}")
await page.goto(url, wait_until="domcontentloaded", timeout=60000)
Eu também fiz com que uma URL ruim falhasse sem matar toda a execução. Cada URL é processada dentro de seu próprio manipulador de exceção, e o erro é enviado como um item de conjunto de dados com a URL do Facebook.
for url in urls:
try:
result = await scrape_one(page, url, options)
except Exception as exc:
Actor.log.exception(f"Falha ao raspar {url}: {exc}")
result = {"facebookUrl": url, "error": str(exc)}

await Actor.push_data(result)

Página do Ator

.
A Página de Contato & Social da Página do Facebook em execução no Apify
O que o Ator retorna
A parte útil do Ator é o resultado estruturado. Os campos exatos dependem do que a Página expõe, mas o Ator

Contexto Triplo Up

Este artigo demonstra como a automação de coleta de dados pode ser aplicada em projetos reais, utilizando ferramentas como Apify e IA. Empresas brasileiras podem se beneficiar ao implementar soluções personalizadas para extrair dados relevantes de redes sociais, otimizando processos e aumentando a eficiência.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.