なんだか最近大流行のBluesky。招待制でなくなったことでアカウントを作成した方も多いのではないでしょうか?
今回は、Blueskyに対してPower Automateから投稿を行う方法を紹介します。
※もちろんアカウントは作っている前提で進めます。
準備 - API で使うユーザー情報
さて、API を使うにはどうするか。Twitter (現 X)では面倒なDeveloper登録をする必要がありました。Blueskyはこの点非常に簡単で、アカウントを持っていればAPIを使えます。
APIを利用するのに絶対に必要なのは以下の2つです:
- Bluesky の ユーザーID
- App password
最初のユーザーIDは、自分のプロフィールを開いたときに表示される @~~~の部分です。下図でいえば mofumofu-dance.bsky.social
部分です。
2つ目の App passwordですが、これは 設定 の 詳細 (Advanced) から発行できます。
発行されたパスワードを控えておきましょう。
パスワードはBlueskyにログインするものではなく、App passwordを使いましょうね!!!!
1. 認証とトークンの生成
IDとApp passwordを控えたら、早速APIをPower Automateから使ってみましょう。
毎回ID/PWを入れてそれぞれのAPIをたたくのではなく、認証してトークンを発行。発行されたトークンを使って投稿したり、投稿を消したり、各種操作をしていきます。
認証とトークンの生成には Power Automate の HTTPアクションを使います (ゆえにプレミアムのライセンスが必要です)
各種設定値
- URI :
https://bsky.social/xrpc/com.atproto.server.createSession
- Method :
Post
- Headers :
Content-Type : application/json
- Body :
{ "identifier": "ここにユーザーID", "password": "ここにApp password"}
このアクションが成功すると、2つのトークン accessJwt
と refreshJwt
が発行されます。 各種APIで操作を行うのに使うのはこのうち accessJwt
のほうです。 refreshJwt
はセッションをリフレッシュするためにのみ利用できます。accessJwt
は数分で失効するので注意しましょう。
accessJwt は 応答本文の直下にあるので、body('HTTP')?['accessJwt']
のような数式で取得できます。結果を確認するためにも「作成」アクションを追加しておいて、トークンが正常にとれているか確認しましょう。
これで各種操作を行う準備ができました。
2. 投稿してみよう
一番簡単なステップとして、Power Automate から Blueskyに投稿を行います。
投稿する際に必要な情報は
- accessJwt
- ユーザーID
- メッセージ本文
- 投稿日時 (yyyy-MM-ddThh:mm:ssZの形式)
の4つです。これを用いて、各種設定値は以下のようになります。
- URI :
https://bsky.social/xrpc/com.atproto.repo.createRecord
- Method:
Post
- Headers :
Content-Type : application/json
とAuthorization : Bearer <accessJwtの値>
- Body :
{ "repo": "ここにユーザーID", "collection": "app.bsky.feed.post", "record": { "text": "投稿したい文章", "createdAt": "投稿日時 yyyy-MM-ddThh:mm:ssZ形式" } }
投稿日時は Power Automate であれば utcNow()
関数の結果をそのまま使えます。( "createdAt":"2024-02-09T12:00:00Z" のような入力になる)
これだけでメッセージを投稿することができます。
ということで無事 Power Automate から Blueskyに投稿できました。
なお、createdAt
の部分ですが、未来の日付を指定しても即時投稿されました。何かに使えるのか調べてみます。
おわり
今回は Power Automate/Logic Appsから Blueskyにメッセージを投稿する方法を紹介しました。 Xみたいに面倒な手続きなく メッセージ投稿できる点では非常に使い勝手がいいサービスですね。
今後もAPIでできることを探して、紹介していこうかと思います。