La section People Also Ask (PAA) dans les résultats de recherche Google révèle les questions complémentaires que les utilisateurs se posent sur un sujet. Ces données sont extrêmement précieuses pour la stratégie de contenu — identifier les questions connexes auxquelles répondre sur votre page, créer des sections FAQ et comprendre l'intention de l'utilisateur. L'API Scavio inclut le tableau people_also_ask dans les réponses SERP lorsque Google affiche cette boîte. Ce tutoriel montre comment extraire les données PAA pour n'importe quel mot-clé et les utiliser pour l'analyse des lacunes de contenu.
Prérequis
- Python 3.8 ou supérieur
- bibliothèque requests installée
- Une clé API Scavio
- Connaissances de base des listes et dictionnaires Python
Parcours
Étape 1: Récupérer le SERP avec les données PAA
Effectuez un POST vers l'endpoint Scavio avec votre mot-clé. La réponse inclura un tableau people_also_ask lorsque Google affiche la boîte PAA.
data = search_google("how does retrieval augmented generation work")
paa = data.get("people_also_ask", [])
print(f"Found {len(paa)} PAA questions")Étape 2: Afficher les questions et réponses
Chaque élément PAA contient une question, un extrait de réponse et un lien source. Parcourez-les et affichez-les.
for item in paa:
print("Q:", item["question"])
print("A:", item.get("snippet", "No answer available"))
print("Source:", item.get("link", ""))
print()Étape 3: Extraire les questions pour l'analyse des lacunes de contenu
Construisez une liste des seules questions. Elles représentent les sujets que vous devriez envisager de traiter dans votre contenu.
questions = [item["question"] for item in paa]
print("Content gaps to address:")
for q in questions:
print(f" - {q}")Étape 4: Exporter en JSON pour révision éditoriale
Enregistrez les données PAA au format JSON afin qu'elles puissent être examinées par une équipe de contenu ou transmises à un LLM pour générer une FAQ.
import json
with open("paa_data.json", "w") as f:
json.dump({"keyword": keyword, "questions": paa}, f, indent=2)
print("Saved PAA data to paa_data.json")Exemple Python
import os
import json
import requests
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"
def get_paa(keyword: str) -> list[dict]:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"query": keyword, "country_code": "us"})
r.raise_for_status()
return r.json().get("people_also_ask", [])
def analyze_content_gaps(keywords: list[str]) -> dict:
all_questions = {}
for kw in keywords:
questions = [item["question"] for item in get_paa(kw)]
all_questions[kw] = questions
return all_questions
if __name__ == "__main__":
keywords = ["vector database", "embedding models 2026"]
gaps = analyze_content_gaps(keywords)
print(json.dumps(gaps, indent=2))Exemple JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
async function getPAA(keyword) {
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ query: keyword, country_code: "us" })
});
const data = await res.json();
return data.people_also_ask || [];
}
async function main() {
const keywords = ["vector database", "embedding models 2026"];
for (const kw of keywords) {
const paa = await getPAA(kw);
console.log(`\n${kw}:`);
paa.forEach(item => console.log(` Q: ${item.question}`));
}
}
main().catch(console.error);Sortie attendue
{
"people_also_ask": [
{
"question": "What is the difference between RAG and fine-tuning?",
"snippet": "RAG retrieves external documents at inference time, while fine-tuning...",
"link": "https://example.com/rag-vs-finetuning"
},
{
"question": "How do vector databases work?",
"snippet": "Vector databases store high-dimensional embeddings and retrieve...",
"link": "https://example.com/vector-databases"
}
]
}