Workflow n8n

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.
Tags clés :automatisationRSSweb scrapingn8nflux de contenu
Catégorie: Manual · Tags: automatisation, RSS, web scraping, n8n, flux de contenu0

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

  • On clicking 'execute'

    Ce noeud déclenche le workflow manuellement lorsque l'utilisateur clique sur 'exécuter'.

  • Get overview page

    Ce noeud effectue une requête HTTP pour obtenir la page d'aperçu à partir d'une URL spécifiée.

  • Extract links

    Ce noeud extrait des liens d'un contenu HTML en utilisant des valeurs d'extraction définies.

  • Remove duplicate links

    Ce noeud supprime les liens en double d'une liste d'éléments.

  • Split out lists

    Ce noeud divise une liste d'éléments en plusieurs listes basées sur un champ spécifié.

  • Get episode page

    Ce noeud effectue une requête HTTP pour obtenir la page d'un épisode à partir d'une URL donnée.

  • Extract script

    Ce noeud extrait un script d'un contenu HTML en utilisant des valeurs d'extraction définies.

  • Parse JSON

    Ce noeud analyse des données JSON et peut conserver uniquement les valeurs définies.

  • Define feed items

    Ce noeud définit les éléments de flux en exécutant un code de fonction personnalisé.

  • Feed

    Ce noeud crée un webhook qui écoute les requêtes sur un chemin spécifié.

  • Serve feed

    Ce noeud répond à un webhook avec des options et un corps de réponse spécifiés.

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      '&': '&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>© ${$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.