Draft+Approve: Google Sheets → GPT draft → Slack Approve/Reject (human still posts)

I built a small “draft + approve” queue in n8n for people who want AI help writing social/blog copy but do not want a bot posting on their behalf.

What it does

  1. Google Sheets (a Topics tab with headers topic,status,draft,notes) - reads rows where status = pending.
    1. OpenAI node (gpt-4o-mini by default) writes a short draft for that topic.
    1. Slack “Send and Wait” message with Approve / Reject buttons (these are n8n resume URLs, so no Slack interactivity request URL is needed).
    1. The answer is written back to the row: status = approved/rejected plus the draft text.
      Two smaller companion workflows: an “approved and ready to post” Slack reminder (optional Gmail), and a Monday 09:00 weekly digest with counts and the last 5 topics.

Honest scope: it does NOT auto-publish to LinkedIn, Instagram, YouTube or any other network. A human copies the approved draft and posts it manually. That was the point - review before publish.

Import steps

  1. n8n → … → Import from File, import the workflow JSON, leave it inactive.
    1. Create a Google Sheet with a Topics tab, headers exactly topic,status,draft,notes.
    1. Open the Config node and set sheet_id, sheet_tab (Topics) and slack_channel_id.
    1. Attach 3 credentials: Google Sheets OAuth2, OpenAI API key, Slack API (bot token with chat:write; invite the bot to the channel).
    1. Run once manually against a single pending row before enabling any schedule.
      Packaged version: if you’d rather not rebuild it, I sell the pack (3 workflows + README + credentials checklist + test guide + sample CSV) for $19, instant ZIP download: Asaf | Draft+Approve

Happy to answer questions about the Slack approve/reject step - that part took the most iterations.