| Résumé | Soumet automatiquement les URL des sujets publics lors de leur création, modification, suppression et des réponses au protocole IndexNow afin que Bing, Yandex et d’autres moteurs de recherche compatibles puissent découvrir ou retirer votre contenu en quelques minutes, sans attendre les robots d’indexation. | |
| Dépôt | github.com/imlotso/discourse-indexnow | |
| Guide d’installation | Comment installer des plugins dans Discourse |
Un article en chinois avec plus de contexte est également disponible sur mon forum : sitetalk.net/t/topic/642
Fonctionnalités
- Soumission automatique des nouveaux sujets publics ; resoumission lorsque le premier message ou les attributs critiques du sujet changent.
- Soumission lors d’une réponse : Soumet automatiquement l’URL paginée (par ex.
?page=3) lorsque de nouvelles réponses sont publiées, avec un temps de refroidissement (cooldown) par URL configurable pour éviter les abus. - Soumission automatique des URL des sujets lors de leur suppression pour aider les moteurs de recherche à détecter les erreurs 404/410 et à les retirer rapidement.
- Regroupe automatiquement les URL des sujets localisés lorsque la Localisation du contenu et les paramètres de requête de localisation des robots sont actifs. Utilise le paramètre de localisation réellement configuré, et non une valeur codée en dur.
- Regroupe les URL canoniques et localisées dans des requêtes de lot
urlListIndexNow uniques au lieu de les envoyer une par une. - Rétroremplissage historique : Filtrez par catégorie et plage de dates, prévisualisez le nombre de correspondances et soumettez en masse. Découpage automatique des lots dépassant la limite de protocole de 10 000. Les tâches actives peuvent être annulées depuis l’onglet Journaux.
- Soumission manuelle : Soumettez des URL personnalisées à la demande, ligne par ligne ; les liens externes ou non éligibles sont filtrés automatiquement.
- Limitation de débit intelligente : Applique des limites horaires et quotidiennes à l’aide d’un algorithme de fenêtre glissante fine. Repli automatique en cas d’erreur
429(respect deRetry-After). L’interface d’administration comporte des Barres de quota visuelles affichant l’utilisation actuelle et le temps exact avant libération de la capacité. - Excluez des catégories spécifiques et des étiquettes en tant que règles de couche métier en plus des filtres de confidentialité automatisés.
- Rotation des clés avec une boîte de dialogue de confirmation en cas de surcharge accidentelle ; les clés précédentes sont invalidées immédiatement.
- Vérification par l’administrateur de l’accessibilité publique de
/<key>.txt. - Les déplacements de sujets, les changements de visibilité des catégories et les mises à jour des étiquettes déclenchent une resoumission asynchrone ou une exclusion en éventail dans des tâches en arrière-plan pour éviter de bloquer l’interface utilisateur.
- Entrées de journal détaillées avec des ID de lot, la localisation, les raisons de déclenchement, des graphiques de tendance sur 7 jours (succès/échec) et des raisons d’échec catégorisées (Limitation de débit, Erreur de clé, Inadéquation du domaine).
- Soumissions entièrement asynchrones respectant les limites de confidentialité : les messages privés, les catégories restreintes, les sujets non listés/supprimés et les sites nécessitant une connexion ne sont jamais soumis.
- Disponible en anglais et en chinois simplifié.
Étapes de configuration
- Installez le plugin en suivant le guide ci-dessus et reconstruisez votre conteneur.
- Allez dans Administration > Plugins > discourse-indexnow.
- Sous Paramètres, cliquez sur Générer une clé (ou collez une clé hexadécimale existante de 32 caractères).
- Cochez Activer les soumissions IndexNow.
- Vérifiez l’accessibilité publique de la clé :
https://votre-domaine-de-forum.com/<key>.txt
Doit retourner HTTP 200 avec la chaîne de la clé. Le panneau d’administration affiche également un indicateur vert/rouge mis en cache.
6. (Facultatif) Dans l’onglet Journaux, utilisez le panneau « Rétroremplissage » : sélectionnez les critères, cliquez sur Aperçu, puis sur Soumettre.
7. (Facultatif) Utilisez la boîte de soumission manuelle pour soumettre des URL individuelles en dehors du flux automatisé.
La page Journaux comporte également des barres d’utilisation du quota, un graphique de tendance sur 7 jours et des métriques de répartition des échecs pour diagnostiquer facilement les problèmes de soumission.
Paramètres de configuration
| Paramètre | Description |
|---|---|
indexnow_enabled |
Interrupteur principal. Désactivé automatiquement si login_required est activé. |
indexnow_api_key |
La clé hexadécimale de 32 caractères pour la vérification de la soumission. |
indexnow_submit_on_create |
Soumission automatique lors de la création d’un nouveau sujet public. |
indexnow_submit_on_edit |
Resoumission automatique lorsque le premier message ou les attributs du sujet changent. |
indexnow_submit_on_reply |
Soumission automatique de l’URL paginée spécifique lorsque de nouvelles réponses sont publiées. |
indexnow_url_cooldown_minutes |
Période de refroidissement par URL (en minutes) pour empêcher les soumissions en double. |
indexnow_excluded_category_ids |
Catégories à exclure même si elles sont publiques. |
indexnow_excluded_tag_names |
Étiquettes à exclure même si la catégorie du sujet est éligible. |
indexnow_hourly_limit |
Nombre maximal d’URL à soumettre par heure (fenêtre glissante). |
indexnow_daily_limit |
Nombre maximal d’URL à soumettre par jour (fenêtre glissante). |
Limitations connues
- Google ne participe actuellement pas au protocole IndexNow.
- Les URL localisées ne sont soumises que si les paramètres de localisation des robots sont actifs et que du contenu localisé existe.
- Actuellement, les modifications du premier message et la pagination des nouvelles réponses sont prises en charge, mais les modifications des réponses intermédiaires ne déclenchent pas de soumission de manière indépendante.
Ceci est un plugin indépendant et non officiel — il n’est pas maintenu par l’équipe Discourse. Il fonctionne en production sur mon propre forum, dispose d’une couverture de tests RSpec avec CI à chaque poussée/demande de tirage, et je serais reconnaissant pour tout rapport de bug ou demande de fonctionnalité via les problèmes GitHub ou les réponses ici.
