Bluesky
OpenQuok CLI examples for Bluesky — text, images, video, and follow-up replies with an app-password channel.
Connect your agent today
Draft from chat, review in your calendar, and publish only what you approve.
Channel quick reference
| Property | Value |
|---|---|
| Provider identifier | bluesky |
| Max content length | 300 graphemes (main post and each follow-up) |
| Required attachments | None — text-only posts publish |
| Connect | Dashboard app password — Bluesky setup |
BLUESKY_ID=$(openquok integrations:list | jq -r '.[] | select(.identifier=="bluesky") | .id') Simple text post
openquok posts:create
-s "2026-01-15T10:00:00Z"
-t schedule
-c "Hello from OpenQuok on Bluesky."
-i "$BLUESKY_ID" Post with images
Up to four images per post. Upload each file, then pass the media array:
MEDIA=$(openquok upload ./photo-a.png ./photo-b.png | jq -c '[.data | {id, path: (.path // .filePath)}]')
openquok posts:create
-s "2026-01-15T10:00:00Z"
-t schedule
-c "Two photos in one post."
-i "$BLUESKY_ID"
-m "$MEDIA" Post with video
One MP4 per post — do not attach images in the same post.
MEDIA=$(openquok upload ./clip.mp4 | jq -c '[{id: .data.id, path: (.data.path // .data.filePath)}]')
openquok posts:create
-s "2026-01-15T10:00:00Z"
-t schedule
-c "Short video update."
-i "$BLUESKY_ID"
-m "$MEDIA" Note
Bluesky caps scheduled text at 300 graphemes for the main -c caption and each bluesky.replies[].message row. Use -t draft to store longer copy until you shorten it.
Follow-up reply
bluesky.replies carries same-account replies after the main post publishes:openquok posts:create
-s "2026-01-15T10:00:00Z"
-t schedule
-c "Part one of the update."
-i "$BLUESKY_ID"
--providerSettingsByIntegrationId "$(jq -nc --arg id "$BLUESKY_ID" '
{
($id): {
bluesky: {
replies: [
{ id: "reply-1", message: "Part two — details below.", delaySeconds: 300 }
]
}
}
}
')" Follow-up with media
Upload attachments first, then nest media on the matching reply row:
REPLY_MEDIA=$(openquok upload ./reply-image.png | jq -c '[{id: .data.id, path: (.data.path // .data.filePath)}]')
openquok posts:create
-s "2026-01-15T10:00:00Z"
-t schedule
-c "Launch post."
-i "$BLUESKY_ID"
--providerSettingsByIntegrationId "$(jq -nc
--arg id "$BLUESKY_ID"
--argjson media "$REPLY_MEDIA" '
{
($id): {
bluesky: {
replies: [
{ id: "reply-1", message: "Screenshot attached.", delaySeconds: 60, media: $media }
]
}
}
}
')" JSON file examples
Agent-ready payloads live in the OpenQuok Core skill:
openquok posts:create --json ./examples/bluesky-text-only.json See Bluesky Settings for the full bluesky.replies field table.