ghostlisted
Install: claude install-skill AceDataCloud/Skills
# 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