# Ghost

Open-source publishing platform with newsletters and memberships, driven through the official Admin API.

Ghost is a Node.js CMS for publications: posts, pages, paid memberships, tiers, and email newsletters. It runs self-hosted from a JSON config or on the Builder's Ghost(Pro) service. The Builder documents an Admin API and Content API with an official JavaScript client, which is how an agent creates, publishes, and emails content.

Alternative to: Substack, Medium, WordPress.com

- Capabilities: adaptable, operable
- Vertical: content-publishing
- Shape: business-app
- Form factor: web-app
- Execution model: deterministic
- Provenance: human-written (recorded, never ranked)
- Repo: https://github.com/TryGhost/Ghost (MIT), 55112 stars, last commit 2026-09-03
- Last activity: 2026-09-03
- Page: apps/tryghost--ghost.html
- JSON: apps/tryghost--ghost.json

## Use it when

- I publish a newsletter and blog and want members and payments without Substack's cut
- I want my agent to draft posts, schedule them, and email subscribers through a real API

## Gotchas

- Production requires MySQL 8; SQLite is dev-only
- Self-hosted newsletters need a Mailgun account for bulk sending; SMTP only covers transactional mail
- Admin API uses short-lived JWTs minted from an Admin API key; the official @tryghost/admin-api client handles this
- The repo's .env.example is empty of variables; configuration is the config.*.json family, not .env
- Third-party MCP wrappers exist (for example MFYDev/ghost-mcp) but are not needed for operability

## Editions

- Self-hosted: Free, open source
  - source: https://github.com/TryGhost/Ghost
  - installable: npm install ghost-cli -g && ghost install
- Ghost(Pro) Starter: $18 per month, closed source
  - hosted: https://ghost.org/pricing/
- Ghost(Pro) Publisher: $29 per month, closed source
- Ghost(Pro) Business: $199 per month, closed source

## Adaptable: make it yours

Effort: light-edit (13 things to edit), surface kind deployment-plus-code

config.production.json (or the same keys as double-underscore env vars) is deployment configuration: url, database, mail transport, storage. Branding, navigation, tiers, newsletters, portal and the Stripe connection are set in Ghost Admin (Design and branding, Membership, Newsletters). Anything beyond a theme's exposed custom settings is Handlebars code in content/themes/&lt;theme>/: default.hbs, index.hbs, post.hbs, partials/ and the theme package.json that declares custom settings and posts_per_page.

- Env vars: url, NODE_ENV, database__client, database__connection__host, database__connection__user, database__connection__database, mail__transport, mail__options__auth__user
- Config files: config.production.json, config.development.json, content/themes/&lt;theme>/package.json, content/themes/&lt;theme>/default.hbs, content/themes/&lt;theme>/partials/
- Prompt files: none
- Accounts you'll need: Mailgun (bulk newsletter delivery, self-hosted); Stripe (paid memberships)

## Operable: what an agent can drive

Operability: official. Interface: api at https://docs.ghost.org/admin-api/ (published by the builder, both).

### Reach (partial coverage)

- Write and publish posts and pages: reachable. Admin API resources: Posts, Pages
- Organize with tags: reachable. Admin API resource: Tags
- Manage members, labels, and offers: reachable. Admin API resources: Members, Labels, Offers
- Set up paid tiers: reachable. Admin API resource: Tiers
- Send a post as an email newsletter: reachable. Admin API resource: Newsletters; posts publish with newsletter and segment parameters
- Upload images: reachable. Admin API resource: Images
- Upload and activate themes: reachable. Admin API resource: Themes
- Register webhooks: reachable. Admin API resource: Webhooks
- Read post and email analytics: not reachable. not among Admin API resources; stats live in the admin UI
- Moderate member comments: not reachable. not among Admin API resources

## Code stack

- Languages: JavaScript, TypeScript
- Frameworks: Express, Ember (admin), Knex, Handlebars themes
- Package manager: yarn
- Database: MySQL 8, SQLite (dev)
- Hosting target: Ubuntu with ghost-cli, Docker, Ghost(Pro)

## Skills

contributor: Repo tooling for Ghost contributors: Admin API endpoints, database migrations, the Shade design system.
- Paths: .agents/skills/*/SKILL.md

## Evidence and confidence

- formFactor: README: headless Node.js CMS with admin UI, installed with ghost-cli (confidence 0.95)
- executionModel: no model at runtime; no model SDK in stack (confidence 0.95)
- operability: docs.ghost.org/admin-api: Admin API with official @tryghost/admin-api client, published by TryGhost (confidence 0.95)
- effort: docs.ghost.org config documents config.&lt;env>.json and env var mapping; theme directory documented; triage confirmed (confidence 0.7)
- editions: ghost.org/pricing: Starter $18, Publisher $29, Business $199 per month billed yearly; self-host from source with ghost-cli (confidence 0.7)
- active: pushedAt 2026-09-03; 145 open issues
- provenance: project since 2013 with foundation and paid staff; no vibe-coded claim (confidence 0.9)
- reach:  (confidence 0.85)

## Open questions

- Confirm current Ghost(Pro) monthly-billed prices; the fetched figures are the yearly-billed rates
- Verify the exact env var mapping on docs.ghost.org/config (not re-fetched during analysis)

## Sources

- https://github.com/TryGhost/Ghost (sourcing:content-publishing:github)
- https://docs.ghost.org/admin-api/ (analysis:content-publishing)
- https://ghost.org/pricing/ (analysis:content-publishing)
