Resumen
Este flujo de trabajo monitorea Reddit diario for discussions showing buying intent: people asking for recommendations, comparing herramientas, o expressing frustration con actual soluciones. It puntuaciones cada discussion by intent strength y engagement, producing un prioritized lista of warm outreach oportunidades donde prospects son actively seeking que you offer.
Desencadenador
Cron programar (diario at 7:00 AM UTC)
Programación
Ejecuta diario at 7:00 AM UTC
Pasos del flujo de trabajo
Cargar intent palabra clave patrones
Leer buying-intent patrones (e.g., 'looking for', 'anyone recommend', 'switching de') combined con producto palabras clave de config.
Search Reddit for intent senales
Consulta Scavio Reddit search for cada intent + producto palabra clave combination to encontrar active discussions.
Puntuacion intent strength
Puntuacion cada publicacion by combining upvotes, comentario conteo, recency, y intent palabra clave match calidad.
Deduplicate y clasificar
Eliminar duplicate publicaciones a traves de palabra clave combinations y clasificar by composite intent puntuacion.
Salida outreach oportunidades
Save el top 20 oportunidades con publicacion enlaces, context fragmentos, y suggested outreach angles.
Implementacion en Python
import requests
import json
from pathlib import Path
from datetime import datetime
API_KEY = "your_scavio_api_key"
INTENT_PATTERNS = ["looking for", "anyone recommend", "need a tool for", "switching from", "frustrated with"]
PRODUCT_KEYWORDS = ["search API", "SERP data", "web scraping"]
def search_reddit(query: str) -> list[dict]:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "reddit", "query": query},
timeout=15,
)
res.raise_for_status()
return res.json().get("organic", [])
def score_intent(post: dict, intent_pattern: str) -> float:
base_score = post.get("score", 0) + (post.get("comments", 0) * 3)
# Boost for stronger intent signals
if "need" in intent_pattern or "frustrated" in intent_pattern:
base_score *= 1.5
return base_score
def run():
all_opportunities = []
seen_titles = set()
for intent in INTENT_PATTERNS:
for product_kw in PRODUCT_KEYWORDS:
query = f"{intent} {product_kw}"
posts = search_reddit(query)
for post in posts:
title = post.get("title", "")
if title in seen_titles:
continue
seen_titles.add(title)
intent_score = score_intent(post, intent)
if intent_score > 10:
all_opportunities.append({
"title": title,
"subreddit": post.get("subreddit", ""),
"link": post.get("link", ""),
"score": post.get("score", 0),
"comments": post.get("comments", 0),
"intent_score": round(intent_score, 1),
"intent_pattern": intent,
"snippet": post.get("snippet", "")[:200],
})
all_opportunities.sort(key=lambda x: x["intent_score"], reverse=True)
top = all_opportunities[:20]
date = datetime.utcnow().strftime("%Y-%m-%d")
Path(f"intent_outreach_{date}.json").write_text(json.dumps(top, indent=2))
print(f"Found {len(all_opportunities)} intent signals, top {len(top)} saved")
for opp in top[:5]:
print(f" [{opp['subreddit']}] {opp['title'][:60]} (intent: {opp['intent_score']})")
if __name__ == "__main__":
run()Implementacion en JavaScript
const API_KEY = "your_scavio_api_key";
const INTENT_PATTERNS = ["looking for", "anyone recommend", "need a tool for", "switching from"];
const PRODUCT_KEYWORDS = ["search API", "SERP data", "web scraping"];
async function searchReddit(query) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "reddit", query }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
return (await res.json()).organic ?? [];
}
async function run() {
const fs = await import("fs/promises");
const opps = [];
const seen = new Set();
for (const intent of INTENT_PATTERNS) {
for (const kw of PRODUCT_KEYWORDS) {
const posts = await searchReddit(`${intent} ${kw}`);
for (const post of posts) {
const title = post.title ?? "";
if (seen.has(title)) continue;
seen.add(title);
const intentScore = (post.score ?? 0) + (post.comments ?? 0) * 3;
if (intentScore > 10) opps.push({ title, subreddit: post.subreddit ?? "", link: post.link ?? "", intentScore, snippet: (post.snippet ?? "").slice(0, 200) });
}
}
}
opps.sort((a, b) => b.intentScore - a.intentScore);
const date = new Date().toISOString().slice(0, 10);
await fs.writeFile(`intent_outreach_${date}.json`, JSON.stringify(opps.slice(0, 20), null, 2));
console.log(`Found ${opps.length} signals, top 20 saved`);
for (const o of opps.slice(0, 5)) console.log(` [${o.subreddit}] ${o.title.slice(0, 60)} (${o.intentScore})`);
}
run();Plataformas utilizadas
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit