Miglioramenti dello schema del forum di discussione

Ciao. Attualmente stiamo ricevendo questo messaggio nella nostra Google Search Console. Non sono del tutto sicuro di cosa significhi. Potrei avere maggiori chiarimenti su questo problema? Esiste una soluzione? Inoltre, vorrei menzionare che abbiamo provato a utilizzare diversi temi per la piattaforma, ma lo stesso errore persiste.

1 Mi Piace

Ciao, singhiozzo!

I dati strutturati aiutano a fornire ai motori di ricerca più contesto, essenzialmente.

La Ricerca Google non trova un campo url facoltativo in quell’argomento.
Puoi vedere su validator.schema.org che è perfettamente valido senza avvisi.

Non c’è nulla di cui preoccuparsi.
Detto questo, se la Ricerca Google evidenziasse questo campo, sarebbe un motivo valido per aggiungerlo in Discourse.

3 Mi Piace

Come spiegato sopra da @Arkshine, non si tratta di un bug ma piuttosto di un suggerimento di Google per aggiungere un campo opzionale nello schema. Ci darò un’occhiata.

2 Mi Piace

Dall’altro thread:

Quindi, sì, “url” è facoltativo, ma ci sono anche errori reali e genuini qui.

L’itemprop="url" aiuta Google a combinare più blocchi Comment su URL diversi appartenenti allo stesso argomento.

Ho provato a riprodurre gli errori che stai riscontrando testando gli argomenti meta in Google Rich Results Test, ma non vedo errori.

Puoi fornire un link all’argomento per il quale Google mostra errori?

La prima cosa da notare è che il link che hai mostrato indica che il link non ha lo schema del forum di discussione. Quel link ha solo lo schema “Breadcrumbs”, nessuno schema “Discussion Forum” affatto. Ciò accade perché stai testando il link in modalità “smartphone” e non in modalità “desktop”.

\u003chttps://search.google.com/test/rich-results/result?id=TlLcA6saLMo3BrxbQYnFuw\u003e

Quando cambi il link in test desktop, appare lo schema “Discussion Forum” e segnala il problema “campo url mancante”.

  • \u003chttps://search.google.com/test/rich-results/result?id=uy3Ub3IwJiIuaMh-7YUu6g\u003e
  • \u003chttps://search.google.com/test/rich-results/result/r%2Fdiscussion-forum?id=uy3Ub3IwJiIuaMh-7YUu6g\u003e

Per riprodurre gli errori critici, devi testare un thread lungo con il parametro URL ?page=2, come questo:

  • \u003chttps://meta.discourse.org/t/discourse-air-theme/197703?page=2\u003e
  • \u003chttps://search.google.com/test/rich-results/result?id=n8ZJes2JomqJ5vQiprNB5w\u003e
  • \u003chttps://search.google.com/test/rich-results/result/r%2Fdiscussion-forum?id=n8ZJes2JomqJ5vQiprNB5w\u003e

1 Mi Piace

Vorrei sottolineare che ritengo sia un bug importante in Discourse il fatto che lo schema non venga visualizzato in modalità smartphone. Google non saprebbe segnalarlo (perché Google segnala solo errori nello schema che sono presenti), ma il crawling e l’indicizzazione da smartphone sono il predefinito per Google da anni, quindi è importante che qualsiasi schema appaia sia in modalità smartphone sia in modalità desktop.

2 Mi Piace

Il problema descritto nel primo post, più alcuni altri problemi, è stato risolto in questo commit:

Grazie per i suggerimenti qui @rrit! :+1:

Questo sta accadendo perché il primo post non è incluso dalla seconda pagina in poi nella vista del crawler. @sam dovremmo includere il primo post in tutte le pagine nella vista del crawler per risolvere i problemi dello schema? :thinking:

1 Mi Piace

No, non credo, duplicare contenuti non porta mai a buoni risultati, ci sono altre opzioni?

3 Mi Piace

