自動サイトマップリンク

:information_source: 概要 サitemapをインポートし、「ウォッチドワード(Watched Words)」と同様に、ページタイトルをフォーラムリンクに自動的にマッピングできます。
:hammer_and_wrench: リポジトリリンク GitHub - multidimension-al/discourse-sitemap-autolink: Turn sitemaps into automatic links in discourse. · GitHub
:open_book: インストールガイド Discourseにプラグインをインストールする方法

機能

これは「ウォッチドワード」機能を使用する代替手段です。外部Webサイトのsitemapを取得してインポートし、単語の一致を自動的に割り当て、次にリベイク(再レンダリング)が行われる際にそれらをリンクします。「ウォッチドワード」の動作と非常に似ていますが、sitemapの取り込みとキーワードの抽出というステップが追加されています。

例えば、別個のWikiセクションを持つ技術フォーラムや、ニュースサイトやECストアに関連するフォーラムに適しています。

Wikiのsitemapを使用します:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url><loc>https://www.example.com/wiki/soldering-iron-maintenance</loc><lastmod>2026-07-02</lastmod></url>
  <url><loc>https://www.example.com/wiki/mosfet-driver-board</loc><lastmod>2026-07-05</lastmod></url>
  <url><loc>https://www.example.com/wiki/li-ion-battery-pack</loc><lastmod>2026-07-11</lastmod></url>
  <url><loc>https://www.example.com/wiki/pcb-etching</loc><lastmod>2026-07-19</lastmod></url>
  <url><loc>https://www.example.com/wiki/flux</loc><lastmod>2026-07-23</lastmod></url>
</urlset>

プラグインはsitemapをダウンロードし、ページからタイトルを取得し、一致する単語を生成します。これらの単語は、それらの単語を含む投稿が次にベイク(レンダリング)される際に自動的にリンクされます。また、プラグインはそれらの投稿を検索し、それらだけを自動的にリベイクします。

取得した <title> 保存されたタイトル
Soldering Iron Maintenance - Example Wiki Soldering Iron Maintenance
MOSFET Driver Board - Example Wiki MOSFET Driver Board
Li-Ion Battery Pack - Example Wiki Li-Ion Battery Pack
PCB Etching - Example Wiki PCB Etching
Flux - Example Wiki Flux

各タイトルは、安全策を施して一致するフレーズになります。

保存されたタイトル 生成されたフレーズ 状態
Soldering Iron Maintenance soldering iron maintenance(s) アクティブ
MOSFET Driver Board mosfet driver board(s) アクティブ
Li-Ion Battery Pack li-ion battery pack(s) アクティブ
PCB Etching pcb etching(s) アクティブ
Flux flux, fluxes レビュー待ち — 短い単一単語

その後、フレーズに一致する内容を含む投稿は、自動的にサイト内のWikiへのリンクが貼られます。投稿ごとに最大1回までです。

例えば、次のような投稿がある場合:

私はSoldering Iron Maintenanceページを読んでいたところ、そこに書かれている内容に問題があることに気づきました…

「Soldering Iron Maintenance」という単語は、sitemapに関連付けられたページにリンクされます。

設定

インストール後、多くの設定が可能であり、インポート中のsitemapや一致するフレーズのリストおよびURLを表示する専用のカタログページもあります。

インポート予定のsitemap XMLファイルを見つけ、Discourseインスタンスから制限なくそのサーバーに接続できることを確認します。共通のサイトプレフィックスまたはサフィックスを特定し、不要な部分で「Sitemap autolink title suffixes(sitemap自動リンクタイトルサフィックス)」を設定します。例えば、ページタイトルが「- Discourse Meta」で終わるものを一致させたくない場合は、それを設定します。また、サイト上で頻繁に出現する特定の単語をスキップするように指定することもできます。ほとんどの設定は有効にする必要はありませんが、タイミングや遅延、sitemapのチェックに充てる時間、各URL間の遅延時間を調整できます。

URLがインポートされると、lastmod(最終更新日)の時間が保存され、lastmodフィールドが変更されない限り再チェックは行われません。一致するフレーズを手動で割り当てたり削除したりでき、単一単語の一致については自動的に確認を求められます。

設定項目

リンク設定

