Ghost blog poster πŸ”₯

Ghost blog poster πŸ”₯

πŸš€ 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! πŸ“βœ¨

AUTOMATIONFOR_CREATORSAIApify

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.

(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)
  • GHOST_BASE_API_URL - the base API URL of your Ghost blog
  • GHOST_ADMIN_API_KEY - the API key of your Ghost blog

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 :)

Frequently Asked Questions

Is it legal to scrape job listings or public data?

Yes, if you're scraping publicly available data for personal or internal use. Always review Websute's Terms of Service before large-scale use or redistribution.

Do I need to code to use this scraper?

No. This is a no-code tool β€” just enter a job title, location, and run the scraper directly from your dashboard or Apify actor page.

What data does it extract?

It extracts job titles, companies, salaries (if available), descriptions, locations, and post dates. You can export all of it to Excel or JSON.

Can I scrape multiple pages or filter by location?

Yes, you can scrape multiple pages and refine by job title, location, keyword, or more depending on the input settings you use.

How do I get started?

You can use the Try Now button on this page to go to the scraper. You’ll be guided to input a search term and get structured results. No setup needed!