Workflow n8n

Automatisation Telegram avec n8n : gestion des liens en temps réel

Ce workflow n8n a pour objectif d'automatiser la gestion des liens partagés dans un canal Telegram, facilitant ainsi leur sauvegarde et leur organisation. Dans un contexte où les équipes doivent souvent gérer un flux constant d'informations, ce processus permet de centraliser les liens importants et de les enregistrer dans des outils comme Readeck et Hoarder. Les cas d'usage incluent la collecte de ressources pour des projets, la gestion de contenu ou encore l'organisation de références pour des équipes de travail.

  • Étape 1 : Le workflow commence par un déclencheur programmé qui active le processus à intervalles réguliers.
  • Étape 2 : Les données sont ensuite divisées à l'aide d'un nœud de séparation, permettant de traiter les informations de manière distincte.
  • Étape 3 : Plusieurs nœuds de notes autocollantes sont utilisés pour stocker temporairement les liens non sauvegardés.
  • Étape 4 : Des requêtes HTTP sont effectuées pour récupérer et sauvegarder les liens dans Readeck et Hoarder, assurant ainsi que toutes les ressources pertinentes sont enregistrées.
  • Étape 5 : Enfin, le workflow se termine par la mise à jour des notes autocollantes avec les liens sauvegardés, garantissant une traçabilité et une accessibilité des informations. Les bénéfices business de cette automatisation incluent une réduction significative du temps passé à gérer manuellement les liens, une meilleure organisation des ressources et une augmentation de la productivité des équipes.
Tags clés :automatisationTelegramn8ngestion des liensproductivité
Catégorie: Scheduled · Tags: automatisation, Telegram, n8n, gestion des liens, productivité0

