Blog RSS auto-backlinks on a GitHub repo
Links to a site in a GitHub URL count as "nofollow" backlinks.
They aren't the most effective, but if you can implement them, they might still be helpful1.
I've implemented a solution to link blog posts in a GitHub repo automatically using an RSS feed, as part of my domain ranking experiment for this site.
This GitHub Actions workflow can parse an RSS feed, and output a Markdown README.md file with a list of blog posts:
name: Update README with Blog Posts
on:
schedule:
# Run every hour
- cron: '0 * * * *'
workflow_dispatch:
push:
branches:
- main
paths:
- '.github/workflows/*' # Only run if workflow files change
jobs:
update-readme:
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install required packages
run: |
sudo apt-get update
sudo apt-get install -y curl libxml2-utils
- name: Fetch RSS feed
id: fetch_rss
run: |
# CHANGE THIS TO YOUR FEED URL
RSS_URL="https://YOURWEBSITE/feed"
# This xpath definition may need to be changed to fit your feed structure
curl -s "$RSS_URL" | xmllint --xpath '//item/title | //item/link' - | \
awk 'NR % 2 == 1 { title=$0; gsub(/<[^>]+>/, "", title); } NR % 2 == 0 { gsub(/<[^>]+>/, "", $0); print "- [" title "](" $0 ")" }' > posts.md
- name: Prepare Markdown content
id: prepare_markdown
run: |
if [ -f posts.md ] && [ -s posts.md ]; then
echo "# Latest Blog Posts" > new_content.md
cat posts.md >> new_content.md
else
echo "# Latest Blog Posts" > new_content.md
echo "No blog posts found." >> new_content.md
fi
- name: Update README.md
run: |
if [ -s new_content.md ]; then
rm README.md
mv new_content.md README.md
rm posts.md
fi
- uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "Update README with latest blog posts"
branch: main
See kristianfreeman/blog-posts for how this looks in practice. Right now, it will only show however many blog posts your RSS feed returns. Caching or a better lookup could be implemented.
See this ahrefs article on nofollow links. The gist is that although they may not necessarily help page ranking, they can still have some benefits.↩