Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: RSS Brain (rssbrain.com)
139 points by wb14123 on Dec 30, 2022 | hide | past | favorite | 76 comments
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.




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.


> 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?


Yes of course. Generally, for a project with a small team, doing the backend for logins yourself is a good way to get yourself hacked or having your customers data leaked at some point. It is difficult to do this type of validation and security testing well. The most likely outcome is that you overlooked something and later pay the price. On a small website I would default to using Google/FB/etc for logins and let them handle the security.


That's pretty flimsy reasoning to allow Google and Facebook to track your users. You "might" have done something wrong. It's unlikely they rolled their own encryption and authentication process. Using well trusted, vetted, local auth libraries is much more preferable than outsourcing your auth for "security reasons" to a third party.


One could still use something like auth0 to implement authentication without shelling out to social media.


Auth0 adds cost overhead for small projects that is hard to justify. I think the original comment about doing your own logins is overblown and theres still heaps of ways that outsourced logins can be broken from an integration POV.


I, for one, wouldn't ever use a service that requires login via social media or some other platform, especially FB/Google. This isn’t usually a problem, though - I don’t think I’ve ever encountered an app that would impose this. (Maybe apart from services that are specifically built on top of the app that they’re authenticating through.)


Tailscale comes to mind.


It sounds like you’re asserting that any password login must have been rolled by hand from scratch, when in reality there are many great community built password login frameworks for basically any language and tooling combination you can think of.

For example, if I’m using rails I can drop in Devise for a strong community tested user auth system. One that doesn’t let a marketing company track my usage.


Are you thinking the tricky part here is in handling password resets? Because otherwise I've had an easier time with straightforward username+bcrypt(password) in-house versus reliably implementing OAuth2/OpenID/whatever, which has some sharp edges of its own.


Agree with that. Honestly signup/login is not that hard to implement right, even from scratch.

Also I don’t want FB/Google to know what I login to if I can avoid it.


>On a small website I would default to using Google/FB/etc for logins and let them handle the security.

And that would exclude many, including myself as I refuse to use the "services" provided by rapacious scumbags like Google and FB. Then again, OP is using Flutter, which is a Google jam. I wonder how long it will be before Google cancels it?

All that said, why not suggest WebAuthn[0] or (Google again, short lifetime likely) Firebase instead? Especially since Firebase is a supported plug-in[1] for Flutter?

[0] https://en.wikipedia.org/wiki/WebAuthn

[1] https://pub.dev/packages/firebase_auth


Rolling your own version is pretty straight forward as a single inexperienced developer. But most people use a framework with batteries included login functionality like password resets / rate liming. If it takes a medium sized team or a team something is off.


Just please don't (only) rely on people having a Google or Facebook account. If they're all that's offered you're excluding a lot of people that don't want anything to do with those two companies.


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.


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?


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.


Feeds (RSS, ATOM etc) often times contain only a small subset of recent items, like 10-15 of them. This means that if you limit yourself only to the feed themselves, you will lose track of upvotes at some point, for example after a day or two past the publication time of a given item.

Obviously this is something you have thought through, so I assume you just treat item disappearing from the feed as some form of indication it's not "trending" enough from the source point of view. Am I right?


That’s correct. If the post is not hot anymore, continue monitoring new votes wouldn’t have much impact on the sorting, at least not the top ones. And because for sites like HackerNews and Reddit, once it’s not trending enough, it’s rare the upvotes continue to increase a lot. So this is a trade off I think makes sense considering the nature of RSS feed.


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).


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.


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.


Agreed! I assumed that that would be a more advanced feature but definitely would want that. Local timeline RSS should be an easy change (note to self: time to contribute!).


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.


Very cool! Makes me wish your solution was integrated into OP’s app (or vice-versa). This looks like the future of clean, customizable online content consumption.

One feature I would like to explore more is making algorithms completely customizable (as an advanced option perhaps). I.e. allowing changing all params manually in addition to being able to use your presets.


