I read lots of RSS feeds, for which I use a FreshRSS instance that is hosted on a VPS I rent from Hetzner.
To read I can use the FreshRSS’s own web interface, but on my laptop I use a personal interface.
That personal interface allows me to not just read, but respond while reading.
This is the original vision for the World Wide Web, in which you don’t just read, but write too, and where reading and writing are part of singular experience.

What my personal interface does / allows:

  • Show me my folders of feeds (the folders are in FreshRSS, and named / sorted according to my ‘reading by social distance‘)
  • Click open a folder to load unread items in that folder (using the FreshRSS API)
  • Click open an unread item if the title catches my eye.
  • Clicking on a ‘Respond’ button reveals a (larger) response form to fill out
  • Submit the response form, calling a processing script on my local machine in the background, and continue reading
  • Mark a folder or all feeds as read (using the FreshRSS API)

The response form allows me to do several things, both individually or simultaneously

  • Post a bookmark, favourite or reply to my blog, my company’s website and other WordPress sites I control (using IndieWeb micropub)
  • Create a note in my Obsidian vault (by writing to the filesystem directly)
  • Create a page annotation in Hypothes.is (through the Hypothes.is API)
  • Post to one or both my Mastodon accounts (through the respective Mastodon instance API)

I am in the process of slowly adding additional features from my list of ideal feed reader capabilities. Currently I am working on being able to tag feeds (readers usually only allow adding tags to items), so I can not just have folders but also subsets based on tags (e.g. coders in Berlin).

Screenshots (status February 2026):


The general overview of my reader, listing the folders in my FreshRSS instance. Clicking one reveals unread items.


Every unread item has a Respond button beneath it.


The response form allows various texts, and has a selector for bookmark, favourite or reply type of responses.


A response can have one or more destination: blogs, local notes, hypothes.is annotations, or Mastodon accounts.

I use a personalised feedreader (running on top of a self-hosted instance of FreshRSS‘s API that handles the RSS subscriptions) since about 4 years.
My feedreader allows me to interact with the Web, not just read it. I can post to this blog (and a few other websites) directly from it and keep reading my feeds. Same for adding an annotation to Hypothes.is, and for adding a note in markdown to my filesystem in the folder where Obsidian lives.

Recently I mentioned I want to make my habit of annotating web postings in my Hypothes.is easier to keep up.
As I wrote then:

… currently from within my feedreader I can post to either my blog or to Hypothes.is, but not both. I want to change that, so that the same thing can serve two purposes simultaneously.

I now have adapted my feedreader interface and related scripts to do just that.
It can post to a few websites AND to hypothes.is AND to Obsidian all at the same time now. It used to be either just one of the sites, hypothes.is or Obsidian. Posting to both hypothes.is and Obsidian simultaneously won’t happen a lot in practice as my hypothes.is annotations already end up in Obsidian anyway. I use the saving to Obsidian mostly to capture an entire posting, where I use hypothes.is in my feedreader to just initially bookmark a page so I might return later to annotate more. The current version of the response form in my feedreader is shown below.

One element I added to the interface that I haven’t coded yet in the back-end: posting to my personal and/or my business Mastodon accounts. [UPDATE I did that now too]. When Now that is done, I can write to all the places I write the web, right from where I read it, as in Tim Berners Lee’s original vision:

The idea was that anybody who used the web would have a space where they could write and so the first browser was an editor, it was a writer as well as a reader. Every person who used the web had the ability to write something. It was very easy to make a new web page and comment on what somebody else had written, which is very much what blogging is about.

Tim Berners Lee in a BBC interview in 2005

I can now share an article directly from my feed reader to my Hypothes.is account, annotated with a few remarks.

One of the things I often do when feed reading is opening some articles up in the browser with the purpose of possibly saving them to Hypothes.is for (later) annotation. You know how it goes with open tabs in browsers, hundreds will be opened up and then neglected, until you give up and quite the entire session.

My annotation of things I read starts with saving the article to Hypothes.is, and provide a single annotation for the entire page that includes a web archive link to the article and a brief motivation or some first thoughts about why I think it is of interest to me. Later I may go through the article in more detail and add more annotations, which end up in my notes. (I also do this outside of Hypothes.is, saving an entire article directly to my notes in markdown, when I don’t want to read the article in browser.)

Until now this forces me to leave my feed reader to store an article in Hypothes.is. However, in my personal feed reader I have already the opportunity to post directly from there to my websites or to my personal notes collection in Obsidian.
Hypothes.is has an API, which much like how I post to my sites from my feed reader can make it possible to directly share to Hypothes.is from inside my feed reader. This way I can continue to read, while leaving breadcrumbs in Hypothes.is (which always also end up in the inbox of my notes).

The Hypothes.is API is documented and expects JSON payloads. To read public material through the API is possible for anyone, to post you need an API key that is connected to your account (find it when logged in).

I use JSON payloads to post from my feedreader (and from inside my notes) to this site, so I copied and adapted the script to talk to the Hypotes.is API.
The result is an extremely basic and barebones script that can do only a single thing: post a page wide annotation (so no highlights, no updates etc). For now this is enough as it is precisely my usual starting point for annotation.

The script expects to receive 4 things: a URL, the title of the article, an array of tags, and my remarks. That is sent to the Hypothes.is API. In response I will get the information about the annotation I just made (ID etc.) but I disregard any response.

To the webform I use in my feedreader I added an option to send the information to Hypothes.is, rather than my websites through MicroPub, or my local notes through the filesystem. That option is what ensures the little script gets called with the right variables.

It now looks like this:


