Community写作与编辑github.com

publora/bluesky-post

通过 Publora 在 Bluesky 上发布或安排帖子。自动处理 300 字符限制、话题标签和链接、最多 4 张图片及视频。不支持通过 API 设置替代文本。需要 Bluesky 应用密码(而非主密码)。不适用于 Mastodon(请使用 social-post)。

bluesky-post 是什么?

这是一个用于通过 Publora MCP 服务器在 Bluesky 上创建和安排帖子的 AI 助手技能。它自动处理 Bluesky 的 300 字符限制、自动检测并生成可点击的话题标签和 URL、支持最多 4 张图片和视频,并处理复杂的富文本 facets,包括多字节字符的正确字节偏移计算。该技能需要用户先在 Bluesky 设置中生成应用密码(而非主密码),然后通过 Publora Dashboard 连接账户并获取 API 密钥。它支持多种 AI 客户端如 Claude Code、Claude Desktop、Cursor、Codex 等。核心工具包括 `create_post`(可立即发布或安排帖子,支持通过 `mediaUrls` 一次性附加媒体)、`get_upload_url` 和 `complete_media`(用于分步上传媒体)、以及 `list_connections`、`post_stats`、`profile_stats` 等管理工具。重要限制包括:无法通过 API 设置替代文本(需在 Bluesky 应用中手动添加)、所有图片自动转换为 JPEG、图片大小严格限制为 2,000,000 字节、视频每日上限 25 个。该技能还提供了 REST API 回退方案,以及详细的最佳实践和故障排除指南。

兼容平台✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/publora/skills/tree/main/skills/bluesky-post

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Bluesky 发布技能

使用 Publora MCP 服务器创建和安排发布到 Bluesky 的帖子。支持带有自动检测的话题标签和 URL 的文本帖子、图片和视频。

前提条件

方案: 免费 Starter 计划即可使用。当前限制和定价:publora.com/pricing。

开始使用

  1. 创建账户 在 publora.com/register(免费)
  2. 生成应用密码 在 Bluesky 设置 > 应用密码(不是您的主密码)
  3. 连接 Bluesky 在 Publora Dashboard 中使用您的句柄 + 应用密码
  4. 获取 API 密钥 在 app.publora.com/dashboard/api
  5. 将您的 AI 代理连接到 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": "您的帖子内容",
    "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
图片每篇帖子最多 4 张
图片大小精确为 2,000,000 字节(十进制,非 2 MiB)
视频时长3 分钟
视频大小50-100 MB(基于时长)
每日视频数25
替代文本在 Bluesky 上为 2,000 字符,但无法通过此 API 设置(见下文)

视频大小分级

时长最大大小
60 秒以下50 MB
60 秒 - 3 分钟100 MB

富文本 Facets

Bluesky 使用独特的富文本系统。Publora 自动处理其复杂性:

  • 话题标签:#hashtag 自动检测并使其可点击
  • URL:任何 URL 自动检测并使其可点击
  • 字节偏移量:为多字节字符(表情符号、中日韩文字)正确计算

无需特殊格式——只需自然地书写即可。

可用工具

create_post

创建新的 Bluesky 帖子。

参数:

  • platforms:包含您的 Bluesky 连接 ID 的数组(例如 ["bluesky-did:plc:abc123xyz"])
  • content:帖子文本(最多 300 字符)
  • scheduledTime:ISO 8601 UTC 日期时间。可选:省略则将帖子创建为草稿。发送未来时间则可安排发布。如果时间在过去五分钟或更久,将返回 SCHEDULED_TIME_IN_PAST 错误,因此要立即发布请使用当前时间加一分钟。
  • mediaUrls:最多 10 个公开的 https 图片或视频 URL。Publora 会在服务器端下载它们并在验证之前附加,因此媒体和日程安排可在一个调用中完成。这是“先草稿然后 get_upload_url 再 complete_media”流程的一次性替代方案。摄取速率限制为每小时 60 个 URL。

get_upload_url

获取用于媒体上传的预签名 URL。

参数:

  • postGroupId:要附加媒体的帖子 ID
  • fileName:文件名(例如 "photo.jpg")
  • contentType:image/jpeg、image/png、video/mp4
  • type:"image" 或 "video"

complete_media

在预签名 PUT 成功后,最终确定通过 get_upload_url 上传的文件。可选,因为日程安排也会最终确定待处理的媒体,但提前调用可以在发布前暴露格式和探测错误。对于使用 mediaUrls 附加的媒体则不需要。

参数:

  • mediaId:由 get_upload_url 返回的 ID

list_connections

列出您已连接的账户及其平台 ID。请先调用此方法并逐字复制 ID;它们永远无法猜测。

post_stats

已发布的 Bluesky 帖子的互动计数器:反应、评论、转帖、引用和收藏。在请求时实时获取,缓存大约两小时。

