How it works
The short version is three steps. The full version is three steps plus a handful of things that happen in the background — file watching, conflict detection, sync queues, rate-limit handling — which is why Specter is a real app and not a CLI wrapper.
This page walks through both versions, in order. By the end you should know exactly what Specter does on your Mac, what it sends over the network, and what you can do with the local folder once it’s populated.
Step 1 — Connect your CMS
Open Specter. Click Add a site. Pick the platform.
Shopify. A browser tab opens to your Shopify admin. Shopify shows you exactly what Specter is asking for — read and write access to articles and blogs, nothing else. You approve, and Shopify hands the OAuth token back to Specter through a system-level deep link. The token lands in the macOS Keychain. The browser tab closes. No tokens travel through URL fragments or third-party servers.
WordPress. You paste your site URL and a WordPress username, then paste an Application Password generated from Users → Profile → Application Passwords in your WP admin. Specter calls the REST API once to verify the credential, then stores it in the Keychain. Application Passwords are scoped per-app and can be revoked from your WP admin at any time.
Ghost. You paste your Ghost Admin API key (find it in Ghost admin under Settings → Integrations → Custom Integration). Specter verifies it against your Ghost admin endpoint, then stores it in the Keychain.
For all three, Specter tests the connection before continuing. If the credential is wrong, the wrong scope, or the API is unreachable, you get a real error message with what to do next — not a silent failure two minutes into a sync.
You can connect more than one site of more than one kind. A typical setup might be: a Shopify storefront, a WordPress flagship, and a Ghost newsletter, all syncing to the same Mac. Each site has its own sync folder, or you can point several at the same folder if you want a single source of truth across platforms.
Step 2 — Pick your folder
One folder picker. The folder you choose is where your posts will live on disk.
Pick wisely — though you can change it later. Common choices:
- A dedicated folder (e.g.
~/Documents/Specter/your-site/). Cleanest. Easiest to back up. - A folder inside your Obsidian vault. Lets you treat your blog like a corner of your knowledge graph. Most popular setup among existing users.
- A git repository. Version control on your content for free. Bonus: a real audit log of every change, and the ability to roll back the bad parts of an AI run.
- A cloud-synced folder (iCloud Drive, Dropbox). Works, but Specter is local-first; cloud sync adds latency and the occasional file-lock conflict. Use only if you genuinely need multi-device access.
Specter does a full initial pull: every post from your CMS becomes a .md file in your folder, with YAML frontmatter at the top and the body as plain markdown. Filenames default to the post slug. Frontmatter includes the platform-specific fields normalized to a consistent shape — title, status, dates, tags, slug, excerpt, feature image, custom metadata.
The initial pull is the slowest sync you’ll do. A 500-post Ghost blog might take 90 seconds. A 5,000-post WordPress site might take ten minutes. After that, Specter syncs incrementally: only changed posts move.
Step 3 — Write, or let AI write
Now your blog is files on disk. Open them however you want.
Hand-edit. Open a .md file in Obsidian, VS Code, Sublime, BBEdit, iA Writer, Nova, Zed — anything that reads markdown. Edit. Save. Specter pushes the change to your CMS within seconds (if you’re in continuous sync mode) or on the next scheduled tick.
AI-edit. Drop the folder into Claude Code or Cursor and tell the agent what to do. Examples that work today:
- “Rewrite every post tagged ‘old-launch-2023’ to reference our new product name.”
- “Find every post longer than 1,500 words with no internal links and add three contextually accurate links to other posts in this folder.”
- “Generate an SEO title and meta description for every post that has an empty one.”
- “Read the last 50 posts to learn my voice, then draft 20 new posts on these topics.”
- “Translate every post into French and save as
{slug}-fr.md.”
The AI works against the file system. It sees the whole site as context. It can write back to disk. Then Specter handles the bulk push to the CMS.
Scripted-edit. A python or bash script over the folder is sometimes the right answer. A find-and-replace across 3,000 posts, a tag rename, a frontmatter migration — these are five-line scripts, not an AI workflow.
What runs in the background
Specter is a real macOS app, not a CLI. While it’s open, a few things happen continuously:
File watching. A chokidar-based watcher notices when any .md file in your sync folder is created, modified, or deleted. Changes are queued for the next sync tick.
Sync queue. Outbound changes (local → CMS) are queued and rate-limited per platform. Shopify’s rate limit is per-store; WordPress’s varies by host; Ghost’s is generous. Specter knows each and backs off appropriately on 429s.
Pull cycle. On a configurable interval (default: every 60 seconds), Specter asks each connected CMS for changes since the last sync. New, edited, and deleted posts get pulled to disk.
Conflict detection. If a post changed on both ends since the last sync, Specter pauses that file and surfaces a conflict prompt with both versions and a diff. Your conflict policy (ask / prefer local / prefer remote / duplicate) determines what happens next.
Dry-run preview. At any time you can click Preview Sync to see exactly what would happen on the next push without anything actually happening. Diffs, additions, deletions, conflicts — all listed before you commit.
Sync log. Every sync action is recorded locally — what changed, when, from where, to where. You can review the log, filter it by site, and replay a sync if something looks off.
What leaves your Mac
Two things go over the network:
-
CMS traffic. Direct HTTPS calls from your Mac to your CMS’s admin endpoint. Shopify Admin API, WordPress REST API, Ghost Admin API. We don’t proxy this through our infrastructure.
-
License check. Once on first activation and occasionally to verify your Pro license. Sends a license key and a hashed machine identifier. No content, no site URLs, no telemetry on what you’re syncing.
That’s it. Your post bodies, drafts, frontmatter, and folder structure never touch our servers.
The picture, end to end
- You connect Shopify, WordPress, or Ghost (or all three).
- Specter pulls your posts into a markdown folder of your choosing.
- You edit those files — yourself, with AI, or with a script.
- Specter syncs the changes back to each platform, safely, with previews and conflict handling.
The workflow is the same whether you’re rewriting one post or 5,000.
Ready to try it? Buy Specter Pro, or use the free open-source project on GitHub. Pro is $99/year and unlocks the signed, supported app across every platform you connect.