Labeler とは
Labeler は AT Protocol(Bluesky)上でコンテンツにラベルを付けるサービスです。モデレーション、コンテンツ分類、カスタムフィルタリングなどに活用できます。 Labeler の概念を事前に理解しておくことが必要です。 他言語向けのスターターキットも参考になります。 サンプル実装:準備
Labeler を動かすには以下が必要です。- Labeler 専用の新しい Bluesky アカウント(普段使いのアカウントは使用しないこと)
- Labeler 専用の新しい Laravel プロジェクト(プロジェクトは分けることを推奨)
- (サブ)ドメイン
- VPS や AWS EC2 などの本番 Linux サーバー(Laravel Cloud・Laravel Vapor・Vercel は不可)
共有サーバーしか使えない場合は Labeler の運用は困難です。
追加パッケージのインストール
設定
最初に秘密鍵を生成します。.env に追加します。
Labeler クラスの作成
AbstractLabeler を継承した独自の Labeler クラスを作成します。ファイルは任意の場所に置けます。
サンプル実装: ArtisanLabeler.php
labels()
ラベルの定義を返します。skyware スターターキットの定数定義が参考になります。subscribeLabels()
WebSocket 接続直後に呼び出されます。SubscribeLabelResponse をイテレータで返します。
emitEvent()
ラベルを追加または削除するリクエストが来たときに呼び出されます。UnsignedLabel をイテレータで返します。
saveLabel()
署名済みラベルをデータベースに保存します。SavedLabel を返します。
createReport()
ユーザーからアピールなどが送られてきたときに呼び出されます。queryLabels()
WebSocket の代わりに HTTP API 経由でラベルをクエリします。Bluesky 公式では使用されず、サードパーティが使用します。不要な場合は空配列を返します。AppServiceProvider への登録
作成した Labeler クラスをAppServiceProvider::boot() に登録します。
アカウントのセットアップ
Labeler アカウントとして初期化します。ラベル定義の宣言
Labeler アカウントにラベル定義を登録します。その他のコマンド
ラベル定義の削除:Laravel Forge での実行
SSL を有効化した後、以下の設定で Labeler サーバーを起動します。nginx 設定
Forge の nginx 設定に 3 つのlocation ブロックを追加します。
デプロイスクリプト
デプロイ時に Labeler サーバーを停止します。停止後は Supervisor が自動的に再起動します。バックグラウンドプロセス(デーモン)の設定
Forge のバックグラウンドプロセス設定画面で、Queue Worker タブではなく Custom タブを選択します。 コマンド:bluesky:ws や bluesky:firehose コマンドと同時実行はできません。
ラベルの追加
どのようにラベルを付けるかはアプリケーションの実装次第です。サンプルでは Laravel のイベント機能を使い「フォローされたとき」にラベルを付けています。Source: docs/labeler.md
Sample: invokable/laralabeler