# 👻 Caspar — a friendly Ghost CLI

**URL:** <https://forum.ghost.org/t/caspar-a-friendly-ghost-cli/62090>\
**Category:** Share & showcase\
**Created:** [March 3, 2026, 5:13pm UTC](https://forum.ghost.org/t/caspar-a-friendly-ghost-cli/62090 "2026-03-03T17:13:04Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![jem-computer](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/jem-computer/32/39774_2.png) [@jem-computer](https://forum.ghost.org/u/jem-computer)\
**Post date:** [March 3, 2026, 5:13pm UTC](https://forum.ghost.org/t/caspar-a-friendly-ghost-cli/62090/1 "2026-03-03T17:13:04Z")

</div>

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](https://superposition.jem.computer) (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.

```bash
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](https://github.com/Manzanita-Research/caspar)

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