Surveiller l’aspect visuel d’une page
Certaines modifications ne se voient pas dans le texte : une bannière, une image, une mise en page qui bouge. KIT prend une capture de la page à intervalles réguliers, la compare à la précédente et signale les différences visuelles. La fonction est en bêta et affine sa détection selon les pages surveillées.
Le texte ne suffit pas toujours
Une surveillance de contenu compare le texte ; elle ne voit pas qu’une image a changé, qu’une bannière est apparue ou qu’un bloc s’est déplacé. La surveillance visuelle comble ce manque : elle raisonne sur le rendu de la page, tel qu’un visiteur le voit. Les deux approches se complètent selon que vous suivez des mots ou une apparence. Sur une page très visuelle, la seconde repère ce qu’une lecture du texte laisserait passer.
Comparaison de captures
À chaque passage, KIT rend la page et en prend une capture, qu’il compare pixel à pixel à la précédente. Un seuil de tolérance évite les fausses alertes dues aux micro-variations (contenu qui charge, léger décalage). Au-delà de ce seuil, la différence est signalée, avec l’endroit de la page où elle se situe, pour juger d’un coup d’œil. Vous voyez ainsi non seulement qu’un changement a eu lieu, mais aussi où il se situe sur la page.
Bêta et tarif
La fonction est en bêta : la détection s’améliore, et un réglage de seuil trop strict peut encore générer du bruit sur des pages très animées. Elle s’appuie sur un rendu complet, facturé $0.040 par vérification, plus $0.001 par contrôle, sans abonnement. Vous ne payez que les vérifications réellement effectuées. Le suivi s’installe depuis le web ou par API, et l’alerte part par e-mail ou vers un webhook branché sur vos outils.
Cas d’usage
Surveiller la page d’accueil d’un concurrent
Studio Lumen SAS est alerté quand un concurrent refond visuellement sa page d’accueil ou lance une nouvelle campagne, changement invisible pour une veille textuelle.
Vérifier l’affichage de sa propre page
Après une mise à jour, une régression visuelle — élément décalé, image cassée — est repérée avant que les visiteurs ne la remarquent.
Guetter une bannière promotionnelle
L’apparition d’un bandeau de promotion sur une page suivie déclenche l’alerte, même si le texte principal n’a pas changé.
Questions fréquentes
Quelle différence avec la surveillance de contenu ?
La surveillance de contenu compare le texte ; la surveillance visuelle compare l’apparence. Un changement d’image ou de mise en page n’est détecté que par la seconde.
Comment éviter les fausses alertes ?
Un seuil de tolérance filtre les micro-variations. En l’ajustant, vous ne recevez d’alerte qu’au-delà d’un changement visuel significatif.
La fonction est-elle stable ?
Elle est en bêta : la détection donne de bons résultats mais peut encore générer du bruit sur des pages très animées. Nous préférons vous le dire clairement.
Combien coûte une vérification visuelle ?
$0.040 par vérification, plus $0.001 par contrôle, sans abonnement. Vous ne payez que les contrôles effectués.
Les captures sont-elles conservées ?
Une capture est gardée le temps de la comparer à la suivante, condition de la détection. Elle n’est pas utilisée à d’autres fins.
Faut-il un compte ?
Non, aucune inscription n’est nécessaire.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/web/monitor-visual \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/web/monitor-visual", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/monitor-visual",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/monitor-visual", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/monitor-visual", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"input": "…"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.monitor_visual",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
timeout_sec | 30 |
max_crawl_pages | 25 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
422 | task_failed | La tâche a échoué : elle ne vous est pas facturée. |