与えられたタイムスタンプなどの基準に基づいてトピックを移動するシステムの作成

AI Botインテグレーションについては、Discourse AI - AI bot - Documentation / Site Management - Discourse Metaを参照してください。

追加の注記/編集: 私はセルフホストしています
長い話は読みたくない方向けの要約:AI Botを使用して、「有効期限」に基づいてトピックを移動させたいと考えており、投稿のタイムスタンプを確認します。

そのため、Discourseのユースケースに合わせて管理を改善する方法について考えてきました。私はRobloxゲームのコミュニティを運営しており、DiscourseをモデレーションチームがゲームのモデレーションアクションやDiscordアクションのロギング作業を行うために利用しています。

一時的なBANなど、いくつかのカテゴリがあります。ログを作成する際、それは投稿として行われ、モデレーターがフォーマットに入力し、実行されたアクションに関連するタイムスタンプを挿入します。例えば、7日間のBANの場合、Duration: [date-range from=2026-03-01 to=2026-03-08 timezone=America/New_York] (ここにタイムスタンプがあります) のようになります。

管理の観点から、BANが終了した後に備えて「アーカイブ済みBAN」カテゴリを追加しました。以前は、ご想像の通り、毎週BANを確認するという手作業で行っていました。

昨年の秋、Discourse APIを使用してローカルで実行されるPythonユーティリティを作成しました。これはメニューを開き、どのBANセクションをアーカイブするかを選択させ、各投稿の有効なタイムスタンプを確認し、その時間が経過したかどうかを処理します。これはうまく機能していますが、さらに改善したいと考えていました…

そして、ここにいます…まだここにいてくれることを願っています。おそらくこれを大幅に要約できますが、まあ、Discourseは会話ですからね?

モデレーションチーム、特に最も上級のメンバーが、自分のマシンにVSをインストールしたり、何もダウンロードしたりすることなく、このタスクを実行できるようにしたいと考えています。そこで、プラグインバージョンを作成しようと試みましたが、正直なところ、AIを使って達成しようとしました。ドキュメントを確認したり、プロセスに従うように指示したりしましたが、うまくいきませんでした。

プラグインによるインテグレーションでの問題は、インターフェースに(Pythonバージョンほどカラフルではないが、理解できるような)視覚的なインターフェースを統合する方法を理解できなかった(またはAIが理解できなかった)ことで停滞しました。例えば、「アーカイブプロセスを実行」と書かれた大きなボタンを設置し、有効な日付やエラーなどがないものをフラグ付けするためにモデレーションAPI(?)を利用するなどです。

…というわけで、長いバージョンの終わりにここにいます…他の人間からしか得られないインプットが欲しいのです。だからここにいます。

  • AI Botにはこの機能がありますか?
  • もしなければ、試すべき妥当な解決策は何ですか?
  • プラグインの道筋で何が間違っていたのでしょうか?それが単に機能しなかったり、面倒だったりした原因は何ですか?(このコミュニティで初心者の頃に誰もが犯した一般的な間違いなど)

あなたの意見を尊重します。ありがとうございます。

「いいね!」 1

これらすべてにAIに頼る必要はないと思います。

これらのアクティブなBANトピックを作成する際に、一定時間が経過した後に正しいカテゴリに移動するためのトピックタイマーも作成してはいかがでしょうか。そうすれば自動化されます。

それと…Discourseのコアから離れる理由は何ですか?BANされたユーザーのログはすでにあります。信頼できるユーザーにデータエクスプローラーのクエリへのアクセス権を与えて履歴を確認させるのはどうでしょうか?

そのディスコースは、BANを記録するために使用されます…それが唯一の目的です。フォーラムにプレイヤーはいません…ゲーム/ディスコードのモデレーターだけです。BANの期間は様々なので、トピックタイマーは機能しないと思います。Discourse Coreから遠ざかっているというよりは、特定のユースケースのためにそれを活用しています。(画像を参照)

「いいね!」 1

興味深いユースケースですね!

いくつか変更を加えることで、より良い結果が得られると思います。

バン(禁止措置)の有効期限を専用のカスタムトピックフィールドに移動する

これにより、新しいトピックが作成されるたびにすべてのバンに有効期限があることを検証でき、有効期限切れのバンを照会するのが非常に簡単になります。

また、特定のトピックのデータへのプログラムによるアクセスも提供する、Introducing Experimental Form Templates(実験的なフォームテンプレートの紹介)を使用することもできます。

/filter カスタムフィルターの追加

カスタムフィールドまたはフォームテンプレートを使用すると、有効期限切れのバン、アーカイブされたバンなど、新しい /filter フィルターを追加するのが簡単になります。これらはモデレーターの主要な作業リストとなり、使いやすさのためにサイドバーに追加できます。

バン全体を自動化する?

最後のピースは、トピックが作成されるたびにRobloxとDiscordで自動的にバンを作成し、バンが期限切れになったときに自動的に削除するようにDiscourseを設定することです。

これは、定期的なジョブとAPIアクセスを使用すれば比較的簡単に実行できます。


Set up a local Discourse Development Environment(ローカルのDiscourse開発環境を設定する)を設定している場合は、私のこの投稿をClaude Codeの仕様として渡せば、数分で構築できます。

「いいね!」 3

それは非常に興味深い見解ですね!確認してみます!特にカスタムフィールドとテンプレートについて。ご意見ありがとうございます!

私のユースケースが皆さんを惹きつけているようなので、もう少し背景を説明します…そして、将来の他のゲーミングコミュニティのためにアイデアを提供したいと思っています…

確かに、私はかなりユニークなユースケースを持っています。長年Trelloを使用していましたが、彼らが課し始めた制限のために、非常にずさんになっていました。チーム全体を収容するために10のワークスペースを使用する必要がありました。(有料機能へのアクセスレベルの制限も始まりましたし)

そのため、ビジネスモデルの変更との継続的な闘いの結果、セルフホスト型ソリューションへの移行の方がはるかに簡単でした。他のカンバン形式のソフトウェアも試しましたが、Discourseの過去の試用経験と、それがオープンソースであり、バックエンドによりモダンなプラクティスを使用しているという事実から、これを使わずにはいられませんでした。そして、このプラットフォーム全体の達成と成長には常に驚かされています。9月で移行から2周年を迎え、6,000以上のトピックを作成しました!

私が模倣しようとしていた機能は、その時代のものに似ており、特定のトリガー(私たちにとっては終了日でした)でリストから別のリストに移動する自動化でした。残念ながら、それはデモさえできなくなったプレミアム機能です。

image

調査を終えたら、特に同様のユースケースのアイデアを求めている他の人のために、何をしたか、どうなったかをお知らせするために戻ってきます!

「いいね!」 2

プラグインが動作すれば、Kanban Board のおかげで以前のように視覚化できるようになるはずです。

「いいね!」 2

さて、また戻ってきました…かなりの進捗がありました。これに約6.5時間費やしました。

ご提案に基づいたいくつかのコンセプトから始めましたが、いくつかの欠点があり、最終的により別の方向に向かいましたが、コンセプトとしてはまだ素晴らしいものだと願っています!

当初はテンプレートフォームを使用するつもりでしたが、各インライン回答間のパディングがあまり気に入らず、現在のセットのようなフォーマットを探していました。また、すべてを手動でコードに記述しなければならないことにも不満があり、それが私を遠ざけました。

PythonスクリプトをDiscourseプラグインに移植しました(注:移植の大部分にはAIが使用されました)。開始時にいくつかの問題があり、動作するようになった今でも微調整が必要です。デザインは少しぎこちなく、おそらく他にもいくつかの細かい問題があるでしょう。Rubyにはあまり詳しくないので、そちらのレビューはベストエフォートです。

それで、プラグインについてですが…

コンセプト/目的:特定のトリガーによってトピックをあるカテゴリから別のカテゴリへより速く移動する機能。

手動と自動(スケジュール済み)の2つの動作モードがあります。
トリガーを構築するには、移動元/移動先カテゴリを選択し、タグなどの詳細な仕様で絞り込むことができます。最終的な呼び出し/実際のトリガーは、絞り込みフィルターを除くと、終了時刻/日付スタンプ(または開始)、クローズ、解決済み、アーカイブ、の現在のトリガーセットを起動します。

トピックの移動に関するログ機能もあり、ログが利用可能である期間を決定できます。

この返信の時点では、クローズ、解決済み、またはアーカイブのトリガーを完全にテストしていません。
もう少し整理して、すべてが機能することを確認するためにさらにテストした後、プラグインカテゴリで他の人がアクセスできるように喜んで公開しますが、今のところはGitHubにのみ公開しておきます。また、誰でも実行できないように、権限をもう一度確認する必要があるかもしれません。あるいは、それを切り替えられるように具体的に許可する必要があります。

ご意見をお聞かせください。あるいは、私がこれをやっているのは完全にどうかしていると思っても構いません。

ソース:https://github.com/jdc20181/DiscourseTopicMigrationTool