No todos los hilos de Reddit son iguales en cuanto a divulgación. Un hilo que pregunta "cuál es la mejor API SERP para mi startup" tiene una intención de compra mucho mayor que "qué es una API SERP". Este evaluador busca en Reddit su categoría de producto, clasifica los hilos según señales de intención y genera una lista clasificada de hilos de alta intención con los que vale la pena interactuar. Cada búsqueda cuesta $0,005.
Requisitos previos
- Python 3.8+
- solicita biblioteca
- Una clave API de Scavio de scavio.dev
- Categoría de producto objetivo o palabras clave
Guia paso a paso
Paso 1: Definir patrones de señales de intención
Cree comparadores de patrones para diferentes niveles de intención de compra.
import os, requests, re
API_KEY = os.environ['SCAVIO_API_KEY']
SH = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}
INTENT_SIGNALS = {
'high_purchase': {
'patterns': ['looking for', 'need a', 'want to buy', 'budget for', 'willing to pay',
'recommend me', 'what should i use', 'shopping for'],
'weight': 10
},
'comparison': {
'patterns': ['vs', 'versus', 'compared to', 'alternative to', 'better than',
'switch from', 'migrate from'],
'weight': 8
},
'evaluation': {
'patterns': ['review of', 'experience with', 'thoughts on', 'worth it',
'anyone tried', 'opinions on', 'how is'],
'weight': 6
},
'pain_point': {
'patterns': ['frustrated with', 'problem with', 'struggling with', 'hate',
'broken', 'too expensive', 'unreliable'],
'weight': 7
},
'informational': {
'patterns': ['what is', 'how does', 'explain', 'eli5', 'tutorial', 'guide'],
'weight': 2
}
}
print('Intent signal categories configured:')
for cat, data in INTENT_SIGNALS.items():
print(f' {cat}: {len(data["patterns"])} patterns, weight {data["weight"]}')Paso 2: Buscar en Reddit y puntuar hilos
Extraiga los hilos de Reddit y califique cada uno según las señales de intención encontradas.
def score_thread(title, snippet):
text = f'{title} {snippet}'.lower()
total_score = 0
matched_intents = []
for category, data in INTENT_SIGNALS.items():
for pattern in data['patterns']:
if pattern in text:
total_score += data['weight']
matched_intents.append(category)
break # One match per category
return total_score, list(set(matched_intents))
def search_and_score(query):
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=SH, json={'query': query, 'platform': 'reddit', 'country_code': 'us'}).json()
scored = []
for r in data.get('organic_results', []):
title = r.get('title', '')
snippet = r.get('snippet', '')
score, intents = score_thread(title, snippet)
scored.append({
'title': title[:80], 'link': r.get('link', ''),
'snippet': snippet[:120], 'score': score,
'intents': intents
})
scored.sort(key=lambda x: x['score'], reverse=True)
return scored
results = search_and_score('serp api recommendation')
for r in results[:5]:
print(f' [{r["score"]:2}] {r["title"][:60]} | {r["intents"]}')Paso 3: Busque múltiples consultas y agregue
Ejecute múltiples consultas centradas en la intención y combine resultados.
def multi_query_score(product, queries=None):
if not queries:
queries = [
f'{product} recommendation',
f'best {product} for startup',
f'{product} alternative',
f'{product} vs',
f'looking for {product}',
]
all_scored = []
seen_links = set()
for query in queries:
results = search_and_score(query)
for r in results:
if r['link'] not in seen_links:
seen_links.add(r['link'])
all_scored.append(r)
all_scored.sort(key=lambda x: x['score'], reverse=True)
cost = len(queries) * 0.005
print(f'Scored {len(all_scored)} unique threads from {len(queries)} queries. Cost: ${cost:.3f}')
return all_scored
scored = multi_query_score('serp api')
print(f'\nHigh intent threads (score >= 8):')
high_intent = [s for s in scored if s['score'] >= 8]
for s in high_intent[:10]:
print(f' [{s["score"]:2}] {s["title"][:60]}')
print(f' Intents: {", ".join(s["intents"])}')Paso 4: Generar lista de prioridades de divulgación
Clasifique los hilos por puntuación de intención y actualidad para priorizar la divulgación.
def outreach_list(scored, min_score=6):
qualified = [s for s in scored if s['score'] >= min_score]
print(f'\n=== Outreach Priority List ===')
print(f'Threads above score {min_score}: {len(qualified)}/{len(scored)}')
print(f'\n{"#":3} {"Score":6} {"Intents":30} {"Thread":50}')
print('-' * 95)
for i, s in enumerate(qualified[:20], 1):
intent_str = ', '.join(s['intents'][:3])
print(f'{i:3} [{s["score"]:2}] {intent_str:28} {s["title"][:48]}')
# Summary stats
if qualified:
avg_score = sum(s['score'] for s in qualified) / len(qualified)
intent_dist = {}
for s in qualified:
for intent in s['intents']:
intent_dist[intent] = intent_dist.get(intent, 0) + 1
print(f'\nAvg intent score: {avg_score:.1f}')
print(f'Intent distribution:')
for intent, count in sorted(intent_dist.items(), key=lambda x: -x[1]):
print(f' {intent}: {count} threads')
outreach_list(scored)Ejemplo en Python
import os, requests
SH = {'x-api-key': os.environ['SCAVIO_API_KEY'], 'Content-Type': 'application/json'}
HIGH_INTENT = ['looking for', 'recommend', 'budget for', 'need a', 'best']
def score_reddit(query):
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=SH, json={'query': query, 'platform': 'reddit', 'country_code': 'us'}).json()
for r in data.get('organic_results', [])[:5]:
text = f"{r.get('title','')} {r.get('snippet','')}".lower()
score = sum(1 for p in HIGH_INTENT if p in text)
if score > 0:
print(f' [{score}] {r["title"][:60]}')
score_reddit('serp api recommendation')Ejemplo en JavaScript
const SH = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
const HIGH_INTENT = ['looking for', 'recommend', 'budget for', 'need a', 'best'];
async function scoreReddit(query) {
const data = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: SH,
body: JSON.stringify({ query, platform: 'reddit', country_code: 'us' })
}).then(r => r.json());
for (const r of (data.organic_results || []).slice(0, 5)) {
const text = `${r.title || ''} ${r.snippet || ''}`.toLowerCase();
const score = HIGH_INTENT.filter(p => text.includes(p)).length;
if (score > 0) console.log(` [${score}] ${r.title.slice(0, 60)}`);
}
}
scoreReddit('serp api recommendation').catch(console.error);Salida esperada
Intent signal categories configured:
high_purchase: 8 patterns, weight 10
comparison: 7 patterns, weight 8
evaluation: 7 patterns, weight 6
pain_point: 7 patterns, weight 7
Scored 42 unique threads from 5 queries. Cost: $0.025
High intent threads (score >= 8):
[18] Looking for a SERP API alternative to SerpAPI, budget $50/mo
Intents: high_purchase, comparison
[16] Need a search API for my AI agent startup, what should I use?
Intents: high_purchase, evaluation
[14] Frustrated with SerpAPI pricing, looking for alternatives
Intents: pain_point, high_purchase
=== Outreach Priority List ===
Threads above score 6: 15/42