🏆 Plugin Discourse Rich JSON-LD Microdata

Discourse Rich JSON-LD Microdata

:sparkles: Riepilogo Migliora i metadati standard di Discourse con un insieme completo e coordinato di markup Open Graph, Twitter Cards e JSON-LD di Schema.org, garantendo prestazioni SEO superiori, esperienze di condivisione sui social media più ricche e una migliore individuabilità da parte di AI/LLM
:hammer_and_wrench: Link al Repository 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: Guida all’Installazione Come installare i plugin in Discourse

Cosa Ottieni

Trasforma il modo in cui il tuo forum appare nei risultati di ricerca, sui social media e negli assistenti basati sull’intelligenza artificiale. Questo plugin genera dati strutturati di livello professionale che Google, Yandex, le piattaforme social e i Large Language Models comprendono perfettamente.

Per la documentazione dettagliata, consulta README.md

Per i dettagli tecnici e lo sviluppo, consulta CONTRIBUTING.md

Per esempi d’uso e risoluzione dei problemi, consulta USAGE.md

Esempi di Risultati di Ricerca Arricchiti

Prima: Frammento di testo semplice in Google
Dopo: Frammento arricchito con valutazioni, numero di risposte, autore e data di pubblicazione

Prima: Anteprima generica di un link sui social media
Dopo: Card accattivante con immagine, descrizione e branding

Scopri di più sui Risultati Arricchiti di Google Search Central

Caratteristiche Principali

1. Copertura Completa di Schema.org

  • Schema QAPage per i topic con una gerarchia completa di domande e risposte
  • Supporto per le valutazioni delle risposte e lo stato risolto
  • CollectionPage per le categorie con sottocategorie
  • ProfilePage per i profili utente con indicatori di competenza
  • BreadcrumbList per i percorsi di navigazione
  • Schema globale WebSite con azione di ricerca

2. Tag Social Media Coordinati

  • Open Graph (Facebook, LinkedIn, Discord)
  • Twitter Cards (summary_large_image)
  • Tutti generati da un’unica fonte di verità: nessun conflitto
  • Pulizia automatica dei tag predefiniti di Discourse

3. Ottimizzato per AI e LLM

  • Relazioni complete tra entità utilizzando i riferimenti @id di Schema.org
  • Comprensione completa del contesto (topic → categorie → risposte → commenti)
  • Metadati di competenza dell’autore
  • ChatGPT, Claude e altri assistenti AI ricevono un contesto perfetto

4. Internazionalizzazione Completa :globe_showing_europe_africa:

  • Traduzioni al 100% in inglese e russo incluse
  • Rilevamento automatico della lingua (utente → sito → browser → fallback)
  • Tutte le descrizioni di Schema.org localizzate
  • Facile aggiungere altre lingue

5. Prestazioni Intelligenti

  • Caching Redis con TTL di 1 ora (configurabile)
  • Invalidazione automatica della cache in caso di modifiche ai contenuti
  • < 5ms per le pagine in cache
  • ~50ms per la generazione iniziale

6. Manutenzione Zero

  • Iniezione automatica sia per le visualizzazioni del browser che per quelle dei crawler
  • Funziona per topic, categorie e profili utente
  • Gestione elegante degli errori: non rompe mai il tuo sito
  • Logging completo per il debug

Vantaggi per il Tuo Forum

:bullseye: Migliori Posizionamenti nei Motori di Ricerca

  • I frammenti arricchiti in Google aumentano il tasso di clic del 30-50%
  • Pannelli Knowledge Graph per gli utenti esperti
  • Inclusi nelle sezioni “Le persone chiedono anche”
  • I breadcrumb nei risultati di ricerca migliorano la navigazione

:mobile_phone: Condivisione Professionale sui Social Media

  • Card accattivanti quando condivise su Facebook, Twitter, LinkedIn
  • Branding corretto con loghi e descrizioni
  • Aumento dell’engagement e del tasso di clic
  • Funziona su oltre 40 piattaforme social

