Xからの移住先候補!! Google Apps ScriptでBlueskyを叩く

ようやく自分の元にBlueskyの招待コードが来たので、アカウントを作成し色々と情報収集しています。現X(旧Twitter)の創始者が、改めて作成してるWebサービスで、Twitterの乗り換え先として最有力視されてるサービスです。現在はウェイティングリストに登録した人に順次コードが送られてるようで、アカウントを持ってる人は言って日数経過後に自身も招待コードを送れるようになるようです。

このBlueskyにもREST APIが備わってるようで、GASから色々たたけ無いかな?と思いまとめてみました。以前のTwitter(現:X)のREST APIについては以下のエントリーを参考にしてみてください。

Google Apps ScriptからTwitter APIをOAuth2.0認証で使う【GAS】

今回利用するサービス

当然ですが、アカウントを持っている必要性があります。まだ、サービス自体β版のようなものなので、仕様変更は大いにあり得ます。アカウントを持っていない人は、アカウント作成画面で進めるとWaiting List登録のメッセージが出てくるので、そこでメアドを登録しておくと、そのうち招待コードが届き、作成が可能になります(自分の場合、半年くらい掛かりましたが、近い将来不要で作成も出来るようになるのでは?早い人は2023年5月頃から受け取ってテストしてるみたいです)。

今回のサンプルスプレッドシートでBluesky用のBotを作成したりシステム連携は可能になりますが、現状まだまだセキュリティ周りが未整備なので今後に期待です。

※Bluesky APIで検索すると別のサイトも引っかかりますが別物ですので要注意。厳密にはBlueskyはまだREST API自体はリリースしていません。

図:招待状のウェイティングリスト登録

そもそもBlueskyとは何か?

Xの問題点

Twitterこと現Xは非常に多大な影響力がある反面、問題点の多いです。イーロン・マスクに買収された結果として、以下のような問題点を抱えています。

  • 多くの広告主がXから離脱して収入源が大幅に減少し、事業の継続性に疑義が生じています。
  • イーロンの行動によってこれまでの諸々のTwitterを使った陽動やトレンド汚染は消えた一方、リプライゾンビが多数生まれてしまっている
  • フェイクニュースや暴力的コンテンツに対する報告が現時点で殆ど機能していないどころか、過去アカウントBANになったものが続々復活してる。
  • 間違った情報発信に対してコミュニティノートによるファクトチェックが入るようになったのは良いものの、一方で片方の主張に対してX社側からの言論統制も見受けられる
  • そして何よりもBot排除目的ということでAPI利用に大幅な制限と多額の課金をしなければならない為、実質個人でAPIを使った処理は難しくなってしまってる。

そのため、先行きが怪しいものの、他に移住先が見当たらないもしくは移住するのに適していない等の理由により、現在も尚続いてるといった状態です。

新しい分散型SNS

概要

BlueskyはTwitterを離れた創業者が、新たに作成中のTwitterのようなスタイルのSNSです。インターフェースはTwitterのそれと非常に近いものであり、使う上での癖とかはありません。現XことTwitterの状況が非常に悪く、先行き不透明の中で移住先としてMetaのThreads、クローズドな分散SNSであるMastodonやMisskey、古のSNSであるMixi。

しかし、MastodonやMisskeyはそもそも掲示板に近いテーマ別のSNS。Mixiは今更という感じ。かといって期待されていたThreadsはInstagramの文化が色濃く、一瞬注目されて肌に合わずに一気に話題にならなくなりました。

故に、最有力候補たるTwitterの正統後継とも言えるBlueskyは期待が高まっています。

図:UIは慣れ親しんだものとほぼ同じ

現時点でのBluesky

現時点ではTwitterの最も基本的なものだけを装備してるといった状態です。オススメやらトレンドといったものは装備されていない状況です。一方で「フィード」と呼ばれる特定のキーワードを元にスレッドをまとめる機能(自分用タイムラインみたいなもの)がついています。例えば、Google Apps ScriptやGoogle Workspaceに関するフィードを作ってみました。

他人が作ったフィードをフォローして利用することも可能です。ただし現時点ではUIからフィードが作れず、APIからのみ作成可能ですが、Webサービスを利用して作成する事が可能です(ただ、まだ思ったようなリストになっていないので調整中)。

図:外部サービス経由でフィードを作成する

ATプロトコルとは?

ATプロトコルとは、分散型SNSで用いられるオープンソースのプロトコルということで、Blueskyが開発してるものになります。よってこれまでのTwitterのようなセンター集中の中央集権的なものとは厳密には異なり、Mastodonのような複数のサーバが存在し、それらが横連携でつながるという仕組みになっています。

ただだからといって、多くの人がMastodonを好んで使ってるかと言ったらそうではないわけで、割と特定のテーマに従って個別のルームが存在するMastodonがTwitterの代わりになるかといったらならないし、使わない。故にBlueskyが分散型SNSと言っても、通常はメインサーバを使うスタイルでこれまでと同じような形で使うことになるでしょう。

どちらかというと、異なるアプリの間でもこのプロトコルで実装し通信できればやり取りが出来るであったり、アカウントを別のSNSへと移動出来る、メインサーバが不調になっても別のサーバに切り替えて継続できるといったようなテクニカルな点で恩恵があると思われます。

他にも様々な分散型SNSはあるものの、結局は人が集まり支持されるSNSだけが生き残る世界がウェブですので、その中では最も筆頭株なのがBlueskyであると言えます。

Blueskyを操縦する

注意点

現在、Blueskyは一般的なWebサービスのようなREST APIでは提供されておらず、またOAuth2.0での認証も装備されていないので利用する上では注意点があります。

IDとPWを使ってXRPCとしてエンドポイントに対してUrlfechAppでリクエストを送ることになる為、現時点ではセキュアではありません。将来的には装備されていくと思いますが、その際にはまた別エントリーで作成しようと思います。今回のコードはGASの中に直接記述していますが、実際にはスクリプトプロパティに格納したり、自分だけがアクセス出来るファイルに記述しておいてDriveAppで読み取るといった対処が必要です。

認証トークンを取得する

accessJwtを取得する

APIキーであったり、Access Tokenを取得するための仕組みがまだ存在しない為、通常のログインをリクエストしてaccessJwtを取得して利用します。このaccessJwtがREST APIで言うところのAccess Tokenになります。数分で寿命が切れるとのことですが、明確に何分で切れるかが記載されていない。

DIDについては投稿時に利用します。

accessJwtをリフレッシュする

accessJwtですが、数分で寿命が切れるので一度通常リクエストをしてexpireしてるのを検出したら、以下のコードでrefreshJwtを使って新しいaccessJwtを取得してリクエストをすることになります。

通常のPOSTリクエストにてBearerトークンにリフレッシュトークンを渡して再度accessJwtを取得可能です。

投稿を取得する

各ユーザはハンドルと呼ばれるxxxx.bsky.socialと呼ばれるものを持っています。これを元にフィード取得用のURLに対してリクエストを投げることで、一連の投稿を取得することが可能です。

feedurlは固定で、handleに対象のfeedのhandleを入れます。

※まだカスタムフィードに集まった内容を取得する方法を調査中です。

メッセージを投稿する

Blueskyに投稿するには、accessJwtリクエスト時に取得するdidの値が必要になります。これを用いて、以下のようなスタイルで投稿することが可能です。ただし、改行コードを入れたり<br>を入れてもそのまま投稿されてしまうので、Node.jsならばこちらのブログのようにモジュールをどうにゅ

 

図:投稿出来ました

関連リンク

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)