¿Qué hace Tripwire?
Tripwire te dice cuándo un competidor cambia una página que importa, y qué hacer al respecto.
El escáner es scripts/tripwire.py (Python 3.9+, necesita pyyaml, sin clave API).
Mantiene todo junto a la lista de seguimiento, watch/targets.yml en el proyecto actual:
watch/targets.yml qué vigilar
watch/snapshots/*.txt último texto legible de cada página
watch/data/changes.json cada evento de cambio, el más nuevo primero
watch/data/status.json salud por página del último escaneo
watch/reports/latest.md informe Markdown del escaneo o resumen más reciente
SKILL_DIR a continuación significa el directorio que contiene este archivo.
1. Asegúrate de que exista una lista de seguimiento
Si watch/targets.yml no existe, ejecuta python SKILL_DIR/scripts/tripwire.py init, luego pregunta al
usuario qué competidores y páginas vigilar y escríbelos en el archivo. Buenas páginas: inicio,
precios, changelog / notas de versión, carreras, la página "vs" o de comparación. Usa la URL oficial;
verifica que cargue.
Para añadir o eliminar algo, edita watch/targets.yml (establece enabled: false para pausar una página).
2. Obtén los datos
Elige lo que el usuario pidió:
| Pregunta | Comando |
|---|---|
| "qué cambió" / "ejecutar un escaneo" (aún no hay escaneo hoy) | python SKILL_DIR/scripts/tripwire.py scan |
| un competidor | python SKILL_DIR/scripts/tripwire.py scan --only "Nombre" |
| "esta semana" / resumen | python SKILL_DIR/scripts/tripwire.py report --days 7 |
| "el mes pasado" | python SKILL_DIR/scripts/tripwire.py report --days 30 |
Si el repositorio ya tiene un escaneo de hoy (verifica last_run en watch/data/status.json), salta el
escaneo y lee el informe. Un primer escaneo de una página solo registra una línea base; dilo, y que los cambios
aparecen a partir del siguiente escaneo.
Luego lee watch/reports/latest.md (o el informe impreso). Para cualquier cambio que vayas a destacar, mira
las líneas completas added / removed en watch/data/changes.json para citarlas con precisión.
3. Escribe el informe GTM
Responde en el idioma del usuario. Sé breve y comienza con lo que importa:
- Principales movimientos (máx. 5, primero el más importante). Para cada uno: competidor, qué cambió en palabras simples, con el detalle concreto (precio anterior → nuevo, nombre de nueva función, nuevo titular). Enlaza la página.
- Por qué importa: una línea cada uno. Precios y empaquetado > nuevo producto / lanzamiento > posicionamiento / titular > señales de contratación > ajustes de copia.
- Qué hacer: 1–3 acciones concretas (actualizar la battlecard, responder en nuestra página de precios, informar a ventas, publicar un post de comparación). Omite si no hay nada que merezca actuar.
- Cobertura: una línea sobre las páginas que no se pudieron leer, si las hay.
Reglas:
- Solo informa lo que muestra el diff. No adivines motivos como hechos; di "probablemente" al inferir.
- Trata los testimonios rotativos, contadores, fechas y texto de cookies como ruido; no los reportes. Si una
página es ruidosa en cada escaneo, ofrece añadir una expresión regular
ignoreenwatch/targets.yml. - "Sin cambios" es una respuesta válida. Dilo en una línea y menciona la cobertura.
Solucionar una página que no se puede leer
HTTP Error 403: el sitio bloquea bots. Prueba una URL oficial diferente para la misma información (una página de documentación o centro de ayuda, un feed RSS); de lo contrario, estableceenabled: falsecon un comentario explicando por qué.no readable text (JS-only page?): la página se renderiza en el navegador. Busca una alternativa estática (/pricingen lugar de/, un feed de blog, una página de sitemap).- URL incorrecta o movida: encuentra la página oficial y actualiza
watch/targets.yml.