公式: Bluesky APIでの投稿例はbotやアプリの自作に有益

protocol/ATP/atproto
概要

公式: 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オブジェクトの基本的な投稿レコードは以下です。

残り19247文字。続きはSilver/Gold会員限定。

Free=0/Bronze=220/Silver=1100/Gold=1980円。

会員登録 (About Member)

Comments

Ads Blocker Image Powered by Code Help Pro

広告ブロッカー検知/Ads Blocker Detected

このサイトは会費と広告で運営されています。[Bronze=月220円以上に登録] するか、広告ブロッカーを無効にしてください。

This site is operated by membership and advertise. Please [register at least Bronze=220 JPY/month], or disable ads blocker.

Copied title and URL