Resumen
Competidores do no operate on un single plataforma, y ninguno deberia your monitoreo. Este flujo de trabajo ejecuta diario at 7 AM, searches for your competidores on Google (news y web), Reddit (discussions y menciones), y TikTok (contenido y engagement), agrega el senales en un unified intelligence feed, y highlights anything nuevo o trending. Monitoreo 3 competidores a traves de 3 plataformas costs about 9 credits per dia ($0.045).
Desencadenador
Cron 7 AM UTC diario
Programación
Diario 7 AM
Pasos del flujo de trabajo
Cargar Competidor Configuracion
Leer el lista of competidor names, dominios, y platform-specific identifiers de config.
Search Google for Competidor News
For cada competidor, search Google via Scavio for reciente news, press lanzamientos, y producto actualiza.
Search Reddit for Mentions
Search Reddit via Scavio for competidor nombre menciones in relevante subreddits.
Search TikTok for Contenido
Search TikTok via Scavio for competidor menciones de marca y related contenido.
Agregar y Deduplicate
Fusionar resultados a traves de plataformas, deduplicate by URL, y etiqueta cada elemento con its fuente plataforma.
Puntuacion y Alert
Puntuacion elementos by novelty y relevance. Enviar un diario digest con el top senales to Slack o correo electronico.
Implementacion en Python
import requests, os, json
from pathlib import Path
from datetime import date
API_KEY = os.environ["SCAVIO_API_KEY"]
SH = {"x-api-key": API_KEY, "Content-Type": "application/json"}
TH = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
COMPETITORS = [
{"name": "Competitor A", "domain": "competitora.com", "tiktok": "competitora"},
{"name": "Competitor B", "domain": "competitorb.com", "tiktok": "competitorb"},
{"name": "Competitor C", "domain": "competitorc.com", "tiktok": "competitorc"},
]
INTEL_DIR = Path("competitive_intel")
INTEL_DIR.mkdir(exist_ok=True)
def search_google(query: str) -> list:
resp = requests.post("https://api.scavio.dev/api/v1/search", headers=SH, json={"query": query, "platform": "google"}, timeout=15)
return resp.json().get("organic", []) if resp.ok else []
def search_reddit(query: str) -> list:
resp = requests.post("https://api.scavio.dev/api/v1/search", headers=SH, json={"query": query, "platform": "reddit"}, timeout=15)
return resp.json().get("organic", []) if resp.ok else []
def search_tiktok(query: str) -> list:
resp = requests.post("https://api.scavio.dev/api/v1/tiktok/search", headers=TH, json={"query": query}, timeout=15)
return resp.json().get("results", []) if resp.ok else []
def run():
all_signals = []
seen_urls = set()
for comp in COMPETITORS:
for platform_fn, platform_name, query in [
(search_google, "google", f"{comp['name']} news 2026"),
(search_reddit, "reddit", f"{comp['name']} review discussion"),
(search_tiktok, "tiktok", comp["tiktok"]),
]:
results = platform_fn(query)
for r in results[:5]:
url = r.get("url", "") or r.get("link", "")
if url and url not in seen_urls:
seen_urls.add(url)
all_signals.append({
"competitor": comp["name"],
"platform": platform_name,
"title": r.get("title", "") or r.get("description", ""),
"url": url,
"snippet": r.get("snippet", ""),
})
all_signals.sort(key=lambda s: s["platform"])
out = INTEL_DIR / f"intel_{date.today()}.json"
out.write_text(json.dumps(all_signals, indent=2))
print(f"Competitive intel for {date.today()}: {len(all_signals)} signals")
for s in all_signals[:10]:
print(f" [{s['platform']}] {s['competitor']}: {s['title'][:60]}")
run()Implementacion en JavaScript
const SH = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
const TH = {'Authorization': 'Bearer '+process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
const fs = await import('fs');
const COMPETITORS = [
{name:'Competitor A', domain:'competitora.com', tiktok:'competitora'},
{name:'Competitor B', domain:'competitorb.com', tiktok:'competitorb'},
{name:'Competitor C', domain:'competitorc.com', tiktok:'competitorc'},
];
const INTEL_DIR = 'competitive_intel';
try { fs.mkdirSync(INTEL_DIR); } catch {}
async function searchGoogle(query) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:SH, body:JSON.stringify({query, platform:'google'})});
return (await r.json()).organic || [];
}
async function searchReddit(query) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:SH, body:JSON.stringify({query, platform:'reddit'})});
return (await r.json()).organic || [];
}
async function searchTiktok(query) {
const r = await fetch('https://api.scavio.dev/api/v1/tiktok/search', {method:'POST', headers:TH, body:JSON.stringify({query})});
return (await r.json()).results || [];
}
const allSignals = [];
const seenUrls = new Set();
for (const comp of COMPETITORS) {
const searches = [
{fn:searchGoogle, platform:'google', query:comp.name+' news 2026'},
{fn:searchReddit, platform:'reddit', query:comp.name+' review discussion'},
{fn:searchTiktok, platform:'tiktok', query:comp.tiktok},
];
for (const s of searches) {
const results = await s.fn(s.query);
for (const r of results.slice(0,5)) {
const url = r.url || r.link || '';
if (url && !seenUrls.has(url)) {
seenUrls.add(url);
allSignals.push({competitor:comp.name, platform:s.platform, title:r.title||r.description||'', url, snippet:r.snippet||''});
}
}
}
}
const today = new Date().toISOString().split('T')[0];
fs.writeFileSync(INTEL_DIR+'/intel_'+today+'.json', JSON.stringify(allSignals, null, 2));
console.log('Competitive intel: '+allSignals.length+' signals');
allSignals.slice(0,10).forEach(s => console.log(' ['+s.platform+'] '+s.competitor+': '+s.title.slice(0,60)));Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit
TikTok
Descubrimiento de videos, creadores y productos en tendencia