In my feed reader I have the usual form I use to post replies and bookmarks, now with an additional radio button to select ‘H.’ for Hypothes.is


Submitting the form above gets it posted to my Hypothes.is account

In reply to Publish Obsidian Documents to WordPress by Curtis McHale

I didn’t come across this posting at the time. As you say, having to log in every single time as well as having to send it already formatted raw HTML (and not the markdown one writes in in Obsidian), are drawbacks. XMLRPC is blocked by my hoster (part of their security decisions), and I have disabled it within WP therefore. I went with Micropub to publish from Obsidian to WordPress, around the same time as this posting. As notes in Obsidian are plain text files in the local filesystem, I run a local script outside Obsidian periodically checking for files marked for publishing. Using Micropub it can post such files, while turning markdown into html, to several of my WP-run sites, both as post and as a page. The latter allows me to add them to my wiki-like section of my blog. Just posting at the moment though, not updating.

To publish click the WordPress icon in your sidebar which will reveal a panel in the sidebar with a Publish button for you to click. Once you click the Publish button a window opens up with your username prefilled and asks you to fill in your password. The plugin … publishes RAW HTML on your site. … While this does work, it feels far from optimal to me. I’d love to see the option of pushing straight markdown to the editor.

Curtis McHale

Dave Winer asks for two-way RSS. He says publishing platforms usually do provide feeds for readers, but writers usually have to use the platform itself. This while Dave, and I presume many other writers, as well as me, do their writing preferrably outside the place where we publish. Dave suggests for platforms to be able to import feeds, not just generate them. That way there is no need to use the platform’s back-end.

I am not sure if RSS is the most flexible solution, although it is entirely possible. In fact, I publish on micro.blog/ton by sending an RSS feed from this site to Microblog. Currently it’s the main feed of this site, but it used to be a different one, and it could be a fully separate one. If your own writing tools are already good at generating RSS feeds from what your write there, then sure using that is fine. Like on Microblog, all it takes is to log into the publishing platform and add the feed URL in your settings. This works well in a one-to-one setting, connecting a writing tool to a publishing platform.

Another option is using Micropub. It’s a bit more complicated to initiate, as it requires a workflow authenticating oneself to the platform, and in 2 steps obtain a token to be authorised to send content to the publishing platform’s micropub endpoint. But once you’ve done that, you’re basically talking to an API. This allows not only creating, but also updating or deleting earlier posts. It also supports uploading media to the publishing platform itself and manipulate it there, thus allowing media to be hosted with the publisher as well.

This is what I do mostly these days. I write in my own writing tool (Obsidian currently), and run a script that looks up the items ready to publish and pushes them one by one to one or more of 4 sites. I use the same solution to also directly post from my feed reader, and using a simple form for the most basic of posts. I imagine in Dave’s use case that would entail multiple feeds to have the publishing platform subscribe to, or merging multiple streams first into a single RSS feed.

The web wasn’t intended as a reading only space, but as a read and write space. Whatever makes writing easier, whether it’s original texts, responses and dialogue, multi author edits, or annotations, is useful.

I extended the capabilities of my microsub feed reader with the option to save web articles directly from the reader to my Obsidian notes in markdown format.

Until now if I wanted to save an entire article I found in my feed reader, I would open it in the browser and then use the markdownclipper browser add-on to add some context and then save the article in markdown in my notes. I wanted to cut out that step of opening it in the feed reader, by saving it directly to my markdown notes. In my feedreader I already have a response form to e.g. post a reply to a posting on my own site. Posting it to my notes means adding a path to how I process that form.

I had to find a suitable script for converting HTML to MarkDown first. Which I found in PHP League’s HTML-to-Markdown, as suggested by Jan Boddez. It requires Composer which I already had installed on my laptop.

I tweaked my feed reader’s response form to also (as a hidden field) include the original HTML of a posting (using htmlentities to stuff it into a form field value). The script that processes the form I altered to both have a path for posting to websites (using micropub) and a new path to make a note in Obsidian, which is then saved as a .md file to the folder I store all clipped articles in.
To make a note I shape the available input the same way I template clipping things from the browser. At the top is my rationale for clipping something and reference to the source, followed by the original posting after which I add some keywords as tags and again the reference to the source.

In the images below you see the corresponding elements marked both as they appear in the reader as well as the resulting note.

The article as shown in my feed reader:

1: the original HTML content from a feed
2: title of the article (prefilled by my feed reader)
3: name of the author (prefilled by my feed reader)
4: original article’s URL (prefilled by my feed reader)
5: the reason and context why I am saving this to notes (also used to write a reply to a post, or the reason for bookmarking something if it will be posted on my site)
6: a quote I want to highlight
7: keywords that will become tags or categories on my site, and tags in my notes
8: selector for which site to post to (zyl is my blog), or ‘obs’ for making a note in Obsidian

Except for that last one those numbers are marked on the image of the resulting markdown note.

The resulting note in Obsidian:

1: the original HTML content from a feed shown in Markdown as the main body of the note
2: title of the article, both shown as part of the content of the note, as well as the title of the note (where a timestamp is added)
3: name of the author (mentioned with the source both at the top and bottom)
4: original article’s URL (mentioned with the author both at the top and bottom)
5: the reason and context why I am saving this, always at the top as it helps me process the content better
6: a quote I wanted to highlight
7: keywords that have become hashtags

(This posting was also written in my notes and, except for the images, posted directly from Obsidian to my site. Meaning I can both automatically move material into Obsidian, as well as automatically move material out of Obsidian. I quite enjoy the feeling of using that ‘magic’.)