Migrate from the Obsidian Ghost plugin to Specter
If you publish from Obsidian using the Ghost Publish (or “Send to Ghost”) plugin, you already have a working pipeline. This guide is for the moment that pipeline starts to pinch — when you want to edit posts you’ve already published, sync changes both directions, or stop being tied to Obsidian. That’s where an Obsidian Ghost Publish alternative like Specter comes in, and the good news is the move is almost frictionless because both tools speak the same plain markdown.
What the plugin does well
Credit where it’s due: the Obsidian plugins are free, cross-platform, and dead simple. You write a note in your vault, hit publish, and it lands in Ghost. If you only ever draft new posts inside Obsidian and never touch them again outside the Ghost editor, the plugin is genuinely a good fit. There’s no reason to change for change’s sake.
When it’s time to switch
The plugins are one-way — they push a note from Obsidian to Ghost and stop there. Consider an Obsidian Ghost plugin migration when:
- You want two-way sync. Edits in Ghost should flow back to your files, not just the other direction.
- You need to edit already-published posts. The plugin can’t pull your existing Ghost archive down to disk. Specter does, as markdown with YAML frontmatter.
- You want conflict safety. If you edit a post in both the Ghost editor and your files, Specter prompts you instead of silently overwriting, and shows a dry-run preview before anything syncs.
- You don’t want to be locked to Obsidian. Specter works with any folder of markdown — an Obsidian vault, a plain directory, whatever your other tools (Claude, ChatGPT, Gemini, scripts) expect.
Worth being upfront about the trade-off: the plugin is free and runs anywhere Obsidian does. Specter is a native macOS menu-bar app (macOS 14+, Apple Silicon), $49 one-time, with a free tier of 5 syncs per month. If your workflow lives outside macOS, the plugin may still be your best option.
Step-by-step migration
You don’t have to dismantle anything. The plugin and Specter both read and write the same plain markdown, so files round-trip cleanly. Here’s the path.
- Install Specter. Download and install the menu-bar app, then open it. See install on macOS if you want the detailed walkthrough.
- Connect Specter to Ghost. Follow connect Specter to your Ghost blog: paste your site URL and your Ghost Admin API key, then test the connection. This is the same kind of credential the Obsidian plugin uses, so nothing new to learn.
- Run a first pull. On the first sync, Specter pulls your existing Ghost posts down to disk as markdown plus frontmatter — including everything you published through the plugin. This is the piece the plugin never gave you: your live archive, now as editable local files.
- Point Specter at your vault (optional). Want to keep working in Obsidian? Just choose your existing vault folder — or a subfolder of it — as Specter’s sync folder. See sync Ghost with Obsidian for how the two coexist. Prefer a clean plain-markdown folder instead? That works too.
- Edit and sync both ways. From here, change a post in Ghost or in your files, and Specter reconciles the two. Run a dry-run preview first if you want to see exactly what will change before committing.
Nothing gets lost
This is the part people worry about, so let’s be clear: there’s no format conversion and no export-import dance. The plugin writes plain markdown with YAML frontmatter; Ghost stores the same; Specter reads and writes the same. Your titles, slugs, tags, and content are the same fields they always were. If you ever want to go back, the files are still just markdown — no proprietary lock-in on either side.
The practical difference is what you can do once your posts are local: run AI across your entire blog, batch-edit metadata, enforce a style guide, then preview and sync it all back. The plugin gave you a publish button. Specter gives you the whole library, in files, both directions.
If you want the detailed feature-by-feature breakdown before you commit, read the full Specter vs Obsidian Ghost Publish comparison.