Bluesky Post
Publora MCPサーバーを使用してBlueskyに投稿を作成・予約します。自動検出されるハッシュタグやURL、画像、動画を含むテキスト投稿をサポートします。
前提条件
プラン: 無料のStarterプランで動作します。現在の制限と料金: publora.com/pricing
はじめに
- アカウント作成 publora.com/register(無料)
- アプリパスワードを生成 Blueskyの設定 > アプリパスワード(メインパスワードではありません)
- Blueskyを接続 Publoraダッシュボードでハンドルとアプリパスワードを使用
- APIキーを取得 app.publora.com/dashboard/api
- エージェントを接続 MCPサーバー
https://mcp.publora.comに認証ヘッダーAuthorization: Bearer sk_YOUR_API_KEYを付けて接続。Claude Codeの場合:
claude mcp add publora --transport http https://mcp.publora.com \
--header "Authorization: Bearer sk_YOUR_API_KEY"
Claude Desktop、Cursor、Codex、OpenClaw、claude.aiコネクタではそれぞれ異なる設定ファイルまたはフローが必要です。正確なパスとスニペットについてはクライアント設定を参照してください。
REST APIフォールバック
MCPサーバーが利用できない場合やエラーを返す場合は、REST APIを直接使用してください。
ベースURL: https://api.publora.com/api/v1
認証: x-publora-key ヘッダーを使用します(Authorization: Bearer ではありません):
# 接続済みプラットフォームを取得
curl -X GET "https://api.publora.com/api/v1/platform-connections" \
-H "x-publora-key: sk_your_api_key"
# 投稿を作成
curl -X POST "https://api.publora.com/api/v1/create-post" \
-H "x-publora-key: sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["bluesky-did:plc:abc123xyz"],
"content": "Your post content here",
"scheduledTime": "2026-03-25T10:00:00Z"
}'
プラットフォームID形式: bluesky-{did}。{did} は /platform-connections レスポンスから取得します。
IDの例: bluesky-did:plc:abc123xyz、bluesky-did:plc:def456uvw
📖 全APIドキュメント: docs.publora.com
プラットフォーム制限
| 機能 | 制限 |
|---|---|
| 文字数 | 300 |
| 画像 | 1投稿あたり最大4枚 |
| 画像サイズ | 正確に2,000,000バイト(10進数、2 MiBではありません) |
| 動画時間 | 3分 |
| 動画サイズ | 50~100 MB(時間による) |
| 1日あたりの動画数 | 25 |
| 代替テキスト | Bluesky上では2,000文字ですが、このAPIでは設定できません(以下参照) |
動画サイズ階層
| 時間 | 最大サイズ |
|---|---|
| 60秒未満 | 50 MB |
| 60秒~3分 | 100 MB |
リッチテキストファセット
Blueskyは独自のリッチテキストシステムを使用しています。Publoraが複雑な処理を自動で行います:
- ハッシュタグ:
#hashtagが自動検出され、クリック可能になります - URL: URLが自動検出され、クリック可能になります
- バイトオフセット: マルチバイト文字(絵文字、CJK)に対して正しく計算されます
特別な書式は不要です。自然に書くだけです。
利用可能なツール
create_post
新しいBluesky投稿を作成します。
パラメータ:
platforms: Bluesky接続IDの配列(例:["bluesky-did:plc:abc123xyz"])content: 投稿テキスト(最大300文字)scheduledTime: ISO 8601 UTC日時。オプション: 省略すると下書きとして作成されます。将来の時刻を指定すると予約投稿になります。5分以上過去の時刻はSCHEDULED_TIME_IN_PASTで拒否されるため、即時投稿するには現在時刻+1分を指定してください。mediaUrls: 最大10個の公開https画像または動画URL。Publoraがサーバー側でダウンロードし、検証前に添付するため、メディアと予約は1回の呼び出しで行われます。これは、下書き→get_upload_url→complete_mediaのフローに代わるワンショットの方法です。取り込みは1時間あたり60 URLにレート制限されています。
get_upload_url
メディアアップロード用の署名付きURLを取得します。
パラメータ:
postGroupId: メディアを添付する投稿IDfileName: ファイル名(例: "photo.jpg")contentType:image/jpeg、image/png、video/mp4type:"image"または"video"
complete_media
get_upload_url でアップロードしたファイルを、署名付き PUT が成功した後に確定します。オプションです。予約投稿では保留中のメディアも確定されますが、早期に呼び出すと公開前にフォーマットやプローブエラーが明らかになります。mediaUrls で添付されたメディアには不要です。
パラメータ:
mediaId:get_upload_urlから返されたID
list_connections
接続済みアカウントをプラットフォームIDとともに一覧表示します。最初にこれを呼び出し、IDをそのままコピーしてください。IDは推測不可能です。
post_stats
公開済みBluesky投稿のエンゲージメントカウンター(リアクション、コメント、リポスト、引用、ブックマーク)を取得します。リクエスト時点のライブデータで、約2時間キャッシュされます。
パラメータ:
platform:blueskyplatformId: Bluesky接続IDpostedIds: 検索する公開済み投稿ID
profile_stats
接続済みアカウントのフォロワー数、フォロー数、投稿数を取得します。
パラメータ:
platform:blueskyplatformId: Bluesky接続ID
list_posts / get_post / update_post / delete_post
予約投稿と下書きの管理を行います。update_post は下書きまたは予約投稿の content と platforms も更新するため、タイプミスの修正やターゲット変更のために削除して再作成する必要がありません。delete_media と prune_media_reference でアップロード済みファイルをクリーンアップします。
例
ハッシュタグ付きのシンプルな投稿
これをBlueskyに投稿:
"新しいAPIドキュメントを公開しました! https://docs.example.com でチェックしてください #devtools #api"
ハッシュタグとURLは自動的にクリック可能になります。
画像付き投稿
これをダッシュボードのスクリーンショットと共にBlueskyに投稿:
"新しい分析ビューが公開されました! #buildinpublic"
複数画像
Before/After比較画像と共にBlueskyに投稿を作成:
"オフィスの改装が完了しました!素晴らしい変身です。"
注: 1投稿あたり最大4枚の画像が許可されています。
動画投稿
この60秒のデモ動画をBlueskyに投稿:
"新しいモバイルアプリ機能の簡単なツアー"
予約投稿
これを明日の午前10時に予約:
"おはようございます!今日の生産性向上のヒントをお届けします..."
重要な制限事項
-
API経由で代替テキストを設定することはできません。 Blueskyパブリッシャーはメディアの
altプロパティを読み取りますが、署名付きアップロードフローもmediaUrlsもそれを保存せず、create-postに送信されたaltTextsの値は静かに無視されます。platformSettingsも役に立ちません。Blueskyはそこで400 PLATFORM_SETTING_UNKNOWNで拒否されるためです。画像を投稿し、その後Blueskyアプリで代替テキストを追加してください。ユーザーに代替テキストが公開されたと伝えないでください。 -
アプリパスワードが必要: Blueskyのアプリパスワードを使用する必要があります。メインのアカウントパスワードは使用しないでください。設定 > アプリパスワードで生成します。
-
すべての画像はJPEGに変換されます: 入力形式(PNG、WebP、GIF)に関係なく、すべての画像はアップロード前にJPEGに変換されます。
-
厳格な2,000,000バイトの画像制限: AT Protocolは正確な10進数のバイト上限を強制します(丸めた2 MiBではありません)。80~85%のJPEG品質に圧縮し、バイト数を確認してください。
-
DIDベースのプラットフォームID: 数値IDを使用する他のプラットフォームとは異なり、Blueskyは
did:plc:xxx形式を使用します。 -
動画アップロードにはメール確認が必要: 動画をアップロードする前に、Blueskyでメールアドレスを確認する必要があります。
-
1日25本の動画制限: 1日あたり最大25本の動画、または10 GBです。
ベストプラクティス
コンテンツ
- 簡潔な投稿: 300文字はTwitterより短いので、パンチの効いた内容に
- 自然なハッシュタグ: 1~2個の関連ハッシュタグが効果的
- 代替テキスト: 追加する価値はありますが、投稿後にBlueskyアプリで行う必要があります。APIでは対応できません
- URLは機能します: リンクはクリック可能です(一部のプラットフォームとは異なります)
タイミング
- 成長中のプラットフォーム: Xよりも混雑しておらず、注目されやすい
- テクノロジーに詳しいオーディエンス: 開発者やアーリーアダプターが多い
- 頻度: 1日1~3回の投稿
エンゲージメント
- Blueskyは誠実な会話を好みます
- コメントに返信してコミュニティを築きましょう
- 関連するユーザーをフォローしてネットワークを広げましょう
トラブルシューティング
| エラー | 原因 | 解決策 |
|---|---|---|
| "Invalid credentials" | 誤ったパスワードタイプ | メインパスワードではなくアプリパスワードを使用 |
| "Image too large" | 2,000,000バイト超過 | 80~85%のJPEG品質に圧縮 |
| "Content too long" | 300文字超過 | コンテンツを短く(自動スレッドはなし) |
| "Video daily limit" | 25本の動画に達した | 24時間待つ |
| "Email not verified" | 動画をアップロードしようとしている | Bluesky設定でメールを確認 |