Assistente Onebox, rastreie essas visualizações de forma confiável!

O que faz

Transforma esse tipo de resultado:

(onde seu servidor falhou ao recuperar o código-fonte da página e, portanto, não pode extrair as tags necessárias para criar o onebox)

Nisso aqui!:

Ele simplesmente fornece um caminho alternativo para o onebox obter o código-fonte da página para buscar metadados quando o servidor de destino recusa sua conexão.

Ele não altera nada sobre como o onebox processa o código-fonte da página para encontrar os metadados e renderizar a caixa.

Ele foi criado para permitir que você insira os detalhes e credenciais de uma API de terceiros para recuperar a página em vez de fazer uma chamada HTTP normal diretamente para a página de destino.

Por que

Descobri que meus servidores estavam sendo impedidos de acessar vários sites comerciais, fazendo com que os oneboxes falhassem na renderização. Isso essencialmente ajuda a aproveitar a confiabilidade da API de terceiros, um pouco como um serviço de e-mail.

Por que é econômico

Você pode usar um VPS relativamente barato e ainda obter funcionalidade confiável de one-boxing, mesmo que seu IP ou user agent esteja de alguma forma “na lista negra”.

Você não precisa disso se

Você já consegue fazer onebox de todo o seu conteúdo de destino corretamente com a instalação padrão e todos os usuários estão satisfeitos.

Pré-requisitos

Você precisa de uma conta com uma API de terceiros adequada.

Configurações

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

O exemplo acima usa o embed.rocks, mas no futuro o suporte a outras APIs pode ser adicionado; no entanto, o embed.rocks oferece bom custo-benefício atualmente.

onebox assistant api base query:   ?url=

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

onebox assistant api page source field:   source

Você também precisará inserir sua chave de API fornecida pelo embed.rocks.

Veja o exemplo abaixo:

Essa configuração permite ignorar o prefetch (para verificar se a raspagem direta retorna um resultado) e usar a API desde o início.

image
padrão DESATIVADO

Recomendo definir isso como VERDADEIRO.

Isso é mais caro, é claro, mas frequentemente produz melhores resultados, pois há casos em que o prefetch é redirecionado para a página errada porque você não é confiável.

Informações de suporte

Lembre-se: se você já tentou fazer onebox de um link anteriormente, o núcleo do Discourse armazenará o resultado em cache.

Você pode adicionar uma string de consulta aleatória no final para contornar o cache: https://mylink.com/todaynews?random=random

Você também pode verificar se a API está respondendo, por exemplo:

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: %%%sua-chave-api%%%"

Você precisa codificar em URL o site que está chamando (o valor do parâmetro url) usando algum site como este (não garantimos a confiabilidade!).

Limitações conhecidas

  • Foi testado apenas com um provedor no momento e não foi testado em outros. Esse provedor é https://embed.rocks (com quem não tenho afiliação). Estou disposto a considerar o suporte a mais serviços se o trabalho for patrocinado.

  • A modificação (monkey patching) é feita no nível do método. Isso substitui mais código do que o necessário, o que aumenta o risco de o plugin quebrar após uma atualização do núcleo. No entanto, não acho que haja uma maneira de minimizar isso ainda mais?

Como instalar plugins

Veja o guia aqui: Install plugins on a self-hosted site

Este repositório é: https://github.com/merefield/discourse-onebox-assistant

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

Todos os feedbacks são bem-vindos. Por favor, dê uma :star: no GitHub se achar útil.

41 curtidas

Desculpe, ainda não tive a chance de reconstruir nosso site com este addon ativado. Farei isso hoje à noite.

@WaitroseCarpark Eu não preenchi nada assim. Os passos que segui foram:

Passo 1:

Passo 2:

Passo 3:

Passo 4:
faça a verificação do robô

Passo 5:
adicione a API oEmbed


assine sua vida

marca de verificação verde para oEmbed

Passo 6:
pegue as credenciais em Configurações > Básico

Passo 7:
obtenha um token de aplicativo

com as credenciais acima, execute

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

que retorna

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

teste seu token de autenticação

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

que retorna

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

Adicione ao Discourse e você estará pronto!

6 curtidas

Uau…

Ok, funcionou…

