Testing the Automated Posting Workflow

meta
A behind-the-scenes look at how this blog now automatically shares new posts to Bluesky, Twitter, and email subscribers using GitHub Actions.
Author

Brenton Kenkel

Published

January 20, 2026

I recently set up an automated workflow to share new blog posts across multiple platforms. When I publish a new post here, a GitHub Action automatically:

  1. Posts an announcement to Bluesky with a link card preview
  2. Tweets the same announcement on Twitter/X
  3. Sends the full post content to email subscribers via Buttondown

How It Works

The workflow runs every weekday morning at 8:15am Central Time. It parses the blog’s RSS feed, compares it against a cache of previously shared posts, and distributes any new content.

Each platform gets a slightly different treatment:

  • Social media (Bluesky and Twitter) receive a short announcement with the post title, description, and a link to read more.
  • Email subscribers get the complete post content delivered to their inbox, formatted with the description as an italicized introduction.

Why Automate?

The main benefit is consistency. I don’t have to remember to manually cross-post every time I publish something new. The workflow handles it automatically, and I can focus on writing.

It also means subscribers on different platforms get the content in a format that works best for that medium. Social media followers see a teaser that encourages them to click through, while email readers can consume the full post without leaving their inbox.

Technical Details

The whole thing runs as a single GitHub Actions job with three steps. Each step uses a small Node.js script that:

  1. Fetches the RSS feed
  2. Checks a JSON cache file to find new posts
  3. Posts to the respective platform’s API
  4. Updates the cache

The cache files are committed back to the repository, so the workflow remembers what it has already shared across runs.