One of the things I love in our post āChatGPT Momentā era is the fact that I increasingly get to follow through on more and more side projects.
One of the things I find ridiculous in our 2025 post āChatGPT Momentā era is the fact that there are still a ton of blogs that donāt have a way for me to subscribe, be it through a proprietary service or a standardized RSS feed.
If a blog doesnāt have a Subscribe, I usually check for an existing /feed.xml or /index.xml file and use blogtrottr.com to send that feed into my email inbox. If neither exists, I now have an approach to adding and maintaining new RSS feed generators: github.com/Olshansk/rss-feeds.
Exploring new tools
One of the things I love about MrBeast is that he actually does all the random crazy things we talk about with friends rather than just think about it. Similarly, AI tooling and infrastructure is enabling builders to materialize our creativity into real products.
More importantly, all the skills I build and learn from these little weekend quests directly transfer over into my day-to-day job as CTO of Grove. The team is more productive, we get more done in the same amount of time, and rather than spending time on hiring and recruiting, we invest that time in up-leveling each other instead. It feels like Transfer Learning but for humans.
This post is about how I used three new tools I got acquainted with over the holidays to easily create RSS feeds for any blog I want to follow that doesnāt already have one. Specifically, the tools I discuss here are:
Claude Projects; launched by Anthropic in 06/2024
ClaudeSync; independent, open-source project by @jahwag
GitHub Copilot Workspace; technical preview by GitHub as of 01/2025
Missing RSS Feeds
A couple of months ago I discovered that the RSS feed Aaron Swartz (RIP) created for from Paul Grahamās essays was no longer getting updated. *Superlinear Returns, *from October 2023, was the last essay included in the feed.
- https://www.paulgraham.com/I created Olshansk/pgessays-rss to solve this problem. I had a short conversation with ChatGPT, had it create a python file that parses the HTML to generate an XML feed thatās RSS compatible, fixed a few bugs, used GitHub actions to have the script run on a cron schedule, and itās been working pretty well.
Little did I know that I would run into a similar problem again…
Last week I was trying to subscribe to updates from Ollamaās Blog, but couldnāt find a subscribe button or an RSS feed. I wasnāt the only one with this request as I made my way to GitHub issues searching for a solution.
https://github.com/ollama/ollama/issues/1669I realized that this wonāt be the last time I hit this issue, so I wanted to build something thatāll be more āsustainable.ā
Claude Projects
When it comes to coding tasks, Claude Sonnet 3.5 is competing for the top spots by some mainstream benchmarks, but more importantly, itās leading the charge per my personal vibe checks. Iāve also been very happy with the UI that Claude Projects put together. Itās easy to setup the instructions, add knowledge, navigate past conversations, start new conversations, etc.
With the easy decision of using Claude and Claude Projects for development, what I wanted next was an easy way to introduce new parsers (i.e. feed generators) for blogs I come across.
Here is what Iām assuming:
Not all blogs have a subscribe button or an RSS feed
- All blogs I will care about will be rendered via HTML
Here is what I want:
Foundational infrastructure to add, maintain and run multiple RSS feed generators
Easily add new parsers (i.e. python files) anytime I want to subscribe to a new blog
Convert any HTML into XML thatās RSS feed compatible
Enable others to add their own parsers once things mature a bit; i.e. make the Claude Project public
Limit the number of moving parts and overall complexity of this mini side project; i.e. GitHub actions instead of maintaining a server
With that in place, I create a Claude project with the following (v0) instructions:
The goal of this project is to generate rss (feed.xml) files from web pages (*.html) that contain blogs or updates but do not provide a subscribe button or a default RSS feed.
Here is the expected flow and instructions:
You will be given an HTML file that needs to be parsed and understood.
You will provide a python script that writes a
feed_{}.xml
file that is RSS feed compatible.The
{}
infeed_{}.xml
will refer to the name of a particular RSS feed.GitHub actions will take care of triggering this periodically, so you don’t have to worry about it
If you are not given an HTML file that you can parse into an rss feed, either ask for it or explain what the issue with the provided file is.One of the great things about Claude Projects isnāt just the fact that you have baseline instructions, but also the fact that you can add knowledge to the project. Iām assuming it’s a basic RAG pipeline behind the scenes.
However, keeping the knowledge up to date is a tedious and manual task, so I was sure thereās something better.
Claude Sync
I only have support for two blogs at the moment (Paul Graham and Ollama), but every blog comes with some nuances when it comes to parsing.
Generating a parser for Ollamaās blog worked on the first time, but Paul Grahamās blog took a few iterations. Iām going to omit those the details because thereās nothing interesting to share. After some back & forth with Claude, we figured it out.
However, I want to reduce the amount of back & forth I (or others) have in the future. For that, I need to continue building up the projectās knowledge of which parsers I have and how they work.
ClaudeSync is exactly what I needed. Hereās the pitch:
ClaudeSync bridges your local development environment with Claude.ai projects, enabling seamless synchronization to enhance your AI-powered workflow.
I think itās just a matter of time before Anthropic creates a native GitHub integration, but Iāve also worked for large companies, and know that good things take time to get right.
The ClaudeSync
README is targeted at users that do not have an existing Claude Project created, so I had to associate my existing git repo with an existing Claude Project.
After installing claudesync
*, *this was relatively straightforward. Each of the following instructions was supplemented with an intuitive REPL UX (give it a shot), and I just followed the instructions.
claudesync auth login claudesync project init –name “RSS Feed Generator” claudesync organization set claudesync project setIt generated the following config file:
cat .claudesync/config.local.json
{
“active_provider”: “claude.ai”,
“local_path”: “/Users/olshansky/workspace/rss-feeds”,
“active_organization_id”: “redacted-reda-cted-reda-cteredacted”,
“active_project_id”: “redacted-reda-cted-reda-cteredacted”,
“active_project_name”: “RSS Feed Generator”
}%I can set up an automatic schedule to push my local changes using claudesync schedule
. For now, Iām just sticking with a manual claudesync push
.
GitHub Copilot Workspace
I recently got access to the GitHub Copilot Workspace technical preview. Hereās the pitch:
A Copilot-native dev environment, designed for everyday tasks.
The obvious things they forgot to mention is that it natively integrates with all the GitHub workflows and tooling weāre familiar with: GitHub workflows, PRs, Issues, etc.
Since the code to generate the RSS feeds was already in place, what I needed next was a GitHub Action that:
Runs on an hourly basis
Iterate and execute all the parsers I have today and will have in the future
My zero-shot prompt with GitHub Copilot Workspace worked flawlessly. The UX was intuitive, the UI had everything I needed, and generating the corresponding PR was a simple click of a button.
https://copilot-workspace.githubnext.com/Olshansk/rss-feeds/pull/1I merged it in and it has been running smoothly since then. Too easy.
https://github.com/Olshansk/rss-feeds/actions
Architecture Diagram: GitHub Copilot vs Claude
Once everything was in place, I realized that both GitHub Copilot and the Claude Project both have access to the entire repository. It felt like a good opportunity to generate an architecture diagram in case any future readers are interested in seeing how things work.
I use the following prompt and am showing the comparison between what the Claude Project and GitHub Workspace Copilot generated.
Can you create a mermaid diagram for how this repo works?
Include the following:
- GitHub Action gets triggered hourly as a cron job.
- run_all_feeds.py iterates through all the python files (one per blog) and generates an RSS feed for each one
- The GitHub repo gets updated
- External programs (e.g. blogtrottr) read it and process appropriatelyMermaid architecture diagram of the git repository comparison between Claude Project (left) and GitHub Copilot Workspace (right).Also, Iāve got to call out one of the killer features Claude has that ChatGPT is missing out on is native mermaid rendering.
Native rendering of mermaid diagrams in Claude
Culminating Thoughts
Iāve been using ChatGPT since the first day it came out and was using the GitHub Copilot technical preview back in 2021, but am still increasingly amazed and grateful by the tooling that weāre building.
All three of the tools I called out in this post are going to become part of my day-to-day and Iām going to make sure our entire team is using it. I donāt expect GitHub Copilot Workspace to compete with Claude on mermaid generation. Itās not an OR, itās an AND.
I blog about a bunch of random stuff, and have more posts similar to this in the pipeline. If you enjoyed it, subscribe to my substack below. If you also want to keep up with some of my tv and book review, you can use my RSS feed: olshansky.info/index.xml
Iāll end it with one of my favorite quotes from Simon Willison:
āThe thing Iām most excited about in our weird new AI-enhanced reality is the way it allows me to be more ambitious with my projects.ā
- Simon Willison