🏆 Plugin Discourse Rich JSON-LD Microdata

Discourse Rich JSON-LD Microdata

:sparkles: Résumé Améliore les balises méta standard de Discourse avec un ensemble complet et coordonné de balises Open Graph, de cartes Twitter et de balises JSON-LD Schema.org, offrant des performances SEO supérieures, une expérience de partage sur les réseaux sociaux enrichie et une meilleure découvrabilité par les IA et les LLM
:hammer_and_wrench: Lien vers le dĂ©pĂŽt GitHub - kaktaknet/discourse-rich-json-ld-microdata: 🏆 Discourse Rich JSON-LD Microdata Plugin. Comprehensive, coordinated Open Graph and Schema.org JSON-LD microdata for 200% SEO and LLM coverage · GitHub
:open_book: Guide d’installation Comment installer des plugins dans Discourse

Ce que vous obtenez

Transformez l’apparence de votre forum dans les rĂ©sultats de recherche, sur les rĂ©seaux sociaux et auprĂšs des assistants intelligents. Ce plugin gĂ©nĂšre des donnĂ©es structurĂ©es de qualitĂ© professionnelle parfaitement comprises par Google, Yandex, les plateformes sociales et les grands modĂšles de langage (LLM).

Pour une documentation détaillée, consultez README.md

Pour les détails techniques et le développement, consultez CONTRIBUTING.md

Pour des exemples d’utilisation et le dĂ©pannage, consultez USAGE.md

Exemples de résultats de recherche enrichis

Avant : Extrait de texte brut dans Google
AprÚs : Extrait enrichi avec notes, nombre de réponses, auteur et date de publication

Avant : Aperçu de lien générique sur les réseaux sociaux
AprÚs : Carte accrocheuse avec image, description et identité visuelle

En savoir plus sur les RĂ©sultats enrichis du Centre d’aide Google Recherche

Fonctionnalités clés

1. Couverture complĂšte de Schema.org

  • SchĂ©ma QAPage pour les sujets avec hiĂ©rarchie complĂšte Q&R
  • Prise en charge des notes de rĂ©ponse et du statut rĂ©solu
  • CollectionPage pour les catĂ©gories avec sous-catĂ©gories
  • ProfilePage pour les profils utilisateurs avec indicateurs d’expertise
  • BreadcrumbList pour les chemins de navigation
  • SchĂ©ma global WebSite avec action de recherche

2. Balises réseaux sociaux coordonnées

  • Open Graph (Facebook, LinkedIn, Discord)
  • Cartes Twitter (summary_large_image)
  • Tout gĂ©nĂ©rĂ© Ă  partir d’une source unique de vĂ©ritĂ© – pas de conflits
  • Nettoyage automatique des balises par dĂ©faut de Discourse

3. OptimisĂ© pour l’IA et les LLM

  • Relations d’entitĂ©s complĂštes utilisant les rĂ©fĂ©rences @id de Schema.org
  • ComprĂ©hension complĂšte du contexte (sujets → catĂ©gories → rĂ©ponses → commentaires)
  • MĂ©tadonnĂ©es d’expertise de l’auteur
  • ChatGPT, Claude et autres assistants IA obtiennent un contexte parfait

4. Internationalisation complĂšte :globe_showing_europe_africa:

  • Traductions 100 % en anglais et en russe incluses
  • DĂ©tection automatique de la langue (utilisateur → site → navigateur → secours)
  • Toutes les descriptions Schema.org localisĂ©es
  • Ajout facile de nouvelles langues

5. Performance intelligente

  • Mise en cache Redis avec TTL de 1 heure (configurable)
  • Invalidation automatique du cache lors des modifications de contenu
  • < 5 ms pour les pages mises en cache
  • ~50 ms pour la gĂ©nĂ©ration fraĂźche

6. Zéro maintenance

  • Injection automatique pour les vues navigateur et crawler
  • Fonctionne pour les sujets, les catĂ©gories et les profils utilisateurs
  • Gestion Ă©lĂ©gante des erreurs – ne casse jamais votre site
  • Journalisation complĂšte pour le dĂ©bogage

Avantages pour votre forum

:bullseye: Meilleur classement dans les recherches

  • Les extraits enrichis dans Google augmentent le taux de clic de 30 Ă  50 %
  • Panneaux Knowledge Graph pour les utilisateurs experts
  • PrĂ©sence dans les sections « Les gens demandent aussi »
  • Les filiĂšres dans les rĂ©sultats de recherche amĂ©liorent la navigation

:mobile_phone: Partage professionnel sur les réseaux sociaux

  • Cartes accrocheuses lors du partage sur Facebook, Twitter, LinkedIn
  • IdentitĂ© visuelle appropriĂ©e avec logos et descriptions
  • Augmentation de l’engagement et du taux de clic
  • Fonctionne sur plus de 40 plateformes sociales

