Show HN: Artemis, a Calm Web Reader

(artemis.jamesg.blog)

307 points by zerojames 5 days ago | 74 comments

Earlier this year, I made a web reader that only showed a list of post titles, author domains, and links. The reader only updated once per day, so I wouldn't feel compelled to keep checking for new posts.

I have been using the tool, which I called Artemis, for several months. Every morning, I looked forward to my "morning paper" of blogs I love reading.

There are no notifications, read vs. unread states, counts of posts, etc. Only the last seven days of posts are available. The colour scheme is changeable. Dark mode is supported. All popular feed formats are supported.

There is no reading interface to read blog posts; rather, the links take you to the authors' websites. Many of my favourite bloggers put a lot of effort into the design of their blogs and like to change things up; I wanted an experience that embraced that.

The reader is now available for anyone to use (with invite code "hn").

aurea 5 days ago | next |

I have been thinking of creating a similar app; however I wanted to do a "Sunday paper". This look nice and I like the minimalist design, but I would prefer to have solution that I can self-host.

exprez135 5 days ago | root | parent | next |

The tool actually is open source, so you could self-host it if you wish. MIT license, in Python. The repository [1] is linked in the blog post the author wrote about the project [2].

[1]: https://github.com/capjamesg/web-reader

[2]: https://jamesg.blog/2024/11/30/designing-a-calm-web-reader/

zerojames 4 days ago | root | parent |

The open source version is a bit different from the hosted one: the open source code involves running the polling script, then building a static site (which is how I run the site for several months as a single-user project).

I am planning to move the polling changes upstream soon and then figure out a plan for open sourcing the full project.

stanislavb 4 days ago | root | parent | prev | next |

I've been thinking of it, too. And, I've created one a few years ago. It's been running 100% uptime and for free since then - lenns.io. I'd be happy if you give it a go and let me know what you think.

stanislavb 4 days ago | prev | next |

I created something similar a few years ago. It's been running fine for me and several other people. Its free, too. It's calm too, although it updates as often as 1-5 minutes.

I'd be happy if someone gives it a go and shares some feedback. I'd say it's quite similar to Artemis; however - you can set different priorities to the sources and the relevant topics.

Cheers - lenns.io

szszrk 4 days ago | root | parent |

It would benefit from a screenshot of the actual UI. On mobile there is little that would make me want to register.

You know how we are with creating accounts just to have a glance...

The description looks solid to me, though.

stanislavb 4 days ago | root | parent |

Fair enough. I’ll setup a demo account, too.

szszrk 4 days ago | root | parent |

That would be perfect.

A newspaper-like projects always gather interest of tinkerers. People love to do things like that for eink devices, export that to pdf to be displayed offline and so on

This could be a nice way to provide clean content, prefiltered.

kenrick95 5 days ago | prev | next |

I tried to import the OPML file exported by https://wordpress.com/read/subscriptions but it says "Failed to parse OPML."

Edit: just managed to find the support email. I'll send you the OPML file through it~

8organicbits 3 days ago | prev | next |

I like the minimalist design. I built a similar daily feed for myself, using GitHub Actions to trigger a daily sync, FeedLand.com for managing subscriptions, and GitHub Pages for publishing. Artemis is much more user friendly.

https://github.com/robalexdev/feeds

https://alexsci.com/feeds/

zerojames 3 days ago | root | parent |

Thank you so much!

This project actually started off as a GitHub Action to trigger a daily sync, with a Python script that polled pages and saved the results. A static site generator then built the site using the data from the polling process.

I love the design of your page!

alpb 2 days ago | prev | next |

I initially thought this would be an Instapaper alternative, or maybe a "Reader mode" similar to the one in Safari, but turns out it's a RSS reader? If so, I wouldn't necessarily call it a web reader.

xnx 5 days ago | prev | next |

I love the idea of a simple, digest-style, mode. Might make some version of this for Instagram. There's nothing so important on Instagram that it can't wait for the next day.

venusenvy47 5 days ago | root | parent |

Can you recommend a tool that could check an Instagram feed once a day for the current photos? I found a command line tool, but it tries to download the whole account, rather than just the daily updates.

https://instaloader.github.io/

xnx 5 days ago | root | parent |

That's exactly the tool I would use. There are options you can use to configure what posts are downloaded:

https://instaloader.github.io/cli-options.html#which-posts-t...

https://instaloader.github.io/basic-usage.html#filter-posts

imiric 5 days ago | prev | next |

This looks great! Congrats on shipping.

Have you considered open sourcing it? I would rather self-host something like this.

butz 4 days ago | prev | next |

Isn't updating once a day a bit too rare for content heavy websites, like HN? I use online RSS reader just to keep up with all updates when I am not online. With updates once a day I'd probably be using desktop RSS reader app.

jfim 4 days ago | root | parent |

I believe the idea is to have a source that updates infrequently, so that one isn't compelled to refresh it all the time.

It's not unlike one service that I saw where you'd get email once per day in your inbox, at a specific time.

rishikeshs 3 days ago | prev | next |

Unable to add my blog[1] hosted on Cloudflare. Is it an issue with CF?

[1]https://rishikeshs.com

