AutomationFlowsGeneral › RSS to Blog Post Automation

RSS to Blog Post Automation

Original n8n title: Http Rssfeedread

Http Rssfeedread. Uses httpRequest, rssFeedReadTrigger, stickyNote, dateTime. Event-driven trigger; 10 nodes.

Event trigger★★★★☆ complexity10 nodesHTTP RequestRss Feed Read Trigger
General Trigger: Event Nodes: 10 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "nodes": [
    {
      "id": "25a28584-ae1b-4d14-9261-80be8f3c6727",
      "name": "Create Post",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        520,
        0
      ],
      "parameters": {
        "url": "https://bsky.social/xrpc/com.atproto.repo.createRecord",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "neverError": true,
              "responseFormat": "json"
            }
          }
        },
        "jsonBody": "={\n  \"repo\": \"{{ $node['Create Session'].json['did'] }}\",\n  \"collection\": \"app.bsky.feed.post\",\n  \"record\": {\n    \"text\": {{ JSON.stringify($node['RSS Feed Trigger'].json['content:encodedSnippet']) }},\n    \"$type\": \"app.bsky.feed.post\",\n    \"embed\": {\n      \"$type\": \"app.bsky.embed.external\",\n      \"external\": {\n          \"uri\": \"{{ $node['RSS Feed Trigger'].json['link'] }}\",\n          \"title\": \"{{ $node['RSS Feed Trigger'].json['lintitlek'] }}\",\n          \"description\": \"{{ $node['RSS Feed Trigger'].json['contentSnippet'] }}\",\n          \"thumb\": {\n            \"$type\": \"{{ $json.blob.$type }}\",\n            \"ref\": {\n              \"$link\": \"{{ $json['blob']['ref']['$link'] }}\"\n            },\n            \"mimeType\": \"{{ $json.blob.mimeType }}\",\n            \"size\": {{ $json.blob.size }}\n          }\n        }\n    },\n    \"createdAt\": \"{{ $node['Get current datetime'].json['currentDate'] }}\",\n    \"langs\": [ \"es-ES\" ]\n  }\n}\n",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{ $item(\"0\").$node[\"Create Session\"].json[\"accessJwt\"] }}"
            }
          ]
        }
      },
      "notesInFlow": true,
      "typeVersion": 4.1
    },
    {
      "id": "b9d02b7f-f73d-4b53-a1ef-c693a0847bb2",
      "name": "Upload image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        320,
        0
      ],
      "parameters": {
        "url": "https://bsky.social/xrpc/com.atproto.repo.uploadBlob",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "binaryData",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{ $item(\"0\").$node[\"Create Session\"].json[\"accessJwt\"] }}"
            },
            {
              "name": "Content-Type",
              "value": "={{ $json.enclosure.type }}"
            }
          ]
        },
        "inputDataFieldName": "data"
      },
      "notesInFlow": true,
      "typeVersion": 4.1
    },
    {
      "id": "3593c517-03af-483f-b0d3-c538840a55d9",
      "name": "Download image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        120,
        0
      ],
      "parameters": {
        "url": "={{ $('RSS Feed Trigger').item.json.enclosure.url }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        }
      },
      "typeVersion": 4.2,
      "alwaysOutputData": false
    },
    {
      "id": "71edf797-6aac-44dd-b988-a8b7e5667bac",
      "name": "Create Session",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -320,
        0
      ],
      "parameters": {
        "url": "https://bsky.social/xrpc/com.atproto.server.createSession",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "identifier",
              "value": "<your username here>"
            },
            {
              "name": "password",
              "value": "<your app password here>"
            }
          ]
        }
      },
      "notesInFlow": true,
      "typeVersion": 4.1
    },
    {
      "id": "c28b280f-c169-4f03-9f93-20655cc0c095",
      "name": "RSS Feed Trigger",
      "type": "n8n-nodes-base.rssFeedReadTrigger",
      "position": [
        -580,
        0
      ],
      "parameters": {
        "feedUrl": "<your feed URL here>",
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "1217c82c-694a-48dd-82d3-2ca5c24891c7",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -380,
        -120
      ],
      "parameters": {
        "width": 220,
        "height": 300,
        "content": "### Configure your credentials\nCreate [an app password](https://bsky.app/settings/app-passwords) first"
      },
      "typeVersion": 1
    },
    {
      "id": "5e08fd12-8ba0-4c58-b813-0ffefb5be37c",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        460,
        -120
      ],
      "parameters": {
        "width": 210,
        "height": 300,
        "content": "### Customize the text \nYou can customize the message text here"
      },
      "typeVersion": 1
    },
    {
      "id": "3c472b8f-928a-44bc-b75d-56c7b263f490",
      "name": "Get current datetime",
      "type": "n8n-nodes-base.dateTime",
      "position": [
        -100,
        0
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "5d9905af-1194-41ff-acfd-773611092bee",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        60,
        -120
      ],
      "parameters": {
        "width": 220,
        "height": 300,
        "content": "### Image preview \nBy default retrieved from the feed, but you can configure a custom one here from an URL"
      },
      "typeVersion": 1
    },
    {
      "id": "faeaf1bd-560e-4606-8a67-48ae8a18f17a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -140,
        -400
      ],
      "parameters": {
        "color": 5,
        "width": 420,
        "height": 180,
        "content": "## Post new RSS feed items as BlueSky posts\nThis will create a BlueSky post with each new RSS feed item, including the feed title, post image, link and content (up to 200 characters)"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Upload image": {
      "main": [
        [
          {
            "node": "Create Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Session": {
      "main": [
        [
          {
            "node": "Get current datetime",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download image": {
      "main": [
        [
          {
            "node": "Upload image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Feed Trigger": {
      "main": [
        [
          {
            "node": "Create Session",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get current datetime": {
      "main": [
        [
          {
            "node": "Download image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

How this works

This workflow automates the creation and posting of content from RSS feeds, saving you hours of manual monitoring and publishing by instantly generating new posts whenever a feed updates. It's ideal for content creators, bloggers, or social media managers who need to keep their platforms fresh with syndicated articles without constant oversight. The key step involves the RSS Feed Trigger detecting new items, followed by HTTP Request nodes that download images, create sessions, and upload everything to your chosen platform like WordPress or a custom API.

Use this workflow when you want real-time automation for aggregating news or blog updates into your own site, especially for high-volume feeds that update frequently. Avoid it for static content or feeds with complex authentication that exceeds basic HTTP requests, as it relies on simple polling. Common variations include adding email notifications after posting or filtering RSS items by keywords before creation.

About this workflow

Http Rssfeedread. Uses httpRequest, rssFeedReadTrigger, stickyNote, dateTime. Event-driven trigger; 10 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

General

Create Animated Stories using GPT-4o-mini, Midjourney, Kling and Creatomate API. Uses httpRequest, stickyNote, manualTrigger. Event-driven trigger; 51 nodes.

HTTP Request
General

Generate Leads with Google Maps - AlexK1919. Uses manualTrigger, scheduleTrigger, executeWorkflowTrigger, stopAndError. Event-driven trigger; 42 nodes.

Execute Workflow Trigger, Stop And Error, HTTP Request +1
General

Limit Code. Uses microsoftOutlookTrigger, httpRequest, limit, noOp. Event-driven trigger; 41 nodes.

Microsoft Outlook Trigger, HTTP Request
General

AutoQoutesV2_template. Uses manualTrigger, httpRequest, stickyNote, googleSheets. Event-driven trigger; 28 nodes.

HTTP Request, Google Sheets, Google Drive +2
General

Turn YouTube Videos into Summaries, Transcripts, and Visual Insights. Uses manualTrigger, stickyNote, httpRequest. Event-driven trigger; 26 nodes.

HTTP Request