参数:

  • platform:bluesky
  • platformId:您的 Bluesky 连接 ID
  • postedIds:要查找的已发布帖子 ID

profile_stats

已连接账户的关注者、关注数和帖子计数。

参数:

  • platform:bluesky
  • platformId:您的 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"

多张图片

创建一个 Bluesky 帖子,包含前后对比图片:
"办公室翻新完成!真是巨大的变化。"

注意:每篇帖子最多允许 4 张图片。

视频帖子

将此 60 秒演示视频发布到 Bluesky:
"我们新移动应用功能的快速导览"

安排帖子

安排此帖子在明天上午 10 点发布:
"早上好!这里为您提供每日生产力技巧..."

重要限制

  1. 无法通过 API 设置替代文本。 Bluesky 发布者会读取媒体上的 alt 属性,但没有内容会持久化它:预签名上传流程和 mediaUrls 都不会存储它,发送给 create-post 的 altTexts 值也会被静默忽略。platformSettings 也没有帮助,因为 Bluesky 在那里被拒绝并返回 400 PLATFORM_SETTING_UNKNOWN。请先发布图片,然后在 Bluesky 应用中添加替代文本。不要告诉用户他们的替代文本已发布。

  2. 需要应用密码:您必须使用 Bluesky 应用密码,而不是您的主账户密码。在设置 > 应用密码中生成。

  3. 所有图片转换为 JPEG:无论输入格式如何(PNG、WebP、GIF),所有图片在上传前都会转换为 JPEG。

  4. 严格的 2,000,000 字节图片限制:AT Protocol 强制执行精确的十进制字节上限,而不是舍入的 2 MiB。请压缩到 80-85% JPEG 质量并检查字节数。

  5. 基于 DID 的平台 ID:与其他使用数字 ID 的平台不同,Bluesky 使用 did:plc:xxx 格式。

  6. 视频需要电子邮件验证:您必须先验证 Bluesky 中的电子邮件才能上传视频。

  7. 每日 25 个视频上限:每天最多 25 个视频或 10 GB。

最佳实践

内容

  1. 简洁的帖子:300 字符比 Twitter 还短——要一针见血
  2. 自然的话题标签:1-2 个相关的话题标签效果最佳
  3. 替代文本:值得添加,但您必须在发布后在 Bluesky 应用中手动完成;API 无法携带它
  4. URL 有效:链接可点击(不同于某些平台)

时机

  • 成长中的平台:比 X 用户密度低,更容易获得关注
  • 技术受众:以开发者和早期采用者为主
  • 频率:每天 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 设置中验证电子邮件

Individual skills in this repo

This repo contains 8 individual skills — each has its own dedicated page.

publora/instagram-post

Use when the user wants to post or schedule to Instagram through Publora: a single image, a 2-10 image carousel, a Reel or a Story. Requires a Business account and an image or video; text-only posts are rejected by the API. Not for Threads (use threads-post).

publora/linkedin-analytics

Analyze LinkedIn performance and manage engagement through Publora. Use when the user asks how a LinkedIn post or account performed (impressions, reach, reactions, comments, reshares, follower growth) or wants to react, comment, reshare or resolve an @mention. Statistics run over the REST API, engagement over MCP tools. Not for creating posts (use linkedin-post).

publora/linkedin-post

Use when the user wants to publish or schedule a LinkedIn post through Publora: text, a multi-image grid, a video, a PDF document, or @mentions. Not for analytics, reactions, comments or reshares (use linkedin-analytics), and not for other platforms.

publora/social-post

Use when the user wants to post or schedule to YouTube, a Facebook Page or Mastodon through Publora. YouTube needs a video on every post, Facebook publishes to Pages only, Mastodon caps at 500 characters. Not for the platforms that have their own skill.

publora/telegram-post

Use when the user wants to post or schedule to a Telegram channel or group through Publora, using a bot. Covers Telegram markdown, silent delivery, link previews and forward protection. Bot API caps media captions at 1,024 characters and videos at 50 MB. Not for other platforms (each has its own skill).

publora/threads-post

Create and schedule Threads posts with image carousels and reply control via Publora MCP. Use when the user wants to post to Meta's Threads. Multi-part threading is currently disabled by the platform, so long content stays a single post. Not for Instagram (use instagram-post) or X threads (use x-post).

publora/tiktok-post

Use when the user wants to upload or schedule a TikTok video through Publora, with privacy, comment, duet, stitch and commercial-disclosure settings. Video runs 3 seconds to 10 minutes at 23+ FPS; carousels take up to 35 images. Unaudited apps can publish private videos only. Not for Reels (use instagram-post).

publora/x-post

Use when the user wants to post or schedule to X (Twitter) through Publora, including threads auto-split past 280 characters, up to 4 images, or a video up to 140 seconds. X needs a paid Publora plan. Not for Threads or Bluesky (each has its own skill).

相关技能