I don't have plan to support customize format in RSS Brain for now. But personally I use feeds from RSSHub (https://rsshub.app/) a lot. It's very easy to add a customizable feed to RSSHub (https://docs.rsshub.app/en/joinus/quick-start.html#submit-ne...).

About the cutomizable params, it would be more complex since that means each person's articles need to have difference scores, which multiplies the storage and computation a lot. But on some level the priority of articles is customizable: you can provide customized "upvotes" for each of the articles in a customized RSS feed (an example to provide these fields in RSSHub: https://docs.rsshub.app/en/joinus/quick-start.html#submit-ne...), which will affect the final sorting of the articles.


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.


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.


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.


You are absolutely right, just added some hint.


Sorry, I know this is not a PR review but if you are live coding anyway then:

Nit #1: images (or emojis) on either side of the text you added are not displayed in iOS Safari.

Nit #2: I am getting horizontal scrolling in iOS Safari (no content is cropped, just unnecessary scrolling due to some constraint miscalculation)


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.


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.


It's not very obvious but the page is scrollable.


- 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.


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.


I can absolutely add this feature!


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?


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.


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.


A simple algorithm is to sort content by the signal-to-noise ratio (SNR) of the source feed.

Basically, the more you "liked" past content from a given feed - the more priority is given to new content from that feed.

A more detailed description of the algorithm I use: https://linklonk.com/item/3292763817660940288

As I understand the OP system does not collect/use your content ratings, only external upvote counts. But this is something I think they should try.


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?


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.


>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...


Looks like the code is not open source yet. I'll check this out once it is, not earlier.


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.


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.


Personally, I'm only using Gnus for two weeks now, so I'm just now learning a bit about the (adaptive) scoring capabilities. Take a look at how Emacs maintainer John W manages the barrage of information that he needs to filter and sort[1]. I'm trying to apply this to my email/mailing lists/RSS/diary/etc....

[1] https://sachachua.com/blog/2012/07/transcript-emacs-chat-joh...


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.


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!


If you can add the ability to show multiple feed columns similar to tweetdeck and self hosting and I'm sold!


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?


Like the sibling said, organization and event feeds.

You might have interests in many different domains or subjects and it's nice to have a live feed of each one separately vs all clumped together as one. Tags sort of help, but IMO columns make it easy to sort by tag, while still letting you see multiple at once.

RSS is also a great candidate for event feeds similar to tweet deck - where you're less interested in reading in the reader, and more interesting in organizing different event feeds that you can curate to ideally alert you to important things quicker - security bulletins and space launches might be good examples.


TweetDeck is one of the most popular Twitter clients. Columns are used to display feeds for different keywords, events, lists, groups, DMs, etc


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


The page title element has a typo (or it's a pun that I'm not getting?). Mordern -> Modern


Thanks for catching it! Not sure why my the spell checker in VIM doesn't catch it. Just fixed it!


I think also you have 'responsible design' rather than 'responsive design' on the main page?


Thanks for pointing it out! Fixed it.


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.


> 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"?


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).


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.


I just want an RSS app on my mac that sends notification when there is news, no gui, no cli, just a little app that sends notification.

The closest I could find is RSSBot, but it was unstable for a while with random crashes.


I have the exact same need which I use NetNewsWire to achieve, it has the ability to enable notification for each feed you subscribed, and it works across all your devices as long as they have iCloud enabled.


It looks cool. Unfortunately, your timing sucks because I just tossed money at Inoreader for a year of their service. Hopefully I'll remember you exist next December!


Tangential: check out FreshRSS (https://www.freshrss.org/), a self-hosted RSS reader.


Great, thanks a lot for this!

PS: on iOS there’re issues with the autocomplete form, rss.brain doesn’t allow iOS to auto fill with email and password to login.


> This site can’t provide a secure connection www.rssbrain.com sent an invalid response. ERR_SSL_PROTOCOL_ERROR

anyone else cant even access the site?


If you go to the login page and then hit the back button, you get a "page not found". Firefox on Android.


Maybe it's just me, but I couldn't get 1password to recognize the fields as fillable when creating an account.


Please use a spell checker on the landing page copy. Just by skimming over the text for 30 seconds I found 3 mistakes.

You could even let Chat GPT do the work with a prompt like „Make this text suitable for a software product landing page, and correct any spelling errors: paste text


Thanks for the feedback! As a non-native speaker I should definitely use speak checker more often. I don't usually write frontend apps in my work so didn't notice speak checker was not on in my editor. Just fixed a few of them. Actually I've tried ChatGPT and it was amazing. I'll think about how to improve the text but don't want to rely all on AI.


I get it! No need to entirely rely on the bot though, you could look at its suggestion and learn something from that. It’s really good at English :)


$5 / month is a bit stiff. Why not just allow onetime purchase ?


Because the cost of running such a product for a given user is directly related to the time span of the user using it.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: