Automated Blog Post Review and Multi-Platform Publishing Workflow with RSS Feeds
Automated Blog Post Review and Multi-Platform Publishing Workflow with RSS Feeds Description This workflow automates the process of generating, reviewing, and publishing blog posts across multiple platforms, now enhanced with support for RSS Feeds as a content source. It streamlines the management of blog posts by fetching content from RSS Feeds, formatting, storing, reviewing, templating, and publishing to platforms like LinkedIn and WordPress. The workflow is split into three key flows: Initial Flow**: Fetches content from RSS Feeds, prepares and stores blog post data, sends a review email with approval/rejection links. Approval Flow**: Handles review actions via a webhook to update the status in Google Sheets. Status Update Flow**: Monitors status changes and publishes approved posts. Target Audience Content creators, bloggers, and digital marketers. Teams managing multi-platform content publishing. Users familiar with n8n, Google Sheets, LinkedIn, and RSS Feeds. Problem Solved Manually managing blog posts, especially when sourcing content from RSS Feeds, can be time-consuming and error-prone This workflow addresses: Content Sourcing**: Fetches blog posts from RSS Feeds for automated processing Content Formatting**: Automatically formats and stores blog posts. Review Process**: Simplifies approval with email notifications and webhook triggers. Multi-Platform Publishing**: Publishes to LinkedIn, WordPress and optionally Medium) with delays to avoid rate limits Status Tracking**: Tracks approval and publishing status in Google Sheets. Setup Instructions Prerequisites n8n Instance**: Ensure you have an active n8n instance RSS Feed URL**: Identify an RSS Feed URL (e.g., a blog’s feed like https://example.com/feed) Google Sheets**: Create a spreadsheet with columns: Title, Blogpost, Publication Date, Keywords, Status, Published, Featured Image, articleUrl, Rendered Blog. Sheet Name: Posts Initial Add a dropdown for Status: Pending, Approved, Rejected. Gmail Account**: For sending review and notification emails. LinkedIn Account**: For publishing posts (OAuth credentials needed). Optional**: WordPress.com or Medium account for additional publishing. Customization Guidance Below is a detailed breakdown of each flow and node, including setup instructions. 🔹 Initial Flow: Fetch from RSS Feeds, Prepare, and Send for Review. Purpose: Fetches blog posts from an RSS Feed, formats them, extracts images, stores data, and sends a review email. Fetch from RSS Feed Type: RSS Feed Purpose: Retrieves blog posts from an RSS Feed Configuration: URL: https://example.com/feed (replace with your RSS Feed URL) Limit: 1 (or adjust based on your needs) Setup: Ensure the RSS Feed URL is valid and accessible; test the node to verify it fetches posts Set Fields Type: Set Purpose: Maps RSS Feed data to blog post fields Setup: Adjust field mappings based on your RSS Feed’s structure Format Blog Post for Storage Type: Code Purpose: Cleans up the blog post content. Extract Featured Image Type: Code Purpose: Extracts or generates a featured image URL. Setup: Ensure originalHtml contains image data; otherwise, it uses a placeholder. Store Blog Posts Initial Type: Google Sheets Purpose: Stores initial blog post data Setup: Ensure Google Sheets credentials are set up and the spreadsheet has the required columns. Set Fields for Email Type: Set Purpose: Prepares fields for the review email. Setup: Replace https://your-n8n-instance with your n8n instance URL. Prepare Email HTML Type: Code Purpose: Generates HTML email content with conditional image display Setup: No additional configuration needed Notify for Review (Gmail) Type: Gmail Purpose: Sends a review email with approval/rejection links 🔹 Approval Flow: Handle Review Actions Purpose: Updates the blog post status based on approval/rejection Webhook Trigger Type: Webhook Purpose: Triggers on approval/rejection link clicks Configuration: HTTP Method: GET Path: approve-post Response Code: 200 Response Data: {"message": "Status updated"} Setup: Ensure the webhook URL matches the one in Set Fields for Email Find Row to Update Type: Google Sheets Purpose: Retrieves all rows to find the matching blog post Filter Row by Title Type: Code Purpose: Filters the row matching the blog post title Setup: No additional configuration needed Update Status on Approval Type: Google Sheets Purpose: Updates the status to Approved or Rejected 🔹 Status Update Flow: Publish Approved Posts Purpose: Monitors status changes and publishes approved posts Google Sheets Trigger (Fetch Row) Type: Google Sheets Trigger Purpose: Triggers when a row’s status is updated Configuration: Event: Update Sheet Name: Posts Initial Output Fields: title, status, published, featuredImage, articleUrl Setup: Ensure Google Sheets credentials are set up Router (Check Status) Type: Router Purpose: Routes based on status and published state Configuration: Route 1: Approved and Not Published Condition: status equals Approved AND published equals NO Route 2: Rejected Condition: status equals Rejected Route 3: Pending Condition: status equals Pending Setup: No additional configuration needed Apply Blog Template Store Blog Posts Final Type: Google Sheets Purpose: Stores the final HTML content Configuration: Operation: Update Row Setup: Ensure the Rendered Blog column exists Loop Over Blog Posts Type: Split in Batches Purpose: Processes each blog post individually Configuration: Default settings Setup: No additional configuration needed Delay Between Posts Type: Wait Purpose: Adds a delay to avoid rate limits Configuration: Wait Type: Delay Amount: 1 second Setup: Adjust delay as needed for LinkedIn rate limits Publish to LinkedIn Type: LinkedIn Purpose: Publishes the blog post to LinkedIn Configuration: Operation: Share Post Author: urn:li:person:YOUR_PERSONAL_URN Setup: Set up LinkedIn OAuth credentials and replace YOUR_PERSONAL_URN with your LinkedIn URN Update Published State Type: Google Sheets Purpose: Updates the published status Configuration: Operation: Update Row Setup: Ensure the Published column exists Notify Team Type: Gmail Purpose: Notifies the team of successful publishing Configuration: The blog post "{{ $json.title }}" has been successfully published Setup: Set up Gmail credentials; replace [Link] with the LinkedIn URL if captured Notify Rejection (Gmail) (Route 2) Type: Gmail Purpose: Notifies on rejection The blog post "{{ $json.title }}" has been rejected Suggestions: Rewrite with more engaging content, adjust keywords, or verify facts Please update the status in Google Sheets if you wish to revise and resubmit Setup: Set up Gmail credentials Wait for Status Update (Route 3) Type: Wait Purpose: Delays for status recheck Configuration: Wait Type: Delay Duration: 24h Setup: Adjust delay as needed Conclusion This workflow streamlines blog post management with RSS Feeds, making it ideal for busy content creators and teams. Customize it by adding more platforms adjusting delays, or enhancing notifications. Share your feedback in the n8n community to help others benefit from this automation. An n8n automation workflow template by Immanuel.
Immanuel
web
paid
Others in the same category, ranked by how often they are opened.