L’altra opzione sarebbe sostituire lo schema microdata con JSON-LD (che Google raccomanda). Questo disaccoppierebbe i dati renderizzati dai dati strutturati e funzionerebbe anche su dispositivi mobili (come Dan ha sottolineato sopra).

Stiamo già utilizzando lo schema JSON-LD nel plugin solved.

3 Mi Piace

Certo, questa sembra una soluzione molto più corretta.

1 Mi Piace

Non includere i dati/testo del primo post nelle pagine successive, ma aggiungi sempre itemprop="url" che punta alla prima pagina:

Vedi Google structured data for forums and profile pages - #9 by rrit

3 Mi Piace

Nessuna regola senza eccezioni: per DiscussionForumPosting Google raccomanda l’uso di Microdata e non di JSON-LD.

Vedi Discussion Forum (DiscussionForumPosting, SocialMediaPosting) Schema Markup | Google Search Central  |  Documentation  |  Google for Developers

Linee guida tecniche

  • A differenza della nostra preferenza generale per i dati strutturati, raccomandiamo di fornire il markup DiscussionForumPosting in Microdata (o RDFa) se possibile. Questo evita di dover duplicare grandi blocchi di testo all’interno del markup. Tuttavia, questa è solo una raccomandazione e JSON-LD è ancora pienamente supportato.
4 Mi Piace

È già attivo su meta.discourse.org?

Si prega di vedere il mio commento su github:

Questo intero tag di link dovrebbe essere definito solo per post.is_first_post - non c’è bisogno di ripeterlo con lo stesso URL identico per ogni elemento Comment.

Su meta.discourse.org le virgolette sono attualmente corrotte:
\u003clink itemprop=\u0026#39;mainEntityOfPage\u0026#39; href=\"…\"\u003e
Vedi Schema Markup Validator

3 Mi Piace

Sì, lo stiamo facendo ora secondo il commit recente ma anche dopo averlo aggiunto ci mancano alcuni campi obbligatori (author, datePublished, text) per le pagine successive (?page=2).

Ottima osservazione! Corretto in questo PR:

Oh sì. Questo è stato confermato anche da @rrlevering qui:

Quindi immagino che dovremo migliorare lo schema microdata assicurandoci di non finire per duplicare contenuti nelle pagine successive.

7 Mi Piace

Grazie per la correzione della proprietà mainEntityOfPage.

E buona scoperta sulla tag meta vs. tag link :+1:
<link itemprop='url' content='<%= @topic_view.absolute_url %>'>

Ancora meglio:
<link itemprop='url' href='<%= @topic_view.absolute_url %>'>

Vedi:
– Questo link è vecchio, ma YouTube usa ancora oggi <link itemprop='url' href='…'>. –

“Per fornire un URL in HTML5, […] [per il tag link] usa l’attributo href
“Se usi un URL come valore dell’attributo content di un elemento meta, questo rappresenterà una stringa (che sembra un URL), non un URL.”


Ho ricontrollato la documentazione fornita da Google su DiscussionForumPosting: proprietà:

Proprietà richieste:

  • author
  • author.name
  • datePublished
  • text o image o video

Nota speciale su: text o image o video

“Questo non è richiesto se stai rappresentando un post su un’altra pagina (con un url esterno) come nelle pagine successive dei forum o nelle pagine di categoria del forum.”

Proprietà consigliate

  • url
  • […]

Nota speciale su: url

“L’URL canonico della discussione. Nei thread multipagina, imposta questa proprietà sull’URL della prima pagina. Per una singola discussione, questo è solitamente l’URL corrente.”

Quindi concludo:

  • Non dobbiamo aggiungere text di nuovo su pagina=2+ (FATTO)
  • Dobbiamo aggiungere la proprietà opzionale url - specialmente a pagina=2+ (FATTO)

Necessità di ulteriori indagini:

  • Queste “proprietà richieste” author, author.name e datePublished sono davvero richieste su pagina=2+ o possiamo farne a meno di ripeterle?
    validator.schema.org non si lamenta di proprietà mancanti su pagina=2+. (FATTO)
    → Aspetta e controlla “Console di ricerca Google → Report: Miglioramenti → Forum di discussione” per nuovi dati live dopo che queste correzioni già implementate saranno attive per un po’ di tempo. (DA FARE)

