Assistenza Onebox, esegui la scansione di quelle anteprime in modo affidabile!

Cosa fa

Trasforma questo tipo di risultato:

(dove il tuo server non è riuscito a recuperare il codice sorgente della pagina e quindi non può estrarre i tag necessari per costruire la onebox)

In questo!:

Fornisce semplicemente un percorso alternativo per permettere alla onebox di ottenere il codice sorgente della pagina necessario per cercare i metadati quando il server di destinazione rifiuta la tua connessione.

Non cambia nulla nel modo in cui la onebox elabora successivamente il codice sorgente della pagina per trovare i metadati e rendere la box.

È pensato per permetterti di inserire i dettagli e le credenziali di un’API di terze parti per recuperare la pagina invece di effettuare una normale chiamata HTTP direttamente alla pagina di destinazione.

Perché

Ho notato che i miei server venivano bloccati dall’accesso a diversi siti commerciali, causando il fallimento del rendering delle onebox. In sostanza, aiuta a sfruttare l’affidabilità di un’API di terze parti, un po’ come un servizio di posta.

Perché è conveniente

Puoi utilizzare un VPS relativamente economico ma ottenere comunque una funzionalità di one-boxing affidabile, anche se il tuo IP o user agent sono in qualche modo “in blacklist”.

Non ti serve se

Stai già ottenendo correttamente le onebox per tutto il tuo contenuto target con l’installazione standard e tutti gli utenti sono soddisfatti.

Prerequisiti

Hai bisogno di un account con un’API di terze parti adatta.

Impostazioni

onebox assistant api base address:  https://api.embed.rocks/api/

L’esempio sopra utilizza embed.rocks, ma in futuro potrebbe essere aggiunto il supporto per altre API; tuttavia, al momento embed.rocks offre un buon rapporto qualità-prezzo.

onebox assistant api base query:   ?url=

onebox assistant api options:   &skip=article,description,oembed,imextra&include=source

onebox assistant api page source field:   source

Dovrai anche inserire la tua chiave API fornita da embed.rocks.

Vedi l’esempio sottostante:

Questa impostazione ti permette di ignorare il prefetch (per verificare se il crawl diretto restituisce un risultato) e utilizzare l’API fin dall’inizio.

image
di default OFF

Consiglio di impostare questa opzione su TRUE.

È ovviamente più costoso, ma spesso produce risultati migliori, poiché ci sono casi in cui il prefetch viene reindirizzato alla pagina sbagliata perché non sei considerato attendibile.

Informazioni sul supporto

Ricorda che se hai già tentato di creare una onebox per un link, il core di Discourse memorizzerà il risultato nella cache.

Puoi aggiungere una stringa di query casuale alla fine per superare la cache: https://mylink.com/todaynews?random=random

Puoi anche verificare che l’API stia rispondendo, ad esempio con:

curl -X GET "https://api.embed.rocks/api/?url=https%3A%2F%2Fnews.bbc.co.uk%0A&skip=article,description,oembed,imextra&include=source" -H "x-api-key: %%%your-api-key%%%"

Devi codificare in URL il sito che stai chiamando (il valore del parametro url) utilizzando un sito come questo (non garantito!).

Limitazioni note

  • È stato testato finora solo con un provider e non su altri. Tale provider è https://embed.rocks (con il quale non ho alcuna affiliazione). Sono disponibile a valutare il supporto per altri servizi se il lavoro viene sponsorizzato.

  • La modifica (monkey patching) viene eseguita a livello di metodo. Questo sovrascrive più codice del necessario, aumentando il rischio che il plugin si rompa dopo un aggiornamento del core. Tuttavia, non penso esista un modo per minimizzare ulteriormente questo aspetto?

Come installare i plugin

Vedi la guida qui: Install plugins on a self-hosted site

Questo repository è: https://github.com/merefield/discourse-onebox-assistant

https://github.com/merefield/discourse-onebox-assistant

Tutti i feedback sono benvenuti. Per favore :star: il progetto su GitHub se lo trovi utile.

41 Mi Piace

Scusa, non ho ancora avuto la possibilità di ricostruire il nostro sito con questo addon abilitato; lo farò stasera.

@WaitroseCarpark Non ho compilato nulla del genere. Ecco i passaggi che ho seguito:

Passaggio 1:

Passaggio 2:

Passaggio 3:

Passaggio 4:
completa il controllo “non sono un robot”

Passaggio 5:
aggiungi l’API oEmbed


firma il contratto

spunta verde per oEmbed

Passaggio 6:
recupera le credenziali da Impostazioni > Base

Passaggio 7:
ottiene un token per l’app

Con le credenziali ottenute sopra, esegui:

curl -X GET "https://graph.facebook.com/oauth/access_token?client_id={your-app-id}&client_secret={your-app-secret}&grant_type=client_credentials"

che restituisce:

{"access_token":"378384926723309|xxxxxx","token_type":"bearer"}

Testa il tuo token di autenticazione:

curl -X GET \ "https://graph.facebook.com/v9.0/instagram_oembed?url=https://www.instagram.com/p/fA9uwTtkSN/&access_token=xxxx..."

che restituisce:

