Skip to content

Bluesky

OpenQuok CLI examples for Bluesky — text, images, video, and follow-up replies with an app-password channel.

1 min read

Connect your agent today

Draft from chat, review in your calendar, and publish only what you approve.

Start for $0

Channel quick reference

PropertyValue
Provider identifierbluesky
Max content length300 graphemes (main post and each follow-up)
Required attachmentsNone — text-only posts publish
ConnectDashboard 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"

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.

Search documentation
Find a docs page
Discord Support