MastodonのタイムラインにNSFWな画像が流れてきたら警告するBotを作った

はじめに

以前、以下の記事で作った自動NSFWとか

gamelinks007.hatenablog.com

以下の自動NSFW検知Botとかを改良したものを新たに作ってみました。

github.com

以前までのBotの問題点

以前までのBotGoogle Cloud Vision APIを使っていたため中々にコストが高くついてました......。 また誤検知なども意外と多く、実運用に向かなさそうだったり......。

そのため数年前に停止していました。

なんでまた作ったのか?

最近、Twitterの買収から始まる一連の騒動でFediverseにユーザーが増えてきたのがきっかけ。 人が増えたことで連合タイムラインとかに、NSFWな画像が流れてくる可能性は増しましたし......。

また僕の運営しているCreatodonでもユーザーが増えてきていることもきっかけの一つです。 現状は人が一気に増えたこともあり新規登録は止めていますが、招待リンク経由での登録はできる状態なので悪意あるユーザーが入ってくる可能性は0ではない状況です。

で、そういう事態が起きる前に自動的に検知できる仕組みは導入したかったので今回再チャレンジしてみた感じです。

作ったもの

作ったBotソースコードとしては以下です。

github.com

opennsfw2とMastodon.pyを使って実装しています。

使い方など

まずBot用のアカウントを作成して、アクセストークンを生成。

次に、ソースコードを稼働させるサーバーなどへCloneします。

git clone https://github.com/S-H-GAMELINKS/auto-nsfw-checker.git

Cloneしてきたソースコードディレクトリへ移動し、.envを作成します

cd auto-nsfw-checker
cp .env.sample .env

.envを編集して利用するサーバーのURLやアクセストークンを追記します。

API_BASE_URL=<サーバーのURL>
ACCESS_TOKEN=<アクセストークン>

最後に以下のようなserviceを作成し、

[Unit]
Description=auto-nsfw-checker
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/home/user/auto-nsfw-checker
ExecStart=/home/user/.pyenv/shims/python main.py
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

以下のコマンドでserviceを起動すればOKです。

sudo systemctl start auto-nsfw-checker

今後

連合タイムラインに流れてくるNSFWな画像を検知できる仕組みとか作りたいと思いますねー。