ecto

CLI Utilities
v0.1.0
Benign

Ghost.io blog management via Admin API.

11.6K downloads1.6K installsby @visionik

Setup & Installation

Install command

clawhub install visionik/ecto

If the CLI is not installed:

Install command

npx clawhub@latest install visionik/ecto

Or install with OpenClaw CLI:

Install command

openclaw skills install visionik/ecto

or paste the repo link into your assistant's chat

Install command

https://github.com/openclaw/skills/tree/main/skills/visionik/ecto

What This Skill Does

CLI for Ghost.io's Admin API. Manages posts, pages, tags, images, and webhooks across one or more Ghost sites. Outputs JSON for scripting and supports markdown files and stdin as content sources.

Lets you manage Ghost content entirely from the terminal or CI/CD pipelines, without opening the Ghost admin UI.

When to Use It

  • Publishing a markdown file directly as a Ghost blog post
  • Scheduling a draft post to go live at a specific date and time
  • Batch-publishing all draft posts in a single shell command
  • Creating and organizing tags across a Ghost blog
  • Registering webhooks to trigger external services on post events
View original SKILL.md file
# ecto - Ghost.io Admin API CLI

Manage Ghost.io blogs via the Admin API. Supports multi-site configuration, markdown-to-HTML conversion, and JSON output for scripting.

## Quick Reference

### Authentication
```bash
ecto auth add <name> --url <ghost-url> --key <admin-api-key>
ecto auth list
ecto auth default <name>
ecto auth remove <name>
```

Environment overrides: `GHOST_URL`, `GHOST_ADMIN_KEY`, `GHOST_SITE`

### Posts
```bash
ecto posts [--status draft|published|scheduled|all] [--limit N] [--json]
ecto post <id|slug> [--json] [--body]
ecto post create --title "Title" [--markdown-file file.md] [--stdin-format markdown] [--tag tag1,tag2] [--status draft|published]
ecto post edit <id|slug> [--title "New Title"] [--markdown-file file.md] [--status draft|published]
ecto post delete <id|slug> [--force]
ecto post publish <id|slug>
ecto post unpublish <id|slug>
ecto post schedule <id|slug> --at "2025-01-25T10:00:00Z"
```

### Pages
```bash
ecto pages [--status draft|published|all] [--limit N] [--json]
ecto page <id|slug> [--json] [--body]
ecto page create --title "Title" [--markdown-file file.md] [--status draft|published]
ecto page edit <id|slug> [--title "New Title"] [--markdown-file file.md]
ecto page delete <id|slug> [--force]
ecto page publish <id|slug>
```

### Tags
```bash
ecto tags [--json]
ecto tag <id|slug> [--json]
ecto tag create --name "Tag Name" [--description "desc"]
ecto tag edit <id|slug> [--name "New Name"] [--description "desc"]
ecto tag delete <id|slug> [--force]
```

### Images
```bash
ecto image upload <path> [--json]
```

### Site Info
```bash
ecto site [--json]
ecto settings [--json]
ecto users [--json]
ecto user <id|slug> [--json]
ecto newsletters [--json]
ecto newsletter <id> [--json]
```

### Webhooks
```bash
ecto webhook create --event <event> --target-url <url> [--name "Hook Name"]
ecto webhook delete <id> [--force]
```

Events: `post.published`, `post.unpublished`, `post.added`, `post.deleted`, `page.published`, etc.

## Multi-Site
Use `--site <name>` to target a specific configured site:
```bash
ecto posts --site blog2
```

## Common Workflows

Create and publish from markdown:
```bash
ecto post create --title "My Post" --markdown-file post.md --tag blog --status published
```

Pipe content from stdin:
```bash
echo "# Hello World" | ecto post create --title "Quick Post" --stdin-format markdown
```

Schedule a post:
```bash
ecto post schedule future-post --at "2025-02-01T09:00:00Z"
```

Batch publish drafts:
```bash
for id in $(ecto posts --status draft --json | jq -r '.posts[].id'); do
  ecto post publish "$id"
done
```

## Limitations
- Ghost API does not support listing images or webhooks
- Member/subscription management not available via Admin API
- Read-only access to users

## Full Docs
Run `ecto --ai-help` for comprehensive documentation.

Example Workflow

Here's how your AI assistant might use this skill in practice.

INPUT

User asks: Publishing a markdown file directly as a Ghost blog post

AGENT
  1. 1Publishing a markdown file directly as a Ghost blog post
  2. 2Scheduling a draft post to go live at a specific date and time
  3. 3Batch-publishing all draft posts in a single shell command
  4. 4Creating and organizing tags across a Ghost blog
  5. 5Registering webhooks to trigger external services on post events
OUTPUT
Ghost.io blog management via Admin API.

Share this skill

Security Audits

VirusTotalBenign
OpenClawBenign
View full report

These signals reflect official OpenClaw status values. A Suspicious status means the skill should be used with extra caution.

Details

LanguageMarkdown
Last updatedFeb 27, 2026