:robot: PrĂȘt pour les assistants IA

  • Votre contenu apparaĂźt avec prĂ©cision dans les rĂ©ponses de ChatGPT et Claude
  • Attribution correcte avec liens vers votre forum
  • Un contexte complet Ă©vite les hallucinations de l’IA
  • PrĂ©parĂ© pour l’optimisation des moteurs gĂ©nĂ©ratifs (GEO)

:globe_showing_europe_africa: Public international

  • DĂ©tection automatique de la langue
  • Descriptions localisĂ©es pour une meilleure pertinence
  • Le codage URL gĂšre le cyrillique et les caractĂšres spĂ©ciaux
  • Extension facile Ă  d’autres langues

Installation

Étape 1 : Installation

Suivez Install plugins on a self-hosted site en utilisant le lien du dépÎt ci-dessus

Étape 2 : Activer dans l’administration

AccĂ©dez Ă  Admin → ParamĂštres → Plugins → Rich Microdata

Définissez rich_microdata_enabled sur true (activé par défaut)

Étape 3 : Configuration (facultative)

Tous les paramĂštres fonctionnent parfaitement dĂšs la sortie de la boĂźte, mais vous pouvez personnaliser :

  • DurĂ©e du cache (par dĂ©faut : 1 heure)
  • Nombre maximum de rĂ©ponses Ă  inclure (par dĂ©faut : 10)
  • Identifiant Twitter @ pour votre site
  • URL d’image Open Graph par dĂ©faut
  • Activer/dĂ©sactiver des schĂ©mas spĂ©cifiques

Étape 4 : VĂ©rification

Testez votre balisage :

Configuration

ParamÚtre Par défaut Description
rich_microdata_enabled true Interrupteur principal du plugin
rich_microdata_cache_ttl 3600 Durée du cache en secondes
rich_microdata_max_answers 10 Nombre maximal de réponses dans le schéma QAPage
rich_microdata_include_user_stats true Inclure les statistiques des utilisateurs
rich_microdata_enable_breadcrumbs true Ajouter le schéma BreadcrumbList
rich_microdata_enable_website_schema true Inclure le schéma WebSite
rich_microdata_twitter_site "" Votre identifiant Twitter @
rich_microdata_og_image_default "" URL d’image de secours pour Open Graph
rich_microdata_debug_mode false Activer la journalisation du débogage

Détails techniques

Architecture :

  • Motif Ă  trois couches : DataExtractor → Builders → Coordinator
  • Une source unique de vĂ©ritĂ© Ă©vite les conflits de donnĂ©es
  • Rendu sĂ©parĂ© pour les balises <head> et le contenu <body>
  • Fonctionne avec les mises en page application.html.erb et crawler.html.erb

Conformité aux normes :

  • SpĂ©cification Schema.org JSON-LD
  • Protocole Open Graph
  • Balisage des cartes Twitter
  • RFC 3986 (codage URL pour les caractĂšres internationaux)

Sécurité :

  • VĂ©rifications des permissions Guardian
  • Contenu privĂ© automatiquement exclu
  • Filtrage de sĂ©curitĂ© au niveau SQL
  • SĂ©quences de repli sĂ»res pour les donnĂ©es manquantes

Compatibilité :

  • Discourse 2.7.0+
  • Ruby 2.7+
  • TestĂ© sur Discourse 3.6.0.beta3

Exemples concrets

Balisage de page de sujet :

{
  "@context": "https://schema.org",
  "@type": "QAPage",
  "name": "Comment optimiser les requĂȘtes de base de donnĂ©es ?",
  "mainEntity": {
    "@type": "Question",
    "name": "Comment optimiser les requĂȘtes de base de donnĂ©es ?",
    "text": "Je rencontre des requĂȘtes lentes...",
    "answerCount": 5,
    "upvoteCount": 12,
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Vous devriez ajouter des index sur...",
      "upvoteCount": 8,
      "author": {
        "@type": "Person",
        "name": "John Doe",
        "url": "https://forum.example.com/u/john"
      }
    }
  }
}

Balisage de page de catégorie :

{
  "@context": "https://schema.org",
  "@type": "CollectionPage",
  "name": "Optimisation de base de données",
  "description": "Astuces et astuces pour des requĂȘtes plus rapides",
  "numberOfItems": 245,
  "hasPart": [...]
}

Consultez USAGE.md pour des exemples complets.

Cas d’utilisation

Forums techniques :
Les développeurs trouvent vos solutions grùce aux extraits en vedette de Google et aux assistants de codage IA, avec le contexte du code correctement préservé.

Communautés de support :
Les moteurs de recherche affichent vos réponses avec des notes et un statut résolu, attirant un trafic qualifié vers votre meilleur contenu.

