top | item 34188734

Show HN: RSS Brain

139 points| wb14123 | 3 years ago |rssbrain.com | reply

I wrote an RSS reader called RSS Brain recently. The motivate is the current RSS readers either don't sort articles by priority, which makes it hard to read posts from HackerNews and Reddit, or sort it with some "smart" algorithm which I don't trust. I also like the Google News feature that can show related story from different source, but the sources are not configurable and the algorithm is not transparent either. So with RSS Brain, I implemented these features:

* Recommend related articles from the feeds of your choice. It's backed by ElasticSearch and the algorithm is described on RSS Brain's website.

* Option to sort articles by upvotes and time. The algorithm is similar to the old Reddit and you can find it on the website as well.

* Save search terms into folders so you can filter the articles.

I've been using it for a while and found these features very helpful. So I want to share this on HackerNews. The frontend is written in Flutter so it has cross platform clients, even though the web version don't feel very "web native" because the level of Flutter web support. I guess only time can improve that.

I don't have enough hardware to scale it up so it's currently in subscription mode to limit the users. I'm going to open source the code (maybe non-commercial license) once I think it's ready so you can host it by yourself. It's still in early stage and haven't been tested by a lot of people. So any feedback is helpful. Thanks!

Update: Added a scroll down hint in the landing page. Thanks for the feedback.

76 comments

order
[+] neontomo|3 years ago|reply
Some notes:

- Privacy policy should direct me to https://www.rssbrain.com/privacy not terms

- Selecting email in the support section doesn't work, which the website encourages me to do

- Are you handling your own logins? Seems like a security issue waiting to happen!

- Do you need to sign up with both an email and a username? Perhaps email is enough

- The logo and the name "RSS Brain" do not match up in height

- The download buttons CSS padding-bottom is too thin

- The scroll down to see more part seems to have some symbols added, I can't see them on my computer (Mac). I assume these are arrow emojis/symbols or something. Replace them with something that works cross-platform

- "Support upvotes and comment count from forums like Reddit and HackerNews" should be "Supports"

- "Powered by transparent algorithm" -> "Powered by a transparent algorithm"

- "Try RSS Brain with 7 days free trial and subscribe with $4.99 per month. " -> "Try RSS Brain with a 7 day free trial and subscribe for $4.99 per month."

- If I go to the login page, and then the signup page, and then hit the Back button on my browser, it shows "page not found".

- The green design box that contains the screenshots is off center

There's some other smaller inconsistencies but I'll leave it at that. I can see you put a lot of effort into building this tool, and it seems quite cool! I hope you succeed.

[+] toastercat|3 years ago|reply
> Are you handling your own logins? Seems like a security issue waiting to happen!

Can you explain what you mean by "handling your own logins" and what is the norm?

[+] wb14123|3 years ago|reply
Thanks for the feedback! I write much more backend software than frontend ones, so love the feedback on UI details and I will try to fix those.
[+] KirillPanov|3 years ago|reply
Really great to see more RSS-powered stuff!

