#JSONFeed

2025-11-18

It's been a minute since I gave VSCodium a break, but after upgrading GoToSocial to the latest I absolutely needed to get back to building out my /now page to finally fully automate publishing via shiny new JSON Feed from my GTS instance. As with all things simple it turned out to be much less straightforward than I hoped, but the journey was worth it.

Me reason for choosing JSON Feed over RSS was ultimately about browser compatibility, but I did thoroughly enjoy the process of playing with XSLT. So with JSON on-deck, I first needed to figure out how to get my hands on the feed. And while this seems simple enough, GTS chose to provide a single /feed.rss endpoint which defaulted to RSS but where one could select the type of feed by adding a header to the request {“Accept”: “application/feed+json”} rather than presenting a simple /feed.json endpoint. It will become clear why it was such a problem for me later, but for now suffice it to say that CORS and avoidable headers don’t mix well.

Before I get to the frustrating part, I should note that I strangely enjoyed the templating part of this journey. I found XSLT quite capable and satisfying to work with, despite loathing XML, so I was actually looking forward to templating the transformation from JSON to HTML. I started with Mustache and Handlebars both of which worked as promised and were super lightweight, but that featherweight distinction meant that some key features like contains-based filtering and basic substrings would require me to write some basic functions and register them as part of the template engine. I suspect it would have been faster for me to do exactly that, but I chose instead to work through my template with not 1 or 2 but three – thankfully similar – templating tools finally landing on Nunjucks. Beyond that there’s not much to say, Nunjucks is more capable than I need and I’m sure loading that .js file is unnecessarily tasing on the poor suckers who visit my page. But it was easy for me ;-)

Now given that I have learned nearly everything I know about cos-playing as a sys admin from messing around over the past year, I’m sure my own choices led to this — Currently my “stack” consists of a couple low-power Raspberry Pis connected to the world via Cloudflare Tunnels. It was quite the accomplishment for me when I finally moved my site off the now retired Pages feature at Codeberg an onto my own little NGINX server — but it turns out that somewhere in the mix of HTMX, NGINX, CF Tunnels, Docker, and GoToSocial my ability to add the requisite header to get the JSON version of the feed triggered CORS. Of course CORS is great when you expect it, but I hadn’t set up any Access-Control-Allow-Origin or Access-Control-Allow-Headers rules on my server, so it didn’t make sense.

No fear, I can google (note the little G in that verb) with the best of them and promptly had the access control headers in place. Problem solved not solved. No matter what I tried – I even phoned a friend (thanks @oli ) – I couldn’t figure it out. I eventually became convinced that Cloudflare was adding CORS restrictions on my behalf – thanks I think – but I couldn’t figure out how to allow the headers I was sending.

Then tonight, while limping through my taekwondo class with a strained hip flexor, I had an epiphany! If I can’t send the request header from the site without violating the cross-origin restrictions, I could just add the application/feed+json header via a Cloudflare transform rule for all requests to the /feed.rss endpoint!! I apologize to anyone who wants a proper XML based feed, but this is my site so you all get JSON. (Check out NetNewsWire for a fantastic open-source feed reader on Mac/iOS that supports JSON Feeds.) This little scheme allowed me to add the HTMX hx-request=‘{“noHeaders”: true} attribute, which would normally cause GTS to default to XML, and let the necessary yet guilty header be added in transit outside the prying eyes of whatever CORS gremlin was lurking in my stack.

The moral of the story is, don’t give up. With enough ignorance and uninformed decision making you too might learn a thing or two along the way like how to work around problems without actually solving them. If you’ve made it to the end of this and didn’t already notice the link to my /now page above you may want to check it out: HaugenHus: Now (Kaleb)

#Now #GoToSocial #JSONFeed #HTMX #NGINX #Fediverse #CORS #NotASysAdmin #SelfHost

Nantucket Litnantucketlit
2025-09-30

New blog post: I have updated the script that makes the book catalog for Nantucket Lit.

nantucketlit.com/blog/2025/09/

The big word is... *syndication*!!! You can now subscribe to a feed of new books from my site via , , and .

But there's more! You can also subscribe on a *per-author* basis. If you want to be notified only about books from, say @NylaWoethief, you can do so at nantucketlit.com/books/SethPat, and click on the feed of your choice.

Nantucket Litnantucketlit
2025-09-30

I'm knockin' through syndication on my books right now. If you like , , or even , you're going to like this one.

2025-09-05

Recently I got sufficiently annoyed at authoring posts in two places so that they were visible both here and on HaugenHus: Now – this is also in part because I prefer to write in Markdown which GoToSocial handles marvellously – that I decided to start looking at options. Of course there are many, but I chose to pursue an exclusively client-side solution with a static pageset to lighten the load on my little Raspberry Pi.

I landed on a solution built on HTMX + GoToSocial:RSS + XSLT which can be seen on HaugenHus: XSLT Test, but was horrified to find that after 26 years Firefox hasn’t managed to solve for HTML within an XML <![CDATA[]]> node. Of course it’s easy to get frustrated with a second-rate browser like Firefox 😁 – WebKit all the way baby! – but why bother when someone else has keep the flame war burning for 24 years Bug 98168 🤣. Of course with every ugly battle there are some heroes, and Scott Trenda was clearly one of these both offering a viable workaround and serving as a calm voice of reason.

