Bluesky.bot

コマンドラインツール

bsbot は、ボットとその name.bluesky.bot ハンドルをターミナルから管理するツールです。ダッシュボードと同じ操作を、スクリプトやシェルで作業する人のために提供します。macOS と Linux の Node.js 22 以降で動作します。

bash
npm install --global @blueskydotbot/cli
bsbot login

npm パッケージ名は @blueskydotbot/cli で、インストールされるコマンドは bsbot です。インストールせずに実行するには npx @blueskydotbot/cli login を使います(pnpm dlx @blueskydotbot/cli、yarn dlx @blueskydotbot/cli、bunx @blueskydotbot/cli でも可)。

サインイン

bsbot login を実行すると、ブラウザで bluesky.bot が開きます。いつもどおり Bluesky でサインインし(パスワードがターミナルを通ることはありません)、ページに表示されるマシン名を確認して 許可する を選びます。ブラウザはあなたのマシン上の CLI にワンタイムコードを渡し、CLI はトークンを保存します。

  • トークンの有効期間は 30 日 です。期限が切れたら、もう一度 login を実行します。
  • トークンは ~/.config/bsbot/credentials.json(または $XDG_CONFIG_HOME/bsbot/)に保存され、あなただけが読めます。--json を付けても表示されることはありません。
  • できるのはボットのハンドルの管理だけです。投稿、フォロー、Bluesky アカウントの閲覧、設定の変更、アカウントの削除はできません。
  • --name <label> で設定画面に表示するマシン名を指定できます(デフォルトはホスト名)。例: bsbot login --name "CI"。
  • ブラウザのないマシンでは --no-browser を付け、表示されたリンクを別の場所で開きます。そのブラウザから CLI のマシンに到達できる必要があります(たとえば ssh -L 経由)。

やめるときは、bsbot logout でトークンを取り消します。ダッシュボードの 「設定」→「CLI アクセス」 から任意のマシンを取り消すこともでき、すべての端末でサインアウト ですべてのトークンを一度に取り消せます。

コマンド

コマンド内容
whoamiサインイン中のアカウントと、トークンの有効期限
bots自分のボット、そのハンドル、有効かどうか
check <name><name>.bluesky.bot が空いているか(サインイン不要)
claim <bot> <name>ボットに <name>.bluesky.bot を取得し、そのハンドルに切り替える
switch <bot>ボットのサーバーに、ハンドルを使うようもう一度依頼する
verify <bot>ハンドルが Bluesky で有効 か確認する
release <bot>ハンドルを解放する。確認を求めるので、省略するには --yes を付ける
directory公開ディレクトリを表示する: --q、--category、--verified、--limit、--cursor

<bot> には、ボットの DID、ハンドル、以前のハンドル(.bluesky.bot のハンドルを取得する前のもの)、または名前だけ(weather.bluesky.bot なら weather)を指定します。新しいボットはダッシュボードから追加します。ボットのアカウント自体でのサインインが必要だからです。

bash
bsbot check weather
bsbot claim weather.bsky.social weather
bsbot verify weather

ルールはダッシュボードと同じです。名前は 3〜30 文字で、予約済みの名前があり、解放されたハンドルには短い猶予期間があります。1 時間あたりのハンドル変更の上限も同じで、ダッシュボードと CLI で共有されます。

スクリプト

すべてのコマンドで --json が使えます。成功すると API の応答が stdout に、失敗すると {"error": {"code", "message"}} が stderr に出力されます。終了コードは、成功で 0、エラーで 1、使い方の誤りで 2 です。

bash
bsbot bots --json | jq -r '.bots[] | select(.verifiedAt == null) | .did'

内部では、CLI はトークン(Authorization: Bearer)を付けて API の /me/* ルートを呼び出しています。これらは API リファレンスに掲載されています。