| 概要 | Discourse Member Applicationを使用すると、Discourseコミュニティに参加する前の見込みメンバーに対して、構造化された申請プロセスを実行できます。 | |
| リポジトリリンク | GitHub - R23DPrinting/discourse-member-application · GitHub | |
| インストールガイド | Discourseにプラグインをインストールする方法 |
discourse-member-application — プライベートコミュニティ向けの招待前申請システム
discourse-member-applicationを使用すると、Discourseコミュニティに参加する前の見込みメンバーに対して、構造化された申請プロセスを実行できます。申請者は/applyでカスタマイズ可能な公開フォームに記入し、管理者は提出内容を確認して承認または却下します。承認された申請者には、自動的にプライベート招待リンクが送信されます。
GitHub: GitHub - R23DPrinting/discourse-member-application · GitHub
背景
私はDiscourseの招待制モードを使用しているプライベートコミュニティを運営しています。メンバーシップの申請は手動で管理していました。Googleフォーム、スプレッドシート、招待リンクの手動コピー&ペーストです。機能はしていましたが、スケーラビリティに欠け、コミュニティ自体から切り離されているように感じていました。
招待前申請を処理できるDiscourseプラグインを探しましたが、見つかりませんでした。そこで、これを自作しました。
デモ
特徴
カスタマイズ可能な申請フォーム
フォームは、管理パネルの「フィールド」タブから完全に構築されます。コードは不要です。サポートされるフィールドタイプは、テキスト、テキストエリア、はい/いいえ、ラジオボタン、チェックボックスグループ、およびチェックボックスです。フィールドは、ラベル、ヒント、必須/オプション、有効/無効、および条件付き表示(他のフィールドが特定の値を持っている場合にのみフィールドを表示)をサポートします。
管理ダッシュボード
専用のプラグインページから、すべての申請を確認・管理します。ステータス(保留中/承認済み/却下済み/引き換え済み)でフィルタリングし、メールアドレスまたはユーザー名で検索し、大規模なリストをページングできます。完全な申請詳細の表示、プライベート管理ノートの追加、個別の承認または一括承認が可能です。
承認フロー
申請を承認すると、単一使用のDiscourse招待が生成され、申請者にメールで送信されます。却下すると、オプションのフィードバック付きでカスタマイズ可能な却下メールが送信されます。申請者が招待を引き換え、アカウントを作成すると、申請ステータスは自動的に「引き換え済み」に更新されます。承認されたメンバーは、オプションでDiscourseグループに自動的に追加できます。
分析
分析タブには、概要統計(総申請数、承認率、平均レビュー時間)、提出数と承認数の12週間の傾向チャート、および提出 → 承認 → 引き換え済みのコンバージョンファネルが表示されます。
管理者通知
新しい申請が提出されると、設定されたユーザー名(または空白の場合はすべてのアドミン)にプライベートメッセージが送信されます。
設定可能なUX
- フォーム上部の紹介テキスト(マークダウン対応)
- 提出後の
/apply/successのサクセスページ(メッセージはカスタマイズ可能、マークダウン対応) - ログインページおよびログイン必須のホームページの「参加申請」ボタン(トグル可能)
- 申請の有効期限 — 設定可能な日数の後、保留中の申請を自動的に却下
編集可能なメールテンプレート
提出確認メールと却下メールの両方は、管理 → カスタマイズ → メールテンプレートから編集できます。コードの変更は不要です。
セキュリティ
レート制限(IPあたり1時間あたり5件の提出)、重複検出(保留中/承認済みのメールまたはユーザー名での再提出をブロック、および既に登録されているメール/ユーザー名のブロック)、および単一使用の招待。
設定
インストール
/var/discourse/containers/app.ymlに以下を追加します。
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/R23DPrinting/discourse-member-application.git
その後、再ビルドします。
cd /var/discourse && ./launcher rebuild app
フォームの設定
インストール後、管理 → プラグイン → メンバー申請 → フィールドに移動して、申請フォームを作成します。
このプラグインには、これらのデフォルトフィールドが同梱されています(すべて編集または削除可能です)。
- 希望のユーザー名
- ご自身について簡単に教えてください
- 当コミュニティをどちらで知りましたか?
- 現在、他に類似のオンラインコミュニティに所属していますか? (はい/いいえ)
- はいの場合、どちらですか? (条件付き — 上記が「はい」の場合にのみ表示)
- ベンダー開示 (チェックボックスグループ)
- 誠実性の確認 (チェックボックス — システムフィールド、削除不可)
フィールドを追加ボタンを使用して新しいフィールドを作成します。上下の矢印を使用して順序を変更します。フィールドを条件付きにするには、それを編集し、「~の場合のみ表示」セクションを使用して親フィールドとトリガー値を設定します。
ワークフロー
- 見込みメンバーがサイトにアクセスし、「参加申請」をクリックします(または
/applyに直接移動します)。 - アカウントは不要で、フォームに記入して送信します。
- 管理者にプライベートメッセージ通知が届きます。
- 管理者は管理 → プラグイン → メンバー申請 → 申請で申請を確認します。
- 管理者が承認すると、申請者に単一使用リンク付きの招待メールが送信されます。
- 申請者が招待を引き換え、アカウントを作成すると、申請ステータスが引き換え済みに更新されます。
設定項目
| 名前 | 説明 |
|---|---|
member_application_enabled |
/applyでの申請フォームを有効/無効にします |
member_application_notify_usernames |
新しい提出があった場合にPMで通知する、コンマ区切りのユーザー名。空白のままにすると、すべてのアドミンに通知されます。 |
member_application_invite_group |
承認時に招待に追加するグループ名(スキップするには空白のままにします) |
member_application_expiry_days |
保留中の申請を自動的に却下する日数(0 = 無期限) |
member_application_expiry_notify |
自動有効期限切れの申請時に却下メールを送信します |
member_application_show_apply_button |
ログインページとログイン必須のホームページに「参加申請」ボタンを表示します |
member_application_apply_button_text |
「参加申請」ボタンのラベル(デフォルト:「参加申請」) |
member_application_intro_text |
申請フォームの上部に表示される紹介テキスト。マークダウン対応。空白のままにすると非表示になります。 |
member_application_success_message |
提出後の/apply/successページに表示されるメッセージ。マークダウン対応。 |
備考
- コミュニティに依存しない — すべてのデフォルトフィールドテキストは「フィールド」タブから設定可能です
- Discourseの
login_required/ 招待制モードで動作します - MITライセンス
- Discourse 2026.3.0でテスト済み
問題、PR、機能リクエストはGitHubで歓迎します。