Dati strutturati: strumenti e risorse

Schema

schema.org

developers.google.com

Validatori

schema.org

  • Validatore generale:
    https://validator.schema.org/
    Questo controlla la conformità dei dati strutturati con le definizioni dello Schema e la conformità del markup con HTML/XML.
    → I requisiti controllati seguono lo Standard™ e sono piuttosto ampi e non specifici.
    → Raccomando di correggere ogni bug rilevato.

Console di ricerca Google

  • Report: Miglioramenti → Forum di discussione:
    https://search.google.com/search-console/r/discussion-forum?hl=en
    Questo fornisce feedback diretto sulle informazioni elaborate dal crawler di Google.
    Questi report sono in qualche modo fatti concreti vincolanti per il SEO di Google: Se Google annuncia che qualcosa non va, Google pensa anche che non vada bene, anche se non è così.
    → Se qualcosa viene segnalato come “non valido” o “da migliorare”, raccomando di pensare prima a una correzione. E se non ci sono effetti collaterali noti, implementa sempre una correzione.

Google: Test dei risultati multimediali

  • https://search.google.com/test/rich-results?hl=en
    Questo fornisce solo feedback simulato e non è il crawler di Google.
    La mia opinione: strumento di marketing di Google per dire ai proprietari di siti “Fate qualcosa riguardo ai vostri dati strutturati!”.
    → Questo strumento è in qualche modo trascurato da Google e non è sempre aggiornato con le ultime raccomandazioni tecniche fornite da Google stessa.
    Rich Results Test non fornisce sempre lo stesso risultato di Google Search Console – in caso di dubbio: Fidati meglio di Google Search Console.
5 Mi Piace

Ecco un pseudocodice per il controllo corrente visualizzato in Search Console. Penso che aiuterà molto in questi thread. Potrei inviarti ShEx o SHACL ma quelli sono molto meno leggibili dall’uomo.

    if not (IsDeletedContent() OR IsExternalContent())
       then if not ("text" OR "articleBody" OR "sharedContent" OR "image" or "video")
         then report(OneOfThreeRequired("text", "image", "video"))
    if not ("author")
       then Report(Required("author"))
    if not("datePublished")
       then Report(Required("datePublished")

L’idea è che se il DiscussionForumPosting/OP ha il suo contenuto nella pagina corrente, dovrebbe esserci un campo di contenuto di qualche tipo.

Se il DiscussionForumPosting fa riferimento a contenuti su una pagina diversa (come nella pagina originale di contenuti multipagina), può avere solo uno stub che contiene qualsiasi cosa (come il titolo dell’argomento dell’OP) e quindi fare riferimento all’URL della prima pagina. Questo è il controllo IsExternalContent(), che verifica semplicemente se url != page URL.

Il secondo esempio nella nostra documentazione doveva modellare esattamente questo caso (la 14a pagina fa riferimento a un post stub dalla prima pagina).

author e date sono attualmente richiesti in ogni caso nelle nostre regole di convalida. Questo serve principalmente a evitare un passaggio aggiuntivo per trovare questi dati. Potresti almeno vedere quanto sarebbe utile conoscere la data dell’OP per capire quanto è obsoleto il commento. Puoi semplicemente inserire elementi meta con quei dati? Non ero preoccupato per questi campi tanto quanto per il riempimento della pagina con dati ridondanti.

7 Mi Piace

Grazie per il contesto e per i suggerimenti, Ryan!

Questo è stato fatto. I metadati per le pagine successive (pagina 2 in poi) ora vanno bene!

3 Mi Piace

Ha ancora senso aggiungere l’URL dell’author mentre il suo percorso è bloccato dal nostro robots.txt predefinito? Dovremmo rimuovere il blocco da robots.txt ora che promuoviamo tali URL?

2 Mi Piace