「Onebox Assistant」でプレビューを確実にクロール!

機能概要

以下のような結果を:

(サーバーがページソースを取得できず、ワンボックスを構築するために必要なタグを抽出できない場合)

以下のように変換します!

これは、対象サーバーが接続を拒否した場合に、ワンボックスがメタデータを検索するためのページソースを取得する代替パスを提供するものです。

ワンボックスがページソースを処理してメタデータを見つけ、ボックスをレンダリングする方法自体は変更されません。

これは、ターゲットページへの通常の HTTP 呼び出しを行う代わりに、サードパーティ API の詳細と認証情報を入力してページを取得できるようにするためのものです。

理由

私のサーバーが複数の商業サイトへのアクセスを禁止されており、ワンボックスのレンダリングに失敗するケースがありました。これは本質的に、メールサービスのように、サードパーティ API の信頼性を活用するものです。

コスト効率が良い理由

比較的安価な VPS を使用しても、IP アドレスやユーザーエージェントが何らかの理由で「ブラックリスト」に登録されていても、信頼性の高いワンボックス機能を維持できます。

不要なケース

ベータインストールのままでもすべてのターゲットコンテンツを正常にワンボックス化でき、すべてのユーザーが満足している場合

前提条件

適切なサードパーティ API のアカウントが必要です。

設定

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

上記の例では embed.rocks を使用していますが、将来的には他の API へのサポートが追加される可能性があります。現時点では、embed.rocks は比較的コストパフォーマンスが良いです。

onebox assistant api base query:   ?url=

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

onebox assistant api page source field:   source

また、embed.rocks から提供された API キーを入力する必要があります。

例を以下に示します。

この設定により、プリフェッチ(直接クロールが結果を返すか確認するため)を無視し、最初から API を使用することが可能になります。

image

デフォルトは OFF です。

TRUE に設定することを推奨します。

もちろんコストは増えますが、信頼性が低いためにプリフェッチが誤ったページにリダイレクトされるケースがあるため、より良い結果が得られることが多いです。

サポート情報

以前にリンクのワンボックスを試した場合、Discourse コアが結果をキャッシュすることに注意してください。

キャッシュを回避するには、ランダムなクエリ文字列を末尾に追加できます:https://mylink.com/todaynews?random=random

また、API が応答しているか以下のように確認できます:

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%%%"

呼び出すサイトの URL(url パラメータの値)を URL エンコードする必要があります。そのためには、このようなサイト(保証はしません)を使用してください。

既知の制限事項

  • 現時点では 1 つのプロバイダーのみでテストされており、他のプロバイダーではテストされていません。そのプロバイダーは https://embed.rocks です(私とは無関係です)。スポンサーがあれば、より多くのサービスのサポートを検討する用意があります。

  • モンキーパッチはメソッドレベルで行われています。これは必要な範囲よりも多くのコードをオーバーライドするため、コアのアップデート後にプラグインが破損するリスクが高まります。しかし、これをさらに最小化する方法はないのでしょうか?

プラグインのインストール方法

こちらのガイドをご覧ください:Install plugins on a self-hosted site

このリポジトリは:https://github.com/merefield/discourse-onebox-assistant

フィードバックを歓迎します。役立つと感じた場合は、GitHub で :star: してください。

「いいね!」 41

申し訳ありませんが、このアドオンを有効にしてサイトを再構築する機会がありませんでした。今夜に行います。

@WaitroseCarpark 私はそのような項目を入力していません。私が従った手順は以下の通りです:

ステップ 1:

ステップ 2:

ステップ 3:

ステップ 4:
ロボット認証チェックを行う

ステップ 5:
oEmbed API を追加


利用規約に同意

oEmbed の緑色のチェックマーク

ステップ 6:
設定 > 基本情報から認証情報を取得

ステップ 7:
アプリトークンを取得

上記の認証情報を使用して、以下のコマンドを実行します。

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

これにより以下が返されます。

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

認証トークンをテスト

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

これにより以下が返されます。

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

Discourse に追加すれば完了です!

「いいね!」 6

わあ…
よし、うまくいった…
ありがとうね :bowing_man:

「いいね!」 4

プラグインはインストール済みですか?@Richie

「いいね!」 1

