

Discover more from Universal Set
I wanted to level up my GitHub profile by sharing other aspects of my life when other developers visit my profile (to appear well-rounded). I could make a new commit to my GitHub profile README every time I posted content or started reading a new book, but why not automate it? Fortunately, other developers have created GitHub Actions to process RSS feeds from those sources, and all I had to do was stitch them together.
If you don’t know what GitHub profiles are, they’re repos named with the user’s own GitHub handle. Mine is quentinlintz/quentinlintz. A README.md in this repo will display on my GitHub profile. Check out my profile to see mine.
RSS Feeds
An RSS (Really Simple Syndication) feed is a web format for publishing frequently updated content such as blog posts, news articles, and podcasts. They provide a standardized way for distributing and accessing content from various sources in a machine-readable format. RSS feeds use XML (eXtensible Markup Language) to encode the content and metadata, including the title, description, and link to the full content. Users can subscribe to RSS feeds using a feed reader or aggregator, which periodically checks for updates and displays the newest content in a consolidated view. This allows for efficient and automated tracking of multiple sources of information without the need to manually visit each website.
We can subscribe to multiple feeds and combine each source in our GitHub profile README. A simple workflow can be created to poll the data on a schedule.
GitHub Workflows
The magic behind this is a workflow. Create a workflow and set it to run on a cron job schedule. I prefer once a week, but you may like once per day or once per hour. You can choose this by uncommenting one of the cron parameters in the workflow file below.
My workflow has three jobs. The first checks out my repository.
“Pull Substack updates“ is from a community action and requires your Substack RSS feed URL as the feed_list
parameter. You can get this by appending ‘/feed’ to your Substack URL.
“Pull Goodreads updates” is another community action and requires your Goodreads user ID. This can be found at the end of your Goodreads profile URL: https://www.goodreads.com/user/show/160841838.
# ./.github/workflows/rss-workflow.yml
name: RSS Workflow
on:
schedule: # Run workflow automatically
# - cron: '0 * * * *' # Runs once per hour
# - cron: '0 0 * * *' # Runs once per day
- cron: '0 0 * * 0' # Runs once per week
workflow_dispatch: # Run workflow manually (without waiting for the cron to be called), through the GitHub Actions Workflow page directly
permissions:
contents: write # To write the generated contents to the readme
jobs:
update-readme-with-blog:
name: Update this repo's README with latest blog posts
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Pull Substack updates
uses: gautamkrishnar/blog-post-workflow@v1
with:
comment_tag_name: 'SUBSTACK'
feed_list: 'https://universalset.substack.com/feed'
commit_message: 'Update Substack posts'
- name: Pull Goodreads updates
uses: zwacky/goodreads-profile-workflow@main
with:
comment_tag_name: 'GOODREADS'
goodreads_user_id: '160841838'
shelf: 'currently-reading'
commit_message: 'Update Goodreads reading list'
If you visit the two community GitHub Actions, there are many more ways to customize what is displayed in your README.
README
The last change is going to be to your README.md. If you notice comment_tag_name
from the workflow file above, that’s what we’ll use here. The workflow needs an identifier to know where to add the data in your README. Make sure there’s nothing between these comments; they should appear like the example below. The headers and anything outside of them can be anything.
<!-- ./README.md -->
## ✍🏻 What I'm Writing
<!-- SUBSTACK:START -->
<!-- SUBSTACK:END -->
## 📚 What I'm Reading
<!-- GOODREADS:START -->
<!-- GOODREADS:END -->
Commit and push this to your GitHub profile repo. To test this immediately, go to the ‘Actions’ tab and run the workflow manually.
If this succeeds, you should see content between the comments in your README.md!
Go back to your terminal, and git pull
since the workflow changed your README. Doing this before you forget and modify something will save you a stash!
Result
Perfect! When I post to Substack or update my Goodreads bookshelf, it automatically updates by GitHub profile README.
Clone my profile README repo, update the repo name to your GitHub handle and update the workflow file with your feed_list
and goodreads_user_id
.
Cover DALL·E image: “A cat receiving radio signals from a walkie-talkie.”