Skip to content

Manzanita-Research/caspar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

caspar

The friendly Ghost CLI. Agents are the primary user β€” humans are welcome too.

Named after Caspar, the tiny town in Mendocino County, California β€” and yeah, the friendly ghost too.

Why

Ghost has no good agent-friendly interface. The existing MCP server dumps 34 tool definitions into your context window, requires Node.js, and is brittle to set up. Caspar takes a different approach: a clean Go CLI that Claude shells out to, with a skill file that costs ~400 tokens instead of ~4000.

Built on the linctl pattern.

Install

go install github.com/manzanita-research/caspar@latest

Setup

caspar auth login

Prompts for your Ghost site URL and admin API key, validates the connection, and saves config to ~/.caspar.json.

You can also set environment variables:

export CASPAR_URL=https://your-site.ghost.io
export CASPAR_ADMIN_API_KEY=your-id:your-secret

Usage

caspar
β”œβ”€β”€ auth login|status|logout
β”œβ”€β”€ site
β”œβ”€β”€ post list|get|create|update|delete
β”œβ”€β”€ page list|get|create|update|delete
β”œβ”€β”€ tag  list|get|create|update|delete
β”œβ”€β”€ member list|get|create|update
β”œβ”€β”€ newsletter list|get
└── image upload

For agents

Pass --json for structured output. Use --fields to request only what you need and keep token costs low.

caspar post list --json --fields id,title,slug,status --limit 10

Pipe content in with --stdin to avoid putting HTML in flag values:

echo "<p>Hello world</p>" | caspar post create --title "New Post" --stdin --json

For humans

Without --json, output is styled with Charm β€” tables, colors, the works.

caspar post list --limit 10
caspar post get my-post-slug
caspar tag list

Common flags

Flag Description
--json Structured JSON output
--fields Comma-separated field list
--limit Number of results
--filter Ghost NQL filter expression
--order Sort order
--formats Content formats on get (e.g. html)
--visibility Access control: public, members, paid, tiers
--custom-excerpt Custom excerpt for previews and cards
--stdin Read content from stdin

Aliases

list β†’ ls Β· get β†’ show Β· create β†’ new Β· update β†’ edit Β· delete β†’ rm

Agent integration

caspar skill install

Copies the built-in skill file to ~/.claude/skills/caspar/SKILL.md. Claude reads it once (~400 tokens), then knows how to use caspar for any Ghost content task.

Status

Under active development. We're building this because we needed it.

License

MIT

About

πŸ‘» the friendly Ghost CLI

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors