Searchpin

Busca web auto-hospedada para agentes de IA — pesquisa paralela multi-mecanismo com reclassificação de resultados baseada em embeddings. Zero chaves de API, pip install.

Documentação

English | 简体中文

Searchpin

PyPI version Python License Docker

Busca web auto-hospedada para agentes de IA — zero chaves de API, zero custo. Em 2026, o centro de gravidade no desenvolvimento de IA está mudando de "conversar" para "execução autônoma de tarefas" — agentes locais de longa duração estão se tornando a norma. Quando um agente roda 24/7, nenhuma busca web pode ser interrompida por cotas de API ou cobranças. O Searchpin foi projetado para isso desde o primeiro dia: zero dependências externas, zero limites de uso. Agentes podem buscar, acessar e verificar sem restrições, e desenvolvedores nunca se preocupam com custos.

Por que Searchpin

🇨🇳 Otimizado para Ambientes de Rede Chineses

Padrão para Baidu, Sogou, Bing CN e Bing Intl — quatro mecanismos de busca consultados em paralelo. Funciona nativamente na rede da China, sem necessidade de proxy ou VPN. A maioria das alternativas estrangeiras depende de Google, DuckDuckGo ou Brave, que são amplamente inacessíveis na China.

🧠 Reclassificação Semântica — um Diferencial que Poucos Oferecem

Os resultados dos quatro mecanismos não são simplesmente concatenados. Eles são mesclados e reclassificados por um modelo de embedding com base na similaridade semântica com a consulta. O que sua IA recebe é uma lista curada de resultados de alta qualidade, não uma pilha de links ruidosos. Entre os servidores de busca MCP gratuitos, pouquíssimos oferecem esse recurso.

💰 Completamente Gratuito, Zero Barreiras

Sem registro de conta, sem solicitação de chave de API, sem limites de uso. Sem dependência de qualquer API comercial — sem risco de paywalls repentinos ou restrições de cota. Todo o pipeline roda na sua própria máquina.

🔍 Feito para Sites Modernos

A extração de conteúdo SSR integrada pode analisar páginas renderizadas por Next.js, Nuxt e frameworks similares, e extrair dados estruturados JSON-LD e microdados. Raspagem de HTML simples não obtém nada desses sites.

🛡️ Detecção de Poluição + Verificação Cruzada

Detecta e sinaliza automaticamente resultados não relacionados à sua consulta. Quatro mecanismos de busca independentes fornecem resultados verificáveis de forma cruzada, permitindo que seu LLM corrobore informações entre fontes para respostas mais confiáveis.

⚡ Compensações de Engenharia Deliberadas

Cada decisão de design foi tomada pensando no uso no mundo real:

  • Consciente de tokens — Os resultados de busca retornam apenas títulos, URLs e trechos. Os dados de extração estruturada são compactos e truncados. Seu LLM decide quais páginas valem a pena buscar por completo, sem desperdiçar a janela de contexto.
  • Resposta rápida — Quatro mecanismos consultados de forma assíncrona e em paralelo. O tempo total depende do mecanismo mais lento, não da soma dos quatro. Uma busca típica é concluída em 1–2 segundos.
  • Econômico em memória — O modelo de embedding (~118MB) é baixado uma única vez através do hf-mirror.com (espelho do HuggingFace para a China) e depois reutilizado do cache local.

Início Rápido

pip install searchpin && searchpin-setup

Na primeira execução, o modelo de embedding (~118MB) é baixado uma única vez via hf-mirror.com (espelho do HuggingFace para a China). Essa é a única configuração necessária.

Configuração

Claude Desktop / Cursor / qualquer cliente MCP

Adicione à sua configuração mcpServers:

{
  "mcpServers": {
    "Searchpin": {
      "command": "searchpin-server",
      "args": []
    }
  }
}

VS Code

Install in VS Code Install in VS Code Insiders

Ou manualmente, adicione a .vscode/mcp.json:

{
  "servers": {
    "Searchpin": {
      "command": "searchpin-server",
      "args": []
    }
  }
}

Docker

docker run -i --rm ghcr.io/telly6/searchpin:latest

Python API

from searchpin import SearchEngine

engine = SearchEngine()
results = engine.search("Python 3.13 新特性")
page = engine.fetch("https://docs.python.org/3/whatsnew/3.13.html")
engine.close()