Un moniteur personnel Reddit suit les sujets qui vous intéressent sur tous les subreddits et vous envoie un résumé quotidien des nouvelles discussions. Contrairement aux notifications Reddit, qui ne fonctionnent que pour les communautés auxquelles vous êtes abonné, ce moniteur recherche vos mots-clés sur l'ensemble de la plateforme. Chaque recherche coûte 0,005 $, donc surveiller 10 mots-clés par jour revient à 0,05 $/jour.
Prérequis
- Python 3.8+
- bibliothèque requests
- Une clé API Scavio depuis scavio.dev
- Mots-clés ou sujets à surveiller
Parcours
Étape 1: Configurer les mots-clés de surveillance
Définissez les mots-clés et les sujets que vous souhaitez suivre sur Reddit.
import os, requests, json, sqlite3, hashlib
from datetime import datetime
API_KEY = os.environ['SCAVIO_API_KEY']
SH = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}
MONITOR_CONFIG = {
'keywords': [
'scavio api', 'serp api recommendation', 'search api for agents',
'mcp search tool', 'web scraping alternative 2026'
],
'digest_email': '[email protected]',
'min_relevance': 2 # Minimum keyword matches to include
}
db = sqlite3.connect('reddit_monitor.db')
db.execute('''CREATE TABLE IF NOT EXISTS seen (
hash TEXT PRIMARY KEY, title TEXT, link TEXT,
keyword TEXT, first_seen TEXT
)''')
db.commit()
print(f'Monitoring {len(MONITOR_CONFIG["keywords"])} keywords on Reddit')
print(f'Daily cost estimate: ${len(MONITOR_CONFIG["keywords"]) * 0.005:.3f}')Étape 2: Rechercher Reddit pour chaque mot-clé
Récupérer les discussions récentes pour chaque mot-clé surveillé.
def search_keyword(keyword):
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=SH, json={'query': keyword, 'platform': 'reddit', 'country_code': 'us'}).json()
results = data.get('organic_results', [])
new_posts = []
for r in results[:10]:
link = r.get('link', '')
post_hash = hashlib.md5(link.encode()).hexdigest()
# Check if already seen
existing = db.execute('SELECT hash FROM seen WHERE hash=?', (post_hash,)).fetchone()
if not existing:
post = {'hash': post_hash, 'title': r.get('title', '')[:100],
'link': link, 'snippet': r.get('snippet', '')[:200],
'keyword': keyword}
new_posts.append(post)
db.execute('INSERT INTO seen VALUES (?,?,?,?,?)',
(post_hash, post['title'], link, keyword, datetime.now().isoformat()))
db.commit()
return new_posts
all_new = []
for kw in MONITOR_CONFIG['keywords']:
new = search_keyword(kw)
all_new.extend(new)
print(f' "{kw}": {len(new)} new posts')
print(f'\nTotal new posts: {len(all_new)}')Étape 3: Noter les publications par pertinence
Classer les nouvelles publications selon le nombre de mots-clés surveillés qu'elles correspondent.
def score_relevance(post, all_keywords):
text = f"{post['title']} {post['snippet']}".lower()
matches = sum(1 for kw in all_keywords if kw.lower() in text)
return matches
def rank_posts(posts, keywords, min_relevance=1):
for post in posts:
post['relevance'] = score_relevance(post, keywords)
ranked = [p for p in posts if p['relevance'] >= min_relevance]
ranked.sort(key=lambda x: x['relevance'], reverse=True)
return ranked
ranked = rank_posts(all_new, MONITOR_CONFIG['keywords'], MONITOR_CONFIG['min_relevance'])
print(f'\nHigh-relevance posts ({len(ranked)}):')
for p in ranked[:10]:
print(f' [{p["relevance"]}] {p["title"][:60]}')
print(f' via: "{p["keyword"]}"')Étape 4: Générer un résumé quotidien
Formater toutes les nouvelles découvertes en un résumé pour e-mail ou sortie terminale.
def daily_digest(new_posts, ranked_posts):
now = datetime.now().strftime('%Y-%m-%d')
cost = len(MONITOR_CONFIG['keywords']) * 0.005
lines = []
lines.append(f'Reddit Monitor Digest - {now}')
lines.append(f'Keywords: {len(MONITOR_CONFIG["keywords"])} | New posts: {len(new_posts)} | Cost: ${cost:.3f}')
lines.append('')
if ranked_posts:
lines.append('HIGH RELEVANCE:')
for p in ranked_posts[:10]:
lines.append(f' [{p["relevance"]}] {p["title"][:65]}')
lines.append(f' {p["link"]}')
lines.append('')
# Keyword breakdown
lines.append('BY KEYWORD:')
keyword_counts = {}
for p in new_posts:
kw = p['keyword']
keyword_counts[kw] = keyword_counts.get(kw, 0) + 1
for kw, count in sorted(keyword_counts.items(), key=lambda x: -x[1]):
lines.append(f' {kw}: {count} new posts')
# Stats
total_seen = db.execute('SELECT COUNT(*) FROM seen').fetchone()[0]
lines.append(f'\nTotal posts tracked: {total_seen}')
lines.append(f'Monthly cost estimate: ${cost * 30:.2f}')
digest = '\n'.join(lines)
print(digest)
# Save digest
with open(f'digest_{now}.txt', 'w') as f:
f.write(digest)
return digest
daily_digest(all_new, ranked)Exemple Python
import os, requests
SH = {'x-api-key': os.environ['SCAVIO_API_KEY'], 'Content-Type': 'application/json'}
def monitor(keywords):
for kw in keywords:
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=SH, json={'query': kw, 'platform': 'reddit', 'country_code': 'us'}).json()
results = data.get('organic_results', [])[:3]
print(f'{kw}: {len(results)} posts')
for r in results:
print(f' - {r.get("title", "")[:60]}')
print(f'Cost: ${len(keywords) * 0.005:.3f}')
monitor(['serp api', 'search api recommendation'])Exemple JavaScript
const SH = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
async function monitor(keywords) {
for (const kw of keywords) {
const data = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: SH,
body: JSON.stringify({ query: kw, platform: 'reddit', country_code: 'us' })
}).then(r => r.json());
console.log(`${kw}: ${(data.organic_results || []).length} posts`);
(data.organic_results || []).slice(0, 2).forEach(r => console.log(` - ${r.title.slice(0, 60)}`));
}
}
monitor(['serp api', 'search api recommendation']).catch(console.error);Sortie attendue
Monitoring 5 keywords on Reddit
Daily cost estimate: $0.025
"scavio api": 3 new posts
"serp api recommendation": 5 new posts
"search api for agents": 4 new posts
"mcp search tool": 2 new posts
"web scraping alternative 2026": 3 new posts
Total new posts: 17
Reddit Monitor Digest - 2026-05-19
Keywords: 5 | New posts: 17 | Cost: $0.025
HIGH RELEVANCE:
[3] Looking for a serp api recommendation for my AI agent project
https://reddit.com/r/...
[2] Best search API for agents in 2026? Need MCP support
https://reddit.com/r/...
Monthly cost estimate: $0.75