Keep writing where you already write
If you draft in Obsidian, Ulysses, iA Writer, or just a folder of .md files, you already know the feeling: the writing goes well right up until it’s time to publish, and then you get pulled back into the Ghost editor to set the title properly, fix the formatting, add the tags, and wrestle a card or two into place. The actual writing happened somewhere you love. The finishing happened somewhere you tolerate. And every time you want to fix a typo in a published post, you’re back in that web editor again, in a browser tab, away from the tools that make writing feel like yours.
Specter exists to close that gap. It’s a native macOS app that does two-way sync between your Ghost blog and a folder on your Mac. Your published posts come down as plain Markdown files — title, tags, status, feature image URL, and excerpt all sitting in the frontmatter — and they go back up when you save. You point your editor at that folder and write the way you always have. There’s no plugin to install in Obsidian, no browser tab to keep open, no new app to learn. It’s a small thing that lives in your menu bar and keeps a folder and a blog in step.
Markdown as a faithful projection, not a lossy export
Here’s the part most tools won’t tell you, and the part that matters most if you care about your posts. Ghost doesn’t store your writing as Markdown or even as HTML — under the hood it uses a format called Lexical, the same thing the Koenig editor draws its cards from. So when Specter brings a post down to a .md file, it isn’t unwrapping some hidden Markdown that was there all along. It’s making a faithful projection of your post into Markdown — a clean, editable view you can work in comfortably — and then carefully translating your edits back when you publish.
For ordinary writing — paragraphs, headings, lists, links, bold and italic, the things most posts are actually made of — that projection round-trips cleanly and you’ll never think about any of this. Where it gets honest is with card-heavy posts. If a post leans on Koenig cards — galleries, embeds, bookmark cards, HTML blocks, complex callouts — some of that structure can’t be represented in plain Markdown without compromise, and a full round-trip may not come back byte-for-byte identical. That’s not a bug Specter is hiding; it’s a property of converting between two formats that don’t perfectly overlap. We’d rather you know it going in than discover it later. If you want the full picture of what survives and what to watch for, how Specter handles Ghost cards walks through it plainly.
The dry-run preview is your safety net
Because that translation isn’t always perfectly symmetrical, Specter never just shoves your changes live and hopes. Before anything is written, you can run a dry-run preview that shows exactly which posts would be created, which would be updated, and which it’s flagging as a conflict. You see the blast radius before a single byte moves. If you’ve been editing a post locally and you also touched it in Ghost from your phone, Specter notices that both sides changed and asks you what to do rather than silently overwriting one with the other. The whole design assumes you’d rather be asked than surprised.
That combination — a clean local copy you can write in, plus a preview that tells you the truth before you commit — is what makes editing your blog locally feel safe instead of risky. You’re never guessing what’s about to happen to a published post.
What this looks like day to day
You write a draft in Obsidian on the couch, offline, with all your usual snippets and links. You save it. Specter pushes it to Ghost as a draft. Later you set its status to published in the frontmatter, or in Ghost, and it stays in step either way. A week on, you spot a clumsy sentence in an old post — you open the .md file, fix it, save, and it’s live again without you ever opening the editor. Your whole archive sits in a folder you control, in a format that outlives any one app, which also means you can quietly back it up or keep it under version control if you ever want to.
There’s a fair question lurking here: if Ghost has a perfectly good web editor, why route around it at all? Ghost Markdown vs. the web editor makes the case honestly, including where the web editor is genuinely the better choice. And if your reason for wanting local files is that you’d like an assistant to help with the writing, editing Ghost with Claude shows how plain Markdown on disk turns your blog into something an AI tool can actually read and revise. For the specific Obsidian setup that most writers land on, the Ghost-and-Obsidian sync guide is the place to start.
The promise is narrow on purpose: keep writing where you already write, let your published posts live as real files, sync them both ways, and don’t break your Cards doing it. Specter doesn’t try to be your editor. It just makes sure the editor you already chose can reach your blog.