BlueskyExecution icon
SlackIncomingWebhook icon
Schedule icon

Post a Weekly Changelog Digest to Bluesky on a Schedule

Post a weekly changelog digest to Bluesky with Kestra. A scheduled flow turns release notes into a community-facing skeet and reports each post to Slack.

Categories
Business

Communities reward rhythm. A changelog that appears every Friday, even in quiet weeks, tells your Bluesky followers the project is alive and tells contributors their work gets seen. This blueprint turns that cadence into an orchestrated flow: a disabled-by-default weekly schedule fires, io.kestra.plugin.bluesky.BlueskyExecution posts an execution-notification skeet carrying a short digest built from flow inputs, and Slack confirms internally that the week's update is out. Where the X channel broadcasts, the Bluesky channel converses, so the digest is written as a community note rather than a press release.

Every execution publishes to a public feed, so the digest text lives in versioned flow inputs with sensible defaults rather than free-typed prose, and anything that should not be public yet stays out of the summary. The post also wears its automation openly. It opens with the execution state and flow id and closes with a link to the execution, which suits a digest whose whole point is that the cadence is machine-kept.

How it works

  1. The weekly trigger (io.kestra.plugin.core.trigger.Schedule) fires every Friday at 16:00 once you set disabled: false.
  2. post_digest (io.kestra.plugin.bluesky.BlueskyExecution) authenticates with the handle and app password from secrets and posts the digest, with customMessage built from week_summary and changelog_url_hint.
  3. The plugin always renders its built-in execution template: the post opens with the execution state and flow id, for example RUNNING: company.team/bluesky-changelog-digest-post, then the custom message, and closes with a link to the execution in the Kestra UI. Bluesky's 300-grapheme limit applies to that whole rendered post, not just the digest text.
  4. confirm_internally posts the execution id to Slack, so a glance at the channel confirms the cadence held this week.
  5. The errors block posts a distinct Slack alert when posting failed, because a silently skipped week is exactly what a cadence cannot afford.

What you get

  • A weekly public changelog rhythm that survives vacations, launches, and busy sprints.
  • Digest text managed as flow inputs, reviewable and repeatable instead of typed into an app at 16:00 on Friday.
  • Internal confirmation and failure alerting, so the state of the public cadence is always visible in Slack.
  • A pattern that runs manually with custom inputs whenever an off-cycle update is worth posting.

Who it's for

  • Developer relations teams running a community changelog on Bluesky.
  • Product teams who want shipping visible in public, not only in internal standups.
  • Open source maintainers keeping contributors and users in the same weekly loop.

Why orchestrate this with Kestra

A recurring calendar reminder still depends on a human being at a keyboard. Kestra makes the cadence a scheduled execution with secrets management for the app password, a full history of every digest ever posted, and an alert the moment a post fails. Updating the summary is editing an input value, and pausing the cadence is one disabled flag, all versioned alongside the rest of your orchestration.

Prerequisites

  • A Bluesky account for the project and an app password created under Settings, never the account password.
  • A Slack incoming webhook for confirmations and alerts.

Secrets

  • BLUESKY_IDENTIFIER: the Bluesky handle, for example yourproject.bsky.social.
  • BLUESKY_APP_PASSWORD: an app password generated in Bluesky settings.
  • SLACK_WEBHOOK_URL: Slack incoming webhook URL.

Quick start

  1. Add the three secrets to your Kestra namespace.
  2. Execute the flow manually with a real week_summary and check the skeet on your profile plus the Slack confirmation.
  3. Adjust the default inputs to your voice and set disabled: false on the weekly trigger.

How to extend

  • Build the summary automatically from your release tooling by fronting this flow with a webhook, as shown in the release notes blueprint.
  • Announce individual blog posts between digests, as shown in the blog announcer blueprint.
  • Move the schedule to your community's most active hour using the cron expression.
  • Add a second notification task to mirror the digest into a public Discord server.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.