Una publicación de r/LangChain compartió una arquitectura DaaS autónoma utilizando Google Dorks + Llama-3 + MCP. El patrón funciona para cualquier trabajo de descubrimiento de documentos estructurados. Este tutorial sigue el mismo flujo en Scavio.
Requisitos previos
- Python 3.10+
- Clave API de Scavio
- Clave API Groq o Anthropic
Guia paso a paso
Paso 1: Patrones idiotas para el objetivo
sitio: + tipo de archivo: + palabra clave.
DORKS = ['site:gov.br filetype:pdf 2026 contratos', 'site:europa.eu filetype:pdf AI act']Paso 2: Ejecute el idiota a través de la búsqueda de Scavio
Devuelve resultados orgánicos que apuntan a archivos PDF.
import requests, os
API_KEY = os.environ['SCAVIO_API_KEY']
def dork(q):
return requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY}, json={'query': q}).json()Paso 3: Filtrar archivos PDF nuevos
Filtro de fecha o evaluación de LLM.
def fresh_pdfs(results, year='2026'):
return [r for r in results.get('organic_results', []) if year in r.get('snippet', '') and r['link'].endswith('.pdf')]Paso 4: Extraiga PDF a texto mediante el extracto de Scavio
El extracto compatible con PDF devuelve una reducción.
def pdf_to_text(url):
r = requests.post('https://api.scavio.dev/api/v1/extract',
headers={'x-api-key': API_KEY},
json={'url': url, 'format': 'markdown'}).json()
return r.get('markdown', '')Paso 5: LLM convierte texto basura a JSON escrito
Aviso de esquema estricto; rechazar si no se analiza.
import anthropic, json
client = anthropic.Anthropic()
def typed(md):
msg = client.messages.create(model='claude-sonnet-4-6', max_tokens=600,
messages=[{'role':'user','content':f'Extract opportunity details as JSON: title, deadline, amount, agency. Source: {md[:6000]}'}])
return json.loads(msg.content[0].text)Ejemplo en Python
# Daily run: 5 dorks × ~20 PDFs each = ~105 calls = ~$0.45 on Project tier.Ejemplo en JavaScript
// TS version uses the same endpoints.Salida esperada
Government bid PDFs converted to typed JSON daily. Cache layer keeps repeat queries at sub-50ms.