🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Slack + OpenAI: LinkedIn drafts from any URL

Lisa Granqvist Partner Workflow Automation Expert

You find a great link to share, then the “quick LinkedIn post” turns into 45 minutes of rewriting, formatting, and second-guessing. Worse, feedback shows up in three places, edits get lost, and you still end up publishing something that feels a little… off.

This Slack OpenAI LinkedIn automation hits marketing managers first, honestly. But founders posting between meetings and consultants trying to stay visible feel it too. You get a clean draft from any URL, then handle approval inside Slack so the post doesn’t die in a doc.

Below, you’ll see how the workflow turns a page URL into a LinkedIn-ready draft, routes it for review, and automatically handles revision requests without starting over.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Slack + OpenAI: LinkedIn drafts from any URL

The Problem: Turning a URL Into a Post Takes Too Long

Sharing smart content on LinkedIn sounds simple until you actually do it consistently. You open a blog post or case study, skim it, copy a few lines, then realize you need a better hook. Then you rewrite for tone. Then you add structure, cut jargon, and try to make it “LinkedIn-friendly” without sounding like a robot. After that, somebody wants to “just tweak a sentence” and suddenly you’re hunting through Slack threads, docs, and screenshots to figure out which version is the real one.

The friction compounds. Here’s where it breaks down.

  • Drafting from scratch for every link can eat about 30–45 minutes per post, even when you know the topic well.
  • Feedback arrives in fragments, so you end up doing “revision archaeology” instead of writing.
  • Posts get stuck waiting for approval, and momentum disappears after a day or two.
  • Manual copy-paste and reformatting leads to small mistakes that make the post feel sloppy.

The Solution: URL-to-Draft Generation With Slack Approval

This workflow starts with a simple form submission: you drop in a page URL and, if you want, a quick note like “make it more direct” or “focus on the customer outcome.” n8n then scrapes the web page content (using Airtop), maps the useful parts into a clean input, and sends it to OpenAI to write a clear, educational LinkedIn draft. After the draft is assembled, the workflow posts it to Slack as a review request so you can approve, request revisions, or decline right where your team already talks. If revisions are requested, feedback is evaluated and fed back into the drafting step automatically, so you’re not redoing the whole thing manually. Once approved, the final version is posted back into Slack, ready to publish.

The workflow begins when you submit a URL. It turns that page into structured content and a LinkedIn-optimized draft with OpenAI. Then Slack becomes the approval hub, including a revision loop that keeps the draft moving until it’s accepted.

What You Get: Automation vs. Results

Example: What This Looks Like

Say your team shares 5 links per week (a blog post, a case study, a partner announcement, and two useful articles). Manually, drafting and formatting each one takes about 45 minutes, plus another 10 minutes chasing feedback, so you’re at roughly 4–5 hours a week. With this workflow, submitting a URL takes a minute, OpenAI generates the draft in a couple minutes, and your time is mostly review inside Slack, maybe 10 minutes per post. That’s about 3 hours back most weeks.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Slack for review, approvals, and revision feedback.
  • OpenAI to generate the LinkedIn draft text.
  • Airtop API key (get it from your Airtop dashboard).

Skill level: Intermediate. You’ll connect credentials and tweak prompts, but you won’t be writing code.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

You submit a URL (and optional instructions). The workflow starts from an n8n form trigger, so you can paste a link and add notes like “keep it short” or “lean technical.”

The page gets scraped into usable content. Airtop pulls the text from the web page, which is then cleaned and mapped so the AI isn’t guessing what matters.

OpenAI writes a LinkedIn draft and prepares the review package. n8n generates the post draft, assembles the final output fields, and gets it ready for Slack. This is where you can enforce structure, add a call-to-action, or include your brand voice.

Slack handles approvals and revision loops. The draft is sent to a Slack channel for review, and feedback is classified so revision requests can trigger a refreshed draft automatically. When it’s approved, the “final post” lands in Slack, ready to copy into LinkedIn.

You can easily modify the writing style to match your voice based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Form Trigger

Set up the intake form that starts the workflow and captures the URL and writing instructions.

  1. Add the Form Submit Trigger node as your trigger.
  2. Set Form Title to LinkedIn Post Generator.
  3. Set Form Description to Fill out these fields and you'll have a full LinkedIn post ready to go in a minute. .
  4. Add a required field labeled Page URL with placeholder https://example.com.
  5. Add a textarea field labeled Instructions for optional guidance.

Step 2: Connect the Web Scraping Source

Scrape the provided URL and map the input values into a clean payload for the AI node.

  1. Add the Scrape Web Page node and connect it after Form Submit Trigger.
  2. Set Resource to extraction and Operation to scrape.
  3. Set URL to ={{ (() => {\n const url = ($json['Page URL'] || '').trim();\n return url && (url.startsWith('http://') || url.startsWith('https://')) ? url : 'http://' + url;\n})() }}.
  4. Credential Required: Connect your airtopApi credentials.
  5. Add Map Input Fields and set assignments:
    • URL={{ $('Form Submit Trigger').item.json['Page URL'] }}
    • Instructions={{ $('Form Submit Trigger').item.json.Instructions }}
    • Post= -
    • =Webpage_content={{ $json.data.modelResponse.scrapedContent.text }}

⚠️ Common Pitfall: The URL expression in Scrape Web Page auto-adds http:// if the user omits a scheme. Ensure the form’s Page URL field is required to avoid empty values.

Step 3: Set Up the AI Drafting Pipeline

