La comunicación por correo electrónico frío falla cuando los mensajes son genéricos. Los correos electrónicos fríos de mayor rendimiento hacen referencia a algo específico sobre el cliente potencial: una publicación de blog reciente, el lanzamiento de un producto, una señal de contratación o un detalle de la pila tecnológica. La creación de un proceso de auditoría de una página automatiza este paso de investigación al consultar los datos de búsqueda para cada dominio potencial, extraer señales relevantes y generar una breve auditoría a la que su plantilla de correo electrónico pueda hacer referencia. Este tutorial muestra cómo crear un proceso de auditoría de correo electrónico en frío que enriquezca a cada cliente potencial con datos de búsqueda en vivo de Scavio, produciendo ganchos de personalización que aumentan las tasas de respuesta.
Requisitos previos
- Python 3.8+ instalado
- solicitudes y bibliotecas csv
- Una clave API de Scavio de scavio.dev
- Un archivo CSV con dominios potenciales
Guia paso a paso
Paso 1: Cargar lista de prospectos
Lea el archivo CSV de su cliente potencial que contiene nombres y dominios de empresas.
import os, requests, csv, json
API_KEY = os.environ["SCAVIO_API_KEY"]
def load_prospects(path):
with open(path) as f:
return list(csv.DictReader(f))
prospects = load_prospects("prospects.csv")
print(f"Loaded {len(prospects)} prospects")Paso 2: Auditar cada dominio potencial
Busque el dominio de cada cliente potencial para encontrar noticias recientes, publicaciones de blogs y señales de la empresa.
def audit_prospect(domain):
resp = requests.post("https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": f"site:{domain}"})
results = resp.json().get("organic_results", [])[:5]
return {
"domain": domain,
"pages_found": len(results),
"recent_content": [r.get("title", "") for r in results[:3]],
"snippets": [r.get("snippet", "")[:120] for r in results[:3]],
}
audit = audit_prospect("example.com")
print(json.dumps(audit, indent=2))Paso 3: Extraer ganchos de personalización
Analice los resultados de la auditoría para encontrar ganchos de personalización procesables para correos electrónicos fríos.
SIGNALS = ["hiring", "launched", "raised", "partnered", "expanded", "new feature", "blog"]
def extract_hooks(audit):
hooks = []
for snippet in audit.get("snippets", []):
lower = snippet.lower()
for signal in SIGNALS:
if signal in lower:
hooks.append({"signal": signal, "context": snippet[:100]})
if not hooks and audit.get("recent_content"):
hooks.append({"signal": "content", "context": audit["recent_content"][0]})
return hooks[:2]
hooks = extract_hooks(audit)
print(f"Found {len(hooks)} hooks")Paso 4: Generar CSV de auditoría
Ejecute el proceso para todos los clientes potenciales y exporte resultados de auditoría enriquecidos.
def run_pipeline(prospects):
enriched = []
for p in prospects:
domain = p.get("domain", "")
if not domain: continue
audit = audit_prospect(domain)
hooks = extract_hooks(audit)
enriched.append({
**p,
"hook_1": hooks[0]["context"] if hooks else "",
"hook_signal": hooks[0]["signal"] if hooks else "",
"pages_found": audit["pages_found"],
})
return enriched
results = run_pipeline(prospects[:5])
with open("enriched_prospects.csv", "w", newline="") as f:
w = csv.DictWriter(f, fieldnames=results[0].keys())
w.writeheader()
w.writerows(results)
print(f"Exported {len(results)} enriched prospects")Ejemplo en Python
import os, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
def audit(domain):
resp = requests.post("https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": f"site:{domain}"})
results = resp.json().get("organic_results", [])[:3]
return {"domain": domain, "pages": len(results),
"titles": [r["title"] for r in results]}
print(audit("stripe.com"))Ejemplo en JavaScript
const H = {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"};
async function audit(domain) {
const r = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H,
body: JSON.stringify({platform: "google", query: `site:${domain}`})
});
const results = (await r.json()).organic_results || [];
return {domain, pages: results.length, titles: results.slice(0,3).map(r=>r.title)};
}
audit("stripe.com").then(console.log);Salida esperada
An enriched CSV of prospects with personalization hooks extracted from live search data, ready for cold email templates.