This n8n workflow automatically converts new RSS feed articles into ready-to-publish social media posts for LinkedIn and Instagram.
Whenever a new article is detected from the RSS feed, the workflow extracts the article title, link, description, and publish date. It then uses OpenAI to generate a professional LinkedIn post, a short Instagram caption, relevant hashtags, and an image prompt. After that, Google Gemini generates a custom image, UploadToURL converts the generated image into a public image URL, and the workflow publishes the final content to LinkedIn and Instagram.
This node monitors an RSS feed and checks for new articles every hour.
The RSS Feed Trigger runs automatically based on the configured polling schedule. In this workflow, it checks the RSS feed every hour.
When a new article is found, the node outputs article data such as:
This node starts the automation. Instead of manually checking a blog, news website, or company update page, the workflow automatically detects fresh content and begins the social media publishing process.
This node cleans and organizes the raw RSS feed data into simple fields that can be used in the next steps.
It extracts the important article details and stores them in clean fields:
article_titlearticle_linkarticle_descriptionpublished_dateThis node uses AI to create platform-ready social media content from the RSS article.
It sends the article title, description, and link to the OpenAI model and asks it to return valid JSON only.
The generated JSON includes:
content_anglelinkedin_postinstagram_captioninstagram_image_prompthashtagsThis node converts the AI-generated JSON text into clean structured fields.
Sometimes AI returns JSON inside markdown code blocks. This node first removes unwanted formatting like:
```json
Then it parses the cleaned text using:
```js
JSON.parse()
After parsing, it returns these fields:
content_anglelinkedin_postinstagram_captioninstagram_image_prompthashtagshashtags_textThe next nodes need structured data, not raw AI text. This node makes sure the AI output becomes proper fields that can be used by the image generation, LinkedIn, and Instagram nodes.
If the AI output is not valid JSON, this node throws an error. This helps catch formatting issues before the workflow publishes anything.
This node generates an AI image for the social media post.
It uses Google Gemini image generation with the model:
models/gemini-2.5-flash-image
The image prompt comes from the parsed AI output:
$json.instagram_image_prompt
The prompt describes the visual concept, style, and layout for the image.
This node creates a custom visual automatically, so the workflow can publish image-based posts instead of only text updates.
This node uploads the AI-generated image and converts it into a public image URL using UploadToURL.
After the image is generated by Google Gemini, the file is passed to the Upload a File node.
UploadToURL receives the generated image file, uploads it, and returns a publicly accessible CDN URL.
That public URL is then used by the Instagram node to publish the generated image.
Many social media platforms and APIs require a public image URL before they can publish media.
This node solves that problem by converting the generated image file into a shareable public link automatically.
UploadToURL
This node publishes the AI-generated LinkedIn post.
It takes the LinkedIn post text from the Parse AI JSON Output node:
$('Parse AI JSON Output').item.json.linkedin_post
The LinkedIn node is configured to publish a post using the generated content.
This node publishes the generated image and caption to Instagram.
It uses the public image URL returned from the UploadToURL node:
$json.url
It also uses the Instagram caption generated by AI:
$('Parse AI JSON Output').item.json.instagram_caption
This node completes the Instagram publishing process by posting both the generated image and the AI-written caption automatically.