publish where your site already lives
Connect Ghost to PilotDeck
Create a Ghost Custom Integration, connect its Admin API key in PilotDeck, choose a publish mode and verify the integration in about five minutes.
What connecting Ghost does#
PilotDeck researches, drafts and queues content for review. A CMS connection is the last hop: once you approve a draft, PilotDeck sends it to your CMS for you. Without a connection, every article and fix waits for you to paste it in yourself. The example below uses a PilotDeck site named pilotdeck-testwebsite and a Ghost site at https://your-site.example.com.
Two values, no mapping
You give PilotDeck your Ghost site address and the Admin API key of a Custom Integration. PilotDeck creates each article as a Ghost post with its tags, image, excerpt and SEO fields.
Drafts first
The default publish mode is Draft only. Posts arrive in Ghost as drafts, so nothing goes live until you publish it there.
Reversible
You can disconnect at any time from the same screen. Disconnecting stops publishing right away, and you reconnect by entering the two values again.
Before you start#
| You need | Details |
|---|---|
| A Ghost site | Ghost(Pro), self-hosted, or a local Ghost all work, as long as PilotDeck can reach it (see below). |
| A Ghost Admin login | An account that can open Ghost Admin at https://your-site.example.com/ghost and add a Custom Integration. |
| A PilotDeck login | Permission to change integrations for the site. Without it the Connect button is unavailable. |
| A public address | The Ghost URL is called by the PilotDeck servers, not by your browser. A site that only opens on your own computer or inside a private network cannot be reached, and the test fails. |
<your-admin-api-key>.Overview#
- 1Sign in to Ghost AdminYou
- 2Add a custom integration named PilotDeckYou
- 3Copy the Admin API key and the API URLYou
- 4Open Settings > Integrations in PilotDeck and pick GhostYou
- 5Paste both values and choose a publish modeYou
- 6Test the connection, then connect. PilotDeck signs each request with a short-lived tokenPilotDeck
- 7Send a test draft and check it in GhostVerify
Open https://your-site.example.com/ghost and sign in with an account that can manage integrations.
In Ghost Admin open Settings, then find Integrations under the Advanced group. Click Add custom integration and name it PilotDeck.
Ghost opens the integration page. It shows a Content API key and an Admin API key, plus the API URL.
Copy the Admin API Key. It is one value made of an id and a secret joined by a colon, and the secret part is a long hex string. Copy the whole value.
Copy the API URL from the same page. It is your site root, such as https://your-site.example.com. PilotDeck adds the /ghost/api/admin path itself, and it removes a trailing slash if you leave one.
In PilotDeck, make sure the correct site is selected in the top-left site switcher (here, pilotdeck-testwebsite). Go to Settings > Integrations and find the CMS Connection card. With nothing connected it reads "No CMS connected".
Click Ghost (Admin API key). A short "How to connect Ghost" panel appears next to the form, with these same steps.
- Paste the API URL into Ghost API URL.
- Paste the key into Admin API Key. The field shows dots, so you can't read it back.
- Category is optional. Ghost has no categories, only tags, so PilotDeck adds the category to the post as a tag.
- Pick a Publish mode. Start with Draft only (see Publish modes).
Click Test connection first. PilotDeck asks Ghost for one post, which only works with a valid Admin key, and nothing is saved. You should see "Looks good, credentials work."
Then click Connect. The card turns green with an ACTIVE badge.
On the connected card, click Send test draft. PilotDeck sends a sample article to Ghost as a draft, and the card shows "Test draft created." with a link to it. In Ghost Admin open Posts > Drafts and look for it.
Publish modes#
| Mode | What happens | When to use it |
|---|---|---|
| Draft only (default) | Posts are created in Ghost with the status draft. You publish them in Ghost when ready. | Recommended while you learn the flow, or when someone reviews on the Ghost side. |
| Publish live | Posts are created with the status published, so they appear on the live site. | Once you trust the output and your review step happens in PilotDeck. |
You can switch modes on the connected card. PilotDeck asks you to confirm each time. After you switch to Publish live, PilotDeck cannot turn a live post back into a draft. Edit or remove it in Ghost instead.
What PilotDeck creates in Ghost#
Each approved article becomes one new Ghost post. PilotDeck sends the article as HTML and Ghost converts it, so the body keeps its headings, links and images.
| Ghost field | What PilotDeck sets |
|---|---|
| Status | draft in Draft only mode, published in Publish live mode. |
| Title and slug | The article title and its URL slug. |
| Tags | The article tags, plus any categories, merged and deduplicated, because Ghost has tags only. |
| Feature image | The article hero image, passed as an image address. PilotDeck does not upload a copy. |
| Excerpt and meta | The meta description becomes the excerpt and the meta description. The SEO title, social card title, description and image are set too. |
| Canonical URL | Only set when the article points to a different canonical page. Otherwise the Ghost post is its own canonical. |
| Author | PilotDeck looks for a Ghost staff user whose slug or name matches the article author and attaches it. If none matches, the post keeps Ghost's default author and a visible author box in the body carries the details. |
| FAQ | The FAQ is added to the body, and FAQ structured data is added through the post's code injection in the head. |
PilotDeck always creates a new post. It does not update a post it sent earlier.
Disconnecting#
On the connected card click Disconnect and confirm. Approved content stops publishing to Ghost right away. This cannot be undone, but you can reconnect by repeating steps 4 to 6. To fully remove access, also delete the PilotDeck custom integration in Ghost Admin, which invalidates its key.
Troubleshooting#
"Test connection" says Ghost rejected the Admin API Key
Check you copied the Admin key, not the Content key, and that you pasted all of it with no spaces. A key without the colon fails before any request is sent, with the message that it must be in the form id, colon, secret. If you deleted or regenerated the integration in Ghost, copy the new key.
"Couldn't reach that address"
PilotDeck could not connect to the Ghost API URL. Check the address, include https:// and the full domain, and make sure the site is online and reachable from the internet. PilotDeck waits 20 seconds for each request.
"Nothing responded at that address"
The address answered but not as a Ghost site. Use the site root, for example https://your-site.example.com, and not a page inside the site.
Ghost refused the key
Ghost answered with a permission error. The key may be wrong, or the integration may no longer exist. Create a new custom integration and copy its Admin key.
Ghost is rate limiting us, or returns a server error
Wait a moment and try again. A server error means Ghost may be down.
The post has no author I expected
PilotDeck can only attach an existing Ghost staff user with a matching slug or name. If a lookup fails, the post is still published without a native author and the author box in the body carries the details.
A post I sent live needs to go back to draft
PilotDeck cannot change it once it is live. Unpublish or delete it in Ghost Admin.