可変感情可変予定制御

街歩きブログになりつつあるなにか

PythonからBlueskyにポストするときの備忘録

先日ようやくBluesky Socialの招待コードが届いたので登録してみた。
BlueskyはAT Protocolを使用した分散型SNSである。AT Protocolの仕組みはまだまだ理解が追いついていない箇所が多いのだが、各PDSのデータを一箇所のBGSと呼ばれる大規模なリレーに集めて処理してから配信している(と解釈している)。ActivityPubが採用されている分散型SNSのようなデメリットをほぼ感じることがなく、Twitterの代替となりうるポテンシャルをもっていると思っている。
早速ツールを作るためにAPIを触っていたのだが、少々癖があったので備忘録として残しておく。

使用したのはThe At Protocol SDK for Pythonというライブラリ。まだ開発途中ということもあってかかなり使いづらい。Clientクラスにはsend_post()とsend_image()というメソッドが用意されているが、URLが含まれていてもハイパーリンクにならないし、画像も1枚しかアップロードできない。

TwitterではURLが含まれていると勝手にハイパーリンクに変換してくれる。(これがお節介機能でたまに必要のない部分まで変換されてしまう) 一方、Blueskyではあらかじめfacetsと呼ばれるマークアップ情報を付与する必要があるようだ。

👆のauto_hyperlinks.pyが非常に参考になった。

 

サンプルコードを切り貼りして書いたようなものだが、URLの変換と複数枚の画像アップロードに対応した関数を作成したのでGistに上げておいた。

Bluesky Socialはまだ招待制が続くようだが、まもなくアカウントなしでの閲覧が可能になるらしく、情報発信の場としても使えるようになりそうだ。皆さまもよき脱X(旧Twitter)ライフを。