I’ve made a tool to copy posts from my Ghost blogs into Joplin. Here is a short overview; it’s a part of its GitHub ReadMe.
Joplin keeps my notes. Many of my blog posts are just neater summaries of my notes or the things I’ve learned. When I search Joplin, I want all of my blog posts to be included in the search as well. The downloaded notes contain original post URLs, tags and the Created and Modified timestamps are set to the date of post publication.
First tell Ghoplin about all the Ghost blogs you want to sync; then run sync. Let Ghoplin download all posts.
Since I like my E2EE and don’t want an unencrypted version of my notes leaving my devices, the app has to run locally. Therefore it’s a simple terminal app you have to run locally.
Tested on Windows and Linux (Ubuntu on WSL, to be precise). Since it’s written in .NET Core 3.1, it should run wherever it runs, though.
Usage - quickstart
Download the appropriate file from the Releases page. The commands below are same regardless of platform, the only difference is that e.g. in Powershell on Windows the invocation will look like
.\Ghoplin.exe <command>, whereas in Fish on Ubuntu it’ll be
To get help for any command, try something like
Ghoplin add help etc.
1. Specify Joplin API token
First you have to let Ghoplin talk to your Joplin, which has to be running when Ghoplin runs.
You can either input your token (and port, if non-default) every time you run Ghoplin by passing it in a parameter, i.e. appending
-t thisIsMyToken546168135413243 to each command.
Or you can save your token into a config file that will be placed next to the executable. The easiest way to write this file is by running:
Ghoplin write-config -t thisIsMyToken546168135413243
Then you no longer need to specify the token when running subsequent commands.
2. Add your blogs
For each blog you want to add, run
Ghoplin add --url https://zblesk.net/blog --apiKey myActualApiKeyReally235476854 --notebook "English blog"
So you need to specify the URL of your blog, your API key and the Joplin’s notebook. You can either specify Joplin’s internal notebook ID, or just specify it by name - make sure it’s the only notebook with that name, though.
If you want to apply tags to each note from this blog, use the
--auto-tags argument. Feed it a comma-separated list of tags.
I.e. to tag all posts with the tag “blog” and “fun stuff”, write:
--auto-tags "blog,fun stuff"
3. Run Sync
Then just run:
This downloads all the posts from the blog in chronological order.
When you later want to add newer posts, just re-run
Ghoplin sync. It remembers the time of last sync for each blog and will only download new posts.
This is a part of the entire ReadMe. Worked well for me so far.