watch-changes · v0.1.0 · 2026-10-28 · sha256 5581f34d59132b10
watch-changes v0.1.0A
Immutable. This exact content never changes and is served at /api/v1/blob/5581f34d59132b10.
---
name: watch-changes
description: >-
Met en place et exploite une veille de changements de pages et de flux, en local : changedetection.io
(Apache-2.0, sélecteurs CSS/XPath/jq, notifications Apprise) pour surveiller des pages, RSSHub
(AGPL-3.0) pour transformer des sites sans flux en RSS, puis route chaque changement détecté vers un
fichier de veille daté ou un message sur le bus des agents. À utiliser quand l'utilisateur veut
« être prévenu quand cette page change », « surveiller les nouveautés d'un site », « générer un
flux RSS pour un site qui n'en a pas », « brancher une veille sur le digest », « configurer
changedetection », « quelle route RSSHub pour ce site », ou quand un changement a été détecté et
qu'il faut le consigner. Ne pas utiliser pour extraire des données structurées d'une page →
scrape-adaptive, ni pour surveiller l'état d'un service ou d'un timer (observabilité).
license: MIT
allowed-tools: Read, Write, Grep, Glob, Bash(python3:*), Bash(docker:*), WebFetch
metadata:
version: "0.1.0"
author: GeekFamilyCorp
status: public
plugin: tk-knowledge
compatibility: Docker local (conteneurs changedetection.io et RSSHub, en 127.0.0.1) ; Playwright/sockpuppetbrowser optionnel pour les pages JS ; dossier de veille versionné et bus des agents (fichiers) pour la sortie.
---
# watch-changes — Savoir qu'une page a changé, et en faire quelque chose
Une veille a deux moitiés : **détecter** (l'outil regarde à notre place) et **consigner** (le
changement devient une entrée datée que quelqu'un — humain ou agent — lira). Beaucoup de veilles
meurent parce que la seconde moitié manque : l'outil notifie dans le vide. Ce skill couvre les deux.
## 1. Choisir l'outil
| Besoin | Outil | Pourquoi |
|---|---|---|
| Une page précise change (prix, date, liste) | **changedetection.io** | diff ciblé par sélecteur, historique, notifications |
| Un site publie régulièrement sans flux RSS | **RSSHub** | route → flux RSS lisible par tout lecteur ou par changedetection |
| Un site a déjà un flux RSS/Atom | ni l'un ni l'autre : lire le flux directement | moins de pièces mobiles |
| Il faut des champs structurés (rang, version…) | → `scrape-adaptive` | la veille dit « ça a bougé », pas « voici les données » |
Vérifier d'abord l'existence d'un flux natif (`<link rel="alternate" type="application/rss+xml">`,
`/feed`, `/rss`) : c'est le cas le plus fréquent et le plus stable.
## 2. Installer (une fois)
Les deux outils tournent en conteneurs locaux, ports liés à `127.0.0.1` uniquement — rien
n'est exposé au LAN. Compose générique, variables, sélecteurs, notifications :
`references/changedetection.md` ; routes utiles et déploiement : `references/rsshub.md`.
Toute installation ou modification de conteneur est **proposée** avant d'être exécutée (R53) :
un `docker compose up` ne casse rien en général, mais un port déjà pris ou un volume mal nommé se
règle avant, pas après.
## 3. Configurer une surveillance qui tient
1. **Sélecteur étroit** : surveiller le bloc utile (`.liste-nouveautes`), pas la page entière —
sinon chaque bannière déclenche une fausse alerte.
2. **Filtres** : ignorer dates du jour, compteurs, publicités (texte à ignorer, regex).
3. **Fréquence** honnête : une page hebdomadaire se vérifie une fois par jour, pas toutes les 5 min.
La veille est un client comme un autre : User-Agent nommé, `robots.txt` respecté (R74).
4. **Notification Apprise** vers un point que le pipeline sait lire : un webhook local, un
fichier, un e-mail dédié — pas une messagerie personnelle qu'on ne relira pas.
5. **Étiquette** (tag) par thème pour retrouver les surveillances d'un même domaine.
## 4. Quand un changement est détecté → consigner
Un changement produit **une entrée**, jamais deux fois la même (dédoublonner par hash du diff) :
1. Créer `claude/veilles/<slug>/<AAAA-MM-JJ>_<slug>_<hash8>.md` avec : source (URL), détectée le
(ISO 8601), sélecteur, **diff** (extrait borné, ~40 lignes), lien vers l'historique
changedetection, statut `a_qualifier`.
2. Ajouter une ligne au `JOURNAL_<slug>.md` du même dossier (date · résumé en une ligne · lien).
3. Si le bus des agents est en place : déposer un message `canal_agents` du type
`{"event":"veille_changement","slug":…,"fichier":…,"hash":…}` — un message par changement,
posté après le fichier, jamais avant (R55 : garde séquentielle).
4. Qualifier ensuite, à la main ou par un agent : `pertinent` / `bruit` / `a_collecter`
(→ `scrape-adaptive` si des données structurées sont à extraire).
Ce qui est consigné est ce qui existe (R79) ; une notification lue puis oubliée n'existe pas.
## 5. Entretien
- Chaque mois : lister les surveillances sans changement depuis 90 jours (la page est morte ou le
sélecteur l'est) et celles qui déclenchent tous les jours (sélecteur trop large).
- Sauvegarder le volume `datastore` de changedetection avec les autres états (NO-DROP).
- Une route RSSHub qui casse est un signal, pas une panne à cacher : consigner, chercher le flux
natif, sinon basculer vers une surveillance changedetection de la page.
## Changelog
- **2026-09-07 — 0.1.0** : version initiale. changedetection.io + RSSHub, choix d'outil, réglages
anti-bruit, procédure de consignation fichier de veille + bus.