設定 デフォルト 目的
sitemap_autolink_enabled off マスタースイッチ。
sitemap_autolink_max_links_per_destination_per_post 1 投稿ごとに各宛先にリンクできる回数(最初の言及が優先)。0 = 無制限。
sitemap_autolink_max_links_per_post 0 投稿ごとの自動リンクの総数。0 = 無制限。
sitemap_autolink_skip_quotes on 引用部分内ではリンクしない。
sitemap_autolink_include_private_messages off プライベートメッセージでもリンクする。
sitemap_autolink_excluded_categories これらのカテゴリ(サブカテゴリを含む)ではリンクしない。
sitemap_autolink_enabled_types – (すべて) リンクを許可するコンテンツの種類を制限。
sitemap_autolink_type_priority manual 衝突時の優先順位、強い順に並べる。リストされていない種類は最後にランクされる。

カタログとフレーズ

設定 デフォルト 目的
sitemap_autolink_sources 取り込むsitemap(1エントリあたり1つ):https://example.com/sitemap.xml,content_type。インデックスは自動的に拡張される。
sitemap_autolink_manual_mappings 手動のphrase,url,typeルール。相対URLはフォーラムに対して解決される。
sitemap_autolink_min_phrase_length 5 より短い生成フレーズはレビューに送られる。
sitemap_autolink_min_phrase_words 2 単語数が少ない生成フレーズはレビューに送られる(文字+数字のモデル番号トークンは除外)。
sitemap_autolink_generate_plurals on 単純な複数形バリエーションも生成する。
sitemap_autolink_title_suffixes 取得したタイトルの末尾から削除する定型文。エントリに \ を含めることはできない。
sitemap_autolink_excluded_url_patterns 一致するsitemap URLは取り込まない(部分一致または * ワイルドカード、例:*/checkout*)。
sitemap_autolink_excluded_terms 絶対に自動生成してはいけない正確なフレーズ。手動エイリアスが優先される。

同期

設定 デフォルト 目的
sitemap_autolink_sync_enabled off 毎日のsitemap→カタログジョブを実行する。
sitemap_autolink_page_fetch_delay_ms 500 タイトル取得間のマナーポーズ(新規/変更されたURLのみ)。
sitemap_autolink_sync_time_budget_minutes 30 1回の実行あたりの最大分。実行は「部分的(Partial)」として正常に終了し、次回の実行で残りの作業が再開される。
sitemap_autolink_fetch_host_rewrites 内部ターゲットを介して公開ホストを取得する(下記参照)。

リベイク

設定 デフォルト 目的
sitemap_autolink_auto_rebake_on_changes off 同期後、フレーズの変更の影響を受ける可能性のある投稿をリベイクする — 同期ごとに1つのバッチ処理バックグラウンドジョブ。
sitemap_autolink_auto_rebake_max_phrases 50 1回の同期でこの数より多くのフレーズが変更された場合、自動リベイクを完全にスキップする(初期インポートでフォーラム全体のほぼ全てのリベイクがトリガーされないようにするため)。
sitemap_autolink_auto_rebake_max_posts 500 1回の同期のリベイク波が影響を与える投稿の最大数。
sitemap_autolink_max_rebakes_per_job_run 200 ジョブ実行あたりのバッチサイズ。大規模な波は1分間隔のフォローアップジョブで継続される。

分析

設定 デフォルト 目的
sitemap_autolink_analytics_enabled on 生成されたリンクがクリックされたとき、gtagまたはdataLayerを介してGoogle Analyticsにinternal_auto_link_clickイベントを送信。どちらも存在しない場合は何もしない。

私はこれをメインウェブサイトとDiscourseフォーラムをリンクするのに使用しています。つまり、Wikiやショップのトピックが自動的にリンクを生成できます。

誰かが特定の製品について話している場合、あなたが割り当てたキーワードや製品名自体を言及する限り、リンクはベイク時に自動的に追加されます。

同様に、Wikiサイトを持っている場合、Wikiのページタイトルを取得して自動的にリンクできます。例えば、歴史サイトを持っていて、誰かが「1812年の戦争」について言及し、それが同名のWiki記事と一致する場合、自動的にリンクされます。

楽しんでください!