Prompt
Scenario: watch our Ghost blog for new posts tagged 'engineering'. Use a text function to build a post: title, the first sentence of the excerpt truncated to 180 characters, and the URL. POST it to the REST API as a Bluesky draft with mode submit. How to do it
- Mint a Bluesky agent key In https://app.socialhandoff.com, open Connections, connect your Bluesky account, then create an agent key scoped to Bluesky with draft permission only. Copy the key when it is shown; only its hash is stored.
- Build the trigger module Start the scenario with a watch module: new RSS items, new rows, a webhook, or a scheduled run.
- Add HTTP Make a request Method POST, URL https://app.socialhandoff.com/v1/posts, header Authorization: Bearer with the key, body type JSON with body, networks ["bluesky"], and mode "submit".
- Map fields and run once Map the trigger's fields into body, run the scenario once, and approve or reject the result in the inbox before scheduling the scenario.
Example draft
From the engineering blog: Why we moved our job queue back into Postgres. After two years on a separate broker, one database turned out to be easier to run, debug, and back up. example.com/blog/queue-postgres
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.
- Make runs the HTTP module once per bundle. If your trigger returns 20 items, you get 20 drafts; add a filter or limit before the request.
- 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
Can Make read the approval result?
Yes. Register an outbound webhook for post.published or post.failed and point it at a Make custom webhook to continue the scenario.
What happens if a Make run sends a post longer than 300 graphemes?
The length guardrail flags it and the draft waits in the inbox with the reason attached. Send a thread array instead if your source text is long.
Does it support custom domain handles on Bluesky?
Yes. Connect with whatever handle you sign in with, including a domain handle. Mentions of other handles become clickable facets on publish.