概要
このページは AT Protocol 公式ボットチュートリアル の Laravel 版です。TypeScript 向けの内容をlaravel-bluesky パッケージを使って PHP/Laravel で実装する方法を解説します。
公式チュートリアルでは lex コマンドで Lexicon ファイルを都度ダウンロードしますが、laravel-bluesky では atproto-lexicon-contracts から事前に全 Lexicon を取り込み済みのため、この手順は不要です。Artisan コマンドと HasShortHand トレイトのメソッドを使って、ほぼすべての操作が実現できます。
前提条件
laravel-blueskyパッケージがインストール済みであること- Bluesky のアカウントとアプリパスワードが用意されていること
パート 1: 基本ボット(投稿)
Artisan コマンドを作成する
php artisan make:command でボット用のコマンドを作成します。
app/Console/Commands/BotPostCommand.php を編集します。
手動実行
タスクスケジュールで自動実行
routes/console.php に定期実行の設定を追加します。
GitHub Actions で自動実行
サーバーを持たない場合は GitHub Actions でも自動実行できます。パート 2: リプライボット(メンション監視)
メンションに自動返信するボットを作成します。AI を使ってリプライを生成する例も紹介します。通知を取得してメンションに返信する
スレッドの root が異なる場合は
app.bsky.feed.getPostThread でスレッド情報を取得して root に設定してください。簡易実装では親投稿を root として扱っています。ポーリングをスケジュールする
AI を使ってリプライを生成する
laravel/ai パッケージと laravel-amazon-bedrock ドライバーを組み合わせると、メンション内容に応じた AI リプライを生成できます。
パート 3: ラベルボット
公式チュートリアルのlabelAsBot に相当する機能です。ボットアカウントのプロフィールにセルフラベルを付与して、自動化アカウントであることを明示します。
ラベル付けは初回セットアップ時に一度だけ実行します。パート 1・2 のコマンドとは独立した別のコマンドとして実装します。
ラベルボットコマンドを作成する
実行する
他の公式チュートリアルについて
AT Protocol の公式チュートリアルには他にもいくつかのトピックがあります。laravel-bluesky での対応状況をまとめます。
カスタムフィード
Feed Generator で Laravel を使ったカスタムフィードジェネレーターの実装方法を詳しく解説しています。OAuth 認証
Socialite で Laravel Socialite を使った OAuth 認証の実装方法を解説しています。公式チュートリアルより簡単に実装できます。ソーシャルアプリ(statusphere)
Laravel 版の statusphere が invokable/statusphere として公開されています。lex や tap コマンドを使っていない以前の statusphere をベースにしているため、最新の公式チュートリアルとは若干異なる点があります。