Skip to main content

Posts

Manage posts with full CRUD operations. Requires GHOST_ADMIN_API_KEY.

Tools​

ToolDescription
admin_browse_postsList posts with filtering and pagination
admin_read_postGet a single post by ID or slug
admin_create_postCreate a new post
admin_update_postUpdate an existing post
admin_delete_postDelete a post
admin_copy_postDuplicate a post

admin_browse_posts​

List posts with filtering, pagination, and sorting.

{
"filter": "status:draft",
"limit": 10,
"order": "updated_at DESC"
}

Supports the same parameters as content_browse_posts, plus access to draft and scheduled posts.

admin_read_post​

Get a single post by ID or slug.

{
"slug": "my-post-slug"
}

admin_create_post​

Create a new post. Use status to control publication state.

Create a draft​

{
"title": "My New Blog Post",
"html": "<p>This is the content of my blog post.</p>",
"status": "draft"
}

Create a published post with full metadata​

{
"title": "Complete Guide to Ghost CMS",
"html": "<p>Ghost is a powerful open source publishing platform...</p>",
"status": "published",
"featured": true,
"tags": [{ "name": "Tutorials" }, { "slug": "ghost" }],
"authors": [{ "email": "author@example.com" }],
"custom_excerpt": "Learn everything about Ghost CMS",
"meta_title": "Ghost CMS Guide | My Blog",
"meta_description": "A comprehensive guide to using Ghost CMS.",
"feature_image": "https://example.com/images/ghost-guide.jpg"
}

Create a members-only post​

{
"title": "Premium Content for Members",
"html": "<p>Exclusive content for paying subscribers.</p>",
"status": "published",
"visibility": "paid"
}

Key parameters​

ParameterTypeDescription
titlestringPost title
htmlstringPost content in HTML
statusstringdraft, published, or scheduled
featuredbooleanWhether the post is featured
visibilitystringpublic, members, paid, or tiers
tagsarrayTags by name or slug
authorsarrayAuthors by email or ID
feature_imagestringURL of the feature image
custom_excerptstringCustom excerpt
meta_titlestringSEO title
meta_descriptionstringSEO description
published_atstringPublication date (for scheduling)

admin_update_post​

Update an existing post. Requires id and updated_at for conflict prevention.

{
"id": "5ddc9141c35e7700383b2937",
"updated_at": "2024-01-15T10:30:00.000Z",
"title": "Updated Title",
"html": "<p>Updated content goes here.</p>",
"status": "published"
}
warning

The updated_at field must match the current value from the post. This prevents accidental overwrites if someone else modified the post.

admin_delete_post​

Delete a post by its ID.

{
"id": "5ddc9141c35e7700383b2937"
}

admin_copy_post​

Duplicate a post. Creates a draft copy of the specified post.

{
"id": "5ddc9141c35e7700383b2937"
}