n8n Workflow

Rss Feed For Ard Audiothek Podcasts

This n8n workflow automates tasks and integrates with various services. Rss Feed For Ard Audiothek Podcasts - ready to import and run in your n8n instance.

n8n workflow.json

About This Script

This n8n workflow automates tasks and integrates with various services. Rss Feed For Ard Audiothek Podcasts - ready to import and run in your n8n instance.
Features:
  • Makes HTTP requests to external APIs
  • Custom JavaScript function processing
  • Receives webhook events
Source Code
{
    "nodes": [
        {
            "id": "35c4aa9f-7535-4315-9174-fe97afc6de2e",
            "name": "On clicking 'execute'",
            "type": "n8n-nodes-base.manualTrigger",
            "position": [
                240,
                300
            ],
            "parameters": [],
            "typeVersion": 1
        },
        {
            "id": "ed1f4f78-733f-4dd5-9785-969c9ec0d637",
            "name": "Get overview page",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                460,
                300
            ],
            "parameters": {
                "url": "https://www.ardaudiothek.de/sendung/kalk-und-welk/10777871/",
                "options": [],
                "responseFormat": "string"
            },
            "typeVersion": 2
        },
        {
            "id": "28333c78-aa8f-401a-8033-2007a5e6991c",
            "name": "Extract links",
            "type": "n8n-nodes-base.htmlExtract",
            "position": [
                680,
                300
            ],
            "parameters": {
                "options": [],
                "extractionValues": {
                    "values": [
                        {
                            "key": "links",
                            "attribute": "href",
                            "cssSelector": "a[href*=\"/episode/\"]",
                            "returnArray": true,
                            "returnValue": "attribute"
                        }
                    ]
                }
            },
            "typeVersion": 1
        },
        {
            "id": "58840494-4208-49ce-b82a-d7cf8abd3b29",
            "name": "Remove duplicate links",
            "type": "n8n-nodes-base.itemLists",
            "position": [
                1120,
                300
            ],
            "parameters": {
                "operation": "removeDuplicates"
            },
            "typeVersion": 1
        },
        {
            "id": "17efb905-b947-4538-ab34-d50bf7fdbd75",
            "name": "Split out lists",
            "type": "n8n-nodes-base.itemLists",
            "position": [
                900,
                300
            ],
            "parameters": {
                "options": {
                    "destinationFieldName": "link"
                },
                "fieldToSplitOut": "links"
            },
            "typeVersion": 1
        },
        {
            "id": "59a69e64-ebba-42cb-b8d0-8dd73f0ae962",
            "name": "Get episode page",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                1340,
                300
            ],
            "parameters": {
                "url": "=https://www.ardaudiothek.de{{ $json[\"link\"] }}",
                "options": [],
                "responseFormat": "string"
            },
            "typeVersion": 2
        },
        {
            "id": "68749bff-1499-4ef5-aefd-c4b6233d0fa7",
            "name": "Extract script",
            "type": "n8n-nodes-base.htmlExtract",
            "position": [
                1560,
                300
            ],
            "parameters": {
                "options": [],
                "extractionValues": {
                    "values": [
                        {
                            "key": "script",
                            "cssSelector": "script:nth-of-type(2)",
                            "returnValue": "html"
                        }
                    ]
                }
            },
            "typeVersion": 1
        },
        {
            "id": "158e7b18-f58d-453f-80f8-97e65f0b1fde",
            "name": "Parse JSON",
            "type": "n8n-nodes-base.set",
            "position": [
                1780,
                300
            ],
            "parameters": {
                "values": {
                    "string": [
                        {
                            "name": "data",
                            "value": "={{ JSON.parse($json.script) }}"
                        }
                    ]
                },
                "options": [],
                "keepOnlySet": true
            },
            "typeVersion": 1
        },
        {
            "id": "a613c52e-395b-4d88-ab7d-b1cf2b664b43",
            "name": "Define feed items",
            "type": "n8n-nodes-base.function",
            "position": [
                2000,
                300
            ],
            "parameters": {
                "functionCode": "const escapeHTML = str => str.replace(/[&<>'\"]/g, \n  tag => ({\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      \"'\": '&#39;',\n      '\"': '&quot;'\n    }[tag]));\n\nlet feedItems = [];\nfor (item of items) {\n  feedItems.push(`<item>\n  <title>${escapeHTML(item.json.data.name)}</title>\n  <enclosure url=\"${item.json.data.associatedMedia.contentUrl}\" length=\"${item.json.data.timeRequired * 20 * 1000}\" type=\"${item.json.data.encodingFormat}\"/>\n  <guid isPermaLink=\"false\">${item.json.data.identifier}</guid>\n  <pubDate>${DateTime.fromISO(item.json.data.datePublished).toRFC2822()}</pubDate>\n  <description>${escapeHTML(item.json.data.description)}</description>\n</item>`);\n}\n\nreturn [{\n  data: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:itunes=\"http://www.itunes.com/dtds/podcast-1.0.dtd\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\">\n  <channel>\n    <title>${escapeHTML(items[0].json.data.partOfSeries.name)}</title>\n    <description>${escapeHTML(items[0].json.data.partOfSeries.about)}</description>\n    <itunes:image href=\"${escapeHTML(items[0].json.data.image)}\" />\n    <language>${items[0].json.data.inLanguage}</language>\n    <itunes:category text=\"Comedy\" />\n    <itunes:explicit>no</itunes:explicit>\n    <link>${items[0].json.data.partOfSeries.url}</link>\n    <copyright>\u00a9 ${$now.toFormat('yyyy')} ${escapeHTML(items[0].json.data.productionCompany)}</copyright>\n    <itunes:author>${escapeHTML(items[0].json.data.productionCompany)}</itunes:author>\n    ${feedItems.join('\\n')}\n  </channel>\n</rss>\n`\n}];\n"
            },
            "typeVersion": 1
        },
        {
            "id": "cbdc367d-a685-4f0b-a9f3-0aedc2c8b3c1",
            "name": "Feed",
            "type": "n8n-nodes-base.webhook",
            "position": [
                240,
                100
            ],
            "webhookId": "3fbd94de-2fb3-4b32-a46e-c237865479b9",
            "parameters": {
                "path": "3fbd94de-2fb3-4b32-a46e-c237865479b9.rss",
                "options": [],
                "responseMode": "responseNode"
            },
            "typeVersion": 1
        },
        {
            "id": "0dfb02cc-1944-4542-b5c5-9e0b198e143d",
            "name": "Serve feed",
            "type": "n8n-nodes-base.respondToWebhook",
            "position": [
                2220,
                300
            ],
            "parameters": {
                "options": {
                    "responseCode": 200,
                    "responseHeaders": {
                        "entries": [
                            {
                                "name": "Content-Type",
                                "value": "application/rss+xml"
                            }
                        ]
                    }
                },
                "respondWith": "text",
                "responseBody": "={{ $json[\"data\"] }}"
            },
            "typeVersion": 1
        }
    ],
    "connections": {
        "Feed": {
            "main": [
                [
                    {
                        "node": "Get overview page",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Parse JSON": {
            "main": [
                [
                    {
                        "node": "Define feed items",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Extract links": {
            "main": [
                [
                    {
                        "node": "Split out lists",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Extract script": {
            "main": [
                [
                    {
                        "node": "Parse JSON",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Split out lists": {
            "main": [
                [
                    {
                        "node": "Remove duplicate links",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Get episode page": {
            "main": [
                [
                    {
                        "node": "Extract script",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Define feed items": {
            "main": [
                [
                    {
                        "node": "Serve feed",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Get overview page": {
            "main": [
                [
                    {
                        "node": "Extract links",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "On clicking 'execute'": {
            "main": [
                [
                    {
                        "node": "Get overview page",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Remove duplicate links": {
            "main": [
                [
                    {
                        "node": "Get episode page",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    },
    "n8n_version": "1.5.0"
}
Requirements
n8n instance, API credentials for connected services
Tags
#n8n #automation #workflow
Quick Actions
More in n8n Workflows