# Developer Beta: ghst cli

**URL:** <https://forum.ghost.org/t/developer-beta-ghst-cli/62228>\
**Category:** Integrations & API\
**Created:** [March 19, 2026, 1:30pm UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228 "2026-03-19T13:30:15Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![John](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/john/32/29288_2.png) [@John](https://forum.ghost.org/u/John)\
**Post date:** [March 19, 2026, 1:30pm UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/1 "2026-03-19T13:30:15Z")

</div>

Hi everyone,

Wanted to share a new `ghst` CLI tool we’ve been working on - as a developer beta - which allows you to interact with Ghost publications from the command line.

In short, this allows you (or an LLM like Claude, or Codex) to automate tasks within Ghost using a set of pre-built tools. Pretty much everything you can do in Ghost Admin, you can do using this CLI.

**For example:**

- Create/edit posts and publish them
- Import or export members
- Download/upload/activate themes
- Find out which post got the most traffic last month
- Post an update to the social web
- Check your latest newsletter open rate
- Create a new paid tier or special offer

## Here’s a quick demo of how it works:

[![](https://us1.discourse-cdn.com/flex015/uploads/ghost2/original/3X/3/8/389d9f28158cbf3a162e3665027240341b5b5602.jpeg "ghst cli beta") ](https://www.youtube.com/watch?v=7E5ZfV8-0YQ)

It’s pretty fun! While the demo shows off a lighthearted example of writing a post about cats, the point of the tool is not “AI can write content for you now” - but rather that you can automate site administration for whatever tasks matter to you.

Personally, I’ve found it really useful for making quick changes and updates to my site, or doing customer (member) support just by saying things like “go and give [Jamie Larson] a complimentary subscription” out loud.

But, this tool does come with a big disclaimer:

> **⚠ Important warning ⚠**
> 
> CLI tools are powerful, and `ghst` includes support for destructive actions, such as deleting posts and members. There are multiple safety features, confirmation steps, and built-in guardrails to avoid accidents, but allowing AI agents to interact with CLI tools always comes with some risk that they may do something you don’t want them to.
> 
> For this reason, this tool is currently only recommended for use by developers who are comfortable navigating terminal apps, and LLM / bash permissions.
> 
> As always: It’s good practice to make sure you have backups

With that said,

I’ve been using this in production for a few weeks now, and it’s been a great experience so far. I’d love to hear what you think, and any open source contributions are welcomed!

> **[GitHub - TryGhost/ghst: A modern Ghost CLI tool](https://github.com/TryGhost/ghst)**
>
> A modern Ghost CLI tool

---

<div class="post-metadata">

**Author:** ![ngeorger](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/ngeorger/32/24496_2.png) [@ngeorger](https://forum.ghost.org/u/ngeorger)\
**Post date:** [March 21, 2026, 9:15am UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/4 "2026-03-21T09:15:14Z")

</div>

Interesting! If I’m not wrong, it’s sort of a “packaged gctools”? Anyways, I’ll check it out.  
Thanks!

---

<div class="post-metadata">

**Author:** ![ChrisMessina](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/chrismessina/32/39959_2.png) [@ChrisMessina](https://forum.ghost.org/u/ChrisMessina)\
**Post date:** [March 22, 2026, 6:39am UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/5 "2026-03-22T06:39:41Z")

</div>

Well… _this_ is timely!

---

<div class="post-metadata">

**Author:** ![sunnythaper](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/sunnythaper/32/39741_2.png) [@sunnythaper](https://forum.ghost.org/u/sunnythaper)\
**Post date:** [March 23, 2026, 5:13am UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/6 "2026-03-23T05:13:08Z")

</div>

Funny, I was just stubbing out a workflow in n8n to use as an MCP server. This is a much better path!

---

<div class="post-metadata">

**Author:** ![AlanSoon](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/alansoon/32/38805_2.png) [@AlanSoon](https://forum.ghost.org/u/AlanSoon)\
**Post date:** [March 23, 2026, 8:07am UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/7 "2026-03-23T08:07:40Z")

</div>

I currently go from Notion → n8n → Ghost. Would love to see a better way of doing this.

(Notion is where I hold all of my context… not sure if that’s a future Ghost thing)

---

<div class="post-metadata">

**Author:** ![jeremielondon](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/jeremielondon/32/31714_2.png) [@jeremielondon](https://forum.ghost.org/u/jeremielondon)\
**Post date:** [March 23, 2026, 2:52pm UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/8 "2026-03-23T14:52:39Z")

</div>

hi @AlanSoon , I think that N8N is a bit old fashioned nowadays. Maybe have a look at claude code and see if how it can connect with notion and ghost so you will have your context and you can publish your articles, do curation, do almost everything honestly.

---

<div class="post-metadata">

**Author:** ![philsimon](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/philsimon/32/41241_2.png) [@philsimon](https://forum.ghost.org/u/philsimon)\
**Post date:** [March 23, 2026, 6:35pm UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/9 "2026-03-23T18:35:59Z")

</div>

Very cool. Claude Code has made me see the value of CLIs. Ghost is much easier to use than WordPress, but a CLI option certainly can’t hurt.

---

<div class="post-metadata">

**Author:** ![PlayfulProcess](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/playfulprocess/32/39983_2.png) [@PlayfulProcess](https://forum.ghost.org/u/PlayfulProcess)\
**Post date:** [March 23, 2026, 10:49pm UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/10 "2026-03-23T22:49:41Z")

</div>

Very cool. Even if CLI does not replace the whole of UI, I think tools like Claude in Crhome eventually willl…

---

<div class="post-metadata">

**Author:** ![satonotdead](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/satonotdead/32/33666_2.png) [@satonotdead](https://forum.ghost.org/u/satonotdead)\
**Post date:** [March 24, 2026, 3:31pm UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/11 "2026-03-24T15:31:09Z")

</div>

It’s really cool seeing Ghost getting closer to AI; thanks for bringing this out.

The lack of mass edit and/or selecting topics (by tags, dates, or whatever) will be complemented by tools like this.

I wonder if it could help to keep [translated post edits](https://github.com/cathysarisky/netlify-translate-template) automated.

---

<div class="post-metadata">

**Author:** ![ChrisMessina](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/chrismessina/32/39959_2.png) [@ChrisMessina](https://forum.ghost.org/u/ChrisMessina)\
**Post date:** [March 24, 2026, 5:32pm UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/12 "2026-03-24T17:32:25Z")

</div>

This was SO useful…! I was able to migrate over 1000 WordPress posts to my new Ghost website using this MCP. Incredible. Worked like a charm.

---

<div class="post-metadata">

**Author:** ![John](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/john/32/29288_2.png) [@John](https://forum.ghost.org/u/John)\
**Post date:** [March 25, 2026, 7:08am UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/13 "2026-03-25T07:08:02Z")

</div>

Woah that’s cool - did it convert formatting and everything, too?

---

<div class="post-metadata">

**Author:** ![mbritto](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/mbritto/32/38225_2.png) [@mbritto](https://forum.ghost.org/u/mbritto)\
**Post date:** [March 25, 2026, 2:54pm UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/14 "2026-03-25T14:54:49Z")

</div>

Insteresting ! I’ve been relying a lot on the api so far but my agent often had issues preparing the posts content.

I’ll try and tell it to use this tool instead to see if I get better results.

Thanks !

---

<div class="post-metadata">

**Author:** ![michgins](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/michgins/32/39029_2.png) [@michgins](https://forum.ghost.org/u/michgins)\
**Post date:** [March 25, 2026, 9:18pm UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/15 "2026-03-25T21:18:27Z")

</div>

Are you not concerned about the security implications of making it easier to use tools like Claude?

---

<div class="post-metadata">

**Author:** ![ChrisMessina](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/chrismessina/32/39959_2.png) [@ChrisMessina](https://forum.ghost.org/u/ChrisMessina)\
**Post date:** [March 25, 2026, 10:18pm UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/16 "2026-03-25T22:18:35Z")

</div>

There was a bit of back and forth. It took two attempts:

> Migration v2 is running in the background. This uses `ghst post create --from-json` which correctly converts HTML→Lexical. Each post gets:
> 
> - Full HTML content (WordPress body + styled comments section)
> 
> - Original slug preserved
> 
> - Original published\_at date
> 
> - All tags (WP categories + tags merged)
> 
> - Draft status (for your review before publishing)

I was working w/ Opus and it made these improvements:

1. **Technorati tags → Ghost tags** — Extracting tag names from Technorati blocks and adding them as proper Ghost tags, then removing the block

2. **Inline Technorati links** — Stripping the dead links, keeping just the text

3. **Image alignment** — Converting `alignleft`/`alignright`/`aligncenter` to Ghost-compatible figure styling

4. **YouTube shortcodes** — Converting `[youtube]` to proper iframe embeds

5. **Flash/SWF embeds** — Replacing with “Flash no longer supported” placeholder

6. **`<!--more-->` tags** — Removed

7. **WP block comments** — Removed

8. **Empty paragraphs / `&nbsp;`** — Removed

9. **Double `<br>` breaks** — Normalized

10. **WP smiley images** — Converted to emoji

11. **Comments** — Re-applied with HTML card markers (also fixes the 19 that failed in the first pass)

I also had it review the assets in each post, which sadly suffers from a lot of link rot:

 ![image](https://us1.discourse-cdn.com/flex015/uploads/ghost2/original/3X/7/1/71457f7b3eefcbf8fe9a3d2524739cddf385baf3.png)

It offered this report of what it accomplished:

1. **Lexical comment fix** — 707 posts updated with properly formatted HTML card comments

2. **Large post fix** — 29 large posts (that hit the 64KB JSON limit) re-created with comments

3. **Duplicate cleanup** — 40 duplicates removed

**Final state: 1,021 draft posts** in Ghost (1,001 from WordPress + ~20 pre-existing).

---

<div class="post-metadata">

**Author:** ![John](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/john/32/29288_2.png) [@John](https://forum.ghost.org/u/John)\
**Post date:** [March 27, 2026, 10:52am UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/17 "2026-03-27T10:52:46Z")

</div>

Oh wow 🤯 that’s incredible, I haven’t done anything that big yet! Gotta try

---

<div class="post-metadata">

**Author:** ![markstos](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/markstos/32/18182_2.png) [@markstos](https://forum.ghost.org/u/markstos)\
**Post date:** [March 27, 2026, 4:02pm UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/18 "2026-03-27T16:02:43Z")

</div>

I’ve previously used Claude via Warp to automate Ghost, it and worked well without a CLI. It seemed to already know the Ghost Admin API and could use `curl` to make the requests.

But using Ghost this way has exposed a couple of bugs in the Admin API which remain unpatched.

Attempting to send emails for posts via created via API can result in silent failure: I submitted a fix for that in July, 2025. [https://github.com/TryGhost/Ghost/pull/24517](https://github.com/TryGhost/Ghost/pull/24517)

If you don’t want to save a new revision of a post, that’s also broken. I submitted a patch for that three weeks ago. It’s still waiting for an initial response. [https://github.com/TryGhost/Ghost/issues/26677](https://github.com/TryGhost/Ghost/issues/26677) Both of these bugs stem from the same root assumption that since the Ghost Admin API works for the web interface it must work correctly in general. But the API allows some edge cases that are used by the web. If Ghost is going to provide truly first-class support for a CLI using the Admin API, these edge cases need to be addressed.

---

<div class="post-metadata">

**Author:** ![nickludlam](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/nickludlam/32/39348_2.png) [@nickludlam](https://forum.ghost.org/u/nickludlam)\
**Post date:** [March 27, 2026, 8:53pm UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/19 "2026-03-27T20:53:54Z")

</div>

I’ve put together a very basic SKILL.md file to enable it in OpenClaw. I can now articulate changes to my site over a chat interface, and it (mostly) happens for me!

> **[GitHub - nickludlam/openclaw-ghst: An OpenClaw skill definition to wrap Ghost's ghst...](https://github.com/nickludlam/openclaw-ghst)**
>
> An OpenClaw skill definition to wrap Ghost's ghst cli tool

I’m continuing to update this today, I’ve just added a section on how you can make minor changes by grabbing the lexical content and editing it directly, for tweaking small things like URLs and spelling.

---

<div class="post-metadata">

**Author:** ![curiositry](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/curiositry/32/1084_2.png) [@curiositry](https://forum.ghost.org/u/curiositry)\
**Post date:** [March 28, 2026, 5:58am UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/20 "2026-03-28T05:58:01Z")

</div>

This is great, John!

I practically live in terminal, and write most posts for my blog in Helix/Vim — and pull the ones I write in the editor as markdown via the Admin API — so I’m always glad to see first-class support for TUIs.

---

<div class="post-metadata">

**Author:** ![philsimon](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/philsimon/32/41241_2.png) [@philsimon](https://forum.ghost.org/u/philsimon)\
**Post date:** [March 28, 2026, 1:27pm UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/21 "2026-03-28T13:27:57Z")

</div>

Interesting. You blog in Notion, @AlanSoon ?

---

<div class="post-metadata">

**Author:** ![AlanSoon](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/alansoon/32/38805_2.png) [@AlanSoon](https://forum.ghost.org/u/AlanSoon)\
**Post date:** [March 28, 2026, 2:35pm UTC](https://forum.ghost.org/t/developer-beta-ghst-cli/62228/22 "2026-03-28T14:35:13Z")

</div>

yes – I draft in Notion, and when done, send it over to Ghost (via n8n) where I press publish.

[Next page](https://forum.ghost.org/t/developer-beta-ghst-cli/62228.md?page=2)
