Then why not use RSS, or Atom, or CSV, or HTML, for that matter?
That OPML "outline" has no tree structure at all, except for the single top level container item:
<outline title="HN Personal Blogs" text="HN Personal Blogs">
What is the point of using OPML for a flat structure?
Outlines are all well and fine, but a list of links to blogs is hardly an outline.
And isn't JSON the simplest most ubiquitous accessible standard format for outlines and even arrays of links these days, if not just raw-dogging XML?
More thoughts and opinions and history of OPML, RSS, Dave Winer, More, Frontier, Manila, Radio UserLand, XML-RPC, SOAP, Xanadu, spreadsheets, CSV, JSON, XML, etc:
I think it's just that OPML has traditionally been used to import/export lists of RSS feeds, and therefore most readers are capable of importing an OPML file whereas other formats would not be as widely supported.
Maybe I'm thick, but it bewilders me that someone wouldn't simply use RSS or Atom directly, instead of abusing OPML to mis-represent it (which is itself just as terribly designed as RSS, by the same person, Dave Winer -- don't even get me started).
Is this some kind of a masochistic corrupted data ingestion challenge from TikTok that I'm not aware of, akin to eating Tide Pods or washing your clothes in Campbell's Soup?
Does anyone even ever use OPML for outlines any more? Or is it like YAML's backflip, where its original name meant "Yet Another Markup Language" until somebody pointed out to their great surprise that it WASN'T actually a markup language, so they retroactively recursively renamed it "YAML Ain't Markup Language" on opposite day?
So does OPML no longer stand for "Outline Processor Markup Language" any more, but now stands for something else like "OPML Presents Mere Lists"?
What's wrong with exporting and importing RSS as RSS? Has its meaning also changed, flipping places with OPML, so it now means "RSS Serves Structures", so you use RSS for nested trees and OPML for flat lists now?
I suppose you could recursively encode outlines as nested RSS feeds inside the text content other RSS feeds as <![CDATA[ at each level, or since those can't be nested, exponentially doubling the number of escaped entities at each level.
I Wanna Be <![CDATA[ -- Sung to the tune of “I Wanna Be Sedated”, with apologies to The Ramones:
What about subscribing to OPML files hosted on URLs ? That way one can follow OPML list "hosts" (like the one on OPs repository) and discover new RSS feeds. I'm quite surprised that this feature do not exists in RSS reader I tried.
This is the way. I just swapped as many news, social (reddit/etc) and the like over to newsblur via RSS and I'm VERY happy. This OPML will go a long way to filling out my categories :-) Thanks a bunch for your efforts!
Yeah, the best way is to go back to the original post and submit comment there on top level. Make sure HN recognize that as a correct href and your blog has alternative link to rss/atom. And for now only users with 100+ karma are included.
I left the console.log there as well to show which blogs aren't recognized.
I am also open for PR. It was just a few hours project to get it going, but if people will find it useful, would be nice to get some tags from the blogs, so it would be possible to extract the list only for specific technology/topics.
When do you plan re-run your crawler? HN users are updating that original HN discussion every minute as we speak! It'll be nice to get an updated list sometime today. Possible?
I am fixing some issues, trying to get more blogs from the post, so do it a few times in a day.
And hope at some point to actually build something larger from that. I love RSS and this is the best way to discover new content. I actually already have found a few interested blog posts, links, information.
There seems to be many valid blogs that got skipped due not having the `rel="alternate"` link in the HTML head (mine included). I just added it, as I'm sure others will, so it'd be a good idea to update the list regularly
Thanks for the effort, this is a fantastic resource.
I installed 5 RSS reader apps in my Linux Mint machine to test the OPML. 4 of them failed to import the file: Thunderbird, Lifera, Quitrss and another one I forgot the name.
Gnome RSS did import the file but it became slow and buggy.
I think the file is too long for a typical RSS feed app to process it. Also, there might be some formatting issues a couple apps threw a "incorrect format" error (Thunderbird being one of them).
Now trying CPod and giving it time... I hope in 20 mins or so it can work with it.
I wonder if web-based RSS readers will work better with the file.
I tried importing at feedbin.com, 524 of 598 imported successfully. The failures being a mixture of not found or connection errors and a couple of invalid URL errors
I just resubmitted the list, I believe around 500+ there is an invalid XML tag, which is fixed now. So all of them should be valid now. Forgot to do xml escape for the URLs
E.g. I am surprised to not see Julie Zhou's blog in this list--which, I believe, is one of the most influential blogs in the tech product space: https://www.juliezhuo.com/.
That is good idea as well! That would require me to actually run the server (or github actions) to refresh the RSS feed, maybe something I would do later on.
OPML allows your to export/import the list of RSS/Atom feeds from your RSS reader. So this is a list of 500-600 blogs that people submitted at that HN discussion, that you can import in your RSS reader.
OPML (when used in this context) is basically a list of URLs with a touch of metadata. It is the most common format for importing and exporting lists of feeds to move between feed readers.
So you generally don't subscribe to an OPML file, it just provides a list of feeds to subscribe to.
Looking at how many "https://url.com//feed.xml" there are in the list, I have a feeling that the scraping logic needs some work. Is it just concatenating "https://url.com/" and "/feed.xml"?
It's also not a good idea. On https://andinfinity.eu/ I have a header for that and it clearly indicates that the rss feed lives at index.html. Standard hugo thing I guess.
I was extracting URL from the alternate link in the HEAD of the blog website. The issue is that some people will do "//example.com/feed.rss", some "feed.rss" or "/feed.rss". So I built pretty stupid URL resolving logic, when I just should have used ResolveReference from go runtime. So the last list will fix that.
I hope this list is constantly maintained and updated.
Additionally, do you have any recommendations for a good RSS reader that can properly handle this OPML file? I tried using Omea Reader, but it fails to fetch many of the feeds.
> File exceeds maximum allowed number of subscriptions! Your file contains 659 out of 150 maximum allowed subscriptions for your plan.
Alright.. I'm gonna build my own RSS reader then.
Edit :
A kind of "decentralized" social media platform where we post on our respective personal blogs, and we may follow each other by using RSS subscriptions. If HN is one such platform, here's the chronological timeline : :https://gist.github.com/altilunium/c2fcbe1e23aeb1cb9564f2593...
If you want a more casual approach then to right away import 600 feeds into your reader, check out the feed options at IndieBlog.page - it gives you daily random posts not only from the 600 URLs of that recent thread but also from a similar one back in April last year and a bunch of other indie sources...
I know I don’t have enough karma, but it seems like the log output should have logged something for that. I also wonder if you’d consider account age as an alternative to karma for anti-spam, as I’m a bit of a hardcore lurker here and I highly doubt that I’m the only one.
I've been playing around with Node-RED[1] for a while and thought I would recreate this using Node-RED (also being a big fan of Node-RED). The flow[2], i.e. code, is online to have a look at (editable but not deployable) and the feed[3] is cached and updated every hour or so.
It's only a small Heroku server so it might well be down or about to crash, I make no promises!
Thanks to the OP for the inspiration, I did take a lot of ideas from the original codebase :)
I saw some people asking for a good RSS reader.
Personally I will use elfeed, and I also use elfeed-org so I could import the OPML file and export it into my existing RSS feeds.
The fact that FreshRSS can fetch full article contents for truncated RSS feeds is precisely the thing you need in order to make RSS useful today. Not the biggest fan of the UI but this one feature makes the whole thing so fucking good.
104 comments
[ 3.9 ms ] story [ 177 ms ] threadThat OPML "outline" has no tree structure at all, except for the single top level container item:
What is the point of using OPML for a flat structure?Outlines are all well and fine, but a list of links to blogs is hardly an outline.
And isn't JSON the simplest most ubiquitous accessible standard format for outlines and even arrays of links these days, if not just raw-dogging XML?
More thoughts and opinions and history of OPML, RSS, Dave Winer, More, Frontier, Manila, Radio UserLand, XML-RPC, SOAP, Xanadu, spreadsheets, CSV, JSON, XML, etc:
https://news.ycombinator.com/item?id=21170434
https://news.ycombinator.com/item?id=16224154
https://news.ycombinator.com/item?id=20780928
https://news.ycombinator.com/item?id=35674125
https://news.ycombinator.com/item?id=36544675
According to this thread, four out of five RSS apps on Linux Mint failed to import the OPML file, and the one that did was buggy:
https://news.ycombinator.com/item?id=36627431
Maybe I'm thick, but it bewilders me that someone wouldn't simply use RSS or Atom directly, instead of abusing OPML to mis-represent it (which is itself just as terribly designed as RSS, by the same person, Dave Winer -- don't even get me started).
Is this some kind of a masochistic corrupted data ingestion challenge from TikTok that I'm not aware of, akin to eating Tide Pods or washing your clothes in Campbell's Soup?
Does anyone even ever use OPML for outlines any more? Or is it like YAML's backflip, where its original name meant "Yet Another Markup Language" until somebody pointed out to their great surprise that it WASN'T actually a markup language, so they retroactively recursively renamed it "YAML Ain't Markup Language" on opposite day?
So does OPML no longer stand for "Outline Processor Markup Language" any more, but now stands for something else like "OPML Presents Mere Lists"?
What's wrong with exporting and importing RSS as RSS? Has its meaning also changed, flipping places with OPML, so it now means "RSS Serves Structures", so you use RSS for nested trees and OPML for flat lists now?
I suppose you could recursively encode outlines as nested RSS feeds inside the text content other RSS feeds as <![CDATA[ at each level, or since those can't be nested, exponentially doubling the number of escaped entities at each level.
I Wanna Be <![CDATA[ -- Sung to the tune of “I Wanna Be Sedated”, with apologies to The Ramones:
https://donhopkins.medium.com/i-wanna-be-cdata-3406e14d4f21
I do wonder what's a good way of doing discovery in software, FOSS-style. Using open source client side and free APIs if needed.
Github actions is an option.
For now, I just wanted to add those 600+ blogs to my RSS and filter them out slowly if I need to.
Currently it seems there're many people fetch from original thread, which makes it ne source of truth, less confusing for anyone to submit.
I left the console.log there as well to show which blogs aren't recognized.
I am also open for PR. It was just a few hours project to get it going, but if people will find it useful, would be nice to get some tags from the blogs, so it would be possible to extract the list only for specific technology/topics.
Any details on how to do this? My blog (https://blog.nawaz.org/) has an RSS feed here (https://blog.nawaz.org/feeds/all.atom.xml) but I don't know how to set it up the way you'd need it.
<link rel="alternate" type="application/atom+xml" title="Atom feed" href="https://blog.nawaz.org/feeds/all.atom.xml">
UPD: type="application/atom+xml" for Atom, type="application/rss+xml" for RSS
I checked yours, the issue is that you are escaping + in application/rss+xml, when it should be just application/rss+xml
I have updated the code and will re-generate. I am not sure if what you are doing is allowed or not.
Are you taking care that if the <link> tag spans over multiple lines (linebreaks in between), you're still parsing it right?
You do seem to be resolving relative paths with:
So I think this is good. Just trying to see what could be breaking for the other users who are complaining their feed isn't listed.-> https://stackoverflow.com/questions/13327527/how-to-make-a-s...
Needs a bit of lint work still, eg: current lines 12 & 13 are dupes
but still appreciated as that's a minor quibble easily polished away.And yes, thanks for your work and sharing it!
And hope at some point to actually build something larger from that. I love RSS and this is the best way to discover new content. I actually already have found a few interested blog posts, links, information.
I installed 5 RSS reader apps in my Linux Mint machine to test the OPML. 4 of them failed to import the file: Thunderbird, Lifera, Quitrss and another one I forgot the name. Gnome RSS did import the file but it became slow and buggy.
I think the file is too long for a typical RSS feed app to process it. Also, there might be some formatting issues a couple apps threw a "incorrect format" error (Thunderbird being one of them). Now trying CPod and giving it time... I hope in 20 mins or so it can work with it. I wonder if web-based RSS readers will work better with the file.
Do you get any errors while importing it?
I believe also this XML maybe not valid. Will regenerate it a few minutes.
https://blog.winricklabs.com/rss.xml
Uh, this made me realize I forgot to add the RSS feed link to the head tag when I recently migrated my blog to Astro, fixed now!
https://kevincox.ca/2022/05/06/rss-feed-best-practices/
E.g. I am surprised to not see Julie Zhou's blog in this list--which, I believe, is one of the most influential blogs in the tech product space: https://www.juliezhuo.com/.
So you generally don't subscribe to an OPML file, it just provides a list of feeds to subscribe to.
I missed the original thread, but would be happy when you include my blog as well :) RSS Feed (en): https://backendhance.com/en/blog/index.xml RSS Feed (de): https://backendhance.com/blog/index.xml
I hope this list is constantly maintained and updated.
Additionally, do you have any recommendations for a good RSS reader that can properly handle this OPML file? I tried using Omea Reader, but it fails to fetch many of the feeds.
Alright.. I'm gonna build my own RSS reader then.
Edit : A kind of "decentralized" social media platform where we post on our respective personal blogs, and we may follow each other by using RSS subscriptions. If HN is one such platform, here's the chronological timeline : :https://gist.github.com/altilunium/c2fcbe1e23aeb1cb9564f2593...
While generating this list, I found at least 80 sites with inaccessible RSS link : https://gist.github.com/altilunium/8319dae345f701a2a1efd0152...
n.b. I haven't tested importing 600+ feeds!
https://indieblog.page/rss
I know I don’t have enough karma, but it seems like the log output should have logged something for that. I also wonder if you’d consider account age as an alternative to karma for anti-spam, as I’m a bit of a hardcore lurker here and I highly doubt that I’m the only one.
https://news.ycombinator.com/item?id=36627385 )
> <outline type="rss" title="ntietz" text="ntietz" xmlUrl="https:&#x2F;&#x2F;ntietz.com&#x2F;atom.xml" htmlUrl="https:&#x2F;&#x2F;ntietz.com&#x2F;atom.xml"/>
``` <link rel="alternate" type="application/rss+xml" title="RSS" href="https://ntietz.com/atom.xml"> ```
It's only a small Heroku server so it might well be down or about to crash, I make no promises!
Thanks to the OP for the inspiration, I did take a lot of ideas from the original codebase :)
[1]=https://nodered.org
[2]=https://demo.openmindmap.org/omm/#flow/a8d90fc15ab6990b
[3]=https://blog.openmindmap.org/example/hacker-news-personal-bl...
I saw some people asking for a good RSS reader. Personally I will use elfeed, and I also use elfeed-org so I could import the OPML file and export it into my existing RSS feeds.
The fact that FreshRSS can fetch full article contents for truncated RSS feeds is precisely the thing you need in order to make RSS useful today. Not the biggest fan of the UI but this one feature makes the whole thing so fucking good.
[0] https://blogs.hn
Loaded it into Feeder from fdroid (cheers to dev if here) and although it took a while, the result is much better than Twitter et al's output.
Might add my own blog to the list one of these days if people keep coming back to this as the reference.