Ghost Integration
Connect Articfly to a Ghost blog and publish AI-generated articles directly via the Ghost Admin API. Works with Ghost(Pro) hosted plans and any self-hosted Ghost install reachable over public HTTPS, no plugin to install, no theme changes.
Prerequisites
- ›Ghost 5.x or later, earlier versions used a different Admin API authentication scheme. Check the version in Ghost Admin → Settings → About.
- ›Owner or Administrator role, only these roles can create Custom Integrations in Ghost. Editors and Authors cannot.
- ›A public HTTPS URL, Articfly publishes from servers, so your Ghost site must be reachable over the public internet on
https://. Ghost(Pro) sites already qualify; self-hosted installs need a valid TLS certificate (Caddy, Cloudflare, Let's Encrypt, etc.). - ›Active Articfly account, sign up at app.articfly.com if you have not already.
Connecting Your Ghost Blog
Setup takes about a minute. Three steps from generating an API key to your first published post.
Create a Custom Integration in Ghost
Open your Ghost Admin and go to Settings → Integrations. Scroll to the Custom integrations section and click Add custom integration. Name it Articfly (or anything you'll recognize), then save. Ghost generates two keys plus an API URL, you only need the Admin API Key and the API URL.
Paste the credentials in Articfly
In the Articfly dashboard, go to Integrations → Ghost. Paste the API URL into the site URL field (e.g. https://yourblog.ghost.io) and the Admin API Key, formatted as id:secret, into the password field. Click Connect Ghost.
Confirm and start publishing
Articfly validates the credentials by making a test call to your site. On success the page flips to a Connected state with your blog name and a link to the public site. You can now generate articles and pick Ghost from the destination dropdown on the article detail page.
What the Integration Does
Once connected, Articfly can:
Auto-Publish HTML Articles
Articfly sends posts to Ghost as HTML. Ghost converts them to its native Lexical format on the server side, so headings, paragraphs, lists, and images render correctly with no client-side conversion.
Schedule Posts
Pick a future timestamp in the Articfly dashboard and Ghost's native scheduler queues the post for publication. Works on both Ghost(Pro) and self-hosted instances.
External Image References
Article images stay on Articfly's CDN and are linked by URL inside the post. Ghost stores the URLs as-is, no separate upload step, no duplication of bandwidth.
Tags, Excerpts, Slugs
Article tags, custom excerpts, slugs, and feature images map directly onto Ghost's post schema. Empty or whitespace tags are silently dropped so a single sloppy entry never fails the publish.
Encrypted Key Storage
Your Admin API Key is encrypted at rest using AES-256-GCM before being stored in Articfly's database. Articfly signs a fresh short-lived JWT for every API call, your key never travels in a request body.
One-Click Disconnect
Open the Ghost integration page and click Disconnect to clear the stored credentials. To fully revoke access, also delete the Custom integration in Ghost Admin.
Security Notes
- ›The Admin API Key gives full administrative access to your Ghost site. Treat it like a password, do not commit it to git, post it in chat, or share screenshots showing the full secret.
- ›Articfly enforces SSRF protection on the site URL, private IP ranges, link-local addresses (including AWS metadata at
169.254.169.254), and reserved hostnames are rejected at connect time and on every subsequent API call. - ›All API calls use HTTPS with a 30-second timeout. Articfly never logs the JWT or the raw Admin API Key, only the response status and short error excerpts.
Troubleshooting
"Could not authenticate with Ghost"
Ghost rejected the JWT signed with your Admin API Key. Most common causes: you copied the Content API Key by mistake (look for the field labeled Admin API Key specifically), the integration was deleted from Ghost while it was still connected in Articfly, or you copied only part of the id:secret string. Re-copy the full key and try again.
"Could not reach the Ghost site"
Articfly's server could not resolve or connect to your site URL. Check that the URL has an https:// prefix, that the domain is spelled correctly, and that the site is online. For self-hosted Ghost instances, also confirm your firewall accepts HTTPS connections from external IPs and that your TLS certificate is valid (an expired or self-signed cert will block the connection).
"Site URL points to a private or reserved address"
For security, Articfly blocks URLs that resolve to private network ranges (e.g. 192.168.x.x, 10.x.x.x, localhost). Self-hosted Ghost must be exposed on a public domain, use a reverse proxy with a real DNS name and certificate. For local development, a tunneling service such as ngrok or Cloudflare Tunnel can give your local Ghost a temporary public HTTPS endpoint.
Posts publish but content looks different in Ghost
Ghost converts HTML to Lexical when receiving posts via the Admin API. Standard article HTML, headings, paragraphs, images, lists, blockquotes, converts cleanly. Complex embeds (custom shortcodes, exotic iframes) may simplify or drop during conversion. If you spot a specific element that does not render correctly, contact support so we can flag it on the Ghost side.