:robot: Pronto per gli Assistenti AI

  • I tuoi contenuti appaiono accuratamente nelle risposte di ChatGPT e Claude
  • Attribuzione corretta con link di ritorno al tuo forum
  • Un contesto completo previene le allucinazioni dell’AI
  • Futuro-proof per l’Ottimizzazione dei Motori Generativi (GEO)

:globe_showing_europe_africa: Pubblico Internazionale

  • Rilevamento automatico della lingua
  • Descrizioni localizzate per una maggiore pertinenza
  • La codifica URL gestisce i caratteri cirillici e speciali
  • Facile espansione ad altre lingue

Installazione

Passaggio 1: Installa

Segui Install plugins on a self-hosted site utilizzando il link al repository sopra

Passaggio 2: Attiva nell’Admin

Vai su Admin → Impostazioni → Plugin → Rich Microdata

Imposta rich_microdata_enabled su true (abilitato di default)

Passaggio 3: Configura (Opzionale)

Tutte le impostazioni funzionano perfettamente fuori dalla scatola, ma puoi personalizzare:

  • Durata della cache (default: 1 ora)
  • Numero massimo di risposte da includere (default: 10)
  • @handle Twitter per il tuo sito
  • URL dell’immagine Open Graph predefinita
  • Abilita/disabilita schemi specifici

Passaggio 4: Verifica

Testa il tuo markup:

Configurazione

Impostazione Predefinito Descrizione
rich_microdata_enabled true Interruttore principale per il plugin
rich_microdata_cache_ttl 3600 Durata della cache in secondi
rich_microdata_max_answers 10 Numero massimo di risposte nello schema QAPage
rich_microdata_include_user_stats true Includi statistiche utente
rich_microdata_enable_breadcrumbs true Aggiungi lo schema BreadcrumbList
rich_microdata_enable_website_schema true Includi lo schema WebSite
rich_microdata_twitter_site "" Il tuo @username Twitter
rich_microdata_og_image_default "" URL immagine OG di fallback
rich_microdata_debug_mode false Abilita il logging di debug

Dettagli Tecnici

Architettura:

  • Pattern a tre livelli: DataExtractor → Builders → Coordinator
  • Un’unica fonte di verità previene conflitti di dati
  • Rendering separato per i tag <head> e il contenuto <body>
  • Funziona sia con i layout application.html.erb che crawler.html.erb

Conformità agli Standard:

  • Specifica JSON-LD di Schema.org
  • Open Graph Protocol
  • Markup Twitter Cards
  • RFC 3986 (codifica URL per caratteri internazionali)

Sicurezza:

  • Controlli delle autorizzazioni Guardian
  • Contenuti privati esclusi automaticamente
  • Filtri di sicurezza a livello SQL
  • Fallback sicuri per dati mancanti

Compatibilità:

  • Discourse 2.7.0+
  • Ruby 2.7+
  • Testato su Discourse 3.6.0.beta3

Esempi dal Mondo Reale

Markup Pagina Topic:

{
  "@context": "https://schema.org",
  "@type": "QAPage",
  "name": "Come ottimizzare le query del database?",
  "mainEntity": {
    "@type": "Question",
    "name": "Come ottimizzare le query del database?",
    "text": "Sto riscontrando query lente...",
    "answerCount": 5,
    "upvoteCount": 12,
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Dovresti aggiungere indici su...",
      "upvoteCount": 8,
      "author": {
        "@type": "Person",
        "name": "John Doe",
        "url": "https://forum.example.com/u/john"
      }
    }
  }
}

Markup Pagina Categoria:

{
  "@context": "https://schema.org",
  "@type": "CollectionPage",
  "name": "Ottimizzazione Database",
  "description": "Suggerimenti e trucchi per query più veloci",
  "numberOfItems": 245,
  "hasPart": [...]
}

Consulta USAGE.md per esempi completi.

Casi d’Uso

Forum Tecnici:
Gli sviluppatori trovano le tue soluzioni tramite i frammenti in evidenza di Google e gli assistenti di codifica AI, con il contesto del codice preservato correttamente.

Comunità di Supporto:
I motori di ricerca mostrano le tue risposte con valutazioni e stato risolto, attirando traffico qualificato verso i tuoi contenuti migliori.

