Perplexity 会返回每个答案的引用,这使其成为最容易进行基准测试的人工智能引擎。本教程构建了一个按源引文跟踪器,可在查询面板上针对竞争对手对您的域进行排名,并且每周都会发生变化。
前置条件
- Python 3.10+
- Scavio API 密钥
- SQLite
- 有竞争力的查询面板
操作指南
步骤 1: 定义查询面板
买家提出 30-100 个困惑困惑的问题。
Python
QUERIES = [
'best serp api',
'cheapest google search api',
'tavily alternative 2026'
]步骤 2: 通过 Scavio Perplexity 运行查询
平台:困惑返回答案和结构化来源。
Python
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()步骤 3: 按域聚合
计算所有查询中每个域的引用命中数。
Python
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 c步骤 4: 与上周相比
存储快照并计算增量。
Python
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()步骤 5: 警惕竞争对手的收益
当竞争对手的计数每周增加 25% 以上时,ping 会松弛。
Python
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%}')Python 示例
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))JavaScript 示例
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));预期输出
JSON
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.