RSS
- Having a better RSS feed.
- Making the current
/rss.xml
address point to that better feed.
I created my own AI, but it is not what you are thinking.
As I’ve said many other times, I believe there are some technologies that reached a stage of maturity where they could just be used indefinitely. What many people seem not to know is that it’s possible to go back to enjoying that sweet spot.
If we look back a few decades, it feels like things eventually got out of control. I remember using the iPhone when information and even the OS upgrades were done by connecting the phone to a computer. Back then, apps with online synchronization like Evernote were rare.
At some point, everything started becoming so fast and instantaneous. Not only messages, but almost everything. I’m not old enough to remember when breaking news used to be the next day’s newspaper cover. But before the popularization of the Internet, I remember the We interrupt this program for a special news bulletin
message on the TV and radio. Now, we get flooded by information about everything all the time. Many times inaccurate or, worse, fake news.
If we stop to think about it, unless you are a reporter, stock trader, or work with anything that is time-sensitive, there’s no practical use for all this immediacy. On the contrary, it generates a lot of stress. As ordinary people, there’s absolutely nothing practical we’ll be able to do with most of the instant information we get bombarded with.
The most recent I-must-be-part-of-it-no-matter-what fad is AI. There’s no reason to use AI for everything, nor is there a need for AI in every single app. Also, just so you know, yes, I do use AI. Every day! But I try to keep it siloed.
Back to my point. Although using or repurposing old tech was something I always did, it feels like I’m doing it more and more these days. I don’t know if it’s because I’m getting older or because I refuse to subject myself to imposed anxiety.
For example, I did try streaming for a while but |never stopped using my iPod 5.5 Gen. The modern Supernote I use and love is constantly bringing me back to a pleasant time when I used my Palm for everything. You’re probably aware of my Digital Caveman project. And there are all those apps, like Instapaper, that look and work just like they did a billion years ago. All these are great examples of the point of ‘tech maturity’ I mentioned at the beginning.
Anyway, the more I look at modernity from the perspective of people who are constantly anxious and chasing novelty just for novelty’s sake, the more I think of products and services I should have never stopped using. The good news is that many of them still exist, and after going back to using some of them, I can now clearly see how good they really are, as they have withstood the test of time.
Maybe that’s why I related so much to Kevin Kelly’s What Technology Wants book. Not only does he directly challenge the common perception that old technologies become obsolete and vanish, but he comes up with several examples of technologies, no matter how old, that still exist somewhere. Perhaps in a modified form, for a specific purpose, or in a niche market.
Of course, using old tech or new tech with old tech vibes, like Obsidian, comes with its challenges. It often demands what I call Attention & Intention, my kind of ‘AI’. For example, I see people complaining all the time about how complicated Obsidian is. It’s difficult to disagree with that, but doing things with Attention & Intention means that you were paying attention and will probably remember where you stored that information.
I’m not going to pretend I didn’t fall for modern tech promises, like social media. Thankfully, many years ago I started disconnecting from all those toxic spaces, and recently, I’m finding that going [[vladcampos.com/Timeline/Blog/2025/2025-06-28 • A few cool things I recently discovered about RSS feeds. Spoiler — they have super-powers.|back to using RSS]] to follow blogs is bringing me a lot of joy. I don’t have words to describe how pleasant it is to read like this. I’m overwhelmed by how much great content I was missing.
Of course, it’s not as simple or easy as the infinite scroll provided by a mysterious algorithm with a single mission: keep you hooked, no matter what. No matter what! It comes slowly from here and there: from a conversation you had on Mastodon, a page that appeared in a search result, and even trying to remember the names of the websites of those old friends. But since it’s all done with Attention & Intention, it pays off.
It’s true for all the other non-anxious tech I mentioned above. Adding music to an iPod means connecting it to a computer. To find music, you have to know at least a few things about it, like its name, or the singer, or album, etc. As for the Supernote, it has a simple OS running on a basic device with a monochromatic display. No browser, no notifications, and disconnected most of the time, much like my Palm used to be. And let’s not even start with all the effort one has to put into an Obsidian Vault.
Next in my wishlist of mindful devices is a Fairphone, most likely running /e/OS.
Attention & Intention is beautiful, pleasant, and, most importantly, relaxing.
After hacking my own RSS feed for my Obsidian Publish site, it is now time to try some ideas. The first one is automating my blog posts via Mastofeed. I just created a rule that will compose a Mastodon post using the Title, Summary, Link, and Image from my RSS feed.
This first post/test has two goals. Make sure the automation is working and understand what will happen if one of the items, in this case an image, is not present in the original feed.
If you are fed up with Obsidian Publish's limited RSS, here's how I hacked a better feed.
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.
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:
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 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.
<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 and here. 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.
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, 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.
<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.
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>
.
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.
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.
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.
Things you should know about Obsidian Publish — my struggles and how I'm dealing with them.
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 overcoming them.
A few days ago, I converted my blog to the Timeline System. If you are interested in more details, there’s a walk-around video that you can watch.
Photos Page
The “Photos page” was inspired by how Micro.blog handles our pictures. When there’s a JPG image in a post, that image will be displayed in a Photos page with a link back to the post.
My solution is more manual, like many other things on the website, but that’s okay. As all this AI buzz grows, I’m trying to find comfort in actually doing things with my type of AI in mind: Attention & Intention.
But don’t get me wrong, I use AI, the other type, all the time. For example, I had this long conversation with Gemini to help me come up with the CSS responsible for the /photos
page layout.
Obsidian Publish Limitations
I am delighted with the progress I have made thus far. However, I have also encountered a few bugs and issues during the process.
Since I came back to Obsidian-Publish, I’ve been working hard on creating this mix of a blog and learning center. It has to be something useful for you, but, at the same time, I need a system that will make my life easy. Otherwise, I’ll just stop sharing.
You know that thumbnail when people share posts on social media? There’s a way to set an image to do that on Obsidian Publish. Although it’s a fairly straightforward setting, I never found it to be successful. And because of all the other work going on in the process of building my website, I never took the time to report this and investigate the matter.
Yesterday, I finally reported it on Obsidian’s official forum, which ended up leading me to mxstbr’s post about it.
The problem is some sort of incompatibility with the Permalink setting. I tested it on my website, and he is right. So, let’s hope the Obsidian team comes up with a fix to this.
The other issue is a site behavior that, in my opinion, doesn’t make any sense. As you already know, formatting notes in Obsidian is done with Markdown. But it’s also possible to use regular HTML.
What I found out is that any link that points to an external site will open that site in a new tab. First, I thought that I could solve that using a HTML link, but it keeps opening on another tab even if I use target="_self"
, which is a way to force the link to open on the same page.
After almost going crazy, I decided to inspect my website code, and, to my amazement, Obsidian Publish replaced the target="_self"
with target="_blank"
, which is how we tell the browser to open the site on a new page.
Why? That doesn’t make any sense. We, the site owners, should be the ones deciding where the page should open.
Anyway, there’s also a complaint about this on the forum. So, let’s hope they fix it. For now, be aware that that’s the reason you’ll be sent to another tab when you click on one of my pictures on the Photos page.
No rel=“me”
This is another HTML attribute that is used by Mastodon and other services to make sure the owner of the website is the same person claiming to be that owner on another site.
It’s such a simple and easy setting, but because of the way Obsidian Publish code works, the rel="me"
is not visible, and services cannot use it to verify ownership.
I’ve been complaining about this for a long time, but after being ignored for so long, I decided to come up with a workaround. Because I also needed a Linktree-style page, I created social.vladcampos.com on GitHub and that’s where I included the rel="me
code.
Not everyone has time or knowledge to do this, not to mention that it’s not ideal. An official way to solve this would be to provide us with access to the <head>
of the site via a file, just like we can do with the publish.css
and publish.js
files.
That, by the way, would address another issue. The Author Attribution verification. For that, regrettably, I could never come up with a workaround.
The Terrible RSS Feed
Finally, there’s the terrible RSS feed. I can relate to the challenges here, but there is already a feed, which, unfortunately, doesn’t make any sense. For starters, I don’t understand what the criteria used to order the notes are. If they could at least make it ordered by last created note, it would already be at least usable.
The workaround I came up with was to |manually create my feed. Unbelievable, right? It’s 2025! Anyway, I’ll do it again on my GitHub page and share the link on my Obsidian site and on the Linktree-style page.
But, please, don’t get me wrong; I’m thrilled with what Obsidian Publish is enabling me to do. It’s something I have tried and failed on so many other platforms, and it’s now a fascinating work in progress.