Las auditorías de una página son un imán de clientes potenciales comprobado para agencias y empresas de SaaS: usted audita el sitio web de un cliente potencial y entrega un informe conciso que muestra lo que pueden mejorar. Enriquecer estas auditorías con datos de búsqueda en vivo las hace dramáticamente más valiosas porque incluyen clasificaciones de competidores reales, brechas de contenido y oportunidades de palabras clave. Este tutorial muestra cómo crear un canal de enriquecimiento de auditoría automatizado de una página que toma un dominio, consulta datos SERP en vivo y genera una auditoría enriquecida con información procesable.
Requisitos previos
- Python 3.8+ instalado
- solicita biblioteca instalada
- Una clave API de Scavio de scavio.dev
- Un dominio potencial para auditar
Guia paso a paso
Paso 1: Configurar el proceso de auditoría
Configure el cliente API y defina la estructura de auditoría.
import os, requests, json
API_KEY = os.environ["SCAVIO_API_KEY"]
def search(query):
resp = requests.post("https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": query})
return resp.json()Paso 2: Auditar la visibilidad del sitio
Verifique cuántas páginas ha indexado el dominio del cliente potencial y qué clasificación.
def audit_visibility(domain):
data = search(f"site:{domain}")
results = data.get("organic_results", [])
return {
"domain": domain,
"indexed_pages_sample": len(results),
"top_pages": [{"title": r["title"], "url": r.get("link", "")}
for r in results[:5]],
}Paso 3: Analizar el panorama de la competencia
Encuentre quién clasifica según la palabra clave principal del cliente potencial y compare posiciones.
def audit_competitors(domain, keyword):
data = search(keyword)
results = data.get("organic_results", [])[:10]
my_position = None
competitors = []
for i, r in enumerate(results):
if domain in r.get("link", ""):
my_position = i + 1
else:
competitors.append({"title": r["title"][:60], "position": i + 1,
"url": r.get("link", "")})
return {
"keyword": keyword,
"my_position": my_position,
"top_competitors": competitors[:5],
"paa": [q.get("question","") for q in data.get("people_also_ask", [])],
}Paso 4: Generar el informe de auditoría enriquecido
Combine todos los datos de auditoría en un único informe enriquecido.
def generate_audit(domain, keywords):
visibility = audit_visibility(domain)
keyword_audits = [audit_competitors(domain, kw) for kw in keywords]
gaps = []
for ka in keyword_audits:
gaps.extend(ka["paa"])
return {
"domain": domain,
"visibility": visibility,
"keyword_analysis": keyword_audits,
"content_gaps": list(set(gaps))[:10],
"recommendations": [
f"Target {len(set(gaps))} unanswered questions from PAA",
f"Compete with {sum(len(ka['top_competitors']) for ka in keyword_audits)} ranking pages",
],
}
audit = generate_audit("example.com", ["project management tool", "team collaboration software"])
with open("audit_report.json", "w") as f:
json.dump(audit, f, indent=2)
print("Audit generated")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", [])[:5]
return {"domain": domain, "pages": len(results),
"titles": [r["title"] for r in results]}
print(audit("example.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,5).map(r=>r.title)};
}
audit("example.com").then(console.log);Salida esperada
An enriched one-page audit report with site visibility, competitor analysis, keyword positions, PAA-based content gaps, and actionable recommendations.