Ghost Blocks icon

Ghost Blocks

Publish to Ghost CMS using simple content blocks

Actions8

Post → Create

AI-generated

Summary

Creates a new Ghost post via the Admin API, converting a JSON array of simple typed content blocks into Ghost's Lexical format. Optionally sets metadata, SEO fields, and sends the post as a newsletter on creation.

Inputs

  • title (required) — Post title. Only sent if non-empty.
  • content — JSON array of block objects (or a JSON string of one), default {{ $json.blocks }}. Each block has a type: paragraph, heading (level 1-6), quote, image, gallery, divider, button, bookmark, callout, toggle, header, email_cta, email_content, signup, paywall, call_to_action, html, markdown, codeblock, embed, video, audio, file, product. Text fields support inline markdown (bold, italic, code, links). Invalid JSON or an unknown block type causes an error. Empty content omits the Lexical body.
  • additionalFields — Optional collection: status (draft/published/scheduled), visibility (public/members/paid), featured, slug, feature image URL/alt/caption, canonical URL, email only, published at (needed for scheduled), excerpt (sent as custom_excerpt), tags (comma-separated names; creates tags by name, # prefix = internal), authors (comma-separated emails).
  • seo — Optional collection: meta title/description, OG title/description/image, Twitter title/description/image. Empty values are skipped.
  • newsletter — Optional collection: Send (boolean), Newsletter Slug, Segment. The post is sent as a newsletter only if Send is true and a slug is set; the segment is passed as the email segment filter if provided.

Output shape

One item per input item containing a summary of the created post: id, uuid, url, status, title, slug, created_at, updated_at, published_at.

The full post body (HTML/Lexical) is not returned. Requires Ghost Blocks API credentials (site URL and Admin API key). With Continue on Fail enabled, failed items return {error: message}. Status defaults to Ghost's default (draft) if not set.

Examples

Example 1: Publish an AI-generated article as a draft with tags

Title from upstream; Content = {{ $json.blocks }}; Additional Fields: Status=draft, Tags='news, ai'.

Example 2: Publish a post and email it to a subset of subscribers

Additional Fields Status=published; Send as Newsletter: Send=true, Newsletter Slug='default-newsletter', Segment='status:free'.

Example 3: Schedule a post with SEO metadata

Status=scheduled, Published At=2026-11-01T09:00:00Z; SEO Meta Title and Meta Description set.

Links

Discussion