「Moments」をBlueskyに自動連携する方法
このブログに実装した「Moments(つぶやき機能)」を、BlueskyとAPI連携させました。 microCMSへの投稿をトリガーに、Cloudflare Workersを経由してBlueskyへ自動転送する仕組みです。
システム構成
- Source: microCMS (Moments API)
- Middleware: Cloudflare Workers
- Destination: Bluesky (AT Protocol /
bsky.social) - Identity:
bloggers.win(Custom Domain Handle)
処理フロー
- Webhook Trigger
- microCMSのコンテンツ公開時にCloudflare WorkersへPOSTリクエストを送信。
- Auth (com.atproto.server.createSession)
- 環境変数に格納した
BSKY_HANDLEとBSKY_PASSWORD(アプリパスワード)を用いてJWTを取得。
- 環境変数に格納した
- Blob Upload (com.atproto.repo.uploadBlob)
image_base64(Base64形式)またはimage.url(外部参照URL)からバイナリデータを生成。- 画像をBlobとしてBlueskyのPDSにアップロードし、
cidを取得。
- Create Record (com.atproto.repo.createRecord)
- 取得した本文(
text)と画像Blob(embed)を結合し、app.bsky.feed.postとしてレコードを作成。
- 取得した本文(