Forum di Discussione:
La condivisione sui social media appare professionale con card personalizzate, aumentando l’engagement e riducendo il tasso di rimbalzo.

Comunità Internazionali:
Il rilevamento automatico della lingua garantisce che gli utenti vedano i contenuti nella loro lingua preferita, migliorando l’accessibilità.

Manutenzione

Operatività a manutenzione zero:

  • Aggiornamento automatico della cache in caso di modifiche ai contenuti
  • Auto-riparazione in caso di errori (non rompe mai il tuo sito)
  • Logging completo per il monitoraggio
  • Modalità debug opzionale per la risoluzione dei problemi

Gestione della cache (opzionale):

# Console Rails
MetaGeneratorService.clear_all_cache
MetaGeneratorService.cache_stats

Risoluzione dei Problemi

I metadati non appaiono:

  1. Verifica che il plugin sia abilitato in Admin → Plugin
  2. Controlla i log: ./launcher logs app | grep RichMicrodata
  3. Svuota la cache: MetaGeneratorService.clear_all_cache

I frammenti arricchiti non appaiono su Google:

  • Google impiega 2-4 settimane per ricreare e aggiornare
  • Esegui il test con Rich Results Test
  • Controlla eventuali errori di validazione in Search Console

Consulta USAGE.md per la risoluzione dettagliata dei problemi.

Metriche delle Prestazioni

  • Tasso di hit della cache: 95%+ per forum tipici
  • Tempo di risposta: < 5ms in cache, ~50ms per la generazione iniziale
  • Overhead di memoria: Minimo (utilizza Redis)
  • Carico sul database: Trascurabile (cache di 1 ora)

Roadmap

Versione corrente: 2.0.0

:white_check_mark: Open Graph e Twitter Cards completi
:white_check_mark: Supporto completo JSON-LD di Schema.org
:white_check_mark: Localizzazione EN/RU
:white_check_mark: Codifica URL per caratteri internazionali

Pianificato:

  • Pacchetti linguistici aggiuntivi (ES, DE, FR)
  • Supporto schema video
  • Schema eventi per annunci
  • Schema prodotti per categorie marketplace

Supporto

Licenza

Licenza MIT - Software libero e open-source

Crediti


Opzionale: Telegram Instant View

Il repository include regole di esempio nel file TELEGRAM_IV_RULES.txt per creare splendidi template di Telegram Instant View. Utilizza queste regole su instantview.telegram.org per offrire un’esperienza di lettura veloce e priva di distrazioni agli utenti che condividono i contenuti del tuo forum su Telegram.


Trasforma oggi stesso la visibilità del tuo forum. Installa in meno di 5 minuti, vedi i risultati su Google entro 2-4 settimane. :rocket:

12 Mi Piace

Ciao, anche se il pacchetto lingua francese non è pronto, mi consigli di usare questo plugin su un sito Discourse in francese? Grazie.

1 Mi Piace

Ciao. Questo plugin non influirà in alcun modo sull’esperienza utente. L’impostazione della lingua principale è presa dalle impostazioni di Discourse. Puoi anche specificare lingue alternative nella sezione di amministrazione se il forum è multilingue. Sì, sentiti libero di usarlo, non causerà alcun problema. La traduzione è utilizzata solo per gestire il plugin nella sezione di amministrazione. Se capisci l’inglese o il russo, sarai in grado di gestirlo.

2 Mi Piace

Ciao a tutti, ho installato questo plugin senza alcuna difficoltà. La configurazione è molto semplice, ha funzionato subito. Ho eseguito un test per vedere cosa usciva dai microdati e mi sembra tutto a posto.

1 Mi Piace

Wow, davvero interessante!

L’autore fornisce le best practice su discourse-rich-json-ld-microdata/USAGE.md at main · kaktaknet/discourse-rich-json-ld-microdata · GitHub

