One of the recommended ways of approaching web monetization as a content creator is to follow the "100+20" rule, where you create an extra 20% of content that is only viewable to paying users.
Is it worth investing the time to create that 20%? For large, well-established websites the answer might be yes. But for smaller sites, your monetized content might be viewed by a very small number of people, and it can be hard to justify creating this content at all.
On the flipside, potential users of Coil (and in the future other similar services) may not yet see the value of spending their money on web monetization. Is there enough available content that can justify the price?
I think both of the above problems are a bit of a chicken and egg situation - content creators need Coil users, and Coil users need content.
The solution to this problem is to create a site where users can come to see web-monetized content. On top of that, I wanted to use an existing technology, RSS feeds, to implement it.
RSS feeds are a stripped down version of your site's posts, which can be viewable by a third-party RSS reader. The benefit of this for users is that you can view all the content you want to consume in one place, without having to follow a creator's updates on Twitter or refresh their website to see if they've added a new post.
Unfortunately today, RSS feeds and web monetization don't mix. If you're viewing a site's RSS feed, you're not going to be able to send micro payments as you do it. As a content creator, you would also need to take steps to ensure that your monetized content doesn't show up in your site's RSS feed, because then you would be giving it away for free.
For this hackathon I've settled on putting web-monetized content on a URL that a user would not be able to guess. It's not truly private, so if someone happens to stumble upon the feed's URL, they will be able to view its content. The owner of the feed would have to ensure that they keep this URL hidden.
Content creators use many different services and frameworks to display their content (Wordpress, Hugo, Gatsby and so on), and so unfortunately we can't solve this with one plugin alone. For this hackathon I have decided to see how we would do this using Gatsby.
I web-monetized a Gatsby blog and created two RSS feeds - a private one with monetized content, and a public one without. I published a post about it here:
To be able to view RSS feeds, we're going to need an RSS reader. I decided to create a basic one using Blitz.js. You can read more about how I did that here:
Here I'll give a quick run through of how the RSS reader works. As this is a very rough proof-of-concept the UI is fairly minimal and I don't have any sort of account / log-in system implemented. Nonetheless I hope it gets the point across!
A user would land on the home page, and see a list of RSS feeds:
They would be able to select a feed, and see the list of posts:
If they did not have web monetization set up, the posts would not contain any monetized content:
When a user did have web monetization, we would be paying the content creator via their payment pointer, and would be showing the monetized content:
A content creator would be able to submit their public and private RSS URLs to the site, plus their payment pointer:
You can check out the code on Github here:
This is a demo app to show how we could implement a web-monetized RSS reader.
Open http://localhost:3000 with your browser to see the result.
Adding a blog with monetized RSS feeds
I've created a test blog at https://gatsby-monetized-rss.netlify.app.
You'll be able to add its two RSS feed on the settings page:
I've set out to create something during this hackathon that solves three problems:
- Make it more appealing for content creators to create monetized content
- Make it more appealing for people to sign up for monetization services
- Allow for viewing of web monetized RSS feeds
The concept of RSS feed monetization is something that we can definitely take a lot further, and can be improved upon! I'd love to hear your thoughts or alternate solutions on how we can solve this problem.
This is my submission for the Grant For The Web Hackathon (for any of the categories). Thanks for reading!