Skip to main content
Bluesky accepts text with up to four images or one video. Do not mix a video with other media.

Text

A post can contain at most 300 graphemes and 3,000 UTF-8 bytes. OpenPMM checks both limits before it contacts Bluesky. Links, hashtags, and resolvable mentions become Bluesky rich-text facets. If a mention cannot resolve, publication stops before OpenPMM creates the post. Repeat the Post body value to publish a self-reply chain. Each reply points to the opening record as its root and to the previous record as its parent. Media can attach to each body item. Any body item can contain media without text.

Images

OpenPMM removes image metadata before upload. This step can change the file size. If the sanitized image is too large, OpenPMM does not create the Bluesky post. Use a JPEG, PNG, or WebP image that stays below the size limit after metadata removal. Bluesky shows a still image, so use a non-animated image.

Video

OpenPMM can convert a compatible MOV or WebM file to MP4. It keeps the original Asset. Bluesky processes the video before OpenPMM creates the Post. The Post can show a processing state during this step. An old Bluesky connection can lack the video permission. Connect the Destination again when OpenPMM requests authorization.

Content labels

You can add the porn, sexual, nudity, or graphic-media self-label. Add every label that applies before publication. Use destination_options.bluesky on the draft Post. Each key in alt_text_by_asset_id must match an attached Asset ID. Add alt text for every image. Video alt text is optional.

Retry behavior

OpenPMM derives one Bluesky record key for each body item. A retry checks each exact record and resumes at the first missing reply instead of creating a second post.

Provider references