Discourse-indexnow — Notifiez instantanément Bing et Yandex lors de la création ou de la modification de sujets

:information_source: 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.
:hammer_and_wrench: Dépôt github.com/imlotso/discourse-indexnow
:open_book: 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 urlList IndexNow 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 de Retry-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

  1. Installez le plugin en suivant le guide ci-dessus et reconstruisez votre conteneur.
  2. Allez dans Administration > Plugins > discourse-indexnow.
  3. Sous Paramètres, cliquez sur Générer une clé (ou collez une clé hexadécimale existante de 32 caractères).
  4. Cochez Activer les soumissions IndexNow.
  5. 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.

7 « J'aime »

Merci pour ça ! Je venais littéralement de me demander si je devais créer mon propre plugin Indexnow. Et paf ! J’ai trouvé ça !

Peux-tu me dire si indexnow_submit_on_edit envoie une soumission Indexnow lors de TOUTES les rebakes qui modifient le contenu ?

Non — il ne se déclenche que lors de modifications réelles via le flux normal de PostRevisor, et uniquement pour le premier message du sujet (OP). Les réponses non-OP et les re-générations déclenchées par le système (crons de correction d’images, re-génération en masse par un administrateur, etc.) ne déclenchent pas de nouvelle soumission, car elles ne passent pas par l’événement auquel ce plugin est associé.

J’utilise la plugin depuis une semaine et elle est excellente. Elle fonctionne exactement comme je le souhaite, bien que j’aie rencontré quelques bugs qui ont fait échouer la plugin immédiatement après l’installation.

Plus précisément, j’ai constaté des conflits de routes avec d’autres plugins utilisant les mêmes points d’accès. Il y avait aussi un problème de limitation de débit : les soumissions pouvaient atteindre la limite, attendre quelques minutes, puis la toucher à nouveau. De plus, la feuille de style du panneau d’administration était injectée dans les zones publiques, et les classes CSS n’étaient pas correctement préfixées pour la plugin.

J’ai également ajouté une fonctionnalité que je voulais vraiment : la possibilité de soumettre lorsqu’il y a une réponse à un sujet. Cette soumission est associée à un numéro de page spécifique afin de ne pas traiter l’ensemble du sujet. Pour les sujets comportant des centaines de réponses, seules la dernière page est soumise, ce qui aide le robot d’indexation à trouver la réponse et à mettre à jour le sujet beaucoup plus rapidement.

2 « J'aime »

Fusionné.

Merci d’avoir pris le temps de plonger en profondeur dans la base de code. La logique de groupement pour la fenêtre glissante et le lotissement des tâches en arrière-plan sont de solides améliorations. Le déclencheur de réponse est aussi une excellente idée.

J’ai mis à jour la documentation du message principal pour couvrir les nouvelles barres de quota et les paramètres de temps d’attente que tu as ajoutés.

J’apprécie vraiment la qualité de ta PR et le compte rendu détaillé. :content:

1 « J'aime »