Workflow n8n Telegram, gestion des liens, productivité : vue d'ensemble

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Workflow n8n Telegram, gestion des liens, productivité : détail des nœuds

  • Schedule Trigger

    Ce noeud déclenche le workflow selon un calendrier défini.

  • Split Out

    Ce noeud permet de diviser les données en plusieurs sorties selon des critères spécifiés.

  • Sticky Note

    Ce noeud crée une note autocollante avec un contenu et des dimensions spécifiées.

  • Sticky Note1

    Ce noeud crée une seconde note autocollante avec un contenu et des dimensions spécifiées.

  • Sticky Note2

    Ce noeud crée une troisième note autocollante avec un contenu et des dimensions spécifiées.

  • not_saved_links_hd

    Ce noeud exécute un code JavaScript pour traiter des données non sauvegardées.

  • not_saved_links_rd

    Ce noeud exécute un autre code JavaScript pour traiter des données non sauvegardées.

  • saved_links_rd

    Ce noeud définit des valeurs pour les liens sauvegardés dans le workflow.

  • save_link_rd

    Ce noeud envoie une requête HTTP pour sauvegarder un lien avec les paramètres spécifiés.

  • save_link_hd

    Ce noeud envoie une requête HTTP pour sauvegarder un autre lien avec les paramètres spécifiés.

  • get_links_rd

    Ce noeud envoie une requête HTTP pour récupérer des liens avec les paramètres spécifiés.

  • get_links_hd

    Ce noeud envoie une requête HTTP pour récupérer d'autres liens avec les paramètres spécifiés.

  • saved_links_hd

    Ce noeud définit des valeurs pour les liens sauvegardés dans un autre contexte.

  • channel_links_tg

    Ce noeud exécute un code JavaScript pour traiter les liens de canal.

  • channel_items_tg

    Ce noeud envoie une requête HTTP pour récupérer des éléments de canal avec les paramètres spécifiés.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "id": "Gd4MsAZGnSGfBwaw",
  "meta": {
    "instanceId": "8fb543b511022c43ab705107ba101545bb8b0fdb9bd6ebc4cca28dc9591a036e"
  },
  "name": "Telegram channel to Readeck & Hoarder",
  "tags": [],
  "nodes": [
    {
      "id": "6e50d52e-8b9e-4c92-82a1-af366c7a2ccf",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -440,
        -700
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "bb7430a2-a7b7-47f2-9ba3-a3e43c8da004",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -100,
        -120
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "bookmarks"
      },
      "typeVersion": 1
    },
    {
      "id": "922aeb0b-29b1-46c6-9b18-76c02eca5a9e",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -460,
        -480
      ],
      "parameters": {
        "width": 1120,
        "height": 220,
        "content": "## Readeck"
      },
      "typeVersion": 1
    },
    {
      "id": "64d4ca0b-2c16-441e-9461-5707be877132",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -220,
        -740
      ],
      "parameters": {
        "width": 480,
        "height": 200,
        "content": "## Telegram"
      },
      "typeVersion": 1
    },
    {
      "id": "13ae24ec-ac11-470a-bad4-76403861f632",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -460,
        -180
      ],
      "parameters": {
        "width": 1120,
        "height": 220,
        "content": "## Hoarder"
      },
      "typeVersion": 1
    },
    {
      "id": "c606f434-d37b-4406-997a-1e7f17319281",
      "name": "not_saved_links_hd",
      "type": "n8n-nodes-base.code",
      "position": [
        260,
        -120
      ],
      "parameters": {
        "jsCode": "const linksCanalItems = $('channel_links_tg').all();\nconst saved_links_items = $('saved_links_hd').all();\n\n// Extract links\nconst saved_links = new Set(\n    saved_links_items.map(item => String(item.json.content.url))\n);\n\n// Filter\nconst filteredLinks = linksCanalItems.filter(item => {\n    return !saved_links.has(String(item.json.url));\n});\n\nreturn filteredLinks;\n\n\n\n\n\n\n\n\n"
      },
      "typeVersion": 2
    },
    {
      "id": "d0f61836-798c-4835-ae8f-8f184b6720ed",
      "name": "not_saved_links_rd",
      "type": "n8n-nodes-base.code",
      "position": [
        260,
        -420
      ],
      "parameters": {
        "jsCode": "const linksCanalItems = $('channel_links_tg').all();\nconst saved_links_items = $('saved_links_rd').all();\n\n// Extract urls\nconst saved_urls = new Set(\n    saved_links_items.map(item => String(item.json.url))\n);\n\n// Filter\nconst filteredLinks = linksCanalItems.filter(item => {\n    return !saved_urls.has(String(item.json.url));\n});\n\nreturn filteredLinks;\n\n\n\n\n\n\n\n\n"
      },
      "typeVersion": 2
    },
    {
      "id": "f33349a7-361a-4b0f-844b-1ca5ded2aeab",
      "name": "saved_links_rd",
      "type": "n8n-nodes-base.set",
      "position": [
        80,
        -420
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "8c6f3806-0fb8-4c76-a0bc-19b588717430",
              "name": "id",
              "type": "string",
              "value": "={{ $json.id }}"
            },
            {
              "id": "ef41cba3-2844-479c-9467-6b94ae24c98b",
              "name": "url",
              "type": "string",
              "value": "={{ $json.url }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "63d45b19-e878-418e-8eb5-c16b50af9669",
      "name": "save_link_rd",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        460,
        -420
      ],
      "parameters": {
        "url": "={{$env.READECK_SERVER}}/api/bookmarks",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "url",
              "value": "={{ $json.url }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json"
            },
            {
              "name": "authorization",
              "value": "=Bearer {{$env.READECK_API_KEY}}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "9416a858-1a25-4c3e-a49e-153118c268a7",
      "name": "save_link_hd",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        460,
        -120
      ],
      "parameters": {
        "url": "={{$env.HOARDER_SERVER}}/api/v1/bookmarks",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "type",
              "value": "link"
            },
            {
              "name": "url",
              "value": "={{ $json.url }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{$env.HOARDER_API_KEY}}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "13693467-cd75-4774-9072-832419606ab2",
      "name": "get_links_rd",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -280,
        -420
      ],
      "parameters": {
        "url": "={{$env.READECK_SERVER}}/api/bookmarks",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json"
            },
            {
              "name": "authorization",
              "value": "=Bearer {{$env.READECK_API_KEY}}"
            }
          ]
        }
      },
      "typeVersion": 4.2,
      "alwaysOutputData": true
    },
    {
      "id": "e4ed315d-d065-425a-b30d-eca1509670cc",
      "name": "get_links_hd",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -280,
        -120
      ],
      "parameters": {
        "url": "={{$env.HOARDER_SERVER}}/api/v1/bookmarks",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{$env.HOARDER_API_KEY}}"
            }
          ]
        }
      },
      "typeVersion": 4.2,
      "alwaysOutputData": true
    },
    {
      "id": "f54d9a4d-f00b-41bf-988a-8920d0046424",
      "name": "saved_links_hd",
      "type": "n8n-nodes-base.set",
      "position": [
        80,
        -120
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b07ce8e5-0b67-4c9c-831a-7a52f92f5744",
              "name": "content.url",
              "type": "string",
              "value": "={{ $json.content.url }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "d4e83b9d-5988-46f4-b853-86daec274dba",
      "name": "channel_links_tg",
      "type": "n8n-nodes-base.code",
      "position": [
        120,
        -700
      ],
      "parameters": {
        "jsCode": "// Define the chatId from the environment variable\nconst chatId = parseInt($env.TG_SHERLINK_ID, 10);\n// Access the \"result\" field from the previous node's output\nconst updates = $node[\"channel_items_tg\"].json[\"result\"];\n// Check if \"result\" is an array\nif (!Array.isArray(updates)) {\n  return []; // Return empty if there are no messages\n}\n// Filter and process the messages\nconst filteredUpdates = updates\n  .map(update => {\n    // Ensure message from the specified channel\n    if (update.channel_post && update.channel_post.chat && update.channel_post.chat.id === chatId) {\n      return {\n        id: update.channel_post.message_id,\n        url: update.channel_post.text\n      };\n    }\n    return null;\n  })\n  \n  .filter(item => item !== null) // Filter nulls\n  .filter(item => {\n    // Filter only with hyperlink in text\n    const text = item.url || \"\"; // Defined text\n    return /https?:\\/\\/[^\\s]+/.test(text); // hyperlink\n  });\n// Convert each array element into an individual item\nreturn filteredUpdates.map(update => ({ json: update }));\n"
      },
      "typeVersion": 2,
      "alwaysOutputData": false
    },
    {
      "id": "ca306aed-e682-4c35-a257-3b65bcfde895",
      "name": "channel_items_tg",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -80,
        -700
      ],
      "parameters": {
        "url": "=https://api.telegram.org/bot{{$env.TG_SHERLINK_BOT_TOKEN}}/getUpdates",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {}
          ]
        }
      },
      "typeVersion": 4.2
    }
  ],
  "active": true,
  "pinData": {},
  "settings": {
    "callerPolicy": "workflowsFromSameOwner",
    "executionOrder": "v1"
  },
  "versionId": "85dd3731-0772-4b8b-b828-ae6a034d5419",
  "connections": {
    "Split Out": {
      "main": [
        [
          {
            "node": "saved_links_hd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get_links_hd": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get_links_rd": {
      "main": [
        [
          {
            "node": "saved_links_rd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "save_link_hd": {
      "main": [
        []
      ]
    },
    "save_link_rd": {
      "main": [
        []
      ]
    },
    "saved_links_hd": {
      "main": [
        [
          {
            "node": "not_saved_links_hd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "saved_links_rd": {
      "main": [
        [
          {
            "node": "not_saved_links_rd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "channel_items_tg",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "channel_items_tg": {
      "main": [
        [
          {
            "node": "channel_links_tg",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "channel_links_tg": {
      "main": [
        [
          {
            "node": "get_links_rd",
            "type": "main",
            "index": 0
          },
          {
            "node": "get_links_hd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "not_saved_links_hd": {
      "main": [
        [
          {
            "node": "save_link_hd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "not_saved_links_rd": {
      "main": [
        [
          {
            "node": "save_link_rd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n Telegram, gestion des liens, productivité : pour qui est ce workflow ?

Ce workflow s'adresse aux équipes marketing, aux gestionnaires de contenu et aux professionnels qui utilisent Telegram pour partager des informations. Il est idéal pour les entreprises de taille petite à moyenne qui cherchent à optimiser leur flux de travail sans nécessiter de compétences techniques avancées.

Workflow n8n Telegram, gestion des liens, productivité : problème résolu

Ce workflow résout le problème de la gestion manuelle des liens partagés dans Telegram, qui peut souvent entraîner des pertes d'informations et un désordre. En automatisant ce processus, les utilisateurs éliminent les frustrations liées à la recherche de liens importants et réduisent le risque de perdre des ressources précieuses. Après la mise en place de cette automatisation, les utilisateurs bénéficient d'une organisation claire et d'un accès rapide à tous les liens sauvegardés.

Workflow n8n Telegram, gestion des liens, productivité : étapes du workflow

Étape 1 : Le déclencheur programmé active le workflow à des intervalles définis.

  • Étape 1 : Les données sont séparées pour un traitement distinct.
  • Étape 2 : Les liens non sauvegardés sont temporairement stockés dans des notes autocollantes.
  • Étape 3 : Des requêtes HTTP sont envoyées pour récupérer et sauvegarder les liens dans Readeck et Hoarder.
  • Étape 4 : Les notes autocollantes sont mises à jour avec les liens sauvegardés pour garantir leur accessibilité.

Workflow n8n Telegram, gestion des liens, productivité : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez ajuster les paramètres du déclencheur programmé pour définir la fréquence d'exécution. Modifiez les URL dans les nœuds de requête HTTP pour pointer vers vos propres instances de Readeck et Hoarder. Vous pouvez également adapter le contenu des notes autocollantes pour inclure des informations supplémentaires selon vos besoins. Enfin, assurez-vous de sécuriser les accès aux API utilisées pour protéger vos données.