Suggestion: before posting to a technical forum like HN, make sure you have a "technical FAQ" or similar. There were a ton of obvious geek questions I had after reading your front page, and ~~saw no link that might answer any of them.~~ (Edit: okay, some of it is behind the "algorithm" link https://www.binwang.me/2022-10-29-RSS-Brain-Yet-Another-RSS-... which I assumed would be a link to a bunch of code).

First and foremost: I've never heard of any cross-site upvoting protocol. Did you create one? How do you upvote things on sites (e.g. HackADay) that don't have voting?

[+] wb14123|3 years ago|reply
The link you included (https://www.binwang.me/2022-10-29-RSS-Brain-Yet-Another-RSS-...) has some details, but I guess you are right it's not obvious enough.

The way RSS Brain knows upvotes is by leveraging customized fields in ATOM feed. It will parse the tag <*:upvotes>, <*:downvotes> in each of the article and compute score from there. That means the RSS feed should support those fields in order to let RSSBrain know the upvotes. But the protocol is open so any RSS feed an RSS reader can use those if they think this is a good idea.

So it can only get exiting upvotes from the site. It has no way to upvote when there is no such feature in the original site. However, you can have a customized RSS feed to use upvotes in a different way: for example, for a news website, the position and size of an article usually means the "upvotes" from the editors. Which you can give some weights based on the position and generate a RSS feed that use those weights as "upvotes".

I did two things to make it easier at the beginning:

1. When you subscribe to HackerNews or a subreddit in RSS Brain (that means you paste HackerNews/subreddit URL directly to RSS Brain to subscribe), it will try to parse the content by itself (using some APIs), instead of trying to find a RSS feed. It's not a standard way, but just a way to make it easier while no RSS feeds have those fields yet.

2. I pushed a PR to a very popular RSS generator: RSSHub, so that you can easily add those fields (the doc: https://docs.rsshub.app/en/joinus/quick-start.html#submit-ne...) when create a RSS feed using RSSHub. I've updated its HackerNews RSS feed to generate upvotes fields as well.

[+] foreverCarlos|3 years ago|reply
Curious about your last question too. I assumed this sorting only works for websites that do have voting (and the count is included in the feed).
[+] foreverCarlos|3 years ago|reply
Looks great! I have been actively reducing my blog and social media exposure and this might help clean up the remaining experience even more.

Somewhat tangential: does anyone know if there is a way to subscribe to the local timeline RSS feed (or even federated!) of a specific Mastodon instance? Individual users have RSS feeds but I could not find a timeline feed yet.

[+] mikae1|3 years ago|reply
RSS support in Mastodon is extremely rudimentary.

What I'm missing even more is a single Atom or RSS feed for the people I follow from my account.

On Reddit my account specific feed can be found at an URL that looks like this: https://old.reddit.com/.rss?feed=SECRET&user=USERNAME

On Pinboard it's at: https://feeds.pinboard.in/rss/secret:SECRET/u:USERNAME/

Adding a feed for every single person I follow to my feed reader (and manually keeping it in sync with what what my account actually follows) is not a solution that works.

[+] adparadox|3 years ago|reply
I don't think there is an RSS feed, but looks like there is a JSON endpoint: https://github.com/mastodon/mastodon/issues/17269.

Even more tangential, I've been building an algorithmic digest of Mastodon (supports home, local, or federated) at https://fediview.com/. It might be interesting if you want a summary of Mastodon posts. Adding in RSS support might even be possible at some point.

[+] password4321|3 years ago|reply
This project aggregating posts shut down quickly due to the backlash: https://mastinator.com

There are several expectations decreed by the community; for example: search has been specifically rejected.

[+] psanford|3 years ago|reply
Every rss reader should have a sandbox UI where you can at least get a sense of what it looks like and how it works without signing up. I suspect that would help your conversion rate too.
[+] mr_sturd|3 years ago|reply
Stick an arrow at the bottom of the homepage to show there's more information below about the application, or people will think they need to sign in/sign up.
[+] wb14123|3 years ago|reply
You are absolutely right, just added some hint.
[+] Eddy_Viscosity2|3 years ago|reply
I went to check it out and first thing was asked to open an account. No screenshots, no guest login, just straight to open account. No way to check it out first.
[+] wb14123|3 years ago|reply
As mentioned by other comments there are actually screenshots below. It's not obvious which is my fault. Just added some hint so people will know to scroll down. A demo account to showcase the UI is also a great idea. Will put it into my todo list.
[+] Fraaaank|3 years ago|reply
It's not very obvious but the page is scrollable.
[+] s3000|3 years ago|reply
- Please offer the option to test the web app without having to register an account. The data could be static so that it doesn't tax your servers.

- Using votes is good, allowing users to vote would be better. Could you use ActivityPub to allow users to publish their votes and pool them within the Fediverse? I am waiting for a future where all RSS readers share their votes so that good content is highlighted.

- If you use ActivityPub, you could also enable your users to comment on posts.

[+] dave333|3 years ago|reply
Easy to create an account and it looks interesting based on exploring and finding both expected and a couple of novel feeds. I would prefer a one row per article format that just shows titles that you have to click on to see the full feed article summary. Also as an old geezer I did not immediately notice the vestigial horizontal scroll bars and was wondering if 4.5 articles per feed was all I was getting.
[+] wb14123|3 years ago|reply
I can absolutely add this feature!
[+] kevincox|3 years ago|reply
Using Flutter is definitely hurting the web version. I considered singing up but it didn't auto-fill my email. Ok, I'll do that manually. But then the password field isn't detected by my password manager (Firefox's bulit-in one) and I didn't feel like generating a password and manually saving it. Then I would need to manually sign in on my various devices. At this point I decided not to bother (although I am already content with my reader, so maybe I'm not a big loss anyways).

Does the mobile app at least integrate with the platform auto-fill/password managers?

[+] juliushuijnk|3 years ago|reply
I see overlap with an idea I had related to that everyone should have their personal AI. My suggested first step would be to do something like you did. Have an RSS reader where you can gather your input. Then let the AI help you filter, make recommendations, perhaps send notifications.

https://www.reddit.com/r/Startup_Ideas/comments/zcb6r3/perso...

You have basically everything set in place for that. I'm no expert in AI software (yet?), but could be fun to brainstorm with you, or if it is open source, branch out to try it myself.

[+] PaulKeeble|3 years ago|reply
This is everyone's problem with RSS, filtering through the hose pipe of information. Some of the feeds you want everything but a lot of the news sites or popular ones you want a cut down version that caters to your interests since few sites filter on their end and even then it could be poor cut up. It needs an easy way to do that, a basic Bayesian filter trained with down votes would be a drastic improvement over none at all.

You can definitely build a better RSS reader and a big part of that is going to be tailoring so its not just a hosepipe of everything. I use FreshRSS every day and it supports filtering but its a pain to use and its not what I am looking for really it has no intelligence. I read maybe 1/10th of the articles it presents and I have cut feeds where the signal to noise is poor for my interests. This is definitely an area worth improving.

[+] masukomi|3 years ago|reply
i'm failing to understand why this needs a server side component.

SQLite has built in Full Text search.

What's the advantage of using ElasticSearch and having to worry about server costs? Why not just get rid of that and charge me for the app without worrying about never-ending costs?

[+] wb14123|3 years ago|reply
There are a few reasons for the server side component:

1. Sync between clients. This can also be done by using a Cloud service to sync some database, but resolving conflict data between clients can be tricky.

2. It needs a long running process to check updates for the feeds. It's hard for mobile devices to check updates all the time. So there needs to be another desktop device that check the updates regularly, and may need to sync the articles to the mobile devices. You either sync the whole database, which is a lot for some people (it has been 10GB+ for my own feeds), or you fetch the articles on demand, which makes the desktop client essentially a server.

3. The recommendation features is much easier implemented with ElasticSearch, since it summarize an article's content with a term vector, which you can use to find similar articles. And its search is much more powerful than SQLite's full text search as well.

I understand some people don't want advanced features. Without those features it maybe simpler to just write a RSS client without server. But the advanced features are the motivate behind me writing RSS Brain, and how I find a RSS reader can be more useful.

[+] nobody9999|3 years ago|reply
>What's the advantage of using ElasticSearch and having to worry about server costs? Why not just get rid of that and charge me for the app without worrying about never-ending costs?

Because when it's a client-side only app, it's more difficult to charge for subscriptions to ensure that sweet, sweet revenue. Which appears to be the raison d'etre for most software these days. :(

Besides, making it require a server pushes the hoi polloi to register to use "the cloud" (read: someone else's server) rather than just run it themselves.

And if it gets big (it seems like an interesting and potentially popular app), money can be made harvesting PII from those who register.

If you're the app developer, what's not to like?

I'd note that the OP says the code is open source, and so should it be useful, tech folks will likely host their own servers.

This comment isn't meant to denigrate or bash RSS Brain or its author. Rather, it seeks to answer Masukomi's question[0].

My analysis may be dead wrong. It seems plausible, especially since so many folks seem to want to make everything a subscription.

To butcher an old quote[1]: Subscriptions are $10 here, $10 there and soon you're talking about real money.

No thanks.

[0] https://news.ycombinator.com/item?id=34190815

[1] "A billion here, a billion there and soon you're talking about real money." Usually attributed to Everett Dirksen[2], but it appears that he never said any such thing.[3]

[2] https://en.wikipedia.org/wiki/Everett_Dirksen

[3] https://www.dirksencenter.org/research-collections/everett-m...

[+] clircle|3 years ago|reply
Looks like Gnus for people that don’t like Emacs. With Gnus, you can using scoring to make your own algorithm to display news in a user defined way. The Gnus manual calls this artificial stupidity.
[+] wb14123|3 years ago|reply
That sounds interesting. I took a brief look to find out what information is available to the custom algorithm but didn't find too many details, so I will just ask the question here:

If I want to write an algorithm to sort articles in HackerNews by upvotes and time, is the upvotes information available to Gnus? Assume the RSS feed has a customized field called <RSSBrain:upvotes> for each of the article, does the algorithm have access to that data?

And does Gnus need to get all the articles in a folder/feed and run the sorting algorithm on the fly? If so it seems to be a performance concern. Would love to know how it works in real life.

[+] ppetty|3 years ago|reply
RSS is awesome. And great to see new innovation like this. The notion of RSS Brain best features seem to depend on having already discovered feeds. Feedly, for example, has a discovery experience to find new feeds which is helpful. If I already had a bunch of feeds RSS Brain might be right… but I think I’d still miss an easy way to not just find related articles in similar feeds I already subscribe to. The magic of some competing products is finding whole sources or feeds related to topics I’m already interested in.
[+] novoreorx|3 years ago|reply
Having made a similar recommendation mechanism recently, I’m so thankful to tell you that your algorithm sharing is really helpful and inspiring to me. Looking forward to see this project open sourced!
[+] thewataccount|3 years ago|reply
If you can add the ability to show multiple feed columns similar to tweetdeck and self hosting and I'm sold!
[+] wb14123|3 years ago|reply
Never heard of TweetDeck before. Took a look just now and it looks interesting. Just out of curiosity, what is the normal use case to show multiple feeds at the same time?
[+] wahnfrieden|3 years ago|reply
quick feedback:

- no information besides "rss reader" before signup and requiring email meant i bounced

- why make me choose download vs web app before seeing anything at all?

- why should i trust you with my reading data?

edit: on macos there're no scrollbars and no other affordances on your landing page to know that i must scroll down to learn more

[+] neontomo|3 years ago|reply
The page title element has a typo (or it's a pun that I'm not getting?). Mordern -> Modern
[+] wb14123|3 years ago|reply
Thanks for catching it! Not sure why my the spell checker in VIM doesn't catch it. Just fixed it!
[+] Jorengarenar|3 years ago|reply
While I'll stick with QuiteRSS (maybe eventually switch to RSS Guard if I manage to unbroke the UI), I am tremendously happy for every new instance of anything related to RSS. I really don't want this tech gone, because without it I'm lost on the modern web.
[+] amelius|3 years ago|reply
> The algorithm is transparent so you don't need to worry about being manipulated by algorithms.

Is that true though?

Wouldn't this be the same as Google hypothetically saying "The algorithm behind Google Search is transparent, so you don't have to worry about SEO"?

[+] wb14123|3 years ago|reply
As mentioned in the link when you click the "algorithm", the algorithm has been explained. And the implementation will be open sourced once it's ready (mainly working on cleanup codebase, disable payment related things by default so that user can selfhost easier).
[+] tmpburning|3 years ago|reply
To reduce the amount of stuff that I have to read, all article are sorted by date and they don't have a "read" status. So if I don't read the feed for two weeks, it doesn't matter, I just skip them.