Reddit révèle ce avec quoi votre public a du mal, dans leurs propres mots. Au lieu de deviner les sujets, fouillez les discussions pour trouver les points douloureux, les FAQ et les comparaisons de produits. Ce tutoriel construit un pipeline qui recherche sur Reddit des signaux de sujets, classe les discussions par angle de contenu et produit des briefs de contenu dans le langage utilisateur. Chaque recherche coûte 0,005 $.
Prérequis
- Python 3.8+
- bibliothèque requests
- Une clé API Scavio depuis scavio.dev
- Sujets de contenu
Parcours
Étape 1: Rechercher des signaux de sujets sur Reddit
Interroger avec différents suffixes d'intention.
import os, requests, json
from collections import Counter
API_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}
def mine(topic):
results = []
for suffix in ['help', 'recommendation', 'vs', 'alternative', 'problem']:
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=H, json={'query': f'{topic} {suffix}', 'platform': 'reddit', 'country_code': 'us'}).json()
for r in data.get('organic_results', [])[:5]:
results.append({'title': r['title'], 'snippet': r.get('snippet', ''), 'url': r['link']})
print(f'{topic}: {len(results)} discussions (${5 * 0.005:.3f})')
return resultsÉtape 2: Classer les angles de contenu
Trier les discussions en comparaisons, tutoriels, points douloureux et recommandations.
def classify(title):
t = title.lower()
if ' vs ' in t or 'alternative' in t: return 'comparison'
if t.startswith('how') or 'tutorial' in t: return 'how_to'
if any(w in t for w in ['problem', 'issue', 'help', 'stuck']): return 'pain_point'
if any(w in t for w in ['recommend', 'best', 'looking for']): return 'recommendation'
return 'discussion'
def analyze(discussions):
angles = Counter()
categorized = {}
for d in discussions:
cat = classify(d['title'])
angles[cat] += 1
categorized.setdefault(cat, []).append(d)
for cat, count in angles.most_common():
print(f' {cat}: {count}')
for d in categorized[cat][:2]: print(f' - {d["title"][:60]}')
return categorizedÉtape 3: Générer des briefs de contenu
Transformer les discussions classées en briefs.
def briefs(categorized, max=10):
out = []
for cat, discussions in categorized.items():
for d in discussions[:max // 5]:
out.append({'type': cat, 'title': d['title'].rstrip('?').strip(),
'source': d['url'], 'user_language': d['snippet'][:150]})
print(f'\n{len(out)} content briefs:')
for b in out: print(f' [{b["type"]:14}] {b["title"][:55]}')
return outÉtape 4: Exécuter le pipeline complet
Fouiller, classer et générer des briefs.
def run(topics):
all_d = []
for t in topics: all_d.extend(mine(t))
categorized = analyze(all_d)
b = briefs(categorized)
with open('briefs.json', 'w') as f: json.dump(b, f, indent=2)
print(f'Saved to briefs.json')
run(['serp api', 'tiktok analytics'])Exemple Python
import os, requests
from collections import Counter
API_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}
def mine(topic):
results = []
for s in ['help', 'recommendation', 'vs']:
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=H, json={'query': f'{topic} {s}', 'platform': 'reddit', 'country_code': 'us'}).json()
results.extend(data.get('organic_results', [])[:5])
angles = Counter()
for r in results:
t = r['title'].lower()
if ' vs ' in t: angles['comparison'] += 1
elif 'help' in t: angles['pain_point'] += 1
else: angles['other'] += 1
print(f'{topic}: {len(results)} discussions, {dict(angles)}')
mine('serp api')Exemple JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
const H = { 'x-api-key': API_KEY, 'Content-Type': 'application/json' };
async function mine(topic) {
const results = [];
for (const s of ['help', 'recommendation', 'vs']) {
const data = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H,
body: JSON.stringify({ query: `${topic} ${s}`, platform: 'reddit', country_code: 'us' })
}).then(r => r.json());
results.push(...(data.organic_results || []).slice(0, 5));
}
console.log(`${topic}: ${results.length} discussions`);
results.slice(0, 3).forEach(r => console.log(` ${r.title.slice(0, 55)}`));
}
mine('serp api').catch(console.error);Sortie attendue
serp api: 22 discussions ($0.025)
tiktok analytics: 18 discussions ($0.025)
recommendation: 12
- Best SERP API for small startups in 2026
comparison: 9
- Scavio vs SerpAPI vs DataForSEO
pain_point: 7
- SERP API inconsistent results help
10 content briefs:
[recommendation ] Best SERP API for small startups
[comparison ] Scavio vs SerpAPI vs DataForSEO
Saved to briefs.json