@znedw 丁寧に、ステップバイステップ(写真付き!:heart_eyes:)で解説していただき、本当にありがとうございます!私の確認範囲では、完璧に動作しています!

「いいね!」 3

プラグインをインストール済みですか?

「いいね!」 1

実は今、あなたがこのプラグインを作成したことに気づきました…私は使っていなかったので、スレッドを奪ってしまい申し訳ありません。

ただ、もし時間が取れれば今日中に試してみます…

「いいね!」 2

今夜は約30分ほど、ありとあらゆる組み合わせを試してみました、Robert @merefield

@znedw が提供してくれた手順(改めてありがとう!)に従うと、この方法は Onebox Assistant を有効にした状態でも、無効にした状態(管理パネル → プラグイン → チェックボックス)でも動作するようです。

プラグインを完全に削除して Discourse を再構築したテストは行っていません。

参考までに、私は「直接レスポンスに関わらず、常にプロキシクロールを使用する」というオプションは有効にしていません。

話題がそれますが、amazon.co.uk が再びあらゆるリクエストをブロックしているようです。直接(プラグイン無効時)でも、embed.rocks の「試す」ページ経由でも、どちらもタイムアウトしてしまいます :roll_eyes:

「いいね!」 3

ありがとうございます。ええ、少なくとも「常にプロキシを使用する」設定なしでも動作すると思っていたのですが。

「いいね!」 2

Amazon の件ですが、私は常に手動でアフィリエイトリンクを使用しており、それらはブロックされません。

アフィリエイトである場合、ワンボックス化は利用規約に違反します。

アフィリエイト会員への参加を強くお勧めします。巨額の収益にはなりませんが、サーバー代やメール手数料を賄う程度にはなるかもしれません。

「いいね!」 1

このプラグインをYouTubeのリンクのみに使用することは可能でしょうか?そのための設定がわかりません。
また、利用可能な設定に関する詳細はどこで確認できますか?
ありがとうございます!

いいえ。コードをフォークして、さらに開発する必要があります。

OP(最初の投稿)に記載されているものをそのままコピーしてください。あなた専用のキーが取得できます。

「いいね!」 2

プラグインが正しく動作しているか、およびクエリが https://embed.rocks を通じて送信されているかを確認するにはどうすればよいでしょうか?
有効化しましたが、エラーは解消されません。

以下の動画でテストしました:

https://www.youtube.com/watch?v=_2wfBNUnOVY
https://www.youtube.com/watch?v=qLNhVC296YI
「いいね!」 1

embed.rocks のダッシュボードは、あなたの呼び出しを反映し始めるはずです(ローカルカウンターはあったら便利ですが、まだ実装されていません)。

両方のリンクは、プラグイン経由で私の環境で動作しています。

動作しない場合は、このオプションを確認してみてください。

image

「いいね!」 2

ご提示いただいた画像の設定と、ご自身の設定はすべて一致していますか?入力ミスがあったかもしれません。設定をコピーする機能はありますか?

「いいね!」 1

OP にプレーンテキストを追加しました。

「いいね!」 3

ありがとうございます。確認しましたが、すべて正常でした。ダッシュボードページの「使用状況」セクションに呼び出しが表示されません。何か問題があるということでしょうか?呼び出し回数は常に表示されるべきですか?

「いいね!」 1

その質問は embed.rocks に聞いてみてください。将来的に、プラグインに追加のログ機能を追加するかもしれません。既存の Rails.logger.info への呼び出しがあるため、サイトのログレベルを ‘info’ に設定して、より詳細な情報を取得できる可能性があります。

「いいね!」 1

はい、それは助かります。プラグインを有効化して設定を完了したのですが、YouTube が動作せず、ダッシュボードにアクティビティが表示されません。embed.rocks のサポートにメールを送信しました。

「いいね!」 1

このプラグインは、ファイルを Amazon S3 に保存する場合でも正常に動作しますか?
まだうまくいかず、動作させることができません。動画はアップロードされず、リンクのみが表示されます。また、Embed.rocks の使用状況パネルには情報が表示されません。

テストサーバーを用意しています。ファイルはローカルに保存されていますが、プラグインは動作せず、使用状況ダッシュボードにもアクティビティが表示されません。ただし、動画はサイトに保存されています。

どのように、何をチェックして問題を解決すればよいのかわかりません。

ご意見をお聞かせください。

「いいね!」 2