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)
- Ghost Admin → Settings → Integrations → Add custom integration.
- Name it "Mentionwell".
- Copy three 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
- Paste them into Mentionwell's Ghost integration card.
- 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: falseand 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/uploadand 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.