Forums de discussion :
Le partage sur les rĂ©seaux sociaux a un aspect professionnel avec des cartes personnalisĂ©es, augmentant l’engagement et rĂ©duisant les taux de rebond.

Communautés internationales :
La dĂ©tection automatique de la langue garantit que les utilisateurs voient le contenu dans leur langue prĂ©fĂ©rĂ©e, amĂ©liorant l’accessibilitĂ©.

Maintenance

Fonctionnement sans maintenance :

  • Actualisation automatique du cache lors des mises Ă  jour de contenu
  • Auto-guĂ©rison en cas d’erreur (ne casse jamais votre site)
  • Journalisation complĂšte pour la surveillance
  • Mode dĂ©bogage facultatif pour le dĂ©pannage

Gestion du cache (facultative) :

# Console Rails
MetaGeneratorService.clear_all_cache
MetaGeneratorService.cache_stats

Dépannage

Les balises mĂ©ta n’apparaissent pas :

  1. VĂ©rifiez que le plugin est activĂ© dans Admin → Plugins
  2. Vérifiez les journaux : ./launcher logs app | grep RichMicrodata
  3. Videz le cache : MetaGeneratorService.clear_all_cache

Les extraits enrichis n’apparaissent pas dans Google :

  • Google met 2 Ă  4 semaines pour re-crawler et mettre Ă  jour
  • Testez avec Test des rĂ©sultats enrichis
  • VĂ©rifiez les erreurs de validation dans la Search Console

Consultez USAGE.md pour un dépannage détaillé.

Métriques de performance

  • Taux de rĂ©ussite du cache : 95 %+ pour les forums typiques
  • Temps de rĂ©ponse : < 5 ms mis en cache, ~50 ms frais
  • Surcharge mĂ©moire : Minime (utilise Redis)
  • Charge de base de donnĂ©es : NĂ©gligeable (mis en cache 1 heure)

Feuille de route

Version actuelle : 2.0.0

:white_check_mark: Open Graph complet et cartes Twitter
:white_check_mark: Prise en charge complĂšte de Schema.org JSON-LD
:white_check_mark: Localisation EN/RU
:white_check_mark: Codage URL pour les caractĂšres internationaux

Prévu :

  • Packs de langues supplĂ©mentaires (ES, DE, FR)
  • Prise en charge du schĂ©ma vidĂ©o
  • SchĂ©ma Ă©vĂ©nement pour les annonces
  • SchĂ©ma produit pour les catĂ©gories de marchĂ©

Support

Licence

Licence MIT – Logiciel libre et open source

Crédits


Optionnel : Vue instantanée Telegram

Le dĂ©pĂŽt inclut des rĂšgles de modĂšle d’exemple dans TELEGRAM_IV_RULES.txt pour crĂ©er de magnifiques modĂšles de Vue instantanĂ©e Telegram. Utilisez ces rĂšgles sur instantview.telegram.org pour offrir une expĂ©rience de lecture rapide et sans distraction aux utilisateurs qui partagent le contenu de votre forum sur Telegram.


Transformez la visibilitĂ© de votre forum dĂšs aujourd’hui. Installez en moins de 5 minutes, voyez les rĂ©sultats dans Google en 2 Ă  4 semaines. :rocket:

13 « J'aime »

Salut, mĂȘme si le pack de langue français n’est pas prĂȘt, me conseilles-tu d’utiliser ce plugin sur un site Discourse en français ? Merci.

1 « J'aime »

Salut. Ce plugin n’affectera en rien l’expĂ©rience utilisateur. Le paramĂštre de langue principal est dĂ©fini dans les rĂ©glages de Discourse. Vous pouvez Ă©galement spĂ©cifier des langues alternatives dans la section d’administration si le forum est multilingue. Oui, vous pouvez l’utiliser sans problĂšme. La traduction n’est utilisĂ©e que pour gĂ©rer le plugin dans la section d’administration. Si vous comprenez l’anglais ou le russe, vous pourrez l’administrer.

2 « J'aime »

Bonjour Ă  tous, j’ai installĂ© ce plugin sans aucune difficultĂ©. La configuration est trĂšs simple, cela a fonctionnĂ© tout de suite. J’ai fait un test pour voir ce qui ressortait des microdonnĂ©es, et tout me semble correct.

1 « J'aime »

Wow, vraiment intéressant !

L’auteur fournit les meilleures pratiques sur https://github.com/kaktaknet/discourse-rich-json-ld-microdata/blob/main/USAGE.md

