Resumen
Este n8n-compatible pipeline monitorea el health of API fuentes de datos usado in your n8n flujos de trabajo. It envia probar consultas to cada Scavio endpoint (Google, Amazon, Reddit, TikTok) y verifies el respuesta contiene expected datos. Si cualquier endpoint returns errores o empty resultados, el pipeline envia un alerta to Slack con el failure detalles. Ejecutar as un programado n8n flujo de trabajo to catch API problemas antes de they break produccion flujos de trabajo.
Desencadenador
Cron programar (cada 6 horas)
Programación
Ejecuta cada 6 horas
Pasos del flujo de trabajo
Define verificacion de estado endpoints
List todos Scavio endpoints usado in produccion flujos de trabajo con probar consultas for cada.
Ejecutar probar consultas
Enviar un probar consulta to cada endpoint y registro respuesta estado, latencia, y resultado conteo.
Validar respuesta calidad
Verificar ese cada respuesta contiene at least 1 organic resultado y valid JSON structure.
Alert on failures
Si cualquier endpoint fails validacion, enviar un Slack alerta con endpoint nombre, error detalles, y marca de tiempo.
Implementacion en Python
import requests
import json
from datetime import datetime
from pathlib import Path
import time
API_KEY = "your_scavio_api_key"
TIKTOK_URL = "https://api.scavio.dev/api/v1/tiktok"
HEALTH_CHECKS = [
{"name": "google", "platform": "google", "query": "test query", "min_results": 1},
{"name": "amazon", "platform": "amazon", "query": "laptop", "min_results": 1},
{"name": "reddit", "platform": "reddit", "query": "python programming", "min_results": 1},
]
def check_endpoint(check: dict) -> dict:
start = time.time()
try:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": check["platform"], "query": check["query"]},
timeout=15,
)
latency = int((time.time() - start) * 1000)
if not res.ok:
return {"name": check["name"], "status": "error", "code": res.status_code, "latency_ms": latency}
data = res.json()
result_count = len(data.get("organic", []))
healthy = result_count >= check["min_results"]
return {"name": check["name"], "status": "healthy" if healthy else "degraded", "results": result_count, "latency_ms": latency}
except Exception as e:
return {"name": check["name"], "status": "down", "error": str(e), "latency_ms": int((time.time() - start) * 1000)}
def run():
date = datetime.utcnow().strftime("%Y-%m-%d %H:%M")
results = [check_endpoint(c) for c in HEALTH_CHECKS]
failures = [r for r in results if r["status"] != "healthy"]
print(f"Health check {date}:")
for r in results:
status_icon = "OK" if r["status"] == "healthy" else "FAIL"
print(f" [{status_icon}] {r['name']}: {r['status']} ({r['latency_ms']}ms)")
if failures:
print(f" ALERT: {len(failures)} endpoints unhealthy")
Path("api_health.json").write_text(json.dumps({"timestamp": date, "results": results}, indent=2))
if __name__ == "__main__":
run()Implementacion en JavaScript
const API_KEY = "your_scavio_api_key";
const CHECKS = [
{ name: "google", platform: "google", query: "test query" },
{ name: "amazon", platform: "amazon", query: "laptop" },
{ name: "reddit", platform: "reddit", query: "python programming" },
];
async function checkEndpoint(check) {
const start = Date.now();
try {
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: check.platform, query: check.query }),
});
const ms = Date.now() - start;
if (!res.ok) return { name: check.name, status: "error", code: res.status, ms };
const data = await res.json();
return { name: check.name, status: (data.organic ?? []).length > 0 ? "healthy" : "degraded", ms };
} catch (e) {
return { name: check.name, status: "down", error: e.message, ms: Date.now() - start };
}
}
for (const c of CHECKS) {
const r = await checkEndpoint(c);
console.log(`[${r.status === "healthy" ? "OK" : "FAIL"}] ${r.name}: ${r.status} (${r.ms}ms)`);
}Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
Amazon
Búsqueda de productos con precios, calificaciones y reseñas
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit