dev-resources.site
for different kinds of informations.
Goodbye Netlify, Hello Ghost: My Blog's New Home
In October 2021, I published my first blog post on Medium: Pub/Sub to BigQuery: How to Build a Data Pipeline Using Dataflow, Apache Beam, and Java. The feedback I received was incredible, and it motivated meâI wanted a personal blog, a space where I could share my thoughts and projects without relying on third-party platforms. So I set one up on Netlify using Hugo, with content managed via GitHub. The setup seemed perfect at first, but in reality, it was frustrating. Resizing images, uploading them to a CDN, and dealing with markdown files took all the joy out of writing. I quickly abandoned it and returned to posting on Dev.to, which felt far more engaging and easier to manage.
Fast forward to recently, when I accidentally checked Google Analytics and discovered my forgotten blog was getting decent organic traffic! That sparked something in me â if people were still finding and reading my posts out of blogging platforms, maybe it was worth reviving. But this time I wanted something effortless. I needed a platform that matched my comfort level with Medium and had features like an integrated editor, auto-CDN, subscriptions, and payment options â all without requiring me to self-host.
Hereâs how I found Ghost and why I fell in love with it (and its adorable admin dashboard logo).
Why Ghost? Evaluating My Options
When I decided it was time to move on from my clunky old setup, I started exploring different options. I wanted something that would make blogging easier and more enjoyable, so I looked into a few alternatives:
- Notion as CMS : Tools like Super.so, Feather, or Popsy.co build sites from Notion pages. While these solutions are super simple and tempting for lazy bloggers like me, they donât offer advanced features like subscriptions or content monetization â basically, no fancy extras.
- Traditional CMS : Platforms like Ghost or Contentful offered more blogging-specific features. Ghost especially caught my eye with its subscription models and built-in payment support. It felt like the âgrown-upâ choice for bloggers who want more than just a pretty website.
- Static Site Generators : Tools like Next.js or Eleventy can make visually stunning blogs, but unless you have unlimited free time or love debugging build pipelines on a Friday night, theyâre just too much work to maintain.
In the end, I went with Ghost. It had everything I was looking forâsleek design, easy setup, and features like built-in subscriptions that just made sense. Plus, did I mention their animated admin logo? Love at first sight.
How I Migrated My Blog to Ghost
If youâre considering switching your blog to Ghost, hereâs exactly how I did it after setting up my account:
1. Exporting My Articles
The first step was moving my content to Ghost. I came across this helpful migration guide and discovered they even offer migration services. Following the instructions, I exported my Medium articles using their export tool. Once I uploaded the export into Ghost, everything worked smoothlyâwell, almost. I had to manually fix the links to my GitHub Gists, but overall it was a straightforward process.
2. Choosing a Theme
Ghost offers a variety of free and paid themes to choose from. For now, Iâve settled on the simple Journal theme. I didnât want to invest in a paid theme just yet, but honestly this one works perfectly for now.
3. Custom Domain and Hosting
After deleting my old site on Netlify I connected my custom domain to Ghost. I chose the Starter Plan for hosting (pricing here) and got a 2-week free trial to test everything out.
4. Adding Google Analytics
If you had Google Analytics set up on your previous site or want to add it to your new blog, youâll need to grab your tag from your Google Analytics account. Once you have it, just add the following code to Ghostâs Code Injection settings:
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>
Iâm a bit obsessed with analytics and dashboardsâeven though I donât have thousands of readers, thereâs something so satisfying about seeing all those graphs and numbers. Hereâs a snapshot of my Google Analytics overview:
5. Setting Up Redirects
After moving my blog to Ghost the links to my posts changed, which meant anyone finding my content through Google searches was landing on a 404 page. To fix this, I needed to redirect the old URLs to their new locations. Ghostâs Lab feature makes this easy by allowing you to upload a redirects.json
file. Hereâs an example:
[
{
"from": "/posts/kafka_connect_to_aws_s3_pipeline/",
"to": "/from-kafka-to-amazon-s3-partitioning-outputs-36304a2ab852/",
"permanent": true
}
]
6. Integrations with other platforms
I had this grand idea of automating the distribution of my posts across all my platforms. The plan was to use the Ghost editor primarily for writing and drafting, then set up an integration with Make (because itâs more affordable than Zapier or n8n) to automatically post to Medium and Dev.to.
For Dev.to it turned out to be relatively straightforward. Although I couldnât find any integration in Make or Zapier, Ghostâs custom RSS feature made it easy. I simply created a feed that Dev.to can pull from. Now, whenever I publish a new post on Ghost, it shows up as a draft on Dev.to automaticallyâno extra effort on my part.
Medium, however, was a different story. I quickly discovered that Mediumâs API doesnât currently support automated publishing, which means thereâs no way to include it in any workflow (hereâs their explanation). So, for now, I still have to copy posts manually to Medium. Itâs not ideal, but at least it keeps everything consistent across platforms.
7. Workflow and Tools
With my new setup blogging finally feels organized and (dare I say) enjoyable. Hereâs how my workflow looks now:
- Notion: I use a Notion database with a simple Kanban dashboard to organize my ideas, notes, and drafts. It helps me track each postâs progress from concept to publication.
- Ghost Editor: I draft and write my posts hereâitâs simple, clean, and easy to use.
- ChatGPT: Once the draft is ready I run it through ChatGPT for proofreading. Letâs face it, as a non-native English speaker, Iâd rather catch my grammar mistakes before my readers do.
- Dev.to: Thanks to the RSS feed integration, my pulished posts magically appear as drafts on Dev.to.
- Medium: even though itâs not as active as it used to be, I still have a soft spot for it. Sadly, thereâs no automation here, so I copy posts over manually.
Whatâs Next?
Switching to Ghost felt like letting go of the unspoken pressure every technical blogger facesâthe idea that your blog isnât ârealâ unless itâs self-made and self-hosted. Itâs like the eternal debate between using the Git CLI or a Git GUI: are you trying to get things done efficiently, or is your goal to suffer for eternity? For me the choice was clearâI just wanted to write, not spend my life debugging my own blog.
If youâve been stuck with an outdated or frustrating blog setup like I was, consider giving Ghost a try. It might just breathe new life into your content. And hey, if you need a push to start blogging again, this is it. đ
Got a question about Ghost or blogging tools? Drop it in the comments â Iâd love to hear your thoughts! And if youâre curious about my blog, check it out at datobra.com. Who knows, you might even find something useful there.
Featured ones: