Skip to content
shieikanPublic

About

MIT-licensed self-hosted X public-post notification relay to Discord.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

PostRelay(仮称)

Xの新着を、いつものDiscordへ。

Xの公開投稿通知を、指定したDiscordチャンネルへ届けるセルフホストのOSSです。ブラウザーから、通知するアカウント・送信先・キーワード条件を設定し、送信結果を確認できます。

ソフトウェアは無料・MITライセンス。 自分のサーバーで動かして使います。サーバーの運用費は利用者の負担です。

試験版です。固定したLinux/amd64構成は起動・再起動とHigh/Critical検査を通過しました。Medium/Low等の検出と運用上の未確認事項は残ります。少人数の信頼できる環境で試し、安全性の確認範囲を確認してください。公開ホスティング向けの認定は行っていません。

こんな使い方ができます

使い方 通知先の例 設定の例
気になる研究者や開発者の投稿を、友達と共有する #ai-news 公開投稿者を指定し、キーワード条件は空欄にする
使っているツールの新機能・リリース告知を集める #release-news 通知本文に「リリース」「公開」のどちらかを含む場合に送る
イベントやコミュニティの募集情報を届ける #community 「募集」「開催」で絞り、「広告」を含む通知は除外する

チャンネル名は架空の例です。受け取った通知の本文で絞り込むため、すべての告知を集められる保証はありません。送信先はDiscordチャンネルのWebhook URLで指定します。

できること

  • XアカウントとDiscordチャンネルの組み合わせを、GUIで追加・編集する。
  • 含める言葉・除外する言葉で通知を絞る。通知の停止・再開もできる。
  • 送信履歴で結果を確認し、失敗した通知を再送する。
  • 指定したDiscordロールへメンションする。初期状態ではメンションしない。
  • 送信待ちを保存し、再起動後も送信を続ける。

Angelic-Angelを使っています

X通知の受信には、sh1maさんが作成したAngelic-Angelを使います。Angelic-AngelがXのWeb Push通知を受信し、PostRelayが公開投稿を確認してDiscordへ届けます。

Xの投稿通知 → Angelic-Angel → PostRelay → Discord
                              設定・履歴はブラウザーで操作

Angelic-Angelとは別の、独立したプロジェクトです。上流の固定版と修正パッチを使い、原作のMITライセンス表示を保持しています。固定版・変更内容は連携の説明、動作確認の範囲は検証記録を参照してください。

サーバーで使う

Linuxサーバーで、Python 3・Docker・Docker Composeを用意して実行します。

git clone https://github.com/shieikan/postrelay.git
cd postrelay
python3 scripts/configure-server.py
docker compose up --build -d --wait

このコマンドでGUIを起動できます。実際の配信には、続けてX通知元とDiscordの送信先を接続します。サーバー起動ガイドに、ブラウザーでのアクセス、登録キー、Xの初期接続、保存・停止・再開の手順をまとめています。Mac専用アプリやChromeの常時起動は必要ありません。

接続には、通知を受け取るXアカウントのCookieと、DiscordチャンネルのWebhook URLが必要です。X側では通知したい投稿者をフォローし、投稿通知をオンにしてください。GUIでユーザー名を追加するだけでは、Xの通知設定は変わりません。

接続せずにGUIを試す

Python 3.9以降があれば試せます。外部PythonパッケージやNode.jsは不要です。

git clone https://github.com/shieikan/postrelay.git
cd postrelay
python3 -m postrelay --mode demo

http://127.0.0.1:8765を開き、「デモを試す」を選んでください。架空の通知で、追加・編集・停止・再開・送信履歴を試せます。XやDiscordへアクセスせず、実際のDiscord Webhook URLも保存しません。

使う前に知っておきたいこと

  • 届くのはXが通知した公開投稿です。過去投稿の取得、全投稿の網羅、画像・動画の展開には対応していません。
  • 現在のAngelic-Angel連携では返信・リポストを区別できません。通知設定画面で説明を確認し、「投稿の種類で絞り込まずに通知する」にチェックしてください。DMや公開確認できない通知は転送しません。
  • Docker構成のX通知元は、1つのXアカウントと1つのPostRelayアカウントの組み合わせです。各利用者が個別にXを接続する公開ホスティングは提供していません。
  • CookieやWebhook URLは接続情報です。信頼できるサーバーへ保存し、Gitや公開ログへ含めないでください。Discordへ送る本文には、通知を受け取るXアカウントの名前やCookieを含めません。
  • 再送により同じ通知が重複する可能性があります。通知の網羅性や長期運転、公開環境の負荷・運用は未検証です。メール確認とパスワード再設定も未実装です。

詳細な通知元の仕様と利用・保存・再送の説明も確認してください。

ドキュメントと開発

開発用のテストは、リポジトリ内で次のように実行します。合成データとローカルHTTPを使い、実際のX・Discordへ送信しません。

python3 -B -m unittest discover -s tests -v

ライセンス

MIT。Angelic-Angelの著作権・ライセンス表示は連携の説明、GUIで使うTabler Iconsの表示はTHIRD_PARTY_LICENSES.mdにまとめています。X・Discordの公式プロジェクトではありません。ソフトウェアのライセンスとは別に、接続先サービスの利用条件も確認してください。

About

MIT-licensed self-hosted X public-post notification relay to Discord.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages