Automatisation n8n : création de flux RSS à partir de pages web
Ce workflow n8n a pour objectif de créer un flux RSS à partir de pages web en automatisant la collecte et le traitement des données. Dans un contexte où les entreprises cherchent à diffuser rapidement des informations pertinentes, ce type d'automatisation n8n s'avère essentiel pour les équipes marketing et communication. Les cas d'usage incluent la génération automatique de contenus pour des newsletters, des alertes de mise à jour de contenu ou encore la syndication de contenus d'actualités.
- Étape 1 : Le workflow débute par un déclencheur manuel, permettant à l'utilisateur de lancer le processus à tout moment.
- Étape 2 : Ensuite, une requête HTTP est effectuée pour récupérer la page d'aperçu souhaitée.
- Étape 3 : Les liens pertinents sont extraits de la page grâce à un nœud d'extraction HTML.
- Étape 4 : Pour éviter les doublons, un nœud de suppression de liens en double est utilisé.
- Étape 5 : Les listes sont ensuite séparées pour faciliter le traitement.
- Étape 6 : Une nouvelle requête HTTP est lancée pour accéder à chaque page d'épisode.
- Étape 7 : Le script de chaque épisode est extrait, puis analysé au format JSON.
- Étape 8 : Les éléments du flux sont définis et finalement, le flux est servi via un webhook. Cette automatisation permet aux entreprises de gagner un temps précieux tout en assurant une diffusion rapide et efficace de l'information.
Workflow n8n RSS, web scraping, flux de contenu : vue d'ensemble
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Workflow n8n RSS, web scraping, flux de contenu : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"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 '&': '&',\n '<': '<',\n '>': '>',\n \"'\": ''',\n '\"': '"'\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>© ${$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
}
]
]
}
}
}Workflow n8n RSS, web scraping, flux de contenu : pour qui est ce workflow ?
Ce workflow s'adresse aux équipes marketing, aux responsables de communication et aux développeurs souhaitant automatiser la création de flux RSS à partir de contenus web. Il est idéal pour les entreprises de taille petite à moyenne qui cherchent à optimiser leur diffusion d'informations.
Workflow n8n RSS, web scraping, flux de contenu : problème résolu
Ce workflow résout le problème de la collecte manuelle d'informations sur des pages web pour créer des flux RSS. Il élimine les frustrations liées à la mise à jour régulière des contenus et réduit le risque d'erreurs humaines. Grâce à cette automatisation, les utilisateurs peuvent obtenir un flux RSS actualisé en continu, leur permettant de se concentrer sur d'autres tâches stratégiques.
Workflow n8n RSS, web scraping, flux de contenu : étapes du workflow
Étape 1 : L'utilisateur déclenche manuellement le workflow.
- Étape 1 : Une requête HTTP récupère la page d'aperçu.
- Étape 2 : Les liens sont extraits de la page.
- Étape 3 : Les doublons sont supprimés.
- Étape 4 : Les listes sont séparées pour un traitement plus facile.
- Étape 5 : Une nouvelle requête HTTP est effectuée pour chaque page d'épisode.
- Étape 6 : Le script de chaque épisode est extrait.
- Étape 7 : Les données sont analysées et formatées en JSON.
- Étape 8 : Les éléments du flux sont définis.
- Étape 9 : Le flux est servi via un webhook.
Workflow n8n RSS, web scraping, flux de contenu : guide de personnalisation
Pour personnaliser ce workflow, vous pouvez modifier l'URL de la page d'aperçu dans le nœud de requête HTTP. Assurez-vous également d'ajuster les valeurs d'extraction dans le nœud d'extraction HTML pour correspondre à la structure de la page que vous ciblez. Si vous souhaitez ajouter d'autres sources, il suffit de dupliquer les nœuds de requête HTTP et d'adapter les paramètres. Pensez à sécuriser le webhook en définissant des options d'authentification si nécessaire.