Prompt
Workflow: on release published, run socialhandoff-announce-action with the instance URL, trigger id, and signing secret from repository secrets. Release rule in Connections targets bluesky with approval required. How to do it
- Connect Bluesky and add a release rule In https://app.socialhandoff.com, connect Bluesky, then add a GitHub trigger in Connections with a release rule that targets Bluesky. Copy the trigger id and signing secret.
- Store the secrets Add your instance URL, the trigger id, and the signing secret as repository secrets.
- Add the workflow Create a workflow on: release with types [published] that runs socialhandoff-announce-action. The action signs the payload with HMAC-SHA256 and sends tag, name, notes, and URL.
- Approve the draft Publish a release. A Bluesky draft appears in the inbox with a citation back to the release, and publishes only after you approve it.
Example draft
Released: quill v5.0.0. The editor core was rewritten for faster large documents, and plugins now use a stable API. Breaking: Node 20 or later is required. github.com/acme/quill/releases/tag/v5.0.0
Gotchas
- Connect Bluesky with an app password from Settings, never your account password. Revoking that app password cuts off only this connection.
- The 300 limit counts graphemes, so an emoji or accented letter counts as one. Anything longer should become a reply-chain thread, not a clipped post.
- Bluesky refuses images over 1 MB and allows at most 4 per post. Resize screenshots before the agent attaches them, and add alt text to each.
- The action sends the release, not a finished post. Bluesky as a target and the approval rule live on the release rule in Connections, not in the workflow file.
- Character limit: 300 graphemes per post. An emoji or an accented letter counts as 1 grapheme even if it uses several bytes.
- Media per post: Up to 4 images, or 1 video. Images and video cannot be mixed in one post.
- Image size: The AT Protocol image embed accepts blobs of about 1 MB each; the official app compresses larger photos. SocialHandoff checks for 1 MB per image.
- Video: Up to 3 minutes and 100 MB, MP4. SocialHandoff does not publish video to Bluesky.
Frequently asked questions
Does the action need an agent key?
No. It uses the trigger id and a signing secret, and the request is verified with HMAC-SHA256. The draft is attributed to the release in the audit log.
Can a release become a Bluesky thread?
The draft is checked against the 300-grapheme limit, and the length guardrail flags it if the notes run long. Edit it down in the inbox before you approve.
Is there a character counter for Bluesky?
Yes. The free Bluesky character counter on this site counts graphemes the way Bluesky does, and the length guardrail applies the same rule to every draft.