# Ghost

> Push Mentionwell articles into a Ghost CMS site via the Admin API. Articles appear natively in Ghost admin and on your published Ghost site.

> **The fast path:** [Connect wizard](/docs/connect-wizard) → **WordPress / Ghost / Sanity / Webflow / custom CMS** → select **Ghost (Admin API)**. Save your Ghost `/ghost/api/admin/posts` URL as the publish endpoint.


Ghost is the cleanest CMS to integrate with. Their Admin API was built for exactly this case.

## What you need

- A Ghost site (Ghost(Pro) or self-hosted, version 4 or newer).
- Admin access.

## Setup (2 minutes)

1. Ghost Admin → **Settings → Integrations → Add custom integration**.
2. Name it "Mentionwell".
3. Copy seven values from the integration page:
   - **Admin API Key** (write access — keep secret)
   - **Content API Key** (read-only — used for previews)
   - **API URL** — e.g. `https://yoursite.ghost.io`
4. Paste them into Mentionwell's Ghost integration card.
5. Click **Test connection** — Mentionwell will create and immediately delete a draft post to verify the credentials work.

> Content API = read content. Admin API = create and update. Mentionwell needs the **Admin** key to publish.

## What gets pushed

| Mentionwell field | Ghost field |
|---|---|
| Title, slug | `title`, `slug` |
| HTML body | `html` (with `source: 'html'`, so Ghost converts to its Lexical format) |
| Excerpt | `custom_excerpt` (truncated to 300 chars) |
| Featured image | `feature_image` |
| Tags + category | `tags: [{ name }]` (auto-created if missing; matched case-insensitively if not) |
| Author | `authors: [{ email }]` (must be an existing Ghost user) |
| JSON-LD | `codeinjection_head` |
| Published date | `published_at` + `status: 'published'` |

## Caveats

- **Lexical vs HTML:** Ghost 5+ stores posts in Lexical internally. Mentionwell always sends `source: 'html'` so Ghost converts your HTML on insert. Without that flag, post bodies show up empty in the editor.
- **Newsletters:** Ghost can email a post to your subscribers when you publish. By default Mentionwell sets `email_only: false` and doesn't trigger a send. If you want sends, configure that in Ghost's Newsletter settings — Mentionwell won't override.
- **Authors:** Ghost requires the author to be an existing staff user with that email. If the email doesn't match, the post is attributed to the integration owner.
- **Image upload:** Ghost will fetch remote feature image URLs. For reliability we upload first via `/images/upload` and use the returned URL.

## Common failures

- **401** — JWT signed with the wrong secret, or the key was rotated. Generate a new integration key in Ghost.
- **422** — slug already exists, or a required field is missing. Mentionwell auto-suffixes the slug on retry.
- **413** — feature image >5MB. Self-hosted Ghost can raise the limit; Ghost(Pro) cannot.
- **404** — wrong API URL. Don't double-append `/ghost/api/admin/` — paste only the site origin.


---

Canonical URL: https://mentionwell.com/docs/publish/ghost
Live HTML version: https://mentionwell.com/docs/publish/ghost
Section: Publish to your CMS
Site index for AI ingestion: https://mentionwell.com/llms.txt
Full reference: https://mentionwell.com/llms-full.txt
