Resumen
Este flujo de trabajo ejecuta semanal y verifica un lista of potential producto ideas contra mercado saturation senales. For cada idea, it consultas Google for organic competition y ad density, entonces verifica Reddit for usuario satisfaction con existing herramientas. Ideas ese puntuacion high on saturation metricas son flagged as 'do no construir' candidates.
Desencadenador
Cron programar (semanal, Monday at 9 AM UTC)
Programación
Semanal (Monday at 9 AM UTC)
Pasos del flujo de trabajo
Cargar idea backlog
Leer un lista of producto ideas de un JSON file. Cada idea tiene un nombre y 2-3 search palabras clave to evaluar.
Verificar Google SERP saturation
For cada palabra clave, call Scavio Google search. Count resultados organicos de established marcas, conteo ads, y verificar for knowledge panels indicating un dominant player.
Verificar Reddit satisfaction
For cada idea, search Reddit for 'best [categoria] herramienta' y 'happy con [existing herramienta]'. High satisfaction con incumbents es un negative senal.
Puntuacion cada idea
Compute un saturation puntuacion: organic_big_brands * 2 + ad_count * 3 + reddit_satisfied_threads * 1. Higher puntuacion means mas saturated mercado.
Generar informe
Salida un ranked lista of ideas de least saturated to mas saturated. Marcar ideas above el umbral as 'do no construir' candidates.
Implementacion en Python
import requests, os, json
SCAVIO_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": SCAVIO_KEY}
IDEAS = [
{"name": "AI resume builder", "keywords": ["ai resume builder", "resume builder tool"]},
{"name": "Invoice automation", "keywords": ["invoice automation tool", "automated invoicing"]},
]
def check_saturation(keyword: str) -> dict:
serp = requests.post("https://api.scavio.dev/api/v1/search", headers=H,
json={"platform": "google", "query": keyword}, timeout=10).json()
reddit = requests.post("https://api.scavio.dev/api/v1/search", headers=H,
json={"platform": "reddit", "query": f"{keyword} recommendation"}, timeout=10).json()
return {
"organic_count": len(serp.get("organic", [])),
"ads_count": len(serp.get("ads_results", [])),
"reddit_threads": len(reddit.get("organic", [])),
}
for idea in IDEAS:
scores = [check_saturation(kw) for kw in idea["keywords"]]
avg_ads = sum(s["ads_count"] for s in scores) / len(scores)
avg_organic = sum(s["organic_count"] for s in scores) / len(scores)
saturation = avg_ads * 3 + avg_organic * 2
status = "SATURATED" if saturation > 30 else "OPEN"
print(f"[{status}] {idea['name']}: ads={avg_ads:.0f}, organic={avg_organic:.0f}, score={saturation:.0f}")Implementacion en JavaScript
const IDEAS = [
{ name: "AI resume builder", keywords: ["ai resume builder", "resume builder tool"] },
{ name: "Invoice automation", keywords: ["invoice automation tool", "automated invoicing"] },
];
async function checkSaturation(keyword) {
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: keyword }) }).then(r => r.json()),
fetch("https://api.scavio.dev/api/v1/search", { method: "POST", headers,
body: JSON.stringify({ platform: "reddit", query: `${keyword} recommendation` }) }).then(r => r.json())
]);
return {
organic: (serp.organic || []).length,
ads: (serp.ads_results || []).length,
reddit: (reddit.organic || []).length,
};
}
for (const idea of IDEAS) {
const scores = await Promise.all(idea.keywords.map(checkSaturation));
const avgAds = scores.reduce((s, x) => s + x.ads, 0) / scores.length;
const avgOrganic = scores.reduce((s, x) => s + x.organic, 0) / scores.length;
const saturation = avgAds * 3 + avgOrganic * 2;
const status = saturation > 30 ? "SATURATED" : "OPEN";
console.log(`[${status}] ${idea.name}: ads=${avgAds.toFixed(0)}, organic=${avgOrganic.toFixed(0)}, score=${saturation.toFixed(0)}`);
}Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit