Hey! I’ve been building a CLI for the Ghost Admin API called Caspar. It’s a Go binary — lightweight, composable, no runtime dependencies.
Lately I’ve been preferring simple CLI tools over MCP servers for agent workflows — less context bloat, less brittle coupling. Caspar follows this pattern: a clean command tree that agents can shell out to, with a built-in skill file (~400 tokens) that teaches them how to use it. But it’s not agent-only — without the --json flag you get Charm-styled tables and colors, and there’s a WIP TUI coming along for biological intelligence too
.
It’s still a work in progress and we’re adding API coverage as we go, but it’s already been useful for things like:
- Migrating an old blog into Ghost (create posts, upload images, set metadata - I wanted it to be done programmatically as part of a refactor of another site)
- Bulk-updating excerpts across a bunch of posts
- Pulling down post content for agents to work with
The vibe is AI-native but not AI-coupled — these are workflows where an agent makes things faster for me, but the CLI is perfectly useful on its own.
caspar post list --json --fields id,title,slug,status --limit 10
echo "<p>Hello world</p>" | caspar post create --title "New Post" --stdin --json
Covers posts, pages, tags, members, newsletters, and image uploads so far. Auth is a one-liner (caspar auth login).
Repo: GitHub - Manzanita-Research/caspar: 👻 the friendly Ghost CLI · GitHub
Would love to hear how other folks are managing Ghost content programmatically — especially if you’re doing anything with agents. Feedback & contributions super welcome!
(Named after the tiny town in Mendocino County, California. And yeah, the friendly ghost too.)