Claude-skill-registry ecto
Ghost.io Admin API CLI for managing blog posts, pages, tags, and content.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/ecto" ~/.claude/skills/majiayu000-claude-skill-registry-ecto-c99c35 && rm -rf "$T"
manifest:
skills/data/ecto/SKILL.mdsource 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.