Problemi SEO con contenuti duplicati RSS

Utilizziamo il plugin RSS (o copie manuali) per i nostri post del blog per crearli come un’ancora di discussione in una categoria. A Google non piace questo tipo di contenuto “copiato” e minaccia di danneggiare la reputazione SEO del blog.

Naturalmente possiamo impedire a Google di indicizzare la discussione (o la categoria), ma qualcuno ha esperienza nel definire in qualche modo che questo è intenzionale. Qualcosa come “questo sottodominio appartiene al blog, non stiamo cercando di creare fattorie di link” o qualcosa del genere? Se è così, come implementarlo nelle impostazioni di discourse.

Ricordo vagamente che con rel=nofollow o simili dovrebbe almeno affrontare l’aspetto del farming di backlink (non sono sicuro dell’aspetto del contenuto duplicato). Esiste forse un header “questa è una copia di” che accontenta Google?

2 Mi Piace

L’impostazione del sito embed set canonical url potrebbe aiutare con il problema:

Vale la pena consultare la documentazione di Google:

Il motivo per cui ho linkato alla documentazione è che non sono sicuro del caso di abilitare l’impostazione embed set canonical url quando l’impostazione embed truncate è abilitata. Quando embed truncate è abilitata, solo uno snippet dell’articolo originale è effettivamente disponibile per essere indicizzato da Google su Discourse. L’articolo completo viene visualizzato in un iframe se gli utenti fanno clic sul pulsante “Mostra post completo”. Sono abbastanza sicuro che il contenuto dell’iframe non venga indicizzato da Google. Il primo punto nell’articolo “5 errori comuni” affronta in parte quel problema.

2 Mi Piace

Grazie per il suggerimento Simon! In effetti, canonico sembra essere ciò a cui stavo pensando. Ci ho provato ma non funziona del tutto, incorpora un URL canonico che punta a sé stesso, non alla sorgente RSS:

<link rel="canonical" href="https://community.domain.com/t/invoicing-mandate/537?page=0" />

invece di

<link rel="canonical" href="https://blog.domain.com/t/invoicing-mandate/537" />

(Questo è stabile/3.2.0)

Inoltre, questo può/dovrebbe essere impostato anche come link in primo piano?

Nel nostro caso non usiamo truncate (anche se il feed RSS è già troncato). Ma spero che Google lo accetti comunque.

1 Mi Piace

Prova a visualizzare il codice sorgente della pagina, invece di visualizzarlo con l’ispettore web del tuo browser. Penso che vedrai che l’URL canonico è impostato sull’URL del post RSS quando visualizzi il sorgente della pagina, e impostato sull’URL dell’argomento Discourse quando visualizzi l’HTML con l’ispettore web. Se è corretto, non dovresti ricevere avvisi di contenuto duplicato per gli argomenti RSS.

Ecco cosa vedo (con embed set canonical url abilitato) quando visualizzo un argomento estratto dal feed RSS di Discourse nel mio ispettore web:

Ed ecco l’URL canonico quando visualizzo il sorgente della pagina (facendo clic destro sulla pagina e selezionando “Visualizza sorgente pagina” dal menu):

<link rel="canonical" href="https://blog.discourse.org/2023/03/how-discourse-scaled-to-10m-arr-with-only-1-salesperson" />

La versione “Visualizza sorgente pagina” con l’URL canonico impostato correttamente è ciò che vedrà un crawler.

L’altro modo per vedere la differenza è usare l’ispettore web, ma selezionare Googlebot come user agent:

Penso che l’impostazione funzioni come previsto per quanto riguarda ciò che vedono i crawler, ma mi ha confuso. Il problema sembra essere che Discourse sovrascrive l’attributo dell’URL canonico con Javascript quando la pagina viene visualizzata con Javascript abilitato. Per riferimento, ciò accade qui:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/instance-initializers/meta-tag-updater.js#L25-L27

Non credo che sia (attualmente) possibile impostare il link in evidenza per gli argomenti creati dai feed RSS. Non sono un esperto di SEO, ma non penso che impostarlo o non impostarlo avrebbe alcun effetto sulla SEO.

2 Mi Piace

Ho usato curl -i | grep canon e ho visto un URL di tag errato (e nessuna intestazione), ma posso riprovare con un UA diverso (anche se è un po’ strano) - ho dovuto ricreare i post alcune volte, quindi forse ero confuso. Aggiornerò qui.

Vero, il link in primo piano non è per la SEO, ma internamente desideravo rendere il link del blog più visibile. E dato che è lo stesso URL…

(Ma sembra che otterrà un elenco più lungo di requisiti, quindi potrebbe essere necessario fare un fork di rss-poll (purtroppo sembra che la maggior parte del lavoro non sia svolta nel plug-in, però). Anche il codice di incorporamento è estensibile?

Per un argomento creato da un feed RSS, con embed set canonical url abilitato, mi aspetterei che curl -i restituisca l’URL dell’elemento RSS come URL canonico. Questo funziona quando lo testo sul mio sito locale.

Supponendo che tu abbia accesso alla console Rails di Discourse, puoi confermare cosa sta succedendo trovando l’argomento, quindi controllando la sua proprietà topic_embed. Ad esempio:

t = Topic.find 495
t.topic_embed

o semplicemente:

TopicEmbed.find_by(topic_id: 495)

Dovrebbe essere restituito un TopicEmbed. Il suo embed_url è ciò che ci si aspetta che Discourse utilizzi per impostare l’URL canonico dell’argomento.

Mi sono chiesto anch’io la stessa cosa. Sarebbe più difficile che apportare modifiche al plugin RSS, perché l’incorporamento fa parte del codice principale di Discourse.