How to Syndicate to Twitter/X with GitHub Actions
My Twitter account had been peacefully lying dormant since November 18th, 2022, but so many people are still using X that I finally caved a few weeks ago and spent 45 minutes wiring up a syndication strategy, effectively adding it to this site's POSSE.
If you want to do this, here's what you'll need:
- The azu/rss-to-twitter GitHub Action and a modest amount of a free account's budget
- A Twitter developer account and app
- An Atom feed to read from (here's mine, specially crafted
to cram the full content of each tweet in the
<title>
of each<entry>
) - The handle you're posting as must be marked as an automated account and registered as managed by some other account
Once you have all that, you can define a YAML file defining the action in your GitHub repo like the one for this site:
# .github/workflows/rss_to_twitter.yml
name: rss-to-twitter
on:
schedule:
- cron: "*/30 * * * *"
workflow_dispatch:
jobs:
twitter:
runs-on: ubuntu-latest
steps:
- uses: azu/rss-to-twitter@v1
with:
RSS_URL: "https://justin.searls.co/shorter-form.xml"
TWEET_TEMPLATE: '%title%'
TWITTER_APIKEY: ${{ secrets.TWITTER_APIKEY }}
TWITTER_APIKEY_SECRET: ${{ secrets.TWITTER_APIKEY_SECRET }}
TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
The above cron schedule translates to checking the Atom feed "every 30 minutes",
which is more frequent than it needs to be in my case. And as for all
those ${{ secrets… }}
directives, here's how to configure your repository's
GitHub Action
secrets.
And that's it. Easy!