So with a viable workaround to my XSLT woes, why haven’t I finished this little project? Well, there are two reasons: the first is that a workaround should never be allowed to become a permanent solution; and secondly, my WebKit enthusiasm may have been misplaced. It turns out that the fine folks over at Apple – @annevk – have expressed interest in killing my XSLT dreams 🥺.

With all of that said, what I found most interesting about this whole thing is that while I have been aware of XSLT for years, I unknowingly decided to play with it just as a storm appears to be brewing. Eventually I will get over my desire to minimize my dependence on JavaScript, but until then I’m sure there many other ways to solve this problem. I might just need to change the constraints.

(Maybe @gotosocial@superseriousbusiness.org would give us JSON Feed . . . feature request incoming after a bit more research 🤓.)

Additional Reading

XSLT Debate Leads to Bigger Questions of Web Governance

#Now #XSLT #Firefox #WebKit #GoToSocial #HTMX #RSS #JSONFeed

2025-07-28

I had an Idea to build a selfhosted service that converts any open json data to jsonfeed format using configuration file. So that I'll be able to use those feeds in my RSS reader.

As an example, here I convert a reddit feed into a jsonfeed. In theory I will able to build a lot of different feeds using just a config file.

Now the problem that I have is that not all json data is perfect and sometimes I need some conditional logic or even running some code.

How should do this? Using a full-featured templating engine feels like a bit of an overkill.

#selfhosting #rss #jsonfeed #python

2025-06-29

Like #syndication for content? My blog supports #rss, #atom, and #jsonfeed. I'll be working on getting syndication going for my site's catalog as well.

Gilles Vauvarinpixenjoy@mamot.fr
2025-06-11

I'm developing KITE, a small web app for old-fashioned monitoring:

- an RSS, Atom or JSON feed reader
- feeds classified by category
- tracked content can be bookmarked
- bookmarks sorted by category
- option to receive the last 7 days' tracked content by e-mail
- a form to help find the presence of a feed on a site
- a keyword filter to target content and bookmarks

#rss #atom #jsonfeed #feed #bookmark

KITE, feeds page with top right menu openKITE, feeds page with top right menu closeKITE, bookmarks pageKITE, search feed form and result
Gilles Vauvarinpixenjoy@mamot.fr
2025-06-11

Je développe KITE, une petite app web pour faire de la veille à l'ancienne :

- un lecteur de flux RSS, Atom ou JSON feed
- des flux classés par catégories
- les contenus suivis sont bookmarkables
- des bookmarks classés par catégories
- possibilité de recevoir les contenus suivis des 7 derniers jours par mail
- un formulaire qui aide à trouver la présence d'un flux sur un site
- un filtre par mot clé pour cibler les contenus et bookmarks

#rss #atom #jsonfeed #feed #bookmark

KITE, page de lecture de fluxKITE, page de lecture de flux avec le menu amovible ouvertKITE, affichage des bookmarksKITE, détecteur de flux sur un site web en indiquant l'URL du site
2025-05-23

I can't find any selfhosted RSS readers that can read json feeds and display thumbnail images.

Do you know anything that fits the description?

#selfhosted #rss #jsonfeed

2025-02-27

Anybody #jsonfeed enthusiasts here? What reader do you use to read your feeds?

2025-02-25

New blog post: I write my blogs in my Shanty markup language, and then parse the plain-text into separate blog pages. It's all done with #FOSS software. It's #SmallWeb and very accessible. nantucketebooks.com/blog/2025/

I am ready to open this up to other people and start a blogging platform for whomever is interested. #Syndication via #RSS, #Atom, *and* #jsonfeed.

If this sound like what you've been looking for, email me at njb@nantucketebooks.com

2025-02-25

Après 1 journée de travail avec #cecilapp j'ai "terminé" toutes les pages de mon site (refonte de atlza.com )

Restent 2 choses :
- le passage à #tailwindcss 4 qui se fait dans la douleur (il ne trouve que la moitié des classes utilisées)
- les flux #rss. Ca va être le gros morceau, objectif : 1 flux par par page et 1 flux global, le tout aux formats Rss et #jsonfeed !

Pour le reste pour un dev #php Cecil est très facile à prendre en main, bien plus que #hugo

cc @arnaud

2025-01-23

Cleaned up and sorted out my RSS and JSON Feeds again to reflect recent site updates.

https://vale.rocks/syndication

#RSS #JSONFeed #WebDev #FrontEndDev

2024-10-31

…is using the proper #jsonfeed format for feeds going forward.

jsonfeed.org

Michał "rysiek" Woźniak · 🇺🇦rysiek@mstdn.social
2024-10-13

Dear #RSS / #Atom feed people, are you familiar with #JSONFeed?
jsonfeed.org/

Anybody using it? Anybody knows of clients for it? Anybody has *informed* opinions on it?

2024-10-06

New #Blog: Using #JSONfeed support to create an "On This Day" site module

I decided to create a small module for my site, to display posts made on the same day in previous years.

This post shares the #javascript that I cobbled together

bentasker.co.uk/posts/blog/sof

2024-09-06

Thoughts on full-text RSS/ATOM/JSON feeds, both from the perspective of an end-user and a webmaster.

thenewleafjournal.com/on-using

#RSS #ATOM #JSONFeed #RSSFeed

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst