「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