Skrapr

Uma ferramenta inteligente de web scraping que usa IA e automação de navegador para extrair dados estruturados de sites.

Documentação

Skrapr - Servidor MCP

.NET

🎉 Versão em nuvem disponível! Preencha este formulário para obter acesso.

Skrapr é uma ferramenta inteligente de raspagem web que combina capacidades de IA com automação de navegador para extrair dados estruturados de sites.

Em resumo:

url do site + esquema JSON = dados estruturados do site

Esta ferramenta é uma alternativa entre ferramentas de requisição HTTP (despejo) e ferramentas de raspagem (força bruta).

Como funciona

flowchart LR
  
  agent["Your AI Agent"] l1@--> | scrape_with_schema | skrapr["Skrapr"]
  
  subgraph server [Skrapr MCP Server]

  skrapr l2@--> | use tool | playwright["Playwright MCP"]

  end

  playwright l3@--> |navigates| website["Website"]
  skrapr l4@--> | think with | openai["Azure OpenAI"]
  skrapr l5@-.-> | json data | agent


  classDef customer stroke:#00f, stroke-width: 2
  classDef external stroke:#63af3e,stroke-width: 2,stroke-dasharray: 4
  classDef group fill:#ffffa455, stroke:#ff7c7c, stroke-width: 2

  agent:::customer
  agent:::someclass
  website:::external
  openai:::external
  server:::group

  classDef animate stroke-dasharray: 20,stroke-dashoffset: 900,animation: dash 25s linear infinite;
  class l1 animate

  l2@{ animate: true }
  l3@{ animate: true }
  l4@{ animate: true }
  l5@{ animate: true }

Ferramentas disponíveis

  • scrape_with_schema :
    • Título: Extrair dados de um site com base em um esquema JSON
    • Descrição: Navegar e raspar o site fornecido para extrair dados que correspondam à estrutura do Esquema JSON fornecido.
    • Parâmetros:
      • url: A URL do site do qual extrair dados.
      • jsonSchema: O Esquema JSON que descreve a estrutura de dados a ser extraída.
      • instruction: Instruções opcionais para orientar como a raspagem deve ser realizada.
    • Somente leitura: true

Exemplo

Uma vez configurado, você pode usar as capacidades do Skrapr diretamente em qualquer cliente MCP (Claude Desktop, n8n, librechat, ...).

Por exemplo, você pode pedir ao Claude:

Extraia informações de produtos de todas as categorias em https://example.com/products.
Quero nome, descrição e preço de cada produto.

O modelo criará um esquema semelhante e o passará ao Skrapr:

{
    "type":"object",
    "properties":{
        "products":{
            "type":"array",
            "items":{
                "type":"object",
                "properties":{
                    "name":{
                        "type":"string"
                    },
                    "price":{
                        "type":"string"
                    },
                    "description":{
                        "type":"string"
                    }
                }
            }
        }
    }
}

O Skrapr navegará pelo site, página por página, até encontrar todos os dados necessários.

Após a raspagem, você receberá a seguinte resposta:

{
    "products": [
        {
            "name": "Product 1",
            "price": "10",
            "description": "Description of product 1"
        },
        {
            "name": "Product 2",
            "price": "20",
            "description": "Description of product 2"
        }
    ]
}

Começando com o Host MCP

Para uma integração típica com Host MCP (Claude Desktop), veja como configurar:

Com .NET:

{
  "mcpServers": {
    "skrapr": {
      "command": "dotnet",
      "args": [
        "run",
        "--project",
        "path/to/Skrapr/Skrapr.csproj"
        "-e", "AzureOpenAi__ApiKey=your-api-key", 
        "-e", "AzureOpenAi__Endpoint=https://your-resource.openai.azure.com/", 
        "-e", "AzureOpenAi__DeploymentName=your-deployment-name", 
        "-e", "PlaywrightMcp__IsLocal=true", 
      ]
    }
  }
}

Com Docker:

  1. Construa a imagem Docker:

    docker build -t skrapr .
    
  2. Execute o contêiner:

    docker run \
         -p 80:80 \
         -e AzureOpenAi__ApiKey=your-api-key \
         -e AzureOpenAi__Endpoint=https://your-resource.openai.azure.com/ \
         -e AzureOpenAi__DeploymentName=your-deployment-name \
         -e PlaywrightMcp__IsLocal=true \
         skrapr
    
  3. O servidor MCP estará disponível em http://localhost:5000.

  4. Você pode configurar seu Host MCP

    {
      "mcpServers": {
        "skrapr": {
          "url": "http://localhost:5000/sse"
        }
      }
    }
    

Com a versão em nuvem

Estou hospedando uma instância do Skrapr na nuvem com tudo configurado.

Se você tiver interesse em experimentar, fale comigo aqui para obter acesso à versão beta.

    {
      "mcpServers": {
        "skrapr": {
          "url": "https://[ask-for-url]/sse"
        }
      }
    }

Configuração do Playwright

O Playwright pode ser executado localmente ou remotamente.

Local

Definir a variável de ambiente PlaywrightMcp__IsLocal=true fará o Playwright executar localmente.

Você precisa ter o Node.js instalado para que funcione.

Ele usa npx @playwright/mcp para executar o Playwright.

Remoto

Definir a variável de ambiente PlaywrightMcp__Endpoint usará o Playwright em um host remoto.

Por baixo dos panos?

Agente de IA

O Skrapr usa internamente um agente de IA com o objetivo de:

  • Entender a estrutura e o conteúdo do site
  • Navegar autonomamente pelo site
  • Tomar decisões estratégicas de navegação para localizar as informações solicitadas
  • Produzir um resultado JSON estruturado com base em um esquema JSON fornecido.

Pilha técnica

Ele usa:

Graças ao MCP (Model Context Protocol), você pode conectar o Skrapr a qualquer agente, independentemente da linguagem.

Por que o Skrapr?

Ao construir um Agente de IA, você pode querer que o agente extraia facilmente informações de sites.

Atualmente, os modelos de IA não conseguem navegar em sites nativamente.

Ferramentas simples de requisição HTTP existem, porém há algumas limitações:

  • Sem execução de JavaScript: não conseguem ler conteúdo dinâmico
  • As informações podem não estar presentes na página carregada, mas em uma subpágina

Ferramentas de raspagem também existem, mas elas:

  • Carregam informações demais (raspagem aleatória)
  • Levam muito tempo para raspar