Adding paywall to content in Publish

With Obsidian Publishing, is there any way to establish a paywall to content?

Is possible to place Adwords on the page?

Any other means for a true “publisher” to use it as a revenue source? Or is it meant only for in-house or small-scale non-commercial publishing?

5 Likes

Not right now. If you have such needs, feel free to write a more detailed feature request (or edit this one) to talk about your use case, things like what kind of content are you thinking of selling, and would you sell it at a one-time price or as a subscription. Thanks!

Right now it’s more for personal use, as a public knowledge or digital garden.

1 Like

Thanks @rkaplan I was just about to ask this. I have a similar case, Like I mentioned to @Silver I’m building an Online Course for Obsidian for Personal Knowledge Managment.


Perhaps the single most useful feature to me, would be to have an unlisted (invite only) option,

Payment to access course, could be done through another service

In my case this would allow me to give access to those who buy my course (through another paying service) then once they paid I can give them a link to either log-in or visit an unlisted link with the course.


I’ve been looking for alternative platforms to share my course on, but I’d love to be able to achieve this with Obisdian Publish, specially since I can keep updating the course and everyone would have the same access to updates.


Whereas if I make it an obsidian downloadable vault, updates won’t reach everyone, unless they make a constant effort to redowload the vault often.


What would work perfectly is one of the following:

Log-in

  • ideally access is granted through a log-in, where those who have paid can log-in to my obsidian publish.

Unlisted Link

  • Alternatively, I could give them access to a an unlisted link through email once they’ve paid for the course.

Log-in is a lot safer and a prefered method, but if unlisted links are possible, I’d be happy to work with that as well


If this is a difficult long term feature to achieve, I’m happy to know if there are any work-around solutions to use the current version Obsidian Publish to achieve this.

Thank you!

2 Likes

That sounds like a good option for a paywall… perhaps Adwords would be an option for those who wish to monetize content without a paywall.

Even publications meant for public knowledge need to be capitalized somehow if they are to be sustainable and of good quality.

2 Likes

Yes, perhaps our needs are different @Silver let me know if it’s better to create a separate feature request post for what I mentioned above.


For anyone else reading this post, I talked directly to @rkaplan about using something like Hugo to create a website with markdown, and publishing it with Netlify.

This allows for more freedom to have a custom domain and including Ads or whatever you might need.


Hugo Is a bit advanced, eventhough you don’t need to know html and css and javascript, (it’s benefitial to know those things). experience with git saves a lot of time as well.

but other than that, if you are willing to learn it’s worth it, if your goals is to create a website with markdown. Here’s my main website as an example made with hugo.

Hope that helps!

2 Likes

Really cool stuff man, looking forward to seeing more!

I really like the Andy Matuschak style notes / braindump concept, might set one up too with Hugo!

1 Like

@juen thank you I appreciate your kind words!

awesome, if you want to set it up I put the resources I used at the bottom of the main page


Just a bit of advice,

for my whole main website I use hugo 100%

for publishing notes, I am currently transitioning to obsidian publish, it’s great to be able to keep all of those notes inside obsidian, without the extra work of converting everything to hugo (not that easy)

but overall for a full website I do recommend hugo, for notes I believe obsidian publish to be worth it, for a more frictionless process.

2 Likes

Thanks for the resources & advice! Agree that Obsidian Publish is serving the same function so might just use that for publishing notes “quick & dirty”.

Already using Hugo for my own website (jenglert.gitlab.io) so that’s why I was intrigued. Currently favoring the model of notetaking/writing in Obsidian and then publishing finished blog posts instead of already sharing the collection of unrefined notes.

But mabye they’ll even allow CSS for Obsidian Publish or an easy way to access public / published Vaults directly in the native Obsidian app!

Another feature I’d like to see to make those kinds of virtual gardens more useful would be a “path” in form of highlighted links or similar that leads you along a certain argument / viewpoint etc that the author wants to make so that you don’t get lost in side-links or dead ends all so often.

Nice, that’s a cool website, got you yeah hugo is great, and if you already have experience with it then it’s worth testing what works best for you.

Those are some awesome ideas for obsidian publish, I’m excited to see where they take it!

I second this feature request.

Gathering scattered bits of specif topic oriented notes has value for many people.

I built https://book.wardleymaps.com/ and would love to put it behind paywall or any source of credentials check.

I have excellent news: It is possible to paywall content in Obsidian Publish by using MemberSpace (Regular link to MemberSpace. My affiliate link, if you want to help me out when you subscribe.)