zerojames 3 days ago | root | parent |

Hello there! Did you receive an error with your RSS feed (https://rishikeshs.com/index.xml) or the JSON feed (https://rishikeshs.com/index.json)?

I am able to successfully poll the RSS feed, but the JSON one is returning an error. Only JSON Feeds that conform to https://www.jsonfeed.org/version/1.1/ are parsable by the software.

butz 4 days ago | prev | next |

Technical question: how are you dealing with feeds blocked by cloudflare protection or captchas?

zerojames 4 days ago | root | parent | next |

Good question. I haven't found this to be an issue yet, perhaps because of the infrequency with which resources are accessed.

With that said, I can't guarantee this is not an issue. There are a few feeds that return errors that I need to investigate.

moehm 4 days ago | root | parent | prev |

Message the authors about this. Most website owners don't know their cms is also creating a rss/atom feed. Sometimes it took awhile, but I had moderate success with it.

borg16 5 days ago | prev | next |

thanks. I pay for miniflux through pikapods that I can now get rid of, thanks to your free and alternative offering.

rakoo 5 days ago | prev | next |

For reference, and not implying it's better or worse than your work OP, I've pleasantly used Fraidycat (https://fraidyc.at/) in the past. It's a webextension, so completely local, and also incorporates the idea of having a "calmer" experience: no infinite list of links to check, different update rates, ...

I love your philosophy page, OP ! (https://jamesg.blog/2024/11/30/designing-a-calm-web-reader/)

zerojames 5 days ago | root | parent | next |

Thank you! I think how something is made, and the decisions that got it to where it is, is just as important as the thing itself.

One of the delightful things about the web is we can all bring our own ideas and designs to problems.

I haven't written about this yet, but one thing on my mind is the importance of good import/export features. With good import/export features, we can all move around and try different softwares to see which ones we like!

rakoo 4 days ago | root | parent |

Indeed, import/export is one of the most important design point centering control back to the user, and even better is abstracted storage of data: if I had a single OPML file accessible from everywhere (with auth, of course) and all tools took the universally accessible path, I could change feeds in one tool and automatically see the result in another without fussing out import/export buttons and procedures.

mmahemoff 5 days ago | prev | next |

What's a good place to discover high-quality RSS feeds these days?

freetonik 5 days ago | root | parent | next |

I'm curating a collection here https://minifeed.net/blogs/

dqv 5 days ago | root | parent |

Aw dang, looks like I can't subscribe to it in my feed reader. Still, this is a great collection. Thanks for sharing

freetonik 5 days ago | root | parent |

Do you mean to subscribe to the whole collection, one RSS feed for all the blogs in my list? I mean, I guess I can build that feature, but it's gonna be quite a firehose.

onli 5 days ago | root | parent | next |

Not sure what parent meant, but the right way should be an opml file with the feeds, which the feed reader then can import. But maybe you are offering that already?

drdec 4 days ago | root | parent | prev |

My impression was that they wanted to be notified of new blogs via RSS, not the content of the blogs.

But I could be wrong

CharlesW 5 days ago | root | parent | prev | next |

One tip: Every Substack has a feed, which is a nice alternative to having everything dropped in your email in-box. You just append "/feed" to the end of a newsletter URL, e.g. https://simonw.substack.com/feed.

marginalia_nu 5 days ago | root | parent | next |

I've been doing adjacent work for my search engine[1], and found substack to annoyingly be one of the sites that employ bot mitigation for its RSS endpoints. If you fetch at a very low rate it works fine, but for these types of bulk retrieval.

Substack is also a bit of a pain to integrate with because they have zero useful contact information and direct all inquiries to a chatbot that is beyond useless, makes it so you have to guess how they want you to interact with their servers since there is nobody to answer questions.

[1] Preview of my take of the idea: https://mastodon.social/@marginalia/113670235590972416

freetonik 5 days ago | root | parent | prev |

I wonder if Substack would at some point remove or at least cripple this feature. Right now it seems the full-content RSS is served.

8organicbits 3 days ago | root | parent | prev | next |

I think the answer to this question _should_ be blogrolls, as in, you discover new feeds from the feeds you already like. We lost that when social media absorbed the social graph, but blogs and feeds are in vogue again.

I built a site around programmatic blogrolls (sites that publish an OPML file of their recommendations using a specific format). I collected a bunch of initial subscription lists[1], which are curated lists, "planets", and web rings. The I spider out from there. The aggregate list is too diverse, and definitely has some low quality content, but connections between blogs are useful for discovery [2].

[1] https://github.com/robalexdev/rss-blogroll-network/blob/main...

[2] https://alexsci.com/rss-blogroll-network/discover/feed-ff6cc...

aharris6 5 days ago | root | parent | prev | next |

I am working on a site, which is very pre-beta at this point, that works to help solve this problem using bluesky's "starter pack" model. Basically sharing curated lists of good follows. Give it a look at https://feed.computer if that seems interesting!

hombre_fatal 4 days ago | root | parent | prev | next |

Heh, that was my question too once I signed up.

I think OP’s project is a nice place to potentially have some default feeds. Both for purposes but also because it’s nice to see some interesting content once you sign up. Maybe even just major news items.