Python でボットを作る
このガイドでは、コミュニティ製の Python SDK である atproto を使って、Bluesky に投稿するボットを書きます。Python 3.9 以降が必要です。
1. アプリパスワードを作成する
ボットとして Bluesky にサインインし、「設定」→「プライバシーとセキュリティ」→「アプリパスワード」 を開いて作成します。ボットはアカウントのメインパスワードではなく、必ずアプリパスワードでサインインします。
2. プロジェクトを準備する
mkdir my-bot && cd my-bot
python -m venv .venv
source .venv/bin/activate
pip install atproto認証情報はコードに書かずに置いておきます。
export BLUESKY_HANDLE="weather.bluesky.bot"
export BLUESKY_APP_PASSWORD="xxxx-xxxx-xxxx-xxxx"3. ボットを書く
# 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. 実行する
python bot.py次のステップ
- ボットが自動で動くように投稿を予約する。
- ボットに bluesky.bot ハンドルを付ける。
- atproto SDK のドキュメント(英語)では、返信、画像、スレッド、firehose について解説しています。