Meilleures pratiques

  1. Utilisez toujours des images de haute qualité (1200x630px) pour les sujets
  2. Rédigez des titres de sujet détaillés (aide pour le champ name de Schema.org)
  3. Activez le plugin Solved pour une meilleure détection de acceptedAnswer
  4. Utilisez des descriptions de catégorie descriptives
  5. Encouragez les utilisateurs à remplir leur biographie (améliore le schéma Person)
  6. Surveillez le taux de succĂšs du cache (visez >95%)
  7. Réchauffez le cache aprÚs les déploiements
  8. Testez le balisage avec des validateurs avant les versions majeures

Readme

https://github.com/kaktaknet/discourse-rich-json-ld-microdata/blob/main/README.md

Fait avec :heart: pour la communauté Discourse

C’est vrai. La plus jolie documentation Markdown que j’aie jamais vue :trophy: !

2 « J'aime »

Merci. Bien que ce plugin n’ait aucun effet visible sur le forum pour les utilisateurs rĂ©guliers et ne serve qu’à attirer plus de visiteurs des moteurs de recherche et Ă  aider les assistants vocaux, sa mise en Ɠuvre n’a pas Ă©tĂ© une tĂąche facile. Mais j’ai rĂ©ussi Ă  le faire.

2 « J'aime »

Beau plugin ! Merci pour votre travail. J’essaie de l’installer, mais je n’arrive pas Ă  obtenir les « data-rich-microdata »

J’ai dĂ©jĂ  testĂ© un « MetaGeneratorService.clear_all_cache » :
discourse(prod)⟩ MetaGeneratorService.clear_all_cache => []
et « tail -f log/production.log | grep RichMicrodata » me donne :

[RichMicrodata] Generated for topic 14092, crawler: true, head size: 5855
[RichMicrodata] Returning HTML (5855 chars), crawler: true
[RichMicrodata] HTML builder (server:before-head-close-crawler) started for TopicsController
[RichMicrodata] Generating for topic 22861
[RichMicrodata::Coordinator] ERROR in TwitterCardBuilder: undefined local variable or method `twitter_image’ for an instance of DiscourseRichMicrodata::Builders::TwitterCardBuilder
[RichMicrodata] Generated for topic 22861, crawler: true, head size: 6815
[RichMicrodata] Returning HTML (6815 chars), crawler: true
[RichMicrodata] HTML builder (server:before-head-close-crawler) started for TopicsController

1 « J'aime »

Veuillez essayer de fournir un lien vers la publication du forum https://search.google.com/test/rich-results

1 « J'aime »

Bien. Mais y a-t-il un moyen de corriger toutes ces erreurs liĂ©es Ă  l’image Twitter ?

Screenshot_20251122_124238_Brave

Je vais vĂ©rifier ça. Apparemment, le plugin d’image est requis. J’ai manquĂ© ce point. Je vais corriger ça.

1 « J'aime »

Mis Ă  jour, consultez-le

1 « J'aime »

Salut ! Je voulais juste partager un cas Ă©trange : sur notre forum, nous n’imposons pas vraiment le paramĂštre d’un « nom » pour l’utilisateur, donc lorsque Google essaie d’indexer, il se plaint avec :

Champ « name » manquant (dans « author »)

Les éléments avec ce problÚme ne sont pas valides. Les éléments non valides ne sont pas éligibles pour les résultats enrichis de la recherche Google

Je ne sais pas s’il existe un moyen pour nous de dire que le nom d’utilisateur est le nom ?

Il n’y a pas de tel problĂšme dans les paramĂštres standard du forum et du thĂšme. Si vous avez des paramĂštres personnalisĂ©s pour le forum ou le thĂšme, veuillez les vĂ©rifier de votre cĂŽtĂ©.

1 « J'aime »

Si vous ne voyez pas d’inconvĂ©nient Ă  ce que je demande, qu’est-ce que le « forum standard » ? Les paramĂštres du thĂšme ne devraient pas poser de problĂšme, j’ai Ă©galement testĂ© sur Horizon et le problĂšme est que le « nom » gĂ©nĂ©rĂ© n’est pas renseignĂ© (parce que nous n’exigeons pas qu’il soit renseignĂ©)

Cependant, ceci est rĂ©glĂ© sur le mode « discussion », je vais essayer d’autres modes pour voir

Édition :

Certains sujets ont le « nom » renseignĂ©, tandis que d’autres non. MĂȘme pour le mĂȘme utilisateur qui n’a pas dĂ©fini de « nom » spĂ©cifique


Aussi, probablement sans rapport, je vois quelques erreurs concernant les microdonnées et la locale ZN

Bonjour, j’ai installĂ© ce plugin. Je souhaite dĂ©sactiver la mise en Ă©vidence rouge dans l’image ci-jointe ( Screenshot by Lightshot ). Comment configurer le plugin pour cela ? Merci beaucoup !

Bonjour, le plugin fonctionnera-t-il avec la derniĂšre version de Discourse ?