ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Flujos de trabajo
  3. Informe de inteligencia competitiva en JSON con una sola llamada MCP
Flujo de trabajo

Informe de inteligencia competitiva en JSON con una sola llamada MCP

Informe de inteligencia competitiva en JSON: posiciones en Google, menciones en Reddit y presencia en YouTube, cada dato con su URL de origen y su fecha.

Comenzar gratisDocumentacion API

Resumen

Obtienes un informe de inteligencia competitiva en JSON de una sola llamada haciendo que tu agente consulte en paralelo los endpoints de Google, Reddit y YouTube de Scavio y combine los resultados en un solo objeto. Cada dato lleva una URL de origen y una marca de tiempo captured_at, para que el agente pueda citar de donde salio un numero y que tan reciente es. Llamalo desde el servidor MCP de Scavio dentro de Claude o Cursor, o ejecuta el mismo flujo como un script REST detras de un cron. Los conteos brutos de seguidores o estrellas son un bien comun; lo que aguanta es la procedencia y la frescura.

Desencadenador

Llamada de herramienta del agente a demanda, o cron diario

Programación

A demanda / diario

Pasos del flujo de trabajo

1

Nombra al competidor y las superficies

Elige al competidor y decide que superficies importan. Este flujo lee tres: posiciones en la busqueda de Google, menciones en Reddit y presencia en YouTube. Scavio cubre esas mas TikTok, Amazon y Walmart, asi que suma o quita superficies segun lo que de verdad rastreas.

2

Trae las posiciones del SERP de Google

Haz POST a /api/v1/google con {"query": competidor, "light_request": false}. La peticion completa devuelve resultados organicos, knowledge_graph, questions y related_searches. Conserva el rango y el enlace de cada resultado. Una peticion completa de Google cuesta 2 creditos; una ligera cuesta 1 pero devuelve menos.

3

Trae las menciones de Reddit

Haz POST a /api/v1/reddit/search con {"query": competidor, "sort": "new"}. Ordenar por new muestra la conversacion mas reciente de la comunidad. Obtienes hilos y comentarios con sus puntuaciones. Esta llamada cuesta 2 creditos.

4

Trae la presencia en YouTube

Haz POST a /api/v1/youtube/search con el parametro del cuerpo search puesto al nombre del competidor. Ten en cuenta que YouTube usa search, no query, en el cuerpo de la peticion. Obtienes los videos, los canales y los conteos de vistas. Esta llamada cuesta 1 credito.

5

Marca cada dato con su procedencia

Al aplanar cada fuente, adjunta una source_url y una marca de tiempo captured_at a cada fila. La marca de tiempo viene del runtime, datetime.now en Python o new Date en Node, no de un valor fijo. Este es el paso que convierte numeros comunes en algo que un agente puede citar y en lo que puede confiar.

6

Combina en un solo informe

Une los tres bloques de fuentes bajo un solo objeto con el nombre del competidor y un generated_at de nivel superior. La version de Node corre las tres llamadas en paralelo con Promise.all; la de Python las corre en secuencia. Devuelve todo como JSON.

7

Conectalo a un agente o a un cron

Desde un cliente MCP, apunta a https://mcp.scavio.dev/mcp con la cabecera x-api-key y deja que el agente llame las herramientas a demanda. Para una actualizacion sin supervision, corre el script REST en un cron diario o en n8n. Scavio es una capa de datos y no programa nada por si solo.

Implementacion en Python

Python
"""
Build a one-call competitor-intel report as structured JSON.
Combines Google SERP positions + Reddit mentions + YouTube presence.
Every datapoint carries a source url and a captured_at timestamp,
because raw counts are commodity; provenance and freshness are the value.

Requires: pip install requests
Set SCAVIO_API_KEY in your environment.
"""

import os
import json
from datetime import datetime, timezone

import requests

API_KEY = os.environ["SCAVIO_API_KEY"]
BASE = "https://api.scavio.dev/api/v1"
HEADERS = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}

COMPETITOR = "Acme Analytics"


def now_iso():
    return datetime.now(timezone.utc).isoformat()


def post(path, body):
    resp = requests.post(f"{BASE}{path}", headers=HEADERS, json=body, timeout=60)
    resp.raise_for_status()
    return resp.json()


def google_positions(competitor):
    data = post("/google", {"query": competitor, "light_request": False})
    captured_at = now_iso()
    rows = []
    for i, item in enumerate(data.get("organic", []), start=1):
        rows.append({
            "position": item.get("position", i),
            "title": item.get("title"),
            "source_url": item.get("link"),
            "captured_at": captured_at,
        })
    kg = data.get("knowledge_graph") or {}
    return {
        "organic": rows,
        "knowledge_graph": kg or None,
        "questions": data.get("questions", []),
        "related_searches": data.get("related_searches", []),
        "captured_at": captured_at,
    }


def reddit_mentions(competitor):
    data = post("/reddit/search", {"query": competitor, "sort": "new"})
    captured_at = now_iso()
    threads = []
    for t in data.get("threads", []):
        threads.append({
            "title": t.get("title"),
            "score": t.get("score"),
            "subreddit": t.get("subreddit"),
            "source_url": t.get("url") or t.get("permalink"),
            "captured_at": captured_at,
        })
    return {"threads": threads, "captured_at": captured_at}


def youtube_presence(competitor):
    data = post("/youtube/search", {"search": competitor})
    captured_at = now_iso()
    videos = []
    for v in data.get("videos", []):
        videos.append({
            "title": v.get("title"),
            "channel": v.get("channel"),
            "views": v.get("views"),
            "source_url": v.get("link") or v.get("url"),
            "captured_at": captured_at,
        })
    return {"videos": videos, "captured_at": captured_at}


