See llms.txt for all machine-readable content.
This workflow automates the creation and publishing of LinkedIn posts with AI-generated content and human approval via Slack, using Google Sheets, OpenAI (GPT-4), Slack Interactive Messages, and the LinkedIn API.
Whether you're a social media manager, content creator, or marketing professional, this workflow helps you maintain consistent LinkedIn presence and scale content creation while keeping human oversight — all managed from a simple spreadsheet.
Ideal for:
Linkedin PostStatus as PendingConnect your Google account to:
Linkedin-Post-Topic (Trigger node)Update-StatusGet-Group-idOnce live, the workflow will:
PostedPending statusPosted in sheet| Node Name | Description |
|---|---|
| Linkedin-Post-Topic | Monitors spreadsheet for new post topics |
| Validate-Status | Filters only 'Pending' items |
| Limit | Processes one item at a time |
| Linedin-Post-Creator | Generates post content using GPT-4 |
| Format-Content | Prepares content for Slack display |
| Approval-on-Slack | Sends interactive approval message |
| Webhook | Receives Slack button responses |
| Format-Response | Extracts edited content from Slack |
| Set-Final-Message | Prepares approved content |
| Linkedin-User-Detail | Fetches LinkedIn user info |
| Register Image | Initiates LinkedIn image upload |
| Upload Image | Uploads image to LinkedIn |
| Linkedin-post | Publishes to personal profile |
| Get-Group-id | Retrieves LinkedIn group IDs |
| Post-Linkedin-Groups | Posts to multiple groups |
| Update-Status | Marks as completed in sheet |
| Node/Section | Sticky Note Content |
|---|---|
| Linkedin-Post-Topic | "Triggers every minute for new posts in your spreadsheet" |
| Validate-Status | "Filters to process only 'Pending' items - prevents duplicates" |
| Linedin-Post-Creator | "Uses GPT-4 to generate LinkedIn content - customize prompt for your brand voice" |
| Approval-on-Slack | "Sends for human review - edit the Slack user to change approver" |
| Webhook | "Receives approval responses - ensure URL is configured in Slack app" |
| Register Image | "Initiates LinkedIn media upload - requires valid image URL from sheet" |
| Linkedin-post | "Publishes to your profile - update with your LinkedIn credentials" |
| Post-Linkedin-Groups | "Posts to multiple groups - add group IDs in Groups sheet" |
| Update-Status | "Marks as 'Posted' to prevent reprocessing" |
The workflow uses a sophisticated prompt that:
LinkedIn App Requirements:
r_liteprofile - Read profile datar_emailaddress - Access emailw_member_social - Post contentrw_organization_admin - Group postingSlack Bot Permissions:
chat:write - Send messagesim:write - Direct messagesusers:read - User information| Component | Purpose |
|---|---|
| Google Sheet | Store post topics and status |
| LinkedIn App | API access for posting |
| Slack App | Interactive approval flow |
| OpenAI Account | GPT-4 content generation |
| N8N Instance | Workflow execution |
PendingPostedLinkedIn API Errors:
Slack Integration:
Image Upload Failures:
| File Name | Purpose |
|---|---|
| Linkedin Post | Google Sheet to hold post topics and status |