Collaborator Work Flow Question

I am looking to set up a publication process for my large organization and Ghost looks like it has nearly all the features we need but it is unclear to me how I would support the following flow:

  • Author posts a draft article
  • Two or more collaborators that are not the author need to tag/approve the authors post before it can be published
  • Once two or more authors have approved the article
  • Then the article gets published by a scheduled process or something

I am not clear on whether this is possible using the existing admin tools and api and roles.

For example, could I have a staging site where everyone is editor and once any two editors tag another’s post with “approve” or something then a job that runs, say, once a day, picks up those approved posts up and publishes them to the production site. In the production site no one is editor just viewers (except for support staff etc)

Sorta making it up here but was curious if anyone else is doing something like this and what you have working that might point us in the right direction.

Thanks

I don’t think I mentioned I am new to Ghost and am looking for best practice guidance on this.

Anybody care to share their workflow when you have many (dozens) authors and and want to put some type of editorial oversight in place ?

Any help you could provide would be much appreciated.

I think this is achievable via workflows of headless Ghost – just like you said, build a “staging” version of the site, where the site is a complete Ghost installation. But the live version of the site should be static – it generates from Ghost’s content API. Build a custom workflow so that when two authors approves an article, trigger the rebuilding flow for the static site.

This does not work perfectly since what you need is probably a lot more complicated and tighter than this, but I think this should be a good place to start.

Thanks for your replay @itsmingjie

Does anyone have a suggestion concerning how I achieve an “approval” step where two other editors have to “approve” the post before it can be allowed to get “published” to the production site?

Or said another way - given Ghost’s default capabilities, how could two people other than the original author tag or mark etc a post with some type of identifier I could pick up via post update web hook etc to know that the post in question has the necessary approvals to move forward to the production site?

I am unclear how that could be achieved using the standard Ghost tooling.

Thanks

I might be overthinking, but it might be worth writing a small microservice to do that – here’s the thought process: (let’s call the servers “staging”, “static” and “service” for simplicity)

  1. When a post gets published on the staging site, intergration webhook notifies the service (sends a rebuild request)
  2. The service almost “hijacks” the rebuild request and hold it
  3. The service creates a new entry in the database with the slug of the new post
  4. The service displays the post as “available for review” on its own public frontend, and your editors can somehow click a button to bump the counter of the post in the database. (If you want to do it without a frontend, either consider sending an email out, or use a Slack message, etc.; just somehow have a place where people can see a new post got submitted.)
  5. Once the counter is above a certain number, the service “release” the rebuild request to the static server to rebuild the site.

There’s probably a simpler way to achieve this, but this should be a nice flow to get this working. I wrote a janky service a while ago to handle a similar use case – hijacking the rebuild request until a certain condition is met: https://github.com/itsmingjie/ghost-buffer. But instead of waiting for approvals, my service releases the request when a certain amount of requests stacks up.

Let me know if this makes sense!

Ok so I see what you did there. So basically you have to hack ghost to do what I am envisioning but all the ingredients are there for you to do this. Thanks