PythonでBluesky APIを用いて自動投稿する方法

概要

Bluesky とは、旧Twitter社の元CEOであるジャック・ドーシー氏が立ち上げた分散型SNSです。
ATProtocl というプロトコルを用いて構築されたSNSで、簡単に言うと中央管理者がいないTwitterのようなものです。
昨今の中央集権である通貨から分散型である仮想通貨への流れのように、SNSも分散型への流れがあるのかなと感じます。

今回はそんなBlueskyのAPIをPythonを用いて実行する方法をまとめます。

Bluesky APIを使うまでのステップ

  • API実行用パスワードの生成
  • Python実行環境の構築
  • スクリプトの作成と実行

API実行用パスワードの生成

APIを実行するためにはアカウント名とAPI実行用のパスワードの発行が必要です。

まずは、APIの実行に利用するアカウント名を確認します。
アカウント名は、Blueskyにログインした際に画像の箇所に表示される名前となります。
この際先頭の @ は不要で、私のアカウントであれば bossagyu.bsky.social がアカウント名となります。

Blueskyのアカウント名

次に、API実行用のパスワードを生成します。

API実行用パスワードは 設定アプリパスワード から生成できます。

Blueskyのアプリパスワード1

その後、アプリパスワードを追加 をクリックします。

Blueskyのアプリパスワード2

追加ボタンを押すと、パスワードにつける名前を聞かれます。
これ自体はパスワードとならず管理を容易にすることが目的なので、特にこだわりがなければそのまま作成します。

Blueskyのアプリパスワード3

パスワードが生成されるので、これをコピーしておきます。
ちなみに二度と表示されなくなるので、コピーを忘れないようにしましょう。コピーを忘れた場合は再生成すればOKです。

Python実行環境の構築

Pythonの実行環境をセットアップしてください。
venvを用いたセットアップについては、こちら にまとめています。

公式ドキュメント によると、Pythonのバージョンは3.7.1以上を利用する必要がありますので注意しておいてください。

Pythonの実行環境が整えば、ATProtocolを利用するためにライブラリをインストールします。

1
$ pip install atproto

インストールの確認

1
2
3
$ pip list | grep atproto            

atproto           0.0.46

これで準備は完了です。

スクリプトの作成と実行

Blueskyに投稿するスクリプトを作成します。

1
2
3
4
5
6
7
8
9
from atproto import Client

client = Client()

user_name = "bossagyu.bsky.social"
password = "*******" # 生成したAPI実行用パスワードを入力

client.login(user_name, password)
client.send_post(text='APIからの投稿です')

スクリプトはこれだけで、APIを用いてBlueskyに投稿できます。

それでは実行してみましょう。

1
$ python post_bluesky.py

実行すると、Blueskyに以下のように無事投稿されました。

Blueskyに投稿された投稿

まとめ

今回はPythonを用いてBlueskyのAPIを実行する方法をまとめました。
Blueskyはまだまだ開発途中のSNSですが、TwitterはAPIを課金しないと使えないなどの制約があるので、無料でAPIを使ってSNSで遊んでみたいという方にはおすすめです。