ecto

star 7

Ghost.io Admin API CLI for managing blog posts, pages, tags, and content.

modbender By modbender schedule Updated 3/6/2026

name: ecto

description: Ghost.io Admin API CLI for managing blog posts, pages, tags, and content.


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


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


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


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


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


ecto image upload <path> [--json]

Site Info


ecto site [--json]

ecto settings [--json]

ecto users [--json]

ecto user <id|slug> [--json]

ecto newsletters [--json]

ecto newsletter <id> [--json]

Webhooks


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:


ecto posts --site blog2

Common Workflows

Create and publish from markdown:


ecto post create --title "My Post" --markdown-file post.md --tag blog --status published

Pipe content from stdin:


echo "# Hello World" | ecto post create --title "Quick Post" --stdin-format markdown

Schedule a post:


ecto post schedule future-post --at "2025-02-01T09:00:00Z"

Batch publish drafts:


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.

Install via CLI
npx skills add https://github.com/modbender/skill-library-mcp --skill ecto
Repository Details
star Stars 7
call_split Forks 2
navigation Branch main
article Path SKILL.md
More from Creator