Migrate from Ghost

A five-step walkthrough for moving a Ghost publication to Project Broadsheet. Covers the JSON export, HTML-to-Markdown conversion, image rehosting, and URL preservation.

Migration Updated April 17, 2026 v1.0.0

Moving from Ghost to Project Broadsheet is a matter of converting each post's body from HTML to Markdown, wrapping it with the appropriate front matter, and preserving URLs through a redirect map. The process is mechanical and scriptable, below is the path most publishers follow.

Step 1. Export from Ghost

In the Ghost admin, open SettingsLabsExport your content. Ghost downloads a single JSON file containing every post, page, tag, author, and piece of metadata in the site.

Step 2. Convert HTML to Markdown

The JSON contains each post's body as HTML. Use a conversion tool such as turndown to translate each body into Markdown, then wrap each post in Project Broadsheet's front matter format:

---
title: "Post title"
description: "Excerpt or summary"
author: slugged-author
date: 2024-06-15
section: news
tags: [tag1, tag2]
---

Step 3. Place files in the correct sections

Project Broadsheet reads articles from src/content/{section}/. Organize the converted posts by their target section:

src/content/news/my-post.md
src/content/opinion/another-post.md

The folder name must match the section field in the post's front matter.

Step 4. Rehost images

Ghost stores images at /content/images/…. Download each referenced image, place the files under src/assets/img/migrated/, and update the image paths in the Markdown. Relative paths keep the archive portable for future migrations.

Step 5. Preserve URLs with redirects

Ghost URLs are flat: /post-slug/. Project Broadsheet URLs are section-scoped: /section/post-slug/. To preserve SEO value and avoid breaking external links, add a _redirects file when deploying to Cloudflare Pages:

/post-slug /news/post-slug/ 301

Generate one line per old URL from the Ghost export's slug list.

Would you rather hand this off?

I offer a migration service that handles the full process, automated conversion, image rehosting, a complete redirect map, and a quality-control pass on a sample of the archive. Tiered pricing starts at $499 for up to 50 articles.

Book a call

Still need help?

Browse Support for community channels and paid support options, or book a call if you'd like me to set it up for you.