👻 Caspar — a friendly Ghost CLI

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 :winking_face_with_tongue:.

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.)

1 Like