Resumen
Este flujo de trabajo ejecuta diario at 7 AM UTC, consultas Scavio for cada competitor's nombre de marca a traves de Google y Reddit, envia el raw resultados to Groq Llama 8B for summarization, y correos electronicos el digest to your team. Total diario cost for 5 competidores: ~$0.03 (Scavio) + ~$0.005 (Groq) = ~$0.035.
Desencadenador
Cron programar (diario at 7 AM UTC)
Programación
Diario at 7 AM UTC
Pasos del flujo de trabajo
Cargar competidor lista
Leer competidor names y seguimiento palabras clave de un JSON archivo de configuracion o entorno variable.
Search Google y Reddit for cada competidor
For cada competidor, call Scavio Google search y Reddit search con el competidor nombre. Recopilar resultados organicos y Reddit threads.
Resumir con Groq Llama 8B
Enviar el combined SERP fragmentos y Reddit titles to Groq Llama 8B con un summarization prompt. Solicitud 3-5 bullet points per competidor.
Format correo electronico digest
Compile summaries en un HTML correo electronico con competidor sections, bullet points, y fuente enlaces.
Enviar correo electronico
Enviar el digest via SMTP, SendGrid, o Resend. Include un plain text fallback for correo electronico clientes ese strip HTML.
Implementacion en Python
import requests, os, smtplib
from email.mime.text import MIMEText
SCAVIO_KEY = os.environ["SCAVIO_API_KEY"]
GROQ_KEY = os.environ["GROQ_API_KEY"]
COMPETITORS = ["Tavily", "Serper", "Exa"]
def search_competitor(name):
H = {"x-api-key": SCAVIO_KEY}
serp = requests.post("https://api.scavio.dev/api/v1/search", headers=H,
json={"platform": "google", "query": f"{name} news 2026"}, timeout=10).json()
reddit = requests.post("https://api.scavio.dev/api/v1/search", headers=H,
json={"platform": "reddit", "query": name}, timeout=10).json()
snippets = [r.get("snippet", "") for r in serp.get("organic", [])[:5]]
threads = [r.get("title", "") for r in reddit.get("organic", [])[:5]]
return "\n".join(snippets + threads)
def summarize(text, name):
resp = requests.post("https://api.groq.com/openai/v1/chat/completions",
headers={"Authorization": f"Bearer {GROQ_KEY}"},
json={"model": "llama-3.1-8b-instant", "messages": [
{"role": "user", "content": f"Summarize {name} updates in 3-5 bullets:\n{text}"}
]}).json()
return resp["choices"][0]["message"]["content"]
digest = []
for comp in COMPETITORS:
raw = search_competitor(comp)
summary = summarize(raw, comp)
digest.append(f"## {comp}\n{summary}")
body = "\n\n".join(digest)
msg = MIMEText(body)
msg["Subject"] = "Daily Competitor Digest"
print(body)Implementacion en JavaScript
const COMPETITORS = ["Tavily", "Serper", "Exa"];
async function searchCompetitor(name) {
const headers = { "x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json" };
const [serp, reddit] = await Promise.all([
fetch("https://api.scavio.dev/api/v1/search", { method: "POST", headers,
body: JSON.stringify({ platform: "google", query: `${name} news 2026` }) }).then(r => r.json()),
fetch("https://api.scavio.dev/api/v1/search", { method: "POST", headers,
body: JSON.stringify({ platform: "reddit", query: name }) }).then(r => r.json())
]);
const snippets = (serp.organic || []).slice(0, 5).map(r => r.snippet || "");
const threads = (reddit.organic || []).slice(0, 5).map(r => r.title || "");
return [...snippets, ...threads].join("\n");
}
async function summarize(text, name) {
const resp = await fetch("https://api.groq.com/openai/v1/chat/completions", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.GROQ_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ model: "llama-3.1-8b-instant", messages: [
{ role: "user", content: `Summarize ${name} updates in 3-5 bullets:\n${text}` }
]})
}).then(r => r.json());
return resp.choices[0].message.content;
}
for (const comp of COMPETITORS) {
const raw = await searchCompetitor(comp);
const summary = await summarize(raw, comp);
console.log(`## ${comp}\n${summary}\n`);
}Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit