Destination · publishing reference
Bluesky publishing reference for Postdom
This Bluesky publishing reference explains app-password connection, public-post behavior, transport limits, empty settings, and the outcome Postdom can verify.
Human authorization boundary
Bluesky publishing reference connection requirements
A human completes the destination connection. The agent receives the resulting account ID—not the social credential—and supplies that exact account ID to publish_video.
connectionApp password
prerequisiteNo additional Postdom prerequisite is recorded beyond an eligible account.
current source surfacepost
Configured output
What Postdom sends to Bluesky
The public tool accepts product-level publishing fields. Postdom builds destination settings after validation; callers cannot smuggle an undocumented settings object through publish_video.
settings- omitted
Postdom sends no Bluesky visibility or reply-gating setting.
Bluesky connects with an app password. Postdom sends no visibility field and does not write separate threadgate or postgate records.
{
"platform": "bluesky",
"settings": {}
}Enforced, documented, or unknown
Bluesky publishing limits
Every row comes from the current @postdom/core registry. “Postdom enforced” means the source contract checks the fact. A recommendation, documented-but-unenforced fact, or unpublished value must not be presented as a passed validation.
caption max chars
4000
Postdom contract · verified 2026-08-21T00:00:00.000Z
Evidence reference retained in the core registry.
media max bytes
524,288,000 bytes
Postdom contract · verified 2026-08-21T00:00:00.000Z
Evidence reference retained in the core registry.
video max seconds
600
Postdom contract · verified 2026-08-21T00:00:00.000Z
Evidence reference retained in the core registry.
video mime types
video/mp4, video/quicktime
Postdom contract · verified 2026-08-21T00:00:00.000Z
Evidence reference retained in the core registry.
image mime types
image/jpeg, image/png, image/gif, image/webp
Postdom contract · verified 2026-08-21T00:00:00.000Z
Evidence reference retained in the core registry.
feed post lexicon text
300
Unit: graphemes · Field: text · Scope: app.bsky.feed.post
Platform evidence · verified 2026-09-02T00:00:00.000Z
Qualification
Bluesky counts graphemes. Postdom's UTF-16 length is conservative here: a passing UTF-16 count cannot exceed the grapheme ceiling, although it can reject text Bluesky would accept.
video max bytes
50,000,000 bytes
Transport evidence · verified 2026-09-02T00:00:00.000Z
Evidence reference retained in the core registry.
video mime types
video/mp4
Platform evidence · verified 2026-09-02T00:00:00.000Z
Official sourcevideo max seconds
Not published
Platform evidence · verified 2026-09-02T00:00:00.000Z
Official sourceaspect ratio
Not published
Platform evidence · verified 2026-09-02T00:00:00.000Z
Official sourceplatform video max bytes
300,000,000 bytes
Platform evidence · verified 2026-09-02T00:00:00.000Z
Qualification
Bluesky's own ceiling, from the lexicon's `maxSize: 300000000`. It is not the one that binds: Postdom stores bytes and hands a media URL to the provider, so the provider is the transport and its 50 MB figure is the ceiling a request meets. Recorded so the platform fact is not lost and so the enforced 50 MB is legible as a transport limit rather than a claim about Bluesky. Raise the enforced value only on evidence the provider carries more, never on evidence Bluesky accepts more.
image max bytes
2,000,000 bytes
Transport evidence · verified 2026-09-02T00:00:00.000Z
Qualification
Postdom publishes video, so no request can carry a Bluesky image and a gate would be unreachable. Recorded because it is the evidence for the video decision above: the lexicon says "May be up to 2 MB, formerly limited to 1 MB" while the provider recompresses images to stay under ~1 MB. That is a superseded platform figure the provider still enforces, which is why its video figure could not be dismissed as merely stale. Deleting this row removes the only support for treating the 50 MB delivery ceiling as a real transport limit rather than a stale copy.
Evidence reference retained in the core registry.
Result boundary
How to verify the Bluesky outcome
This page does not claim an observed Postdom Bluesky connection, public publication, or analytics response. It separates the transport ceiling from Bluesky's wider platform ceiling.
Never collapse a workflow state into success
Store the Postdom post ID, read the exact destination state with get_publish, and preserve a missing public URL, approval state, terminal refusal, or provider error exactly as returned.
Nine modeled fields
Bluesky metric availability
The matrix records evidence states, not guaranteed live values. Unverified and never remain null with a reason; zero remains a measured zero.
viewsViewsRequired view count in a normalized snapshot.
Not verified
Always null with an explicit reason.
likesLikesRequired like count in a normalized snapshot.
Not verified
Always null with an explicit reason.
commentsCommentsRequired comment count in a normalized snapshot.
Not verified
Always null with an explicit reason.
sharesSharesRequired share count in a normalized snapshot.
Not verified
Always null with an explicit reason.
savesSavesNullable saved or favorited count.
Not verified
Always null with an explicit reason.
watch_time_sWatch timeNullable total watch time in seconds.
Not verified
Always null with an explicit reason.
avg_watch_pctAverage watchNullable average watched percentage.
Not verified
Always null with an explicit reason.
completion_pctCompletionNullable completion percentage.
Not verified
Always null with an explicit reason.
follower_deltaFollower deltaNullable follower-change field.
Not verified
Always null with an explicit reason.
Verification scope
Bluesky evidence boundary
Contract evidence is not an observed publication
These pages describe source-backed product contracts. They do not represent an authenticated end-to-end publication or analytics test.
Inspect the connected tool schema before acting. Current source may be ahead of the separately published @postdom/mcp helper.
Use the contract
Publish with explicit authority and outcomes
Create a workspace, connect an eligible account, and let the agent use only the fields exposed by the connected schema.