Ghost blog poster 🔥 avatar

Ghost blog poster 🔥

Try for free

This Actor is paid per event

Go to Store
Ghost blog poster 🔥

Ghost blog poster 🔥

azzouzana/ghost-blog-poster
Try for free

This Actor is paid per event

🚀 Ghost Blog Poster: Easily publish articles to your Ghost blog using this tool! Just provide your blog's API URL, admin API key, and inputs like title, HTML content, tags, slug, excerpt, and status (published or draft). Great for building advanced Ghost API integrations! 📝✨

Developer
Maintained by Community

Actor Metrics

  • 1 monthly user

  • 5.0 / 5 (1)

  • 1 bookmark

  • >99% runs succeeded

  • Created in Mar 2025

  • Modified 5 days ago

Ghost blog poster

This actor is a tool that allows you to post articles to your Ghost blog. It is a simple actor that uses the Ghost API to post articles to your blog. It is a good starting point for building more complex actors that interact with the Ghost API and could be used in your ai agents.

It expects the following environment variables to be set:

  • GHOST_BASE_API_URL - the base API URL of your Ghost blog (Format: https://your-blog-domain/ghost/api/v4)
  • GHOST_ADMIN_API_KEY - the API key of your Ghost blog, you can find it/create one in the Ghost admin panel under Integrations (Format xxxxx:yyyyy)

(Please note that the actor uses the Ghost API V4. Support for V5 is coming soon.)

Input

The actor expects the following inputs:

  • title - the title of the article (required!)
  • html - the content of the article in HTML format
  • tags - an array of tags for the article: ["tag1", "tag2", "tag3"]
  • slug - the slug of the article (Example: my-article-slug, leave empty to generate automatically)
  • custom_excerpt - a custom excerpt for the article
  • status - the status of the article (published or draft, default is draft)

Output

Successful post creation will return the following output:

1{
2  "posts": [
3    {
4      "id": "<post_id>",
5      "uuid": "<post_uuid>",
6      "title": "<post_title>",
7      "slug": "<post_slug>",
8      "mobiledoc": "{ \"version\": \"0.3.1\", \"atoms\": [], \"cards\": [], \"markups\": [], \"sections\": [[1, \"p\", [[0, [], 0, \"<post_content>\"]]]] }",
9      "comment_id": "<comment_id>",
10      "feature_image": null,
11      "featured": false,
12      "status": "<post_status>",
13      "visibility": "<post_visibility>",
14      "email_recipient_filter": "<email_filter>",
15      "created_at": "<created_timestamp>",
16      "updated_at": "<updated_timestamp>",
17      "published_at": null,
18      "custom_excerpt": "<custom_excerpt>",
19      "codeinjection_head": null,
20      "codeinjection_foot": null,
21      "custom_template": null,
22      "canonical_url": null,
23      "tags": [
24        {
25          "id": "<tag_id>",
26          "name": "<tag_name>",
27          "slug": "<tag_slug>",
28          "description": null,
29          "feature_image": null,
30          "visibility": "<tag_visibility>",
31          "og_image": null,
32          "og_title": null,
33          "og_description": null,
34          "twitter_image": null,
35          "twitter_title": null,
36          "twitter_description": null,
37          "meta_title": null,
38          "meta_description": null,
39          "codeinjection_head": null,
40          "codeinjection_foot": null,
41          "canonical_url": null,
42          "accent_color": null,
43          "created_at": "<tag_created_timestamp>",
44          "updated_at": "<tag_updated_timestamp>",
45          "url": "<tag_url>"
46        }
47      ],
48      "authors": [
49        {
50          "id": "<author_id>",
51          "name": "<author_name>",
52          "slug": "<author_slug>",
53          "email": "<author_email>",
54          "profile_image": "<author_profile_image_url>",
55          "cover_image": null,
56          "bio": null,
57          "website": null,
58          "location": null,
59          "facebook": null,
60          "twitter": null,
61          "accessibility": "{ \"nightShift\": true, \"whatsNew\": { \"lastSeenDate\": \"<last_seen_date>\" } }",
62          "status": "<author_status>",
63          "meta_title": null,
64          "meta_description": null,
65          "tour": null,
66          "last_seen": "<author_last_seen>",
67          "created_at": "<author_created_timestamp>",
68          "updated_at": "<author_updated_timestamp>",
69          "roles": [
70            {
71              "id": "<role_id>",
72              "name": "<role_name>",
73              "description": "<role_description>",
74              "created_at": "<role_created_timestamp>",
75              "updated_at": "<role_updated_timestamp>"
76            }
77          ],
78          "url": "<author_url>"
79        }
80      ],
81      "tiers": [],
82      "primary_author": {
83        "id": "<primary_author_id>",
84        "name": "<primary_author_name>",
85        "slug": "<primary_author_slug>",
86        "email": "<primary_author_email>",
87        "profile_image": "<primary_author_profile_image_url>",
88        "cover_image": null,
89        "bio": null,
90        "website": null,
91        "location": null,
92        "facebook": null,
93        "twitter": null,
94        "accessibility": "{ \"nightShift\": true, \"whatsNew\": { \"lastSeenDate\": \"<last_seen_date>\" } }",
95        "status": "<primary_author_status>",
96        "meta_title": null,
97        "meta_description": null,
98        "tour": null,
99        "last_seen": "<primary_author_last_seen>",
100        "created_at": "<primary_author_created_timestamp>",
101        "updated_at": "<primary_author_updated_timestamp>",
102        "roles": [
103          {
104            "id": "<role_id>",
105            "name": "<role_name>",
106            "description": "<role_description>",
107            "created_at": "<role_created_timestamp>",
108            "updated_at": "<role_updated_timestamp>"
109          }
110        ],
111        "url": "<primary_author_url>"
112      },
113      "primary_tag": {
114        "id": "<primary_tag_id>",
115        "name": "<primary_tag_name>",
116        "slug": "<primary_tag_slug>",
117        "description": null,
118        "feature_image": null,
119        "visibility": "<primary_tag_visibility>",
120        "og_image": null,
121        "og_title": null,
122        "og_description": null,
123        "twitter_image": null,
124        "twitter_title": null,
125        "twitter_description": null,
126        "meta_title": null,
127        "meta_description": null,
128        "codeinjection_head": null,
129        "codeinjection_foot": null,
130        "canonical_url": null,
131        "accent_color": null,
132        "created_at": "<primary_tag_created_timestamp>",
133        "updated_at": "<primary_tag_updated_timestamp>",
134        "url": "<primary_tag_url>"
135      },
136      "url": "<post_url>",
137      "excerpt": "<post_excerpt>",
138      "og_image": null,
139      "og_title": null,
140      "og_description": null,
141      "twitter_image": null,
142      "twitter_title": null,
143      "twitter_description": null,
144      "meta_title": null,
145      "meta_description": null,
146      "email_subject": null,
147      "frontmatter": null,
148      "feature_image_alt": null,
149      "feature_image_caption": null,
150      "email_only": false,
151      "email": null
152    }
153  ]
154}

Pricing

The actor uses the Pay-Per-Event pricing model, detailed below:

  • actor-start - Price for Actor start: $0.02
  • token-generation - Price for generating a signed token: $0.01
  • actor-dataset-push - Price for pushing to the dataset: $0.01
  • ghost-api-call - Price for making a Ghost API call: $0.03

Updates

Please note that this toll is in its early stages and might not cover all the features of the Ghost API. If you need more features, please contact us or create an issue. Thank you & happy blogging :)