Skip to main content

概觀

本頁面是 AT Protocol 官方 bot 教學 的 Laravel 版。說明如何以 laravel-bluesky 套件將 TypeScript 版的內容以 PHP/Laravel 實作。 官方教學中會透過 lex 指令逐次下載 Lexicon 檔案,但 laravel-bluesky 已透過 atproto-lexicon-contracts 事先納入所有 Lexicon,因此不需這些步驟。透過 Artisan 指令與 HasShortHand trait 的方法,幾乎所有操作皆可實作。

前置條件

  • 已安裝 laravel-bluesky 套件
  • 已準備好 Bluesky 帳號與 App Password
安裝方式請參考 Laravel Bluesky

第 1 部分:基本 bot(貼文)

建立 Artisan 指令

php artisan make:command 建立 bot 用的指令。
編輯所產生的 app/Console/Commands/BotPostCommand.php

手動執行

以任務排程自動執行

routes/console.php 加入定期執行設定。
要啟用排程器,請在 cron 中設定以下內容。

以 GitHub Actions 自動執行

若沒有伺服器,也可以透過 GitHub Actions 自動執行。
請於 GitHub Actions 的 secrets 中註冊 BLUESKY_IDENTIFIERBLUESKY_APP_PASSWORD

第 2 部分:回覆 bot(監控 mention)

建立自動回覆 mention 的 bot。同時介紹使用 AI 生成回覆的範例。

取得通知並回覆 mention

若 thread 的 root 不同,請以 app.bsky.feed.getPostThread 取得 thread 資訊並設定為 root。此簡化實作將父貼文視為 root。

排程輪詢

使用 AI 生成回覆

laravel/ai 套件與 laravel-amazon-bedrock 驅動結合,即可依 mention 內容生成 AI 回覆。
建立 AI agent。
在指令中使用 AI 回覆。
laravel-amazon-bedrock 的設定方式請參考 Amazon Bedrock 驅動

第 3 部分:Label bot

此為對應官方教學中 labelAsBot 的功能。對 bot 帳號的個人資料附加 self label,明示這是自動化帳號。
Label 只需在初次設定時執行一次即可。與第 1、2 部分的指令獨立實作為另一個指令。

建立 label bot 指令

執行

本指令請於 bot 首次設定時執行一次。Label 會永久儲存在個人資料中。
!bot 是 Bluesky 標準的 self label。強烈建議所有 bot 帳號都要設定。

關於其他官方教學

AT Protocol 的官方教學還有其他數個主題。以下彙整 laravel-bluesky 的對應狀況。

自訂 feed

Feed Generator 詳細說明使用 Laravel 實作自訂 feed generator 的方法。

OAuth 認證

Socialite 中說明使用 Laravel Socialite 進行 OAuth 認證的實作方式,比官方教學更容易實作。

社群應用(statusphere)

Laravel 版的 statusphere 於 invokable/statusphere 公開。其基於未使用 lextap 指令的舊版 statusphere,因此與最新的官方教學略有差異。

參考連結

最後修改於 2026年8月2日