Step 1: Obsidian Publish must use a custom domain. (Thank you to joethei for confirming this on Obsidian Discourse.) I used CloudFare and followed the instructions on Obsidian Help. If Obsidian Publish is looping after you connect it to your custom domain, then double-check that the encryption mode in CloudFlare is set to “Full.” Also, as Licat pointed out to me on Obsidian Discourse, remove www in the custom domain’s URL in Obsidian Publish. (Many thanks to Licat on Obsidian Discourse for helping me.)

Step 2: Copy the JavaScript that MemberSpace provides and paste it in publish.js. (Remove <script> and </script> since MemberSpace assumes you’re pasting the code in the <head> tag in your website but the publish.js file is a JavaScript file.)

Step 3: Publish the publish.js file to your Obsidian Publish site.

If you’re thinking about using MemberSpace as your paywall, then I have an important warning (that I discovered after many frustrating hours of conversations with MemberSpace’s support): Your content isn’t truly protected unless you upload it to MemberSpace’s servers! MemberSpace will easily mask content on any website posts/pages by using JavaScript, but this layer of protection can be sidestepped by anyone who is a little tech savvy. To have your content truly secure behind a paywall, you must upload it to their servers and then embed it on your site. (I still use MemberSpace because even a dedicated membership-focused CMS like Ghost has serious flaws. I learned that Ghost(Pro) doesn’t protect any media that you upload to their servers. It is immediately published and is live to the public. They also don’t give you access to your uploaded media, so you have to email Ghost’s support and ask them to delete it. I stumbled on this flaw when I attached a PDF to a draft post below the members’-only code and found that the PDF’s link still worked even after I deleted the draft. Ghost’s support said that I need to have the content on another server and embed it in Ghost. … So, I returned to using MemberSpace as my paywall.)

@hsarji @rkaplan you could implement this easily enough using Cloudflare Workers.

Put Cloudflare in front of your domain, then use something like this (or even write it yourself) to block the content without the right authorisation:

(Note I have no experience with the above, I just know that CF Workers can achieve the goal.)

@hsarji this could be integrated with the MemberSpace javascript to make sure that even with tech knowledge you couldn’t get around the paywall.

1 Like

@AlanG Thank you so much! I started using Cloudflare yesterday. Since I’m already using Cloudflare for Obsidian Publish, this solution seems superior to MemberSpace! I wonder if I can get the script to work with Stripe instead of Unlock. I will test the Cloudflare Worker and report back with any useful feedback.

1 Like

@AlanG I looked into Unlock and it is promising, but (unless I’m mistaken), crypto gas prices seem to be too high for Unlock to make sense. To test things, I created a Coinbase account and Wallet, but I can’t find a reasonably priced crypto to use for transactions. (For credit card transactions, Unlock will charge me the Stripe fee + gas.)

You suggested writing something like it myself or integrating with the MemberSpace JavaScript. Both ideas are excellent, but they are beyond my current skill set. I just started learning about APIs, so it could take some time before I can write something like it. My goal is to integrate MemberSpace and CF using MemberSpace’s API and CF Workers so the CF Worker shows the MemberSpace paywall before a web page’s elements are loaded on the screen. (The problem with MemberSpace [unless you put content on their servers] is that the members-only content is still visible when viewing the source of the page.)

Sorry - my intention was not to suggest that you use “Unlock”, my intention was just to show how Cloudflare Workers can interrupt the flow of a normal website so that you can inject your own login/authorisation, without needing to modify the code of the actual website.

For some context, Cloudflare Workers are server-side Javascript which executes before serving the page content to a visitor. You can use that to hook in with any authentication system, without needing to add any code to your actual site. Cloudflare Worker executes, processes the authentication request, then if authorised only then serves the page content.

If that is a bit outside your current skillset, then it sounds like an excellent project to attempt. You might find the example here about adding password protection to be helpful also. It’s a more simple implementation showing off a similar concept - interrupt the normal page loading to present a password login box:

1 Like

Thank you. This info is helpful. It explains why I ran into some issues because MemberSpace has a frontend API. So, things like document and window generated an error message in the Cloudflare Worker.

Yes, it is an excellent project to attempt. I’m a total beginner with APIs. I’m still figuring out how they work and how to connect the MemberSpace API to the CloudFlare Worker. There is at least one person who celebrated such a connection on Twitter, but I don’t think he published his insight as he suggested he might.

I got the example in the article you shared to work some of the time. Something odd is happening. When I enter the URL of the protected directory in my browser, Cloudflare shows the authorization box. But if I’m already on my site and I navigate to the same URL by tapping on a link, Cloudflare doesn’t show the authorization box and shows me the “protected” page. The Obsidian Publish password for the entire site does not change the behavior.

(I’m still learning about APIs, so I haven’t made progress connecting MemberSpace and Cloudflare.)