Create reviewable LinkedIn posts from RSS with Notion, Slack, and AWS Bedrock
Ready for 3.0Ready for 3.0. This template uses no nodes that n8n 3.0 removes. No removed nodes, versions or helpers found. Static check, last run 2026-10-19.
Nodes used (21)
- Schedule Trigger
n8n-nodes-base.scheduleTrigger - Notion
n8n-nodes-base.notion - If
n8n-nodes-base.if - HTTP Request
n8n-nodes-base.httpRequest - LinkedIn
n8n-nodes-base.linkedIn - No Operation, do nothing
n8n-nodes-base.noOp - Code
n8n-nodes-base.code - Slack
n8n-nodes-base.slack - Error Trigger
n8n-nodes-base.errorTrigger - RSS Feed Trigger
n8n-nodes-base.rssFeedReadTrigger - Limit
n8n-nodes-base.limit - Loop Over Items (Split in Batches)
n8n-nodes-base.splitInBatches - Edit Fields (Set)
n8n-nodes-base.set - Merge
n8n-nodes-base.merge - Wait
n8n-nodes-base.wait - Summarization Chain
@n8n/n8n-nodes-langchain.chainSummarization - AWS Bedrock Chat Model
@n8n/n8n-nodes-langchain.lmChatAwsBedrock - AI Agent
@n8n/n8n-nodes-langchain.agent - Structured Output Parser
@n8n/n8n-nodes-langchain.outputParserStructured - Text Classifier
@n8n/n8n-nodes-langchain.textClassifier - Sentiment Analysis
@n8n/n8n-nodes-langchain.sentimentAnalysis
What it does
Quick overview This workflow turns RSS articles into LinkedIn-ready drafts using Firecrawl, AWS Bedrock (Claude and an image model), and Cloudinary, stores them in a Notion review queue, then publishes approved posts to LinkedIn on a daily schedule and sends Slack alerts on failures. How it works 1. Polls an RSS feed daily, limits the run to a set number of items, normalizes each article URL, and processes items in batches. 2. Checks Notion for an existing queue entry for each normalized URL, and for new items creates a Notion row marked Processing. 3. Scrapes the article with Firecrawl and stops processing if the returned markdown is below a minimum length. 4. Uses AWS Bedrock (Claude) to summarize the article, write LinkedIn copy with strict style rules, and run style and tone checks that can auto-fix or reject non-compliant output. 5. Chooses an image by validating the article’s OG image via an HTTP HEAD request, or generates an illustration with an AWS Bedrock image model and uploads it to Cloudinary, falling back to a default image if needed. 6. Updates the Notion row with the LinkedIn copy, image link, and author attribution, sets the status to Needs Approval, and sends a Slack message with a review link. 7. At 08:30, retrieves one Queued row from Notion, downloads the linked image, posts the text and image to LinkedIn, and marks the row as Published. 8. When publishing or content generation fails, sets the Notion status to Needs Edit when applicable and posts detailed failure alerts to Slack, including LinkedIn OAuth expiry hints and execution-level error notifications. Setup 1. Create a Notion database with properties for Title, Source URL (URL), Status (Processing/Needs Approval/Queued/Published/Needs Edit), LinkedIn Copy, Image Link (URL), and Author, then set the CONTENTQUEUEDBID workflow variable. 2. Add credentials for Notion, LinkedIn OAuth2 (and set LINKEDINPERSONURN), Slack, an HTTP Bearer Auth credential for Firecrawl, and an AWS IAM credential with access to the specified Bedrock text and image models in your AWSREGION. 3. Configure Cloudinary unsigned uploads by creating an upload preset and setting CLOUDINARYCLOUDNAME and CLOUDINARYUPLOADPRESET variables. 4. Set workflow variables for RSSFEEDURL, ALERTCHANNEL, FIRECRAWLENDPOINT, BEDROCKIMAGEMODELID (and any other optional limits like RUNITEMLIMIT, MINMARKDOWNCHARS, IMAGEMINBYTES, IMAGEWIDTH, IMAGEHEIGHT), plus FALLBACKIMAGEURL. 5. In Notion, approve a draft by changing its Status to Queued so the scheduled publisher can post it on the next 08:30 run.