def build_report(competitor):
    return {
        "competitor": competitor,
        "generated_at": now_iso(),
        "sources": {
            "google": google_positions(competitor),
            "reddit": reddit_mentions(competitor),
            "youtube": youtube_presence(competitor),
        },
    }


if __name__ == "__main__":
    report = build_report(COMPETITOR)
    print(json.dumps(report, indent=2, ensure_ascii=False))

Implementacion en JavaScript

JavaScript
/**
 * Build a one-call competitor-intel report as structured JSON.
 * Combines Google SERP positions + Reddit mentions + YouTube presence.
 * Every datapoint carries a source url and a captured_at timestamp,
 * because raw counts are commodity; provenance and freshness are the value.
 *
 * Node 18+ (built-in fetch). Set SCAVIO_API_KEY in your environment.
 */

const API_KEY = process.env.SCAVIO_API_KEY;
const BASE = "https://api.scavio.dev/api/v1";
const HEADERS = {
  Authorization: `Bearer ${API_KEY}`,
  "Content-Type": "application/json",
};

const COMPETITOR = "Acme Analytics";

const nowIso = () => new Date().toISOString();

async function post(path, body) {
  const resp = await fetch(`${BASE}${path}`, {
    method: "POST",
    headers: HEADERS,
    body: JSON.stringify(body),
  });
  if (!resp.ok) throw new Error(`${resp.status} ${await resp.text()}`);
  return resp.json();
}

async function googlePositions(competitor) {
  const data = await post("/google", { query: competitor, light_request: false });
  const capturedAt = nowIso();
  const organic = (data.organic || []).map((item, i) => ({
    position: item.position ?? i + 1,
    title: item.title,
    source_url: item.link,
    captured_at: capturedAt,
  }));
  return {
    organic,
    knowledge_graph: data.knowledge_graph || null,
    questions: data.questions || [],
    related_searches: data.related_searches || [],
    captured_at: capturedAt,
  };
}

async function redditMentions(competitor) {
  const data = await post("/reddit/search", { query: competitor, sort: "new" });
  const capturedAt = nowIso();
  const threads = (data.threads || []).map((t) => ({
    title: t.title,
    score: t.score,
    subreddit: t.subreddit,
    source_url: t.url || t.permalink,
    captured_at: capturedAt,
  }));
  return { threads, captured_at: capturedAt };
}

async function youtubePresence(competitor) {
  const data = await post("/youtube/search", { search: competitor });
  const capturedAt = nowIso();
  const videos = (data.videos || []).map((v) => ({
    title: v.title,
    channel: v.channel,
    views: v.views,
    source_url: v.link || v.url,
    captured_at: capturedAt,
  }));
  return { videos, captured_at: capturedAt };
}

async function buildReport(competitor) {
  const [google, reddit, youtube] = await Promise.all([
    googlePositions(competitor),
    redditMentions(competitor),
    youtubePresence(competitor),
  ]);
  return {
    competitor,
    generated_at: nowIso(),
    sources: { google, reddit, youtube },
  };
}

buildReport(COMPETITOR)
  .then((report) => console.log(JSON.stringify(report, null, 2)))
  .catch((err) => {
    console.error(err);
    process.exit(1);
  });

Plataformas utilizadas

Google

Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA

Reddit

Comunidad, publicaciones y comentarios en hilos de cualquier subreddit

YouTube

Búsqueda de videos con transcripciones y metadatos

Preguntas frecuentes

Obtienes un informe de inteligencia competitiva en JSON de una sola llamada haciendo que tu agente consulte en paralelo los endpoints de Google, Reddit y YouTube de Scavio y combine los resultados en un solo objeto. Cada dato lleva una URL de origen y una marca de tiempo captured_at, para que el agente pueda citar de donde salio un numero y que tan reciente es. Llamalo desde el servidor MCP de Scavio dentro de Claude o Cursor, o ejecuta el mismo flujo como un script REST detras de un cron. Los conteos brutos de seguidores o estrellas son un bien comun; lo que aguanta es la procedencia y la frescura.

Este flujo de trabajo usa un llamada de herramienta del agente a demanda, o cron diario. A demanda / diario.

Este flujo de trabajo usa las siguientes plataformas de Scavio: google, reddit, youtube. Cada plataforma se llama a traves del mismo endpoint de API unificado.

Si. El plan gratuito de Scavio incluye 50 creditos al registrarte sin tarjeta de credito. Es suficiente para probar y validar este flujo de trabajo antes de escalarlo.

Informe de inteligencia competitiva en JSON con una sola llamada MCP

Informe de inteligencia competitiva en JSON: posiciones en Google, menciones en Reddit y presencia en YouTube, cada dato con su URL de origen y su fecha.

Obtener tu clave APILeer la documentacion
ScavioScavio

API de busqueda en tiempo real para agentes de IA. Busca en todas las plataformas, no solo en Google.

Producto

  • Funciones
  • Precios
  • Panel
  • Afiliados

Desarrolladores

  • Documentacion
  • Referencia de API
  • Inicio rapido
  • Integracion MCP
  • Python SDK

Alternativas

  • Alternativa a Tavily
  • Alternativa a SerpAPI
  • Alternativa a Firecrawl
  • Alternativa a Exa

Herramientas

  • Formateador JSON
  • cURL a codigo
  • Contador de tokens
  • Todas las herramientas

© 2026 Scavio. Todos los derechos reservados.

Featured on TAAFT
Terminos de servicioPolitica de privacidad