# If you are fed up with Obsidian Publish's limited RSS, here's how I hacked a better feed. 2025-06-18 ### If you're an Obsidian Publish user, you've probably stumbled upon its default RSS feed by adding `/rss.xml` to your domain. And if you're like me, you quickly realized how incredibly limited it is – so limited, in fact, that it's practically unusable for serious blogging. I completely get the problem here. As Obsidian Publish doesn't offer a standard blog feature, there isn't an actual blog feed. However, that hasn't stopped us users from hacking our way to a solution. So, I decided to also hack a better RSS feed. ### The Problem As I write this, the official #RSS feed is not time-based and doesn't even have a description for each item, even though there is a "description" property that Obsidian-Publish can read. Anyway, I understand the hurdle of going beyond the simplicity of the meta-information available on our notes, especially if one doesn't use properties. ![[vladcampos.com/_files/2025-06-18-fed-up-with-obsidian-publish-s-limited-rss-heres-how-I-hacked-a-better-feed.png]] What I never got, though, is why it doesn't display the items chronologically, matching the date a note was posted as a web page. I can't share something like this with people willing to follow my blog posts. However, even if I avoid sharing it, many modern feed readers look for and find the feed for the user. So, the two problems I have to solve are: 1. Having a better RSS feed. 2. Making the current `/rss.xml` address point to that better feed. > [!warning] > I'm not a specialist in any of the fields below. I'm sharing the steps I went through as a way to inspire you. Please do your own research and remember to always make backups of your work before trying the directions below. ### How an RSS Feed is Created I'm not a developer, but along the way I was, let's say, forced to learn some things. When I started podcasting back in 2005—yes, yes, you read that right—I had to learn how to write a feed. Back then there was no such thing as a tool or #AI. The way I see it, a feed is split into two parts. The top part is like the 'header' of your blog, containing essential details like its title, overall description, and your website's address. Take a look at mine below, and you'll notice that it's easy to guess what is what. ```rss <rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0"> <channel> <title>vladcampos Blog</title> <link>https://vladcampos.com</link> <description>Thoughts and articles from one enthusiast to another.</description> <language>en-us</language> <lastBuildDate>Tue, 17 Jun 2025 10:12:00 GMT</lastBuildDate> <atom:link href="https://social.vladcampos.com/rss.xml" rel="self" type="application/rss+xml"/> <image> <url>https://social.vladcampos.com/favicon-196x196.png</url> <title>vladcampos Blog</title> <link>https://vladcampos.com/blog</link> </image> ``` Below this header are the individual entries, or 'items,' for each of your blog posts. Think of each item as a mini-summary of a single post, including its title, a brief description, a link to the full post, and the publication date. ```xml <item> <title>📃 Things you should know about Obsidian Publish —my struggles and how I'm dealing with them.</title> <link>https://vladcampos.com/2025-06-16-things-you-should-know-about-obsidian-publish</link> <guid isPermaLink="true">https://vladcampos.com/2025-06-16-things-you-should-know-about-obsidian-publish</guid> <description>Obsidian Publish has been a game-changer for my online presence, but like any powerful tool, it comes with its quirks. Here are the hurdles I’ve faced and how I’m jumping them.</description> <pubDate>Tue, 16 Jun 2025 11:32:00 GMT</pubDate> </item> <item> <title>📃 Turning Bluesky into Instagram - my unexpected workflow.</title> <link>https://vladcampos.com/2025-06-14-turning-bluesky-into-instagram-my-unexpected-workflow</link> <guid isPermaLink="true">https://vladcampos.com/2025-06-14-turning-bluesky-into-instagram-my-unexpected-workflow</guid> <description>Apps like Pinksky transform your Bluesky feed into a visual, Instagram-style experience, but there's a catch.</description> <pubDate>Sun, 15 Jun 2025 10:31:00 GMT</pubDate> <media:content url="https://publish-01.obsidian.md/access/54a5cde44e33737dbd9582dc8b12cf1f/vladcampos.com/_files/2025-06-14-pinksky-post-cover-art.png" medium="image" type="image/png"/> </item> </channel> </rss> ``` Basically, every time there's a new post in the blog, a new item representing it needs to added ti the feed. And that's it; whatever software is reading that feed will see that new item. ### Building my RSS Feed This is where the magic happens and where my struggles with manual updates finally ended! I partnered with #Gemini to create a simple web app I'm calling the RSS Item Generator. For that I created another website and assign a subdomain to it using a #GitHub repository. It's a free and easy way to host static websites and you can learn all about it [here](https://docs.github.com/en/pages/getting-started-with-github-pages/creating-a-github-pages-site) and [here](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages). All I had to do after that was use that space to manually write and publish my own feed. I post frequently, but not that much per week. "_It will be fine_," the naive me thought. It is, indeed, kind of fine, since all I had to do was copy the last content inside `<item></item>`, paste it at the top of the previous one, and replace the old information with the new one. However, after a few manual updates, I quickly realized how prone to errors this approach was. I searched for a basic app that could generate new items but couldn't find one. Like I said, I'm not a developer, but since forever I've been having these ideas that I could never put into practice. Until now! That's when I turned to Gemini. I explained my needs in detail and asked for help creating a web app to automate the process. The first version was not exactly there but super close to what I envisioned. So, I kept chatting with it, and we came up with what I'm calling an [RSS Item Generator](https://social.vladcampos.com/item.htm).  ![[vladcampos.com/Static/Toolbox/Obsidian/Obsidian posts|Obsidian posts]] ### How it Works First, you need an RSS file, which is a fancy name for a text file with a `.xml` extension. Usually `rss.xml`. Copy the initial section of the RSS code (the 'header' part) to a new text document and replace my blog/site information with your own. Below that, you need to start building the items list. Go to my [RSS Item Generator](https://social.vladcampos.com/item.htm), fill in the blanks with the information from your latest blog post, and click on Generate RSS Item. Now copy that and paste it to the `rss.xml` file. The most recent `<item></item>` should be at the top of the list. Make sure it looks like the example below. ```xml <rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0"> <channel> <title>vladcampos Blog</title> <link>https://vladcampos.com</link> <description>Thoughts and articles from one enthusiast to another.</description> <language>en-us</language> <lastBuildDate>Tue, 17 Jun 2025 10:12:00 GMT</lastBuildDate> <atom:link href="https://social.vladcampos.com/rss.xml" rel="self" type="application/rss+xml"/> <image> <url>https://social.vladcampos.com/favicon-196x196.png</url> <title>vladcampos Blog</title> <link>https://vladcampos.com/blog</link> </image> <item> <title>📃 Things you should know about Obsidian Publish —my struggles and how I'm dealing with them.</title> <link>https://vladcampos.com/2025-06-16-things-you-should-know-about-obsidian-publish</link> <guid isPermaLink="true">https://vladcampos.com/2025-06-16-things-you-should-know-about-obsidian-publish</guid> <description>Obsidian Publish has been a game-changer for my online presence, but like any powerful tool, it comes with its quirks. Here are the hurdles I’ve faced and how I’m jumping them.</description> <pubDate>Mon, 16 Jun 2025 11:32:00 GMT</pubDate> </item> <item> <title>📃 Turning Bluesky into Instagram - my unexpected workflow.</title> <link>https://vladcampos.com/2025-06-14-turning-bluesky-into-instagram-my-unexpected-workflow</link> <guid isPermaLink="true">https://vladcampos.com/2025-06-14-turning-bluesky-into-instagram-my-unexpected-workflow</guid> <description>Apps like Pinksky transform your Bluesky feed into a visual, Instagram-style experience, but there's a catch.</description> <pubDate>Sun, 15 Jun 2025 10:31:00 GMT</pubDate> <media:content url="https://publish-01.obsidian.md/access/54a5cde44e33737dbd9582dc8b12cf1f/vladcampos.com/_files/2025-06-14-pinksky-post-cover-art.png" medium="image" type="image/png"/> </item> </channel> </rss> ``` But there's a final touch. Each post item has the publication data inside `<pubDate></pubDate>`. If you take a look at the top of the feed, there's also a date inside the `<lastBuildDate></lastBuildDate>`. That date and time has to be the same as or after the last post you added to the list. So, remember to always copy the date section of the last post published and paste it to the top of the feed. ![[vladcampos.com/_files/2025-06-16-update-lastbuilddate.png]] That's it. All you have to do from now on is keep adding the new `<item></item>` code blocks and updating the date at `<lastBuildDate></lastBuildDate>`. ![[vladcampos.com/_embedded/_newsletter|_newsletter]] ### Publishing the RSS Feed But an RSS feed is only useful if the entire web can see it. So, you need to publish it. Remember the GitHub repository I mentioned above? That's where you'll do it, and to make both of our lives easier, I suggest watching the video below where I go through each step. ![](https://youtu.be/TmmDQDkSniE) ### Redirecting the /rss.xml The last item in our list is to redirect the `/rss.xml` address to the new feed address. You have to do this because there's no way to unpublish that rss page created by Obsidian Publish. At least I never figured out how. The redirect will make sure everyone gets the correct feed, including feed aggregators trying to guess it. In my case, it is a redirect from `vladcampos.com/rss.xml` to `social.vladcampos.com/rss.xml` . If your website is powered by Obsidian Publish, you are probably using #CloudFlare for your domain. ![[vladcampos.com/Static/Toolbox/Online Presence/How to create a URL redirect rule on CloudFlare]] As for the address, share whatever is best for you. I'll keep sharing `vladcampos.com/rss.xml` because it is easier to remember. As for aggregators trying to figure out your site's feed, as long as you have the redirect running, they will always land at the one you've created. One thing to keep in mind is that you'll need to manually update your `rss.xml` file with each new post using the generator. While not fully automated, it's a small price to pay for a fully functional blog feed. ![[vladcampos.com/Timeline/Blog/Posts|Posts]]