Best Practices

  1. Utilizzare sempre immagini di alta qualità (1200x630px) per gli argomenti
  2. Scrivere titoli di argomenti dettagliati (aiuta con il campo name di Schema.org)
  3. Abilitare il plugin Solved per una migliore rilevazione di acceptedAnswer
  4. Utilizzare descrizioni delle categorie descrittive
  5. Incoraggiare gli utenti a compilare le biografie (migliora lo schema Person)
  6. Monitorare il tasso di cache hit (puntare a >95%)
  7. Riscaldare la cache dopo i deploy
  8. Testare il markup con i validatori prima delle principali release

Readme

Realizzato con :heart: per la Community di Discourse

È vero. La documentazione Markdown più bella che abbia mai visto :trophy: !

2 Mi Piace

Grazie. Anche se questo plugin non ha alcun effetto visibile sul forum per gli utenti normali e serve solo ad attrarre più visitatori dai motori di ricerca e ad assistere gli assistenti vocali, la sua implementazione non è stata un’impresa facile. Ma sono riuscito a portarla a termine.

2 Mi Piace

Bel plugin! Grazie per il tuo lavoro. Sto cercando di installarlo, ma non riesco a ottenere i “data-rich-microdata”

Ho già provato un “MetaGeneratorService.clear_all_cache”:
discourse(prod)⟩ MetaGeneratorService.clear_all_cache => []
e “tail -f log/production.log | grep RichMicrodata” mi restituisce:

⟩ [RichMicrodata] Generato per topic 14092, crawler: true, dimensione head: 5855
⟩ [RichMicrodata] Restituzione HTML (5855 caratteri), crawler: true
⟩ [RichMicrodata] Costruttore HTML (server:before-head-close-crawler) avviato per TopicsController
⟩ [RichMicrodata] Generazione per topic 22861
⟩ [RichMicrodata::Coordinator] ERRORE in TwitterCardBuilder: variabile locale o metodo non definito `twitter_image’ per un’istanza di DiscourseRichMicrodata::Builders::TwitterCardBuilder
⟩ [RichMicrodata] Generato per topic 22861, crawler: true, dimensione head: 6815
⟩ [RichMicrodata] Restituzione HTML (6815 caratteri), crawler: true
⟩ [RichMicrodata] Costruttore HTML (server:before-head-close-crawler) avviato per TopicsController

1 Mi Piace

Si prega di provare a fornire un link al post del forum https://search.google.com/test/rich-results

1 Mi Piace

Bello. Ma c’è un modo per correggere tutti questi errori relativi all’immagine di Twitter?

Screenshot_20251122_124238_Brave

Verificherò. Apparentemente, il plugin dell’immagine è richiesto. Mi è sfuggito questo punto. Lo sistemerò.

1 Mi Piace

Aggiornato, dai un’occhiata

1 Mi Piace

Ciao! Volevo solo condividere un caso strano: sul nostro forum non imponiamo davvero l’impostazione di un “nome” per l’utente, quindi quando Google tenta di indicizzare, si lamenta con:

Campo mancante “name” (in “author”)

Gli elementi con questo problema non sono validi. Gli elementi non validi non sono idonei per i risultati avanzati di Google Search

Non sono sicuro se ci sia un modo per dire che il nome utente è il nome?

Non c’è alcun problema nelle impostazioni standard del forum e del tema. Se si dispone di impostazioni personalizzate del forum o del tema, si prega di controllarle da parte vostra.

1 Mi Piace

Se non le dispiace, cosa si intende per “forum standard”? Le impostazioni del tema non dovrebbero essere un problema, ho testato anche su Horizon e il problema è che il “nome” generato non viene popolato (perché non richiediamo che venga popolato)

Questo è impostato sulla modalità “discussione”, proverò altre modalità per vedere

Modifica:

Alcuni argomenti hanno il “nome” popolato, mentre altri no. Anche per lo stesso utente che non ha impostato un “nome” specifico


Inoltre, probabilmente non correlato, vedo alcuni errori relativi a microdati e locale ZN

Ciao, ho installato questo plugin. Voglio disabilitare l’evidenziazione rossa nell’immagine allegata (Screenshot by Lightshot). Come configuro il plugin per farlo? Grazie mille!