CiteFlow publishes to Ghost through the Admin API using a content key, drafts, scheduled posts and metadata stay in sync.
Ghost publishing
The Ghost adapter creates draft posts in your Ghost site through the Admin API. It works with Ghost 5.x (self-hosted and Ghost Pro).
How does Ghost publishing work?
CiteFlow builds a short-lived HS256 JWT from your Admin API key on each
request and calls POST /ghost/api/admin/posts/?source=html. Posts are
created with status: "draft" and land in your Posts list for review.
What do you need before setting it up?
- Ghost 5.0 or newer.
- Owner or Administrator access to your Ghost admin.
- The Ghost Admin API reachable from the public internet (usually
https://your-site.com/ghost/api/admin/).
How do you set up Ghost publishing?
1. Create a custom integration
- In Ghost admin go to Settings → Integrations.
- Click Add custom integration.
- Name it (for example
CiteFlow) and click Create. - On the integration's page you will see Admin API Key. It looks
like
64hexchars:128hexcharsseparated by a colon. - Copy the entire string. CiteFlow needs both halves.
The Admin API key has two parts: an ID (before the colon) and a secret (after). CiteFlow uses both to sign each request's JWT. Keep the full string secret; treat it like a password.
2. Add the endpoint in CiteFlow
- Dashboard → Settings → Publishing destinations → Add endpoint.
- Pick Ghost.
- Fill in:
- Admin URL: the root of your site, for example
https://example.com(no trailing slash, no/ghost). - Admin API key: the full
id:secretvalue from step 1.
- Admin URL: the root of your site, for example
- Save.
3. Test the connection
Click Test connection. CiteFlow signs a JWT, calls
GET /ghost/api/admin/site/, and reports success on a 2xx response.
Failure surfaces the Ghost error message verbatim.
How do fields map to Ghost?
| CiteFlow field | Ghost field |
|---|---|
title | posts[0].title |
body_html | sent via ?source=html |
excerpt | custom_excerpt |
meta_description | meta_description |
slug | slug |
hero_image_url | feature_image |
hero_image_alt | feature_image_alt |
| Always | status: "draft" |
CiteFlow does not set tags, authors, or feature image caption. Apply those in the Ghost editor before publishing.
What are the tier limitations?
Endpoints (any mix of webhook and platform adapters) count against the overall publishing endpoint cap:
| Tier | Publishing endpoints |
|---|---|
| Trial | 1 endpoint |
| Standard | 3 endpoints |
| Enhanced | 10 endpoints |
| Marketplace | Unlimited (soft cap 50) |
How do you troubleshoot Ghost publishing?
401 Unauthorized on connection test. The Admin API key is wrong or
malformed. Check:
- You copied the full
id:secretstring with the colon. - You did not accidentally paste the Content API Key (which is shown on the same integration page but cannot create posts).
- The Admin URL has no path suffix; CiteFlow appends
/ghost/api/admin/itself.
403 Forbidden when publishing. The integration was created with
insufficient permissions, or the site is in maintenance mode. Recreate
the integration from Settings → Integrations → Add custom integration.
422 Validation error. Ghost is rejecting a field. The most common
cause is a slug that collides with an existing post; CiteFlow auto-
appends a suffix on retry, but if this persists, free the slug or
change the article title.
Self-hosted Ghost behind a proxy. Make sure X-Forwarded-Proto is
set correctly so Ghost generates the right Admin URL in its JWT
validation. Ghost rejects tokens whose audience does not match.
Need help?
Copy the Ghost error shown in your CiteFlow dashboard and contact support if the test passes but real publishes fail.
References
- Ghost Admin API reference, Ghost
- Schema.org Article specification, Schema.org
- Google Search Central: structured data guidelines, Google
Related
- OverviewPick the adapter that matches your stack. All adapters create drafts so your team reviews before publishing.