1. The Challenge of Managing Podcast RSS Feeds Manually
Meet Anna, a passionate podcaster hosting the comedy podcast series “Kalk und Welk” on ARD Audiothek. She loves creating content but spends countless hours every week updating her podcast’s RSS feed manually by extracting episode details from web pages and formatting them properly. This repetitive task wastes her precious time, introduces human errors into feed entries, and slows down her content release schedule. Anna often misses updating the feed promptly, causing listeners frustration and reduced engagement.
For Anna, manually handling RSS feeds is not only tedious but also error-prone. Each episode page contains rich metadata buried within complex web structures that must be carefully parsed and transformed into the RSS XML format. Without automation, Anna juggles inconsistent episode links, duplicate entries, and formatting issues that can diminish her podcast’s professionalism and listener experience.
2. How This n8n Automation Solves the Podcast Feed Puzzle
This custom n8n workflow automates the entire podcast RSS feed generation process directly from the ARD Audiothek podcast page. Here’s what happens:
- When triggered, it fetches the podcast overview page containing all episode links.
- It extracts all relevant episode URLs automatically by scanning for links within the page.
- Duplicate episode links are removed to avoid redundant entries in the feed.
- Each episode page is fetched individually to retrieve detailed metadata embedded in JSON scripts.
- The extracted data is parsed and used to dynamically generate well-structured RSS XML feed items with all required tags.
- Finally, the workflow serves this fresh RSS feed via a webhook URL, enabling podcast platforms to access updated content seamlessly.
This automation frees Anna from manual updates, cuts down errors, and ensures her RSS feed is always current and properly formatted. She can now focus on recording quality episodes instead of managing tedious feed edits—saving hours every week.
3. Prerequisites ⚙️
- n8n Account: Access to an n8n instance with workflow editing and webhook capabilities.
- Internet Access: To make HTTP requests to the ARD Audiothek podcast site.
- No external integrations: This workflow relies on built-in nodes only (HTTP Request, HTML Extract, Function, Manual Trigger, Webhook).
- Optional self-hosting: For greater control or performance, consider self-hosting n8n (see Hostinger guide).
4. Step-by-Step Setup Guide to Automate Your Podcast RSS Feed ✏️
Step 1: Add a Manual Trigger to Start the Workflow
Open your n8n editor, then add a Manual Trigger node. This allows you to run the workflow manually for testing.
- Click
+ Add Node→ Search forManual Trigger→ Add it. - No parameters are needed here.
- You should see a node labeled “On clicking ‘execute'” in the canvas.
- Common mistake: Forgetting to set up the trigger properly will prevent manual runs.
Step 2: Fetch the Podcast Overview Page
Add an HTTP Request node connected to the manual trigger. Configure it like this:
- URL:
https://www.ardaudiothek.de/sendung/kalk-und-welk/10777871/ - Response Format:
String - Keep other fields as default.
This step downloads the HTML content of the podcast’s main page where episode links are listed.
Step 3: Extract Episode Links from the Overview
Add an HTML Extract node linked to the HTTP Request node.
- CSS Selector:
a[href*="/episode/"] - Attribute to Extract:
href - Set to return an array of URLs.
Here, you extract all episode URLs that the podcast page links to.
Step 4: Split Links into Individual Items
Add an Item Lists node configured to split out the array into separate items.
- Set the
Field to Split Outto the key from previous node that contains links (likely namedlinks). - Set
Destination Field Nameto something likelink.
This prepares each episode link to be processed individually.
Step 5: Remove Duplicate Links
Add another Item Lists node. Configure it to remove duplicates based on the individual links. This ensures only unique episodes are processed.
Step 6: Fetch Each Episode Page
Add an HTTP Request node connected after duplicates removal.
- URL: Use expression
=https://www.ardaudiothek.de{{ $json["link"] }}to form full episode URLs dynamically. - Set
Response FormattoString.
This fetches the raw HTML for each episode’s detailed page.
Step 7: Extract Script Tag Containing Episode Metadata
Add an HTML Extract node after the episode fetch node.
- CSS Selector:
script:nth-of-type(2) - Set it to return the entire HTML content of that script tag.
This assumes the second script tag holds JSON data describing the episode.
Step 8: Parse JSON Episode Data
Add a Set node to parse the extracted JSON string.
- In the node parameters, add a field named
datawith the value set to=JSON.parse($json.script). - Keep Only Set enabled to prune other fields.
This transforms the raw JSON text into usable JSON object data.
Step 9: Generate RSS Feed Items via Code
Add a Function node to iterate through all items and create well-formed XML feed entries.
Copy this JavaScript code exactly:
const escapeHTML = str => str.replace(/[&<>'"]/g,
tag => ({
'&': '&',
'<': '<',
'>': '>',
"'": ''',
'"': '"'
}[tag]));
let feedItems = [];
for (item of items) {
feedItems.push(`-
${escapeHTML(item.json.data.name)}
${item.json.data.identifier}
${DateTime.fromISO(item.json.data.datePublished).toRFC2822()}
${escapeHTML(item.json.data.description)}
`);
}
return [{
data: `
${escapeHTML(items[0].json.data.partOfSeries.name)}
${escapeHTML(items[0].json.data.partOfSeries.about)}
${items[0].json.data.inLanguage}
no
${items[0].json.data.partOfSeries.url}
© ${$now.toFormat('yyyy')} ${escapeHTML(items[0].json.data.productionCompany)}
${escapeHTML(items[0].json.data.productionCompany)}
${feedItems.join('n')}
`
}];This creates a full podcast RSS feed XML string including iTunes tags.
Step 10: Serve the RSS Feed Using a Webhook Response
Add a Respond to Webhook node to output the final XML as the webhook’s response.
- Set
Response Codeto 200. - Add a response header:
Content-Typewith valueapplication/rss+xml. - Set response body to the XML string generated by the Function node.
Now, when you navigate to the webhook URL generated by the Webhook node, your podcast RSS feed will be live and ready to use.
5. Customizations ✏️
- Change Podcast URL: Modify the URL in the first HTTP Request node to scrape another podcast from ARD Audiothek.
- Adjust Episode Filtering: In the HTML Extract node, tweak the CSS selector if the site changes structure.
- Modify RSS Categories: In the Function node code, update the
itunes:categoryelement to fit your podcast genre. - Include Explicit Content Flag: In the Function node, dynamically set
itunes:explicitbased on episode metadata if available. - Change Feed Update Trigger: Replace the Manual Trigger with a Cron node to update automatically on schedule.
6. Troubleshooting 🔧
Problem: “No links extracted from overview page.”
Cause: Podcast page HTML structure changed or CSS selector incorrect.
Solution: Inspect the page with browser developer tools, update CSS selector in the Extract links node accordingly.
Problem: “Parsing JSON failed in Parse JSON node.”
Cause: Script tag content is malformed or not JSON.
Solution: Check which script tag holds metadata, adjust the CSS selector in the Extract script node. Log output to debug.
Problem: “Webhook response is empty or invalid XML.”
Cause: Function node JavaScript error or feedItems array empty.
Solution: Verify Function node code and ensure episode data is correctly parsed and passed.
7. Pre-Production Checklist ✅
- Test the Manual Trigger and verify the HTTP Request fetches the podcast overview page HTML.
- Check the Extract links node extracts a valid array of episode URLs.
- Ensure duplicates are removed properly with the Item Lists node.
- Confirm episode pages return JSON script data correctly.
- Validate the RSS XML output is well-formed using an online validator before going live.
8. Deployment Guide
Activate your workflow by setting the Webhook node URL live. To do this:
- Save and activate your workflow.
- Find the webhook URL from the Webhook node settings.
- Share this URL with your podcast publishing platform as the RSS feed source.
- Monitor workflow executions from the n8n dashboard for any errors.
- Optionally set up a Cron Trigger to automate feed updates on a schedule.
9. FAQs
Q: Can I use this workflow for other podcast platforms?
A: This workflow is tailored for ARD Audiothek’s HTML structure. Other sites may require CSS selectors and JSON parsing adjustments.
Q: Does this consume API credits?
A: No, it uses HTTP requests to public webpages only, so no API keys or credits are consumed.
Q: Is my data secure?
A: Yes, all data is processed within your n8n instance. Consider self-hosting for full control.
10. Conclusion
By implementing this n8n automation, you’ve transformed a tedious podcast RSS feed maintenance task into a painless, error-free process. Your feed now updates effortlessly with the latest episode metadata, saving you hours weekly and boosting your podcast’s professionalism.
Next, consider extending this workflow by integrating notifications to promote new episodes on social media or saving episode data to Google Sheets for detailed analytics.
Keep experimenting and let n8n handle the repetitive work so you can focus on creating great content!