メインコンテンツへスキップ

概要

このページは AT Protocol 公式ボットチュートリアル の Laravel 版です。TypeScript 向けの内容を laravel-bluesky パッケージを使って PHP/Laravel で実装する方法を解説します。 公式チュートリアルでは lex コマンドで Lexicon ファイルを都度ダウンロードしますが、laravel-bluesky では atproto-lexicon-contracts から事前に全 Lexicon を取り込み済みのため、この手順は不要です。Artisan コマンドと HasShortHand トレイトのメソッドを使って、ほぼすべての操作が実現できます。

前提条件

  • laravel-bluesky パッケージがインストール済みであること
  • Bluesky のアカウントとアプリパスワードが用意されていること
インストール方法は Laravel Bluesky を参照してください。

パート 1: 基本ボット(投稿)

Artisan コマンドを作成する

php artisan make:command でボット用のコマンドを作成します。
生成された app/Console/Commands/BotPostCommand.php を編集します。

手動実行

タスクスケジュールで自動実行

routes/console.php に定期実行の設定を追加します。
スケジューラを有効にするには、cron に以下を設定してください。

GitHub Actions で自動実行

サーバーを持たない場合は GitHub Actions でも自動実行できます。
GitHub Actions のシークレットに BLUESKY_IDENTIFIERBLUESKY_APP_PASSWORD を登録してください。

パート 2: リプライボット(メンション監視)

メンションに自動返信するボットを作成します。AI を使ってリプライを生成する例も紹介します。

通知を取得してメンションに返信する

スレッドの root が異なる場合は app.bsky.feed.getPostThread でスレッド情報を取得して root に設定してください。簡易実装では親投稿を root として扱っています。

ポーリングをスケジュールする

AI を使ってリプライを生成する

laravel/ai パッケージと laravel-amazon-bedrock ドライバーを組み合わせると、メンション内容に応じた AI リプライを生成できます。
AI エージェントを作成します。
コマンドで AI リプライを使用します。
laravel-amazon-bedrock の設定方法は Amazon Bedrock ドライバー を参照してください。

パート 3: ラベルボット

公式チュートリアルの labelAsBot に相当する機能です。ボットアカウントのプロフィールにセルフラベルを付与して、自動化アカウントであることを明示します。
ラベル付けは初回セットアップ時に一度だけ実行します。パート 1・2 のコマンドとは独立した別のコマンドとして実装します。

ラベルボットコマンドを作成する

実行する

このコマンドはボットの初回セットアップ時に一度だけ実行してください。ラベルはプロフィールに永続的に保存されます。
!bot は Bluesky の標準セルフラベルです。ボットアカウントには必ず設定することが推奨されています。

他の公式チュートリアルについて

AT Protocol の公式チュートリアルには他にもいくつかのトピックがあります。laravel-bluesky での対応状況をまとめます。

カスタムフィード

Feed Generator で Laravel を使ったカスタムフィードジェネレーターの実装方法を詳しく解説しています。

OAuth 認証

Socialite で Laravel Socialite を使った OAuth 認証の実装方法を解説しています。公式チュートリアルより簡単に実装できます。

ソーシャルアプリ(statusphere)

Laravel 版の statusphere が invokable/statusphere として公開されています。lextap コマンドを使っていない以前の statusphere をベースにしているため、最新の公式チュートリアルとは若干異なる点があります。

参考リンク

最終更新日 2026年5月6日