このガイドでは、Discourse での onebox の設定とトラブルシューティングの方法について説明します。管理者設定、onebox の仕組み、一般的な問題の解決手順を網羅しています。
必要なユーザーレベル:管理者
Onebox は、ユーザーが投稿内で作成できるリッチなリンクプレビューです。ユーザーはこれらのプレビューを簡単に生成できますが、サイト管理者には追加の制御機能があり、リンクが期待通りにプレビューされない場合にトラブルシューティングを行う必要がある場合があります。
管理者設定
Onebox 設定を管理するには:
- 管理パネルに移動します
- サイト設定セクションに移動します
- 「onebox」を検索します
以下に、onebox 関連の設定一覧が表示されます:
注目すべき設定には以下が含まれます:
post onebox maxlength: onebox に含めるテキストの量を制御しますmax oneboxes per post: 1 つの投稿に表示可能な onebox の数を制限します(デフォルト:50)enable inline onebox on all domains: すべてのドメインでインライン onebox を有効にし、プレーンな URL をリンク付きタイトルに変換します(例:https://en.wikipedia.org/wiki/Fun_(band)が「Fun (band) - Wikipedia」となる)。これはデフォルトで有効です。blocked onebox domains: 特定のドメインの onebox を無効にできますblock onebox on redirect: 有効にすると、異なる宛先にリダイレクトする URL の onebox を防止します
onebox の仕組み
投稿にリンクが含まれると、Discourse は宛先ページにアクセスし、Open Graph または oEmbed タグを検索します。これには以下が含まれます:
- サイトアドレス
- タイトル
- 代表画像
- サイトアイコン(またはファビコン)
- 説明(必須)
- 製品価格(該当する場合)
Discourse は、説明タグが存在し、ページを要約するのに十分なテキストを含んでいることを要求します。これが不足している場合、対象リンクは onebox されません。
以下は、サイトタイトル、代表画像、アイコン、説明を示す https://discourse.org の onebox の例です:
トラブルシューティング
onebox が期待通りに機能しない場合は、以下の手順を試してください:
-
iFramely を使用してサイトをテストします:
- リンクを貼り付け、正しい OpenGraph または oEmbed メタタグを使用しているか確認します
- 説明テキストが存在し、適切であることを確認します
-
onebox リクエストがブロックされていないか確認します:
- 一部のホストは「不明な」ユーザーエージェントをブロックする場合があります
- 対象ウェブサイトが Discourse のユーザーエージェントをブロックしていないか確認します
-
内部リンクが onebox として表示されない場合:
- リンクがセキュアなカテゴリにないことを確認します
- セキュリティ上の理由から、内部リンクは公開カテゴリ内または同じカテゴリ内でのみ onebox されます
Rails コンソールから、テスト中に メソッド を呼び出すことで、onebox を明示的に無効化または取得できます:
[1] pry(main)> Oneboxer.invalidate(url)
=> 0
[2] pry(main)> Oneboxer.onebox(url)
=> "<aside class=\"onebox …(elided)\"
[3] pry(main)> InlineOneboxer.invalidate(url)
=> 0
[4] pry(main)> InlineOneboxer.lookup(url)
=> {url: "https://example.com", title: "Example Page Title"}
