Tu agente arma un radar que cada semana revisa a tus competidores donde estén (YouTube, Instagram, su sitio web, sus anuncios, Google Maps o Mercado Libre) y te dice qué les rindió más de lo normal, no qué tiene más vistas.
Pégale esto a tu agente
Abre tu agente en la computadora y pégale esta línea. Te hará unas preguntas y esperará tu OK antes de tocar cualquier archivo.
Lee completa https://visiumai.com/guias/competencia.md y sigue la guía paso a paso.
¿Prefieres el archivo?
Descárgalo y pásaselo a tu agente, o léelo completo aquí al lado.
- Necesitas
- Un agente que use la terminal de tu computadora (Claude Code, Codex, Gemini CLI u otro parecido) y Python 3.10 o más nuevo. Según dónde esté tu competencia, una cuenta de Google Cloud (gratis) o de Apify (con plan gratis).
- Toma
- De 30 a 60 minutos la primera vez; después, unos minutos por reporte
- Versión
- 20 de octubre de 2026
- Del video
- Mi Agente de IA Revisa a Mi Competencia Cada SemanaVer en YouTube
¿Lo quieres en tu empresa sin hacerlo tú? Agenda una consultoría gratis.
competencia.md
318 líneas
# Tu agente revisa a tu competencia cada semana > Guía de Jaime Herrera (VisiumAI) · versión 2026-10-20 · https://visiumai.com/guias/competencia.md ## Para ti Cada lunes, mi agente de IA revisa a 35 canales de YouTube y a más de 20 cuentas de Instagram de mi competencia, y me dice qué les está funcionando esa semana. Con esta guía, tu agente arma lo mismo para tu negocio: un **radar de competencia** que corre cada semana y te entrega un reporte corto. - **No busca lo que tiene más vistas, sino lo que rindió más de lo normal** para cada competidor. Un video con 30 mil vistas en un canal que suele tener 3 mil dice mucho más que uno con 300 mil en un canal que siempre tiene 300 mil: te dice qué tema está pegando, no quién tiene más seguidores. - **La herramienta depende de dónde está tu competencia.** No es lo mismo revisar YouTube que anuncios de Facebook, Google Maps o Mercado Libre. Tu agente elige la fuente correcta para cada competidor (tabla del paso 2). - **Lo que cuesta:** YouTube y las páginas web, gratis. Instagram, Google Maps y algunos anuncios van con Apify, que cobra por resultado: a mí un barrido de Instagram me cuesta menos de 2 dólares, y su plan gratis trae 5 dólares de uso cada mes. Tu agente te dice el costo máximo antes de cada corrida. **Qué necesitas:** un agente que use la terminal de tu computadora (Claude Code, Codex, Gemini CLI u otro parecido), Python 3.10 o más nuevo y, según dónde esté tu competencia, una cuenta de Google Cloud (gratis) o de Apify. **Cómo usarla:** abre tu agente y pégale esto: > Lee completa https://visiumai.com/guias/competencia.md y sigue la guía paso a paso. Te preguntará a qué te dedicas, quiénes son tus competidores y dónde está cada uno. Te mostrará un plan con el costo y esperará tu OK antes de instalar nada. La primera vez toma de 30 a 60 minutos; después, cada reporte, unos minutos. --- ## Para el agente Vas a armar un radar de competencia para la persona con la que trabajas: un proyecto que, una vez por semana, junta lo que publicaron sus competidores donde estén, encuentra lo que les rindió más de lo normal y le entrega un reporte en Markdown. Sigue los pasos en orden. ### Reglas de ejecución 1. **Lee la guía completa antes de empezar.** Si tu herramienta para leer páginas web resume el contenido, descarga el archivo tal cual (por ejemplo, `curl -sL https://visiumai.com/guias/competencia.md`). 2. **Primero el plan.** Después de la entrevista (paso 1), muestra un plan corto: qué fuente usarás para cada competidor, qué vas a instalar, qué cuentas hacen falta y cuánto costará al mes. Espera el OK. 3. **El costo antes de cada corrida.** Toda corrida que cueste dinero (Apify) muestra antes su costo máximo, y la cuenta lleva un límite de gasto. Nunca pases el presupuesto que dio la persona. 4. **Credenciales fuera del chat.** Las llaves y tokens van en un archivo `.env` (en `.gitignore`) o en el gestor de secretos del sistema, y los pone la persona. Nunca los escribas en el chat, en el código ni en un repo. 5. **Solo lo que cualquiera ve sin cuenta, y solo datos de negocio.** Guarda métricas y textos de las publicaciones, anuncios y páginas de los competidores; nada de datos personales (nombres de quien comenta, correos, teléfonos). Las API oficiales se usan con la llave o el token de la persona; fuera de eso, no entres con su cuenta a ninguna plataforma para extraer datos y no te saltes inicios de sesión ni muros de pago. Si los términos de un sitio prohíben la extracción automática, díselo a la persona y que ella decida. 6. **Sin prisa con los sitios.** Una petición a la vez por sitio, con pausas de unos segundos, y guarda en caché lo que ya bajaste para no pedirlo dos veces. 7. **Usa el idioma de la persona** para hablarle y para el reporte. ### Paso 1. Entrevista Haz estas preguntas en un solo mensaje: 1. **¿A qué te dedicas y a quién le vendes?** Una o dos líneas. 2. **¿Quiénes son tus competidores?** De 5 a 15, con su nombre y, si los tienes, sus links. Incluye a los que admiras aunque no compitan directo. 3. **¿Dónde está cada uno?** YouTube, Instagram, TikTok, sitio web, anuncios de Facebook o Instagram, Google Maps, Mercado Libre, Amazon u otro. Si no sabes, búscalo tú (sitio web → enlaces a sus redes) y confírmalo con la persona. 4. **¿Qué quieres saber cada semana?** Por ejemplo: qué temas les pegan, qué anuncios nuevos lanzan, cómo cambian sus precios, qué dicen sus reseñas. 5. **¿Cuánto puedes gastar al mes?** Puede ser 0: entonces solo se usan las fuentes gratis. 6. **¿Dónde quieres los reportes y qué día?** Una carpeta, tu vault de Obsidian, Notion… El lunes es buen día. ### Paso 2. Una herramienta según dónde está la competencia | Dónde está | Herramienta | Costo | Qué se mide | |---|---|---|---| | YouTube | YouTube Data API v3 (oficial) | Gratis | Vistas de cada video contra la mediana de su canal | | Instagram o TikTok | Apify (actores oficiales) | ~2.60 USD por 1,000 Reels | Reproducciones de cada Reel contra la mediana de la cuenta | | Sitio web, landings y precios | Scrapling (open source, BSD-3) | Gratis | Precios, ofertas y páginas nuevas, contra la semana pasada | | Anuncios de Facebook e Instagram | Biblioteca de anuncios de Meta, con Scrapling o el actor oficial de Apify | Gratis, o ~5.80 USD por 1,000 anuncios | Anuncios activos y desde cuándo corren | | Google Maps | Apify (Google Maps Scraper) | ~4 USD por 1,000 lugares | Calificación, reseñas nuevas y de qué se quejan | | Mercado Libre | API oficial de Mercado Libre (con app y token) | Gratis | Precio y publicaciones nuevas de cada vendedor | | Amazon, LinkedIn | Apify | Por resultado | Según el giro | Los precios de Apify son los del plan gratis (octubre de 2026); en los planes de pago bajan. Por qué así: - **Si hay API oficial, va primero** (YouTube, Mercado Libre): es gratis, estable y no rompe términos. - **Instagram, TikTok, LinkedIn y Amazon no se raspan con código propio.** Piden sesión, bloquean por IP y cambian sin aviso; el mantenimiento sería tuyo y arriesgas la cuenta de la persona. Ahí va Apify, que se encarga de eso. - **Las páginas web y la Biblioteca de anuncios de Meta van con Scrapling.** La API oficial de anuncios de Meta, fuera de la Unión Europea, solo devuelve anuncios de temas sociales, electorales o políticos; para anuncios comerciales hay que leer la biblioteca pública (no pide cuenta) como lo haría una persona, o usar el actor oficial de Apify. ### Paso 3. El proyecto Crea una carpeta `radar-competencia/` (o donde diga la persona) con esta forma: ``` radar-competencia/ competidores.json quién es cada competidor y dónde está (lo editas con la persona) .env llaves y tokens (en .gitignore) fuentes/ un script por fuente: youtube.py, apify.py, web.py, mercadolibre.py datos/AAAA-MM-DD/ lo que bajó cada corrida, tal cual (JSON) reportes/ un reporte por semana (AAAA-MM-DD.md) radar.py corre las fuentes de competidores.json y arma el reporte ``` `competidores.json` lleva una entrada por competidor y una línea por cada lugar donde está: ```json [ { "nombre": "Competidor A", "youtube": "@competidora", "instagram": "competidora", "web": ["https://competidora.com/precios"], "anuncios_meta": "Competidor A" }, { "nombre": "Competidor B", "google_maps": "https://maps.app.goo.gl/...", "mercadolibre": "NOMBRE_DEL_VENDEDOR" } ] ``` Usa un entorno virtual de Python (`python -m venv .venv`) y anota las dependencias en `requirements.txt`. ### Paso 4. Instalación por fuente Instala solo las fuentes que salieron en la entrevista. **4.1 YouTube (gratis).** La persona crea una llave en Google Cloud Console: proyecto nuevo → habilitar "YouTube Data API v3" → Credenciales → Crear credencial → Clave de API → restringirla a esa API. Va en `.env` como `YOUTUBE_API_KEY`. La cuota es de 10,000 unidades al día. Gástala así: - `channels.list` con `forHandle=@canal` (1 unidad) → el id de la lista de "uploads" del canal. - `playlistItems.list` de esa lista (1 unidad por cada 50 videos) → los últimos 50 videos. - `videos.list` con hasta 50 ids a la vez (1 unidad) → vistas, duración y fecha de cada uno. - **No hace falta `search.list` (la búsqueda):** ya sabes qué canales revisar, y la búsqueda tiene su propio límite de 100 llamadas al día. Guárdala para buscar competidores nuevos. Con 15 canales, una corrida gasta menos de 50 unidades. Separa videos largos y shorts (los shorts duran 3 minutos o menos) y mídelos aparte: tienen medianas muy distintas. **4.2 Apify (Instagram, TikTok, Google Maps, Amazon).** 1. La persona crea su cuenta en apify.com. El plan gratis trae 5 dólares de uso al mes; si se acaban, la cuenta se pausa hasta el siguiente ciclo. 2. Su token está en la consola, en Settings → API & Integrations. Va en `.env` como `APIFY_TOKEN`. 3. **Límite de gasto mensual:** en la consola, Billing → Limits → Custom usage limit → Edit limit. Ponlo en el presupuesto que dio la persona. 4. **Usa actores oficiales** (los que empiezan con `apify/`) cuando existan; los de terceros se rompen más seguido: | Fuente | Actor | Costo aproximado (plan gratis) | |---|---|---| | Reels de cuentas de Instagram | `apify/instagram-reel-scraper` | 2.60 USD por 1,000 Reels | | Perfiles y publicaciones de Instagram | `apify/instagram-scraper` | 2.70 USD por 1,000 resultados | | Biblioteca de anuncios de Meta | `apify/facebook-ads-scraper` | 5.80 USD por 1,000 anuncios | | Google Maps | `compass/crawler-google-places` (Google Maps Scraper) | 4 USD por 1,000 lugares; las reseñas se cobran aparte | | TikTok, Amazon u otra | El actor de Apify Store con más usuarios y actualizado hace poco; enséñaselo a la persona antes de usarlo | Según el actor | 5. **Llámalos por la API** con un tope de gasto por corrida (`maxTotalChargeUsd`): ```bash curl -s -X POST "https://api.apify.com/v2/acts/apify~instagram-reel-scraper/run-sync-get-dataset-items?maxTotalChargeUsd=0.50" \ -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \ -d @entrada.json > datos/AAAA-MM-DD/instagram.json ``` Los campos de `entrada.json` cambian por actor: léelos en la pestaña Input de su página antes de armarla. 6. **Pide poco:** 15 publicaciones por cuenta alcanzan para la mediana (paso 5). Con 20 cuentas son 300 Reels, unos 0.80 USD por corrida. Muestra la cuenta antes de correr (regla 3). **4.3 Scrapling (páginas web y Biblioteca de anuncios de Meta).** Requiere Python 3.10 o más nuevo y la versión 0.5 o más nueva. Si conoces ejemplos con `DynamicFetcher` o `capture_xhr`, son de antes de la 0.5: ya no existen. ```bash pip install "scrapling[fetchers]" # el parser y los fetchers scrapling install # baja los navegadores (una sola vez) pip install "scrapling[rag]" # para convertir páginas a Markdown ``` - **Páginas que no necesitan JavaScript** (precios, catálogo, blog): `Fetcher`, que es rápido y no abre navegador. Guarda cada página como Markdown y compárala con la de la semana pasada: ```python from scrapling.fetchers import Fetcher page = Fetcher.get("https://competidor.com/precios") texto = page.markdown(main_content_only=True) ``` - **Páginas con JavaScript o con protección contra bots** (Cloudflare): `StealthyFetcher.fetch(url)`, que abre un navegador real. Es más lento; úsalo solo donde `Fetcher` no alcance. - **Biblioteca de anuncios de Meta, sin cuenta:** abre la búsqueda en un navegador de Scrapling y guarda lo que la página recibe de su propia API (`/api/graphql/`). Ahí vienen los anuncios con su texto, su página y su fecha de inicio: ```python from urllib.parse import quote from scrapling.fetchers import StealthySession url = ("https://www.facebook.com/ads/library/?active_status=active&ad_type=all" f"&country=MX&search_type=keyword_unordered&q={quote('curso de nutrición')}") with StealthySession(headless=True, record_requests=True) as session: page = session.fetch(url, network_idle=True) respuestas = session.network.search(url_pattern=r"/api/graphql/", limit=None) tandas = [r.json() for r in respuestas] ``` La primera tanda de anuncios suele venir dentro del HTML de la página (`page`), y las siguientes llegan al bajar. Busca con frases exactas o con el nombre de la página del competidor, y elige el país. Si necesitas cientos de anuncios o la captura no trae nada, usa `apify/facebook-ads-scraper`. **4.4 Mercado Libre.** La API oficial es gratis, pero desde 2025 pide token: sin él responde 403. 1. La persona crea una aplicación en el DevCenter de Mercado Libre (developers.mercadolibre.com.mx → Crear nueva aplicación; en México pide validar antes los datos del titular de la cuenta). Obtiene un Client Id y una Secret Key y registra una URL de redirección con HTTPS. 2. Con el flujo OAuth (Authorization Code) obtienes el access token y el refresh token. Van en `.env`; el access token vence, así que renuévalo con el refresh token antes de cada corrida. 3. Publicaciones de un vendedor competidor: ```bash curl -s "https://api.mercadolibre.com/sites/MLM/search?nickname=NOMBRE_DEL_VENDEDOR" \ -H "Authorization: Bearer $ML_ACCESS_TOKEN" ``` `MLM` es México; cambia el sitio según el país (`MLA` Argentina, `MCO` Colombia, `MLC` Chile, `MPE` Perú). 4. Si responde 403 aun con token (hay reportes de que pasa), díselo a la persona y lee la página pública de la tienda del vendedor con Scrapling, o busca un actor de Mercado Libre en Apify. ### Paso 5. El método: lo que rindió más de lo normal Para YouTube, Instagram y TikTok, mide cada publicación contra **su propia cuenta**, no contra las demás: 1. **Base de cada cuenta:** la mediana de vistas de sus publicaciones **maduras** entre las últimas 50 en YouTube (gratis) o las últimas 15 en Instagram y TikTok (cada una cuesta). Maduro: 7 días o más en YouTube; 3 días o más en Instagram y TikTok, que juntan casi todo en las primeras 72 horas. Usa la mediana, no el promedio: un solo video viral infla el promedio. 2. **Ratio:** vistas de la publicación ÷ mediana de su cuenta. 3. **Lo reciente se mide por velocidad:** si todavía no madura, compara sus vistas por día contra la mediana de vistas por día de la cuenta. Si no, lo nuevo siempre parecería malo. 4. **Marca como "rindió más de lo normal"** lo que tenga ratio de 2 o más **y** al menos 3,000 vistas (ajusta el piso con la persona si su nicho es chico): un 8× sobre una mediana de 50 vistas es ruido. 5. **Base débil:** si una cuenta tiene menos de 4 publicaciones maduras o su mediana es menor a 200, no marques nada de ella; repórtala aparte. Para lo demás, compara contra la corrida anterior: - **Anuncios:** un anuncio que lleva **30 días o más activo** probablemente vende (nadie paga un mes por un anuncio que no convierte). Los anuncios nuevos de la semana dicen qué está probando. - **Páginas web:** precios, ofertas, productos o páginas que cambiaron desde la semana pasada. - **Google Maps:** reseñas nuevas, cambio de calificación y de qué se queja la gente. - **Mercado Libre:** precio, unidades vendidas y publicaciones nuevas. ### Paso 6. El reporte de cada semana `radar.py` corre las fuentes, guarda lo crudo en `datos/AAAA-MM-DD/` y calcula los ratios. Tú lees esos datos y escribes `reportes/AAAA-MM-DD.md` con esta forma: 1. **En 3 líneas:** lo más importante de la semana. 2. **Lo que rindió más de lo normal:** tabla con competidor, publicación (título y link), ratio, tema y gancho (la primera frase o el título que lo vendió). 3. **Temas que se repiten:** lo que aparece en dos o más competidores a la vez. Es la señal más fuerte. 4. **Movimientos:** anuncios nuevos o que ya llevan 30+ días, cambios de precio, reseñas. 5. **Ideas para ti:** de 3 a 5, cada una con el dato que la respalda. Copia el tema y el ángulo, nunca la pieza. 6. **Costo de la corrida** y lo que falló, si algo falló. La primera corrida hazla con la persona y ajusta el reporte a lo que le sirve. ### Paso 7. Que corra cada semana - **Guarda el proceso como comando o skill de tu agente** (por ejemplo, `/radar`): "corre `radar.py`, lee los datos de hoy y escribe el reporte con la forma del paso 6". Así la persona solo te dice "corre el radar". - **Recordatorio:** propón una tarea programada del sistema (cron en macOS y Linux, Programador de tareas en Windows) que corra solo la parte gratis (`radar.py --solo-gratis`) el día que eligió, o un recordatorio en su calendario. Las corridas con costo (Apify) se lanzan con la persona presente, salvo que ella pida lo contrario. - **Cada mes,** revisa con ella la lista de competidores: quién entra, quién sale y qué fuentes no sirvieron. ### Si algo falla - **YouTube responde `quotaExceeded`:** se gastaron las 10,000 unidades del día o las 100 búsquedas. La cuota se reinicia a medianoche, hora del Pacífico. - **Un handle de YouTube trae otro canal:** pide a la persona el id del canal (empieza con `UC`) y úsalo en lugar del handle. - **Apify falla o devuelve vacío:** revisa el registro de la corrida en la consola de Apify; un perfil privado o un nombre mal escrito devuelven cero resultados y también cobran el arranque. - **Una página bloquea (error 403, captcha o "verifica que eres humano"):** usa `StealthyFetcher` (con `solve_cloudflare=True` si es Cloudflare, y un timeout de 60 s o más). Si ni así pasa (protecciones como Akamai o DataDome), esa fuente va con Apify o se deja fuera; no insistas en bucle. - **`ModuleNotFoundError` al importar `scrapling.fetchers`:** se instaló solo el parser. Corre `pip install "scrapling[fetchers]"` y `scrapling install`. - **La Biblioteca de anuncios trae ruido:** busca con frases exactas ("curso de X", el nombre exacto de la página) y filtra por país. --- ## Para ti: cómo sacarle provecho - **Copia el tema, no el video.** Lo que rindió más de lo normal te dice de qué quiere saber la gente; la forma de contarlo es tuya. - **Fíjate en lo que se repite.** Un tema que le funciona a tres competidores la misma semana es más confiable que el viral de uno solo. - **Lo que no rinde también enseña.** Si un competidor grande publica algo y le va peor que de costumbre, ese ángulo probablemente no le interesa a tu público. - **Empieza chico.** Con 5 competidores y una sola fuente ya tienes reporte. Agrega fuentes cuando veas que lo usas. --- Guía de **Jaime Herrera**, VisiumAI (visiumai.com). Publico sobre automatización con IA en YouTube (youtube.com/@jaime_herrerag) e Instagram (@jaimeherrera.ia).
Consultoría de 30 minutos, gratis
¿Prefieres que lo armemos en tu negocio?
Las guías son para hacerlo tú. Si quieres un sistema así trabajando en tu operación, agenda una llamada de 30 minutos: revisamos tu caso y te decimos por dónde empezar.
¿No ves el calendario? Ábrelo en otra pestaña.