Obrigado, cara :bowing_man:

4 curtidas

Com o plugin instalado? @Richie

1 curtida

@znedw Muito obrigado por dedicar seu tempo a explicar passo a passo (com fotos! :heart_eyes:) como fazer isso! Funciona perfeitamente, pelo que pude ver!

3 curtidas

com o plugin instalado?

1 curtida

Só percebi agora que você criou este plugin… Eu não estava usando, desculpe por desviar o foco do seu tópico.

MAS, vou testá-lo mais tarde hoje, se conseguir encontrar um tempo livre…

2 curtidas

Hoje à noite, passei cerca de meia hora testando todas as possíveis combinações, Robert @merefield.

Seguindo as etapas fornecidas por @znedw (obrigado novamente, meu parceiro!), parece que esse método funciona tanto com o Onebox Assistant habilitado quanto desabilitado (via painel administrativo, plugins, caixa de seleção).

Ainda não tentei reconstruir meu Discourse com o plugin completamente removido.

Talvez valha a pena mencionar: não tenho a opção “Usar sempre a raspagem por proxy, independentemente da resposta direta” ativada.

Off-topic: parece que o amazon.co.uk está bloqueando todo tipo de solicitação novamente, tanto diretamente (com o plugin desabilitado) quanto através da página de “teste” do embed.rocks, que também está com timeout :roll_eyes:

3 curtidas

Obrigado. Sim, eu esperava que funcionasse pelo menos sem o “sempre usar o proxy”.

2 curtidas

Sobre a Amazon, eu sempre uso manualmente os links de afiliados deles, que não são bloqueados.

O oneboxing viola os Termos e Condições se você for um afiliado.

Recomendo fortemente que considere a adesão ao programa de afiliados. Não gera uma fortuna, mas pode pagar as taxas do servidor e do e-mail.

1 curtida

É possível usar este plugin apenas para links do YouTube? Não consigo entender quais configurações devo usar para isso.
E também, onde posso encontrar mais informações sobre as configurações disponíveis?
Obrigado!

Não. Você precisaria fazer um fork e desenvolver o código ainda mais.

Basta copiar exatamente as do OP. Você terá sua própria chave.

2 curtidas

Como posso verificar se o plugin está funcionando e se as consultas estão sendo enviadas para https://embed.rocks?
Ativei, mas o erro persiste.

Testei com estes vídeos:

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

O painel no embed.rocks deve começar a refletir suas chamadas (um contador local seria um recurso desejável, mas ainda não implementamos um)

Ambos os links funcionam para mim por meio do plugin.

Se não estiver funcionando, tente verificar esta opção:

image

2 curtidas

Todas as configurações que você tem são iguais às da imagem que você enviou? Talvez eu tenha cometido um erro ao digitá-las. Há alguma opção para copiá-las?

1 curtida

Adicionei o texto simples ao OP para você.

3 curtidas

Obrigado. Verifiquei e tudo estava correto. Não consigo ver nenhuma chamada na página do Painel, na seção de Uso. Isso significa que algo está errado? O número de chamadas deve ser sempre visível?

1 curtida

Você precisaria fazer essa pergunta ao embed.rocks. Em algum momento, posso adicionar logs adicionais ao plugin, o que pode ajudar. Você também pode configurar seu site para o nível de log ‘info’ para obter mais informações, já que já existem chamadas para Rails.logger.info.

1 curtida

Sim, isso seria ótimo. Porque agora ativei o plugin e configurei as definições, mas o YouTube não está funcionando e não há nenhuma atividade no Painel. Enviei um e-mail para o suporte do embed.rocks.

1 curtida

Esse plugin funcionará corretamente se eu armazenar arquivos no Amazon S3?

Ainda estou com dificuldades e não consigo fazê-lo funcionar. Os vídeos não são enviados — apenas os links. E não há nenhuma informação no Painel de Uso em Embed.rocks.

Tenho um servidor de testes. Os arquivos são armazenados localmente nele. Mas o plugin também não funciona e não há atividade no painel de Uso. No entanto, os vídeos são salvos no site.

Então, não consigo entender como e o que verificar para resolver o problema.

Por favor, ajude com suas sugestões.

2 curtidas