Skip to content
Agentmart
Submit a tool

ghost

Create drafts and publish or update posts on a self-hosted Ghost site through the official Admin API.

Skill by acedatacloud

IndexedApache-2.0★ 17
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/acedatacloud-ghost

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Create drafts and publish or update posts on a self-hosted Ghost site through the official Admin API. Use when the user mentions Ghost, a Ghost publication, newsletters, or publishing an article to their own Ghost site.

Use cases: backend, writing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/ghost

What's inside

Skill name
ghost
Description
Create drafts and publish or update posts on a self-hosted Ghost site through the official Admin API. Use when the user mentions Ghost, a Ghost publication, newsletters, or publishing an article to their own Ghost site.
License
Apache-2.0
Metadata
author: acedatacloud · version: 1.0
Instructions
66 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (3)

  • SKILL.md
  • ghost.py · scripts/
  • test_ghost.py · tests/

SKILL.md (first lines)

# Ghost Admin API

Use the bundled standard-library client. The connector injects:

- `$GHOST_SITE_URL` — site root, such as `https://blog.example.com`
- `$GHOST_ADMIN_API_KEY` — Ghost custom integration key (`id:hexsecret`)

The key grants administrative publishing access. Never print, log, or place it
in command arguments.

```bash
G="$SKILL_DIR/scripts/ghost.py"
[ -f "$G" ] || G=$(find /tmp -maxdepth 8 -path '*/skills/*/ghost/scripts/ghost.py' 2>/dev/null | head -1)
[ -f "$G" ] || { echo "ghost script not found" >&2; exit 1; }

python3 "$G" posts --limit 10
```

## Create a private draft

```bash
python3 "$G" create --title "Title" --html-file article.html --status draft --confirm
```

Ghost's Admin API accepts HTML through `?source=html`. Convert Markdown to HTML
first. `create` is a dry run unless the trailing argument is `--confirm`.

## Publish

```bash
python3 "$G" create --title "Title" --html-file article.html --status published
python3 "$G" create --title "Title" --html-file article.html --status published --confirm
```

The first command only prints the proposed operation. Before the confirmed call,
show the final title and body and obtain explicit approval. Use the returned
`.posts[0].url`; never construct or guess a URL.

## Update an existing post

Ghost requires the current `updated_at` value for conflict detection:

```bash
python3 "$G" update --id POST_ID --updated-at "2026-07-21T12:00:00.000Z" \
  --title "Revised title" --html-file revised.html
python3 "$G" update --id POST_ID --updated-at "2026-07-21T12:00:00.000Z" \
  --title "Revised title" --html-file revised.html --confirm
```

## Errors

| HTTP | Meaning | Action |
|---|---|---|
| 401 | Invalid/revoked Admin API key | Reconnect Ghost with a current custom-integration key |
| 403 | Integration lacks access | Check the integration and site permissions |
| 409 | Stale `updated_at` | Re-read the post, review changes, and retry with its latest timestamp |
| 422 | Invalid post payload | Surface Ghost's validation message and fix the content |

If a confirmed create/update ends with a network error, the result is unknown:
do not repeat the write. Run `posts`, compare title/status/updated time, and only
retry after proving Ghost did not accept the original request.

After a confirmed publish returns a real URL, record it once with
`publish_artifact(kind="article", channel="ghost", ...)`.

From AceDataCloud/Skills, Apache-2.0.

More from AceDataCloud/Skills

Signals

Stars
17
Forks
1
Open issues
0
Last commit (this folder)
Jul 21, 2026 (3 months ago)
Last release
Oct 23, 2026 (4 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Version
1.0
License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from acedatacloud

Cite this page

ghost skill. Agent Mart. https://agentmart.dev/skills/acedatacloud-ghost (last updated 2026-10-24)