機能概要
以下のような結果を:
(サーバーがページソースを取得できず、ワンボックスを構築するために必要なタグを抽出できない場合)
以下のように変換します!
これは、対象サーバーが接続を拒否した場合に、ワンボックスがメタデータを検索するためのページソースを取得する代替パスを提供するものです。
ワンボックスがページソースを処理してメタデータを見つけ、ボックスをレンダリングする方法自体は変更されません。
これは、ターゲットページへの通常の 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 を使用することが可能になります。

デフォルトは 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 で
してください。











