Can ghost listen to external http call (webhook)?

Hi

Our journalism students have a daily reporting class where they work with a SaaS CMS called Melody. It is used to prepare content for both print, online and social media publishing.

For the online part, I set up a ghost blog last year at this URL (I love ghost and have used it for other projects since 2018):

https://latelier.uqam.media/

It’s running v3.41.3 (just updated it)

The people at Melody tell us that the way they automate the posting of articles from Melody to other publishing platforms such as Drupal or Wordpress is this (we are the first ghost blog they interact with):

Step 1
When an article is marked as “published” in Melody, a “call” is sent to a URL that would be starting with “https://latelier.uqam.media/…”
This URL should contain the Melody article ID ({articleID})
I understand this is like a webhook.

Step 2
After receiving the “call”, ghost then calls back Melody’s API using this URL:
https://melody.{ourdomain}.demainunautrejour.com/webservice/article/{articleID}/json”

Step 3
With the article payload retrieved in step 2, ghost publishes article on the latelier.uqam.media site using the {articleID} as {slug}
Thus the canonical URL becomes “https://latelier.uqam.media/{articleID}

Now, I am familiar with ghost’s Admin API as during previous semesters, I was using a python script to scan a range of articleIDs on Melody’s API running at 5-minute intervals with a cronjob. When it found a newly published article, it sent a POST request to the ghost Admin API (https://latelier.uqam.media/ghost/api/v3/admin/posts/?source=html)
I was using token authentication.

I told people at Melody: I’ll send you the Admin API Key so that you can generate a POST request to our ghost Admin API. But they told me: no, that’s not how we do it. They told me ghost has to “listen” to a “call” from Melody will send it at a URL as described in step 1.

Is it possilbe? If yes, how can I configure ghost to “listen”? What URL could I give them that ghost would react to, fetch the content on their API and publish a post?

Thanks very much in advance for any help or ideas!

If they’re expecting all other platforms to write proprietary code specifically to ingest content from (as far as I’m aware?): a failed fork of a 20 year old CMS with almost no users left… I’m afraid that’s just not a very realistic expectation!

Ghost uses a standards compliant JSON API (as you mentioned), which anyone can write for if they want. That’s how almost all modern platforms work - so it’s really up to them if they want to support it or not. Many popular desktop editors, such as iA Writer and Ulysses use Ghost Admin endpoints so that people can publish directly there.

It sounds like your Python script was a great idea, to act as a middleman - I’m not sure if that stopped working or there was a problem with it?

An alternative piece to put in the middle could be Zapier. There’s lots of different ways you can use that with the Ghost API, but one of the most useful is that it can ingest raw HTML and create posts from that. So if you have anything that can output HTML, Zapier can translate, automate and get that content into Ghost pretty easily.

Alternatively, you could always use Ghost directly and skip Melody - of course :wink: but I’m sure you have reasons for sticking with it!

2 Likes

Thank you so much, @John, for your quick reply. Melody is used by many national and local papers and magazines in France. It is because it enables us to centralize content for all outputs (print, online, mobile and social) that we use it for one daily journalism course.

The Melody people asked me to ditch the python script because it queried their API too often and was too much of a burden on their servers.

I had seen that Zapier can listen to a webhook and parse a payload for publication in Ghost. Thanks for the idea. I’ll ask Melody to send their call to Zapier. I hope that solution will work…

One last thing: I’m so grateful you’ve created Ghost! I’ve used it in other courses to cover our latest Federal and Provincial elections. Students told me they like its ease of use. I love the fact it is perfect to apply SEO and some coding (HTML/CSS) elements I teach them. The API is robust. The documentation is thorough. As WP user for the last 15 years, I’ve tried Joomla, TYPO3, Medium. Ghost is simply brilliant. :+1:

Ah! Different Melody CMS - my mistake :slight_smile:

Thanks for the kind words! We’re very fortunate to have an amazing group of people on our product team who have made the product what it is today — it’s great to hear you’re enjoying it

1 Like