Bluesky BlueskyExecution

Bluesky BlueskyExecution

Certified

Post execution summary to Bluesky

Renders the bundled bluesky.peb template with execution details (id, namespace, link, status, timings) plus custom fields/message, then sends it to Bluesky via identifier and app password with a 300-grapheme cap.

yaml
type: io.kestra.plugin.bluesky.BlueskyExecution

Send a Bluesky notification on a failed flow execution.

yaml
id: failure_alert_bluesky
namespace: company.team

tasks:
  - id: send_bluesky_alert
    type: io.kestra.plugin.bluesky.BlueskyExecution
    identifier: "myhandle.bsky.social"
    appPassword: "{{ secret('BLUESKY_APP_PASSWORD') }}"
    executionId: "{{ trigger.executionId ?? execution.id }}"
    customMessage: "Production workflow failed - immediate attention required!"
    customFields:
      Environment: "Production"
      Team: "DevOps"
      Priority: "High"

triggers:
  - id: failed_prod_workflows
    type: io.kestra.plugin.core.trigger.Flow
    conditions:
      - type: io.kestra.plugin.core.condition.ExecutionStatus
        in:
          - FAILED
          - WARNING
      - type: io.kestra.plugin.core.condition.ExecutionNamespace
        namespace: prod
        prefix: true

Send a Bluesky notification on a successful flow execution.

yaml
id: success_alert_bluesky
namespace: company.team

tasks:
  - id: send_bluesky_success
    type: io.kestra.plugin.bluesky.BlueskyExecution
    identifier: "myhandle.bsky.social"
    appPassword: "{{ secret('BLUESKY_APP_PASSWORD') }}"
    executionId: "{{ trigger.executionId ?? execution.id }}"
    customMessage: "Deployment completed successfully!"
    options:
      readTimeout: PT5S
      headers:
        X-Datacenter: "eu-west-1"

triggers:
  - id: successful_deployments
    type: io.kestra.plugin.core.trigger.Flow
    conditions:
      - type: io.kestra.plugin.core.condition.ExecutionStatus
        in:
          - SUCCESS
Properties

App password

A Bluesky app password generated from Settings > Privacy and Security > App Passwords. Never use your main account password here.

Bluesky identifier

Your Bluesky handle (e.g. myhandle.bsky.social) or email address used to authenticate.

Defaulthttps://bsky.social

Base URL

The base URL of the Bluesky PDS (Personal Data Server). Defaults to https://bsky.social.

Custom fields

Key-value pairs appended to the rendered template output

Custom message

Optional extra text appended to the template output

Default{{ execution.id }}

Execution ID

Execution to include in the template; defaults to the current execution and should be set to {{ trigger.executionId ?? execution.id }} when called from a Flow trigger

Options

The options to set to customize the HTTP client

Definitions
connectTimeoutstring

Connection timeout

Time allowed to establish a server connection before failing

connectionPoolIdleTimeoutstring
DefaultPT0S

Connection pool idle timeout

How long an idle connection stays in the pool before closure; defaults to 0s

defaultCharsetstring
DefaultUTF-8

Default charset

Charset used for requests when none is specified; defaults to UTF-8

headersobject

HTTP headers

HTTP headers to include in the request

maxContentLengthintegerstring
Default10485760

Max content length

Maximum response size in bytes; defaults to 10 MB

readIdleTimeoutstring
DefaultPT5M

Read idle timeout

How long a read connection may stay idle before closing; defaults to 5 minutes

readTimeoutstring
DefaultPT10S

Read timeout

Max time allowed for reading data from the server before failing; defaults to 10s

Reference (ref) of the pluginDefaults to apply to this task.

Template variables

Key-value map rendered and injected into the template before sending

Post text body

Direct post text that bypasses the template; must fit within 300 graphemes