{"version":"1.0","author_name":"diegoquinteiro","provider_name":"Instagram","provider_url":"https:\/\/www.instagram.com\/","type":"rich","width":658,"html":"\u003Cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-permalink=\"https:\/\/www.instagram.com\/p\/fA9uwTtkSN\/?utm_source=ig_embed&utm_campaign=loading\" ....

Aggiungi a Discourse ed è fatto!

6 Mi Piace

Wow…

Ok, ha funzionato…

Grazie, amico :bowing_man:

4 Mi Piace

Con il plugin installato? @Richie

1 Mi Piace

@znedw Grazie mille per aver preso il tempo di spiegare passo dopo passo (con le immagini! :heart_eyes:) come fare! Funziona alla perfezione, per quanto riesco a vedere!

3 Mi Piace

con il plugin installato?

1 Mi Piace

Ho notato solo ora che hai creato questo plugin… non lo stavo usando, scusa per aver dirottato la tua discussione.

PERÒ, lo proverò più tardi oggi se riesco a trovare un po’ di tempo libero…

2 Mi Piace

Ho dedicato circa mezz’ora stasera a provare tutte le possibili combinazioni, Robert @merefield

Seguendo i passaggi forniti da @znedw (grazie ancora, amico mio!), sembra che questo metodo funzioni sia con l’assistente Onebox abilitato, sia con esso disabilitato (tramite pannello di amministrazione, plugin, casella di controllo).

Non ho provato a ricostruire il mio Discourse con il plugin completamente rimosso.

Forse vale la pena notare che non ho l’opzione abilitata per “Usa sempre il crawl proxy indipendentemente dalla risposta diretta”.

Fuori tema, sembra che amazon.co.uk stia bloccando di nuovo tutti i tipi di richieste, sia direttamente (plugin disabilitato) sia tramite la pagina “prova” di embed.rocks, che va anche in timeout :roll_eyes:

3 Mi Piace

Grazie. Sì, mi aspettavo che funzionasse almeno senza l’opzione “usa sempre il proxy”.

2 Mi Piace

Parlando di Amazon, uso comunque manualmente i loro link affiliati, che non vengono bloccati.

L’oneboxing viola i loro Termini e Condizioni se sei un affiliato.

Consiglio vivamente di prendere in considerazione l’iscrizione al programma affiliati. Non si tratta di una fortuna, ma potrebbe coprire le spese del server e della posta.

1 Mi Piace

È possibile utilizzare questo plugin solo per i link di YouTube? Non riesco a capire quali impostazioni utilizzare a tal fine.
Inoltre, dove posso trovare maggiori informazioni sulle impostazioni disponibili?
Grazie!

No. Dovresti fare un fork e sviluppare ulteriormente il codice.

Basta copiarle esattamente come nell’OP. Avrai la tua chiave.

2 Mi Piace

Come posso verificare se il plugin funziona e le query stanno passando attraverso https://embed.rocks?
L’ho attivato, ma l’errore persiste.

Ho fatto dei test con questi video:

https://www.youtube.com/watch?v=_2wfBNUnOVY
https://www.youtube.com/watch?v=qLNhVC296YI
1 Mi Piace

La dashboard su embed.rocks dovrebbe iniziare a riflettere le tue chiamate (un contatore locale sarebbe un’ottima funzionalità, ma non è ancora stata implementata)

Entrambi quei link funzionano per me tramite il plugin.

Se non funziona, prova a verificare questa opzione:

image

2 Mi Piace

Tutte le impostazioni che hai sono uguali a quelle nell’immagine che hai inviato? Forse ho sbagliato a digitarle. C’è un modo per copiarle?

1 Mi Piace

Ho aggiunto il testo in chiaro all’OP per te.

3 Mi Piace

Grazie. Ho controllato e tutto era corretto. Non riesco a vedere alcuna chiamata nella pagina Dashboard, nella sezione Utilizzo. Significa che c’è qualcosa che non va? Il numero di chiamate dovrebbe essere sempre visibile?

1 Mi Piace

Dovresti porre questa domanda a embed.rocks. In futuro, potrei aggiungere ulteriori log al plugin, il che potrebbe essere d’aiuto. Potresti anche impostare il livello di log del tuo sito su ‘info’ per ottenere più informazioni, dato che sono già presenti chiamate a Rails.logger.info.

1 Mi Piace

Sì, sarebbe fantastico. Perché ora ho attivato il plugin e configurato le impostazioni, ma YouTube non funziona e non c’è alcuna attività nella Dashboard. Ho inviato un’email all’assistenza di embed.rocks.

1 Mi Piace

Questo plugin funzionerà correttamente se archivio i file su Amazon S3?

Ho ancora difficoltà e non riesco a farlo funzionare. I video non vengono caricati, solo i link. Inoltre, non ci sono informazioni nel pannello di Utilizzo di Embed.rocks.

Ho un server di test. I file sono archiviati localmente su di esso, ma anche in questo caso il plugin non funziona e non c’è alcuna attività nella dashboard di Utilizzo. Tuttavia, i video vengono salvati sul sito.

Quindi non riesco a capire come e cosa controllare per risolvere il problema.

Per favore, aiutatemi con le vostre idee.

2 Mi Piace