概要
「公式: AT Protocolの2023年のロードマップでの連合開始は2024年初めの予定 | GNU social JP」で前回ATPの公式ブログを紹介しました。
2023-08-11に「Posting via the Bluesky API | AT Protocol」のAT Protocolの公式ブログの投稿があったので紹介します。時系列としては、「公式: BlueskyのWebアプリで注目のSkyFeed | GNU social JP」の次になります。
内容は題名通り、Bluesky APIでの投稿方法です。「Main features – HTTPie 3.2.2 (latest) docs」のコマンドを使って、投稿方法を解説しています。「Bluesky APIでの投稿取得とSocial CiterのBluesky対応 | GNU social JP」の情報と関連あるかもしれません。
Posting via the Bluesky API
最初にBlueskyアカウントが必要です。HTTPie (brew install httpie) でセッションを作ります。
http post https://bsky.social/xrpc/com.atproto.server.createSession \
identifier="$BLUESKY_HANDLE" \
password="$BLUESKY_APP_PASSWORD"
これでcreateRecordへのPOSTリクエストで投稿作成が可能になります。
http post https://bsky.social/xrpc/com.atproto.repo.createRecord \
Authorization:"Bearer $AUTH_TOKEN" \
repo="$BLUESKY_HANDLE" \
collection=app.bsky.feed.post \
record:="{\"text\": \"Hello world! I posted this via the API.\", \"createdAt\": \"`date -u +"%Y-%m-%dT%H:%M:%SZ"`\"}"
投稿は、返信、メンション、画像埋込などで複雑になることがあります。このガイドではPythonでの方法を説明しますが、他のプログラミング言語用のSDKなども多数あります。
Authentication
Blueskyへの投稿にはアカウント認証が必要です。Blueskyアカウントハンドルとアプリパスワード (公式: BlueskyのAT Protocol開発者エコシステムとアプリパスワード機能 | GNU social JP) を用意しておきます。
import requests
BLUESKY_HANDLE = "example.bsky.social"
BLUESKY_APP_PASSWORD = "123-456-789"
resp = requests.post(
"https://bsky.social/xrpc/com.atproto.server.createSession",
json={"identifier": BLUESKY_HANDLE, "password": BLUESKY_APP_PASSWORD},
)
resp.raise_for_status()
session = resp.json()
print(session["accessJwt"])
com.atproto.server.createSession APIエンドポイントは、2のAPIトークンを含むセッションオブジェクトを返します。アクセストークン (accessJwt) はリクエストの承認に使用しますが、数分で期限切れになります。もう一つは、新しいトークンでセッションを更新するためのリフレッシュトークン (refreshJwt) です。1回投稿するだけなので、更新する必要はありません。
Post Record Structure
JSONオブジェクトの基本的な投稿レコードは以下です。
詳細プロフィール。SNS: X Twitter/GS=gnusocialjp@gnusocial.jp/WP=gnusocialjp@web.gnusocial.jp。2022-07-17からgnusocial.jpとweb.gnusocial.jpのサイトを運営しています。WordPressで分散SNSに参加しています。このアカウントの投稿に返信すると、サイトのコメント欄にも反映されます。
Comments