Testing the Automated Posting Workflow
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:
- Posts an announcement to Bluesky with a link card preview
- Tweets the same announcement on Twitter/X
- 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:
- Fetches the RSS feed
- Checks a JSON cache file to find new posts
- Posts to the respective platform’s API
- Updates the cache
The cache files are committed back to the repository, so the workflow remembers what it has already shared across runs.