Las menciones en bruto de Reddit son ruido sin contexto. La queja que se repite por todo r/DigitalMarketingHack es la misma: F5Bot te manda un email cada vez que aparece tu keyword (gratis, hasta 200 keywords, genial para eso), pero la mitad de las "menciones" son neutras, y algunas "positivas" son en realidad quejas sutiles. La capa que falta es el sentimiento y la intencion: esta persona te recomienda, pregunta por ti o avisa a otros para que no te usen? Las suites de pago anaden eso (Brand24 desde 249 $/mes, Mentionlytics desde 69 $/mes). Este tutorial construye esa misma capa tu mismo: trae las menciones con el endpoint de busqueda de Reddit de Scavio (2 creditos por consulta, devuelve hilos y puntuaciones) y luego clasifica cada una con un LLM. Te quedas con F5Bot para las alertas instantaneas y le anades el contexto que no puede dar.
Requisitos previos
- Una API key de Scavio (50 creditos gratis, sin tarjeta)
- Python 3.9+ o Node 18+
- Un LLM al que llamar para clasificar (Claude, GPT o local)
Guia paso a paso
Paso 1: Trae las menciones recientes de tu keyword de marca
El endpoint de busqueda de Reddit devuelve los hilos coincidentes con sus puntuaciones y subreddits. Busca el nombre de tu marca y un par de variantes. Esto cuesta 2 creditos por consulta porque las respuestas de Reddit traen muchos datos.
import os, requests
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}
r = requests.post("https://api.scavio.dev/api/v1/reddit/search",
headers=H, json={"query": "your brand name"}).json()
threads = r["data"]["results"]Paso 2: Clasifica cada mencion por sentimiento e intencion
Manda el titulo y el fragmento de cada hilo a tu LLM con un prompt ajustado: que devuelva sentimiento (positivo, neutral, negativo) e intencion (recomendacion, pregunta, queja, comparacion). Esta es la capa que le falta a F5Bot: estas convirtiendo menciones en bruto en algo que puedes priorizar.
def classify(title, snippet):
prompt = f"""Classify this Reddit mention.
Return JSON: {{"sentiment": "positive|neutral|negative", "intent": "recommendation|question|complaint|comparison"}}
Title: {title}
Snippet: {snippet}"""
# call your LLM, parse the JSON it returns
return llm_json(prompt)Paso 3: Trae el contexto completo del hilo antes de responder
Para todo lo marcado como negativo o como comparacion, trae el post completo con comentarios usando el endpoint reddit/post. El contexto lo es todo: una mencion "negativa" a veces es un bug ya arreglado por el que alguien te esta dando las gracias. Escala solo despues de haber leido el hilo.
post = requests.post("https://api.scavio.dev/api/v1/reddit/post",
headers=H, json={"url": threads[0]["url"]}).json()Paso 4: Enruta por prioridad, no por volumen
Las quejas negativas y los hilos de comparacion van a una persona ahora. Las recomendaciones se registran como prueba social. Las preguntas neutras pueden recibir un empujon con plantilla. Has cambiado una avalancha de alertas identicas por una cola priorizada, que es el trabajo de verdad.
Ejemplo en Python
import os, requests
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}
def monitor(brand):
r = requests.post("https://api.scavio.dev/api/v1/reddit/search",
headers=H, json={"query": brand}).json()
out = []
for t in r["data"]["results"]:
tag = classify(t["title"], t.get("selftext", "")) # your LLM call
out.append({"url": t["url"], "score": t["score"], **tag})
return sorted(out, key=lambda x: x["sentiment"] == "negative", reverse=True)
print(monitor("your brand name"))Ejemplo en JavaScript
const H = { Authorization: `Bearer ${process.env.SCAVIO_API_KEY}`, "Content-Type": "application/json" };
async function monitor(brand) {
const res = await fetch("https://api.scavio.dev/api/v1/reddit/search", {
method: "POST", headers: H, body: JSON.stringify({ query: brand }),
});
const { data } = await res.json();
const tagged = [];
for (const t of data.results) {
const tag = await classify(t.title, t.selftext || ""); // your LLM call
tagged.push({ url: t.url, score: t.score, ...tag });
}
return tagged.sort((a, b) => (b.sentiment === "negative") - (a.sentiment === "negative"));
}Salida esperada
Una lista priorizada de menciones de Reddit, cada una etiquetada con sentimiento e intencion, ordenada para que las quejas y los hilos de comparacion salgan primero, en lugar de un flujo plano de cada coincidencia de keyword.