Generate a draft post based on scraped content and user instructions, then assemble the output.

  1. Add Compose Post Draft and connect it after Map Input Fields.
  2. Set Text to =Write a helpful educational, and engaging LinkedIn posts based on a webpage scraped content below or the Post text below and according to the instructions provided by the user.\n\nInstructions: {{ $json.Instructions }}\n\n{{ $json.Post }}\n\n{{ $json.Webpage_content }}.
  3. Set Resource to assistant and select the configured assistant ID.
  4. Credential Required: Connect your openAiApi credentials.
  5. Add Assemble Draft Output and set assignments:
    • URL={{ $('Map Input Fields').item.json.URL }}
    • Instructions= -
    • Post={{ $json.output }}

OpenAI credentials for AI sub-nodes should be added to the parent model node. Language Model Chat is connected as the language model for Evaluate Text Feedback — ensure credentials are added to Language Model Chat, not the classifier.

Step 4: Configure Slack Review and Feedback Classification

Send the draft to Slack for approval, then classify the response as Approved, Edit, or Declined.

  1. Add Slack Review Request and connect it after Assemble Draft Output.
  2. Set Operation to sendAndWait and Response Type to freeText.
  3. Set Message to =----------------\n\n{{ $json.Post }}\n\n-----------------\nBased on: {{ $json.URL }}.
  4. Credential Required: Connect your slackOAuth2Api credentials.
  5. Add Evaluate Text Feedback and set Input Text to ={{ $json.data.text }}.
  6. Verify the Categories include Edit, Approved, and Declined with the provided descriptions.
  7. Ensure Language Model Chat is connected to Evaluate Text Feedback via the AI language model connection and set Model to gpt-4.1.
  8. Credential Required: Connect your openAiApi credentials in Language Model Chat.

⚠️ Common Pitfall: Evaluate Text Feedback routes outputs to two nodes. Make sure your Slack review reply is clear (e.g., “Approved” or “Edit this sentence”) to avoid misclassification.

Step 5: Configure Revision Loop and Final Publishing

Handle revision requests and publish the final post to Slack when approved.

  1. Add Apply Revision Inputs and connect it from Evaluate Text Feedback for edit requests.
  2. Set assignments in Apply Revision Inputs:
    • URL={{ $('Map Input Fields').item.json.URL }}
    • Instructions={{ $json.data.text }}
    • Post={{ $('Assemble Draft Output').item.json.Post }}
  3. Connect Apply Revision Inputs back to Compose Post Draft to regenerate the draft with revisions.
  4. Add Publish Final Post and connect it from Evaluate Text Feedback for approved responses.
  5. Set Text in Publish Final Post to =---------------- \nFINAL POST:\n---------------- \n\n{{ $('Assemble Draft Output').item.json.Post }}\n.
  6. Credential Required: Connect your slackOAuth2Api credentials.

The workflow uses two outputs from Evaluate Text Feedback: one loops revisions and one publishes. Confirm both connections are preserved when importing the workflow.

Step 6: Test and Activate Your Workflow

Validate the full approval loop and enable the workflow for production use.

  1. Click Execute Workflow and submit the form in Form Submit Trigger with a valid URL and instructions.
  2. Verify Scrape Web Page returns content and Compose Post Draft generates a draft in Assemble Draft Output.
  3. Check Slack for the draft message from Slack Review Request and reply with “Approved” or a revision request.
  4. Confirm a revision reply loops through Apply Revision Inputs and updates the draft; an approval sends the final message via Publish Final Post.
  5. Once validated, toggle the workflow to Active to enable production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Slack credentials can expire or need specific permissions. If things break, check your n8n Slack connection and the app’s scopes in Slack settings first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Frequently Asked Questions

How long does it take to set up this Slack OpenAI LinkedIn automation?

About 30 minutes if your Slack and OpenAI credentials are ready.

Do I need coding skills to automate Slack OpenAI LinkedIn drafts?

No. You will connect accounts and adjust a few prompts and fields in n8n.

Is n8n free to use for this Slack OpenAI LinkedIn workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API usage (usually a few cents per draft) and Airtop usage depending on how much you scrape.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this Slack OpenAI LinkedIn workflow for different post styles?

Yes, and it’s one of the best reasons to use n8n here. You can adjust the “Map Input Fields” and “Apply Revision Inputs” steps to accept a style preset like “story,” “technical,” or “short and spicy,” then pass that into the “Compose Post Draft” and “Language Model Chat” prompts. Common customizations include adding a stronger call-to-action, enforcing a consistent hook format, and generating two draft variations for A/B testing inside Slack.

Why is my Slack connection failing in this workflow?

Usually it’s expired OAuth credentials or missing Slack app scopes for posting and reading interactions. Reconnect Slack in n8n, then confirm the workflow is pointing at the right channel. If it worked before and suddenly stopped, check if the Slack app was reinstalled or restricted by an admin. Rate limits can also show up when you run lots of drafts in a short burst.

How many drafts can this Slack OpenAI LinkedIn automation handle?

A lot, as long as your n8n plan and APIs can keep up.

Is this Slack OpenAI LinkedIn automation better than using Zapier or Make?

Often, yes. This workflow benefits from branching logic (approve vs. revise vs. decline) and a revision loop, which is easier to model in n8n without paying extra for every path. Self-hosting also matters if you plan to run lots of drafts. Zapier or Make can still be a fit for a simple “URL in, message out” flow, but approvals and iterative edits tend to get clunky. If you’re unsure, Talk to an automation expert and describe your review process.

Once this is running, a URL turns into a reviewable LinkedIn draft in minutes, not an afternoon. The workflow handles the repetitive parts so your team can focus on saying something worth reading.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal