Perplexity 的答案引擎返回与每个答案一致的来源。对于品牌来说,问题是引用哪些来源以及引用的频率。本教程将逐步构建一个每日引文监控器,该监控器会根据您的提示查询 Perplexity 并提取引用的 URL。
前置条件
- Python 3.8+
- Scavio API 密钥
- 品牌相关提示列表
操作指南
步骤 1: 定义受监控的提示
整理一个提示列表,代表用户如何描述您的类别。
Python
PROMPTS = [
'best AI agent framework in 2026',
'top Claude Code alternatives',
'best search API for LangGraph'
]步骤 2: 通过 Scavio 查询困惑度
Scavio 的询问端点支持 Perplexity 作为平台。
Python
import requests, os
def ask_perplexity(prompt):
r = requests.post('https://api.scavio.dev/api/v1/ask',
headers={'x-api-key': os.environ['SCAVIO_API_KEY']},
json={'platform': 'perplexity', 'prompt': prompt})
return r.json()步骤 3: 摘录引文
Perplexity 以源 URL 列表的形式返回引文。
Python
def extract_citations(response):
return response.get('citations', [])步骤 4: 按域聚合
按域对引用进行分组,以查看哪些网站占主导地位。
Python
from urllib.parse import urlparse
from collections import Counter
def top_domains(all_citations):
domains = [urlparse(c).netloc for c in all_citations]
return Counter(domains).most_common(10)步骤 5: 记录并比较
每天运行并与之前的运行进行比较以发现收益和损失。
Python
import json
all_cites = []
for p in PROMPTS:
resp = ask_perplexity(p)
all_cites.extend(extract_citations(resp))
print(top_domains(all_cites))Python 示例
Python
import os, requests
from urllib.parse import urlparse
from collections import Counter
API_KEY = os.environ['SCAVIO_API_KEY']
PROMPTS = ['best AI agent framework 2026', 'top SerpAPI alternatives']
def ask(prompt):
r = requests.post('https://api.scavio.dev/api/v1/ask',
headers={'x-api-key': API_KEY},
json={'platform': 'perplexity', 'prompt': prompt})
return r.json().get('citations', [])
all_cites = []
for p in PROMPTS:
all_cites.extend(ask(p))
domains = Counter(urlparse(c).netloc for c in all_cites)
print(domains.most_common(5))JavaScript 示例
JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
const PROMPTS = ['best AI agent framework 2026'];
const allCites = [];
for (const p of PROMPTS) {
const r = await fetch('https://api.scavio.dev/api/v1/ask', {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ platform: 'perplexity', prompt: p })
});
allCites.push(...((await r.json()).citations || []));
}
const domains = {};
allCites.forEach(c => { const d = new URL(c).hostname; domains[d] = (domains[d] || 0) + 1; });
console.log(Object.entries(domains).sort((a, b) => b[1] - a[1]).slice(0, 5));预期输出
JSON
A list of top-cited domains for your monitored prompts, e.g. [('github.com', 12), ('langchain.com', 8), ('anthropic.com', 7), ('scavio.dev', 5)]. Over time, track your own domain's citation rate vs competitors.