Bluesky.bot

Python でボットを作る

このガイドでは、コミュニティ製の Python SDK である atproto を使って、Bluesky に投稿するボットを書きます。Python 3.9 以降が必要です。

1. アプリパスワードを作成する

ボットとして Bluesky にサインインし、「設定」→「プライバシーとセキュリティ」→「アプリパスワード」 を開いて作成します。ボットはアカウントのメインパスワードではなく、必ずアプリパスワードでサインインします。

2. プロジェクトを準備する

bash
mkdir my-bot && cd my-bot
python -m venv .venv
source .venv/bin/activate
pip install atproto

認証情報はコードに書かずに置いておきます。

bash
export BLUESKY_HANDLE="weather.bluesky.bot"
export BLUESKY_APP_PASSWORD="xxxx-xxxx-xxxx-xxxx"

3. ボットを書く

bot.py
# bot.py: ボットとして 1 回投稿します。`python bot.py` で実行します。
import os

from atproto import Client, client_utils

# ボット自身のアカウントに、アプリパスワードでサインインします
# (「設定」>「プライバシーとセキュリティ」>「アプリパスワード」)。
# メインパスワードは決して使いません。
handle = os.environ.get("BLUESKY_HANDLE")
password = os.environ.get("BLUESKY_APP_PASSWORD")
if not handle or not password:
    raise SystemExit("Set BLUESKY_HANDLE and BLUESKY_APP_PASSWORD.")

client = Client()
client.login(handle, password)

# TextBuilder でリンクとハッシュタグをクリックできるようにします。
text = (
    client_utils.TextBuilder()
    .text("Today: sunny, 21°C. Forecast at ")
    .link("example.com", "https://example.com")
    .text(" ")
    .tag("#weather", "weather")
)

post = client.send_post(text)
print(f"Posted {post.uri}")

このコードがしていること:

  • Client() は、デフォルトで https://bsky.social と通信します。セルフホストのサーバーでは、その URL を渡します: Client("https://pds.example.com")。
  • login は、ハンドルとアプリパスワードでセッションを開きます。
  • TextBuilder は、本文と、リンクとハッシュタグをクリックできるようにする facet を組み立てます。
  • send_post は投稿を作成します。その uri が投稿の at:// アドレスです。

4. 実行する

bash
python bot.py

次のステップ