{
  "version": "2",
  "generatedAt": "2026-11-03T22:49:39.280Z",
  "listing": {
    "slug": "tryghost--ghost",
    "name": "Ghost",
    "tagline": "Open-source publishing platform with newsletters and memberships, driven through the official Admin API.",
    "shortTagline": "Open-source publishing platform",
    "description": "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.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "content-publishing",
    "alternativeTo": [
      "Substack",
      "Medium",
      "WordPress.com"
    ],
    "shape": "business-app",
    "formFactor": "web-app",
    "executionModel": "deterministic",
    "provenance": "human-written",
    "codeStack": {
      "languages": [
        "JavaScript",
        "TypeScript"
      ],
      "frameworks": [
        "Express",
        "Ember (admin)",
        "Knex",
        "Handlebars themes"
      ],
      "packageManager": "yarn",
      "database": [
        "MySQL 8",
        "SQLite (dev)"
      ],
      "hostingTarget": [
        "Ubuntu with ghost-cli",
        "Docker",
        "Ghost(Pro)"
      ]
    },
    "modelStack": null,
    "repos": [
      {
        "url": "https://github.com/TryGhost/Ghost",
        "owner": "TryGhost",
        "name": "Ghost",
        "license": "MIT",
        "stars": 55112,
        "lastCommit": "2026-09-03"
      }
    ],
    "interface": {
      "kind": "api",
      "url": "https://docs.ghost.org/admin-api/",
      "official": true,
      "hosted": "both"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Write and publish posts and pages",
        "reachable": true,
        "evidence": "Admin API resources: Posts, Pages"
      },
      {
        "job": "Organize with tags",
        "reachable": true,
        "evidence": "Admin API resource: Tags"
      },
      {
        "job": "Manage members, labels, and offers",
        "reachable": true,
        "evidence": "Admin API resources: Members, Labels, Offers"
      },
      {
        "job": "Set up paid tiers",
        "reachable": true,
        "evidence": "Admin API resource: Tiers"
      },
      {
        "job": "Send a post as an email newsletter",
        "reachable": true,
        "evidence": "Admin API resource: Newsletters; posts publish with newsletter and segment parameters"
      },
      {
        "job": "Upload images",
        "reachable": true,
        "evidence": "Admin API resource: Images"
      },
      {
        "job": "Upload and activate themes",
        "reachable": true,
        "evidence": "Admin API resource: Themes"
      },
      {
        "job": "Register webhooks",
        "reachable": true,
        "evidence": "Admin API resource: Webhooks"
      },
      {
        "job": "Read post and email analytics",
        "reachable": false,
        "evidence": "not among Admin API resources; stats live in the admin UI"
      },
      {
        "job": "Moderate member comments",
        "reachable": false,
        "evidence": "not among Admin API resources"
      }
    ],
    "editions": [
      {
        "name": "Self-hosted",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/TryGhost/Ghost"
          },
          {
            "kind": "installable",
            "url": "https://docs.ghost.org/install/ubuntu/",
            "command": "npm install ghost-cli -g && ghost install"
          }
        ]
      },
      {
        "name": "Ghost(Pro) Starter",
        "price": {
          "amount": 18,
          "currency": "USD",
          "period": "month"
        },
        "open": false,
        "distributions": [
          {
            "kind": "hosted",
            "url": "https://ghost.org/pricing/"
          }
        ]
      },
      {
        "name": "Ghost(Pro) Publisher",
        "price": {
          "amount": 29,
          "currency": "USD",
          "period": "month"
        },
        "open": false,
        "distributions": []
      },
      {
        "name": "Ghost(Pro) Business",
        "price": {
          "amount": 199,
          "currency": "USD",
          "period": "month"
        },
        "open": false,
        "distributions": []
      }
    ],
    "skills": {
      "kind": "contributor",
      "paths": [
        ".agents/skills/*/SKILL.md"
      ],
      "install": null,
      "note": "Repo tooling for Ghost contributors: Admin API endpoints, database migrations, the Shade design system."
    },
    "customization": {
      "summary": "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/<theme>/: default.hbs, index.hbs, post.hbs, partials/ and the theme package.json that declares custom settings and posts_per_page.",
      "envVars": [
        "url",
        "NODE_ENV",
        "database__client",
        "database__connection__host",
        "database__connection__user",
        "database__connection__database",
        "mail__transport",
        "mail__options__auth__user"
      ],
      "configFiles": [
        "config.production.json",
        "config.development.json",
        "content/themes/<theme>/package.json",
        "content/themes/<theme>/default.hbs",
        "content/themes/<theme>/partials/"
      ],
      "promptFiles": [],
      "effort": "light-edit",
      "surfaceKind": "deployment-plus-code",
      "editCount": 13
    },
    "useWhen": [
      "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"
    ],
    "accounts": [
      "Mailgun (bulk newsletter delivery, self-hosted)",
      "Stripe (paid memberships)"
    ],
    "active": true,
    "lastActivity": "2026-09-03",
    "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"
    ],
    "fit": {
      "adaptable": 3,
      "operable": 3
    },
    "evidence": {
      "formFactor": "README: headless Node.js CMS with admin UI, installed with ghost-cli",
      "executionModel": "no model at runtime; no model SDK in stack",
      "operability": "docs.ghost.org/admin-api: Admin API with official @tryghost/admin-api client, published by TryGhost",
      "effort": "docs.ghost.org config documents config.<env>.json and env var mapping; theme directory documented; triage confirmed",
      "editions": "ghost.org/pricing: Starter $18, Publisher $29, Business $199 per month billed yearly; self-host from source with ghost-cli",
      "active": "pushedAt 2026-09-03; 145 open issues",
      "provenance": "project since 2013 with foundation and paid staff; no vibe-coded claim"
    },
    "confidence": {
      "formFactor": 0.95,
      "executionModel": 0.95,
      "operability": 0.95,
      "effort": 0.7,
      "reach": 0.85,
      "editions": 0.7,
      "provenance": 0.9
    },
    "openQuestions": [
      "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": [
      {
        "url": "https://github.com/TryGhost/Ghost",
        "foundBy": "sourcing:content-publishing:github"
      },
      {
        "url": "https://docs.ghost.org/admin-api/",
        "foundBy": "analysis:content-publishing"
      },
      {
        "url": "https://ghost.org/pricing/",
        "foundBy": "analysis:content-publishing"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "dispute",
      "reason": "ghost.org/docs/config lists only url, database, mail, storage, server and privacy keys. Admin Design settings cover brand colors, logo and per-theme custom settings; the repo ships casper and source themes as Handlebars templates, and adapting layout beyond those settings means editing them.",
      "disputed": [
        {
          "field": "customization.effort",
          "reason": "Config keys are deployment; look and feel beyond admin design settings is Handlebars theme code in content/themes."
        }
      ]
    },
    "url": "apps/tryghost--ghost.html",
    "coverage": "partial",
    "paid": true,
    "source": "research/verified/tryghost--ghost.json"
  }
}
