Perplexity devuelve citas con cada respuesta, lo que lo convierte en el motor de IA más fácil de comparar. Este tutorial crea un rastreador de citas por fuente que clasifica su dominio frente a la competencia en un panel de consulta, con cambios semana tras semana.
Requisitos previos
- Python 3.10+
- Una clave API de Scavio
- SQLite
- Un panel de consulta competitivo
Guia paso a paso
Paso 1: Definir el panel de consulta
Entre 30 y 100 consultas sus compradores le hacen a Perplejidad.
QUERIES = [
'best serp api',
'cheapest google search api',
'tavily alternative 2026'
]Paso 2: Ejecutar consultas a través de Scavio Perplexity
Plataforma: la perplejidad devuelve una respuesta más fuentes estructuradas.
import requests, os
API_KEY = os.environ['SCAVIO_API_KEY']
def ask_perplexity(query):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': 'perplexity', 'query': query})
return r.json()Paso 3: Agregado por dominio
Cuente las visitas a citas por dominio en todas las consultas.
from urllib.parse import urlparse
from collections import Counter
def domain_counts(all_responses):
c = Counter()
for resp in all_responses:
for src in resp.get('sources', []):
c[urlparse(src['url']).netloc] += 1
return cPaso 4: Comparar con la semana pasada
Almacene instantáneas y calcule delta.
import sqlite3, json
conn = sqlite3.connect('pplx.db')
conn.execute('CREATE TABLE IF NOT EXISTS snaps (date TEXT, counts TEXT)')
def snapshot(counts):
conn.execute('INSERT INTO snaps VALUES (date(\'now\'), ?)', (json.dumps(counts),))
conn.commit()Paso 5: Alerta sobre ganancias de la competencia
Ping flojo cuando el conteo de un competidor aumenta más del 25% semana tras semana.
def alert(prev, now, threshold=0.25):
for d, n in now.items():
p = prev.get(d, 1)
if (n - p) / p > threshold:
print(f'Competitor {d} grew {(n-p)/p:.0%}')Ejemplo en Python
import os, requests
from urllib.parse import urlparse
from collections import Counter
API_KEY = os.environ['SCAVIO_API_KEY']
QUERIES = ['best serp api', 'cheapest google search api']
counts = Counter()
for q in QUERIES:
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': 'perplexity', 'query': q})
for s in r.json().get('sources', []):
counts[urlparse(s['url']).netloc] += 1
print(counts.most_common(10))Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
const QUERIES = ['best serp api', 'cheapest google search api'];
const counts = {};
for (const q of QUERIES) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ platform: 'perplexity', query: q })
});
const data = await r.json();
for (const s of data.sources || []) {
const d = new URL(s.url).hostname;
counts[d] = (counts[d] || 0) + 1;
}
}
console.log(Object.entries(counts).sort((a,b) => b[1]-a[1]).slice(0,10));Salida esperada
Per-domain citation counter ranked top 10. Week-over-week delta highlights competitor gains. Typical signal: competitor jumps from 3 to 12 citations week-over-week triggers content response.