¡Confía en que "Onebox Assistant" rastree esas vistas previas de manera fiable!

Qué hace

Convierte este tipo de resultado:

(donde tu servidor no ha podido recuperar el código fuente de la página y, por lo tanto, no puede extraer las etiquetas necesarias para construir el onebox)

¡En esto!:

Simplemente proporciona una ruta alternativa para que el onebox obtenga su código fuente de la página con el que buscar metadatos cuando el servidor de destino rechaza tu conexión.

No cambia nada sobre cómo el onebox procesa el código fuente de la página para encontrar los metadatos y renderizar el cuadro.

Su propósito es permitirte ingresar los detalles y las credenciales de una API de terceros para recuperar la página en lugar de realizar una llamada HTTP normal directamente a la página de destino.

Por qué

Descubrí que se me prohibía el acceso a varios sitios comerciales desde mis servidores, por lo que los oneboxes fallaban al renderizarse. Esto ayuda esencialmente a aprovechar la confiabilidad de la API de terceros, algo así como un servicio de correo.

Por qué es rentable

Puedes usar un VPS relativamente económico y aún así obtener una funcionalidad de oneboxing confiable, incluso si tu IP o tu agente de usuario están de alguna manera en una “lista negra”.

No lo necesitas si

Estás logrando hacer oneboxing de todo tu contenido objetivo correctamente con la instalación estándar y todos los usuarios están satisfechos.

Requisitos previos

Necesitas una cuenta con una API de terceros adecuada.

Configuración

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

El ejemplo anterior utiliza embed.rocks, pero en el futuro podría agregarse compatibilidad con otras API; sin embargo, embed.rocks es relativamente buena opción en este momento.

onebox assistant api base query:   ?url=

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

onebox assistant api page source field:   source

También necesitarás ingresar tu clave API proporcionada por embed.rocks.

Ver ejemplo a continuación

Esta configuración te permite ignorar la precarga (para verificar si el rastreo directo devuelve un resultado) y usar la API desde el principio.

image
por defecto DESACTIVADO

Recomiendo establecer esto en VERDADERO.

Por supuesto, esto es más costoso, pero a menudo produce mejores resultados, ya que hay algunos casos en los que la precarga se redirige a la página incorrecta porque no eres considerado confiable.

Información de soporte

Recuerda, si has intentado anteriormente hacer oneboxing de un enlace, el núcleo de Discourse almacenará el resultado en caché.

Puedes agregar una cadena de consulta aleatoria al final para superar la caché: https://mylink.com/todaynews?random=random

También puedes verificar que la API esté respondiendo, por ejemplo:

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: %%%tu-clave-api%%%"

Necesitas codificar en URL el sitio al que estás llamando (el valor del parámetro url) usando algún sitio como este (¡no avalado!).

Limitaciones conocidas

  • Solo ha sido probado con un proveedor en este momento y no se ha probado en otros. Ese proveedor es https://embed.rocks (con el cual no tengo ninguna afiliación). Estoy dispuesto a considerar el soporte de más servicios si el trabajo está patrocinado.

  • El parcheo de monkey se realiza a nivel de método. Esto anula más código del necesario, lo que aumenta el riesgo de que el plugin se rompa después de una actualización del núcleo. Sin embargo, ¿no creo que haya una manera de minimizar esto aún más?

Cómo instalar plugins

Consulta la guía aquí: Install plugins on a self-hosted site

Este repositorio es: https://github.com/merefield/discourse-onebox-assistant

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

Toda retroalimentación es bienvenido. Por favor :star: en GitHub si lo encuentras útil.

41 Me gusta

Sorry I haven’t had a chance to rebuild our site with this addon enabled, I’ll do so tonight.

@WaitroseCarpark I didn’t fill out anything like that, steps I followed are:

Step 1:

Step 2:

Step 3:

Step 4:
do the robot check

Step 5:
add oEmbed api


sign your life away
image
green tick for oEmbed
image

Step 6:
get creds from Settings > Basic

Step 7:
get an app token

with the creds from above, run

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

which returns

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

test your auth token

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

which returns

{"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\" ....

Add to discourse and you’re done!

6 Me gusta

Wow…

Ok, that worked…

Thanks man :bowing_man:

4 Me gusta

With the plugin installed? @Richie

1 me gusta

@znedw Thank you so much for taking the time to explain step by step (with pictures! :heart_eyes:) how to do this! Works a charm as far as I can see!

3 Me gusta

with the plugin installed?

1 me gusta

I only actually noticed you’ve made this plugin just now…I was not using it, sorry for hijacking your thread.

BUT, I will try it out later today if I can find some spare time…

2 Me gusta

I spent half an hour or so this evening trying all manner of possible permutations, Robert @merefield

Following the steps provided by @znedw (thanks again my man!) it would appear that this method works both with the Onebox Assistant enabled, and with it disabled too (via admin panel, plugins, checkbox).

I’ve not tried rebuilding my Discourse with the plugin completely removed.

Perhaps worth a note, I do not have the option enabled for “Always use the proxy crawl regardless of direct response”.

Off topic, it would appear amazon.co.uk are blocking all manner of requests again, both directly (plugin disabled) and also via embed.rocks “try it” page, which also times out :roll_eyes:

3 Me gusta

Thanks. Yes I expected it to work at least without the “always use the proxy”

2 Me gusta

On the subject of Amazon I always use their affiliate links anyway, manually, which are not blocked.

Oneboxing breaches their T&Cs if you are an affiliate.

Highly recommend you consider the affiliate membership. It doesn’t net a fortune but may pay for the server and mail fees.

1 me gusta

¿Es posible usar este plugin solo para enlaces de YouTube? No entiendo qué configuraciones debo usar para ello.

Además, ¿dónde puedo encontrar más información sobre las configuraciones posibles?

¡Gracias!

No. Tendrías que hacer un fork y desarrollar el código más a fondo.

Simplemente copia las del OP exactamente. Tendrás tu propia clave.

2 Me gusta

¿Cómo puedo verificar si el plugin está funcionando y si las consultas se están enviando a https://embed.rocks?
Lo activé, pero el error persiste.

He probado con estos videos:

https://www.youtube.com/watch?v=_2wfBNUnOVY
https://www.youtube.com/watch?v=qLNhVC296YI
1 me gusta

El panel de control en embed.rocks debería comenzar a reflejar tus llamadas (un contador local sería un buen añadido, pero aún no hemos implementado uno).

Ambos enlaces funcionan para mí a través del plugin.

Si no funciona, intenta verificar esta opción:

image

2 Me gusta

¿Son todos los ajustes que tienes iguales a los de la imagen que enviaste? Quizás cometí un error al escribirlos. ¿Hay alguna opción para copiarlos?

1 me gusta

He añadido el texto plano a la publicación original para ti.

3 Me gusta

Gracias. Lo verifiqué y todo estaba correcto. No puedo ver ninguna llamada en la página del Panel de control, en la sección de Uso. ¿Significa eso que algo está mal? ¿El número de llamadas debe ser siempre visible?

1 me gusta

Tendrías que hacerle esa pregunta a embed.rocks. En algún momento podría agregar un registro adicional al plugin, lo cual podría ayudar. Sin embargo, podrías configurar tu sitio para que registre al nivel ‘info’ y obtener más información, ya que ya existen llamadas a Rails.logger.info.

1 me gusta

Sí, eso sería genial. Porque ahora he activado el plugin y configurado la configuración, pero YouTube no funciona y no hay actividad en el panel de control. He enviado un correo electrónico al soporte de embed.rocks.

1 me gusta

¿Funcionará correctamente este plugin si almaceno los archivos en Amazon S3?

Todavía tengo dificultades y no logro que funcione. Los videos no se suben, solo los enlaces. Además, no hay ninguna información en el panel de uso de Embed.rocks.

Tengo un servidor de pruebas. Los archivos se almacenan localmente en él, pero el plugin tampoco funciona y no hay actividad en el panel de uso. Sin embargo, los videos se guardan en el sitio.

Así que no entiendo cómo ni qué verificar para solucionar el problema.

Por favor, ayúdenme con sus ideas.

2 Me gusta