El correo electrónico frío funciona mejor cuando cada mensaje se personaliza con detalles específicos sobre la empresa del destinatario. La investigación manual de cada cliente potencial no escala. Este tutorial crea un canal automatizado de enriquecimiento de clientes potenciales que toma un CSV de nombres de empresas, busca cada uno en Google a través de la API de Scavio, extrae la descripción del gráfico de conocimiento, las noticias recientes y los detalles clave de fragmentos orgánicos, luego escribe un CSV enriquecido listo para la combinación de correspondencia o la importación de CRM.
Requisitos previos
- Python 3.8 o superior
- solicita biblioteca instalada
- Una clave API de Scavio
- Un archivo CSV con nombres de empresas para enriquecer
Guia paso a paso
Paso 1: Cargar la lista de clientes potenciales
Lea los nombres de empresas de un archivo CSV. El script espera una columna llamada nombre_empresa.
import csv
def load_leads(path: str) -> list[dict]:
with open(path) as f:
return list(csv.DictReader(f))
leads = load_leads("leads.csv")
print(f"Loaded {len(leads)} leads")Paso 2: Busque en Google cada empresa
Consulta en Google el nombre de la empresa y extrae el gráfico de conocimiento, los fragmentos orgánicos y los resultados de las noticias.
import requests
def search_company(name: str) -> dict:
r = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"query": name, "country_code": "us"}
)
r.raise_for_status()
data = r.json()
return {
"description": data.get("knowledge_graph", {}).get("description", ""),
"website": data.get("knowledge_graph", {}).get("website", ""),
"snippet": data.get("organic_results", [{}])[0].get("snippet", ""),
}Paso 3: Enriquece cada cliente potencial
Recorra los clientes potenciales, busque cada empresa y combine los datos de enriquecimiento nuevamente en el dictado de clientes potenciales.
import time
def enrich_leads(leads: list[dict]) -> list[dict]:
for lead in leads:
enrichment = search_company(lead["company_name"])
lead.update(enrichment)
time.sleep(0.5)
return leadsPaso 4: Exportar los datos enriquecidos
Escriba los clientes potenciales enriquecidos en un nuevo CSV con columnas adicionales para descripción, sitio web y fragmento.
def export_enriched(leads: list[dict], path: str = "leads_enriched.csv") -> None:
if not leads:
return
with open(path, "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=leads[0].keys())
writer.writeheader()
writer.writerows(leads)
print(f"Exported {len(leads)} enriched leads to {path}")Ejemplo en Python
import os
import csv
import time
import requests
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"
def search_company(name: str) -> dict:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"query": name, "country_code": "us"})
r.raise_for_status()
data = r.json()
kg = data.get("knowledge_graph", {})
return {
"description": kg.get("description", ""),
"website": kg.get("website", ""),
"snippet": data.get("organic_results", [{}])[0].get("snippet", ""),
}
def enrich(input_csv: str, output_csv: str) -> None:
with open(input_csv) as f:
leads = list(csv.DictReader(f))
for lead in leads:
lead.update(search_company(lead["company_name"]))
time.sleep(0.5)
with open(output_csv, "w", newline="") as f:
w = csv.DictWriter(f, fieldnames=leads[0].keys())
w.writeheader()
w.writerows(leads)
print(f"Enriched {len(leads)} leads")
if __name__ == "__main__":
enrich("leads.csv", "leads_enriched.csv")Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
const fs = require("fs");
async function searchCompany(name) {
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ query: name, country_code: "us" })
});
const data = await res.json();
const kg = data.knowledge_graph || {};
return {
description: kg.description || "",
website: kg.website || "",
snippet: (data.organic_results || [{}])[0]?.snippet || ""
};
}
async function main() {
const companies = ["Stripe", "Vercel", "Supabase"];
for (const name of companies) {
const info = await searchCompany(name);
console.log(`${name}: ${info.description.slice(0, 80)}`);
console.log(` Website: ${info.website}`);
}
}
main().catch(console.error);Salida esperada
Enriched 50 leads
leads_enriched.csv:
company_name,email,description,website,snippet
Stripe,contact@stripe.com,"Online payment processing for internet businesses",https://stripe.com,"Stripe is a technology company that builds economic infrastructure..."
Vercel,[email protected],"Cloud platform for frontend frameworks",https://vercel.com,"Vercel enables developers to build and deploy web applications..."