Le moteur de réponses de Perplexity renvoie les sources en ligne avec chaque réponse. Pour les marques, la question est de savoir quelles sources sont citées et à quelle fréquence. Ce tutoriel vous guide dans la construction d'un moniteur de citations quotidien qui interroge Perplexity avec vos prompts et extrait les URL citées.
Prérequis
- Python 3.8+
- Une clé API Scavio
- Une liste de prompts pertinents pour la marque
Parcours
Étape 1: Définir les prompts surveillés
Créez une liste de prompts qui représentent la manière dont les utilisateurs décrivent votre catégorie.
PROMPTS = [
'best AI agent framework in 2026',
'top Claude Code alternatives',
'best search API for LangGraph'
]Étape 2: Interroger Perplexity via Scavio
Le point de terminaison ask de Scavio prend en charge Perplexity en tant que plateforme.
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()Étape 3: Extraire les citations
Perplexity renvoie les citations sous forme de liste d'URL sources.
def extract_citations(response):
return response.get('citations', [])Étape 4: Agréger par domaine
Regroupez les citations par domaine pour voir quels sites dominent.
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)Étape 5: Enregistrer et comparer
Exécutez quotidiennement et comparez avec les exécutions précédentes pour repérer les gains et les pertes.
import json
all_cites = []
for p in PROMPTS:
resp = ask_perplexity(p)
all_cites.extend(extract_citations(resp))
print(top_domains(all_cites))Exemple 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))Exemple 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));Sortie attendue
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.