Notificaciones de cumpleaños y efemérides

Avanzado

Este es unOtherflujo de automatización del dominio deautomatización que contiene 26 nodos.Utiliza principalmente nodos como If, Set, Code, Merge, Telegram. Notificaciones de cumpleaños y efemérides (Contactos de Google, Telegram y Home Assistant)

Requisitos previos
  • Bot Token de Telegram
  • Pueden requerirse credenciales de autenticación para la API de destino

Categoría

Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "y76cTME4BEhw95mU",
  "meta": {
    "instanceId": "89af474e60c70a1e45bf242e266e9ca1446dd974ab86f6d185b8ccded3effed2",
    "templateCredsSetupCompleted": true
  },
  "name": "Birthday and Ephemeris Notification (Google Contact, Telegram & Home Assistant)",
  "tags": [
    {
      "id": "TwicI38nhopsenFM",
      "name": "tutorial",
      "createdAt": "2025-05-01T16:25:25.881Z",
      "updatedAt": "2025-05-01T16:25:25.881Z"
    }
  ],
  "nodes": [
    {
      "id": "a2f6a1b1-07e7-4ea8-8c44-507e4a4ce8d7",
      "name": "Google Contacts",
      "type": "n8n-nodes-base.googleContacts",
      "position": [
        500,
        -420
      ],
      "parameters": {
        "fields": [
          "birthdays",
          "names"
        ],
        "options": {},
        "rawData": true,
        "operation": "getAll",
        "returnAll": true
      },
      "credentials": {
        "googleContactsOAuth2Api": {
          "id": "lGaPwXvxmFj4DUSB",
          "name": "Google Contacts account (TF)"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "448e68ee-81e5-4487-b023-0aeb7666009d",
      "name": "Obtener lista de primeros nombres",
      "type": "n8n-nodes-base.set",
      "position": [
        940,
        -220
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a14c29b7-0902-4184-987d-2c367dbcd257",
              "name": "prénoms",
              "type": "string",
              "value": "={{ Array.from(new Set([...( $json.name || [] ), ...( $json.givenName || [] )])) }}\n"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "de0a4d55-7bd7-4d24-97a0-593442472a57",
      "name": "Primeros nombres",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        720,
        -220
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "names[0].givenName"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a8ee01f9-05d6-4589-b399-a0ff141995ec",
      "name": "Nominis - Santos del día",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        720,
        40
      ],
      "parameters": {
        "url": "={{ $json.URL }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "4c6c0726-187f-4697-b935-a93e68e7e9d2",
      "name": "Combinar Nombres y Santos",
      "type": "n8n-nodes-base.merge",
      "position": [
        1160,
        -220
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3
    },
    {
      "id": "61384cde-744a-4091-b639-dfbb9e801026",
      "name": "¿No hay Santo Hoy?",
      "type": "n8n-nodes-base.if",
      "position": [
        1600,
        -220
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "91fd004e-ac14-4957-b3eb-aeb08ddcb90f",
              "operator": {
                "type": "boolean",
                "operation": "false",
                "singleValue": true
              },
              "leftValue": "={{ $json.hasMatch }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "36836914-c1c0-45e4-8e40-e95255af0c04",
      "name": "Redactar Mensaje",
      "type": "n8n-nodes-base.set",
      "position": [
        2620,
        -400
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "00b2965c-a9c8-45ea-8dff-b241517aa474",
              "name": "message",
              "type": "string",
              "value": "=Nous sommes le {{ $('Set Date Offset').item.json.date.toDateTime().setLocale('fr').format('dd LLL yyyy') }}:\n{{ $json.Birthday }}{{ $json.fete }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1c3eecb1-5623-4f0d-b361-9b1f0f520c40",
      "name": "Lista única de Cumpleaños",
      "type": "n8n-nodes-base.set",
      "position": [
        1160,
        -620
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "7a8cde23-384d-41b1-bda8-4fb954f1ded9",
              "name": "anniversary",
              "type": "array",
              "value": "={{ [].concat($json.displayName || [], $json.name || []) }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8417f6b0-1174-48ae-81a0-367a95eb9f71",
      "name": "Obtener URL de Nominis",
      "type": "n8n-nodes-base.set",
      "position": [
        500,
        40
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "d5a204e9-b6b4-46d7-8e10-43b272c3df27",
              "name": "URL",
              "type": "string",
              "value": "=https://nominis.cef.fr/json/nominis.php?jour={{ $json.date.slice(8,10) }}&mois={{ $json.date.slice(5,7) }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ae03ca3a-b89e-461d-9fee-8fa5e0835ff6",
      "name": "Enviar Mensaje Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2840,
        -300
      ],
      "webhookId": "eeda1f74-6e01-4507-895d-eb4448cf97c3",
      "parameters": {
        "text": "={{ $json.message }}",
        "chatId": "Enter ID here",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "CXhPqEQYE959f1rf",
          "name": "Telegram account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "72561cef-18c0-42bb-aeba-5a0c9edebbb2",
      "name": "¿Cumpleaños Hoy?",
      "type": "n8n-nodes-base.if",
      "position": [
        720,
        -520
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "91fd004e-ac14-4957-b3eb-aeb08ddcb90f",
              "operator": {
                "type": "number",
                "operation": "equals"
              },
              "leftValue": "={{ $json.birthdays[0].date.month }}",
              "rightValue": "={{ $('Set Date Offset').item.json.date.toDateTime().month }}"
            },
            {
              "id": "e22d0adc-27bc-4806-a8eb-882a324de2e3",
              "operator": {
                "type": "number",
                "operation": "equals"
              },
              "leftValue": "={{ $json.birthdays[0].date.day }}",
              "rightValue": "={{ $('Set Date Offset').item.json.date.toDateTime().day }}"
            },
            {
              "id": "de6faccb-3dc9-46a5-9b9f-2dcd67323003",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "73b23829-3de7-4ce1-af1a-3c0d3d7b8d47",
      "name": "Establecer Desplazamiento de Fecha",
      "type": "n8n-nodes-base.set",
      "position": [
        180,
        -200
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c9683414-7c6c-434e-952d-fa7e6fb1d89d",
              "name": "date",
              "type": "string",
              "value": "={{ $today.plus({days:3}) }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "af033f75-db4f-4bdc-b2ea-fb5a9d226165",
      "name": "Todos los días a las 7am",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -40,
        -200
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "30 7 * * *"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "18992707-c7f8-471c-81c3-10c0c1c7562e",
      "name": "Lista de Santos del día",
      "type": "n8n-nodes-base.set",
      "position": [
        940,
        40
      ],
      "parameters": {
        "options": {
          "ignoreConversionErrors": true
        },
        "assignments": {
          "assignments": [
            {
              "id": "94478a1c-c75f-4e42-911d-53873b8a157a",
              "name": "Saints",
              "type": "array",
              "value": "={{ Array.from(new Set([...Object.keys($json.response.prenoms.majeurs), ...Object.keys($json.response.prenoms.derives)])) }}\n"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "0446428f-678c-4798-84a1-17a4cfdc5615",
      "name": "Verificar si algún nombre coincide con un Santo del día",
      "type": "n8n-nodes-base.code",
      "position": [
        1380,
        -220
      ],
      "parameters": {
        "jsCode": "// Helper function to remove accents and convert to lowercase\nfunction normalizeString(str) {\n  str\n    .normalize(\"NFD\")                  // Decompose accented characters\n    .replace(/[\\u0300-\\u036f]/g, \"\")   // Remove diacritics\n    .toLowerCase();                    // Convert to lowercase\n  return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nconst saints = $json[\"Saints\"]\n  .split(',')\n  .map(s => normalizeString(s.trim()))\n  .filter(s => s.length > 0);\n\nconst givenNames = $json[\"prénoms\"]\n  .split(',')\n  .map(s => normalizeString(s.trim()))\n  .filter(s => s.length > 0);\n\nconst matches = saints.filter(name => givenNames.includes(name));\nreturn [{ json: { matches, hasMatch: matches.length > 0 } }];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "8ae56325-b16b-4222-b14b-6631da56eba5",
      "name": "Agregar Cumpleaños",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        940,
        -620
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "names[0].displayName"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "8ebf2870-feab-4ed9-bc18-2e1bd46cf0c6",
      "name": "Agregar Sin Cumpleaños",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        940,
        -420
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "name"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a66b44d7-6fee-4480-b2e7-dbf862c27d9b",
      "name": "Mensaje de celebración \"Bonne fête\"",
      "type": "n8n-nodes-base.set",
      "position": [
        1960,
        -300
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "3b11dc8e-7905-4358-af6b-767550f79b55",
              "name": "fete",
              "type": "string",
              "value": "=\nBonne fête {{ $json.matches.join(', ') }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "40b49097-0910-44fc-9287-c976e13da70d",
      "name": "Mensaje de celebración de Cumpleaños",
      "type": "n8n-nodes-base.set",
      "position": [
        1960,
        -500
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "60bb0fb7-3395-4772-baf3-32922f7da1c4",
              "name": "Birthday",
              "type": "string",
              "value": "=\nAujourd'hui, c'est l'anniversaire de {{ $json.anniversary.join(', ') }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "54d92f95-03c9-4258-9ebf-66fb9f13f195",
      "name": "Fusionar Mensajes de Cumpleaños y Fête",
      "type": "n8n-nodes-base.merge",
      "position": [
        2180,
        -400
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3
    },
    {
      "id": "2e26ec97-bff0-41be-914e-e978cba49cd5",
      "name": "Verificar si hay celebraciones para make",
      "type": "n8n-nodes-base.if",
      "position": [
        2400,
        -400
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "5ba01568-dfa9-496d-afeb-30b9c08f5af5",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.Birthday }}",
              "rightValue": ""
            },
            {
              "id": "41f70dad-ec70-49f2-bc43-09b88eb60997",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.fete }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "693c9749-4d63-442a-b6f8-bd2090bb1be9",
      "name": "Enviar a Altavoz Google Home",
      "type": "n8n-nodes-base.homeAssistant",
      "position": [
        2840,
        -500
      ],
      "parameters": {
        "domain": "tts",
        "service": "speak",
        "resource": "service",
        "operation": "call",
        "serviceAttributes": {
          "attributes": [
            {
              "name": "entity_id",
              "value": "tts.google_translate_fr_fr"
            },
            {
              "name": "message",
              "value": "={{ $json.message }}"
            },
            {
              "name": "media_player_entity_id",
              "value": "media_player.google_cuisine"
            }
          ]
        }
      },
      "credentials": {
        "homeAssistantApi": {
          "id": "VurjB0xfUjis4pXd",
          "name": "Home Assistant account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e2f0d6c7-711c-49d4-82a6-5216a166c75a",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        -340
      ],
      "parameters": {
        "width": 400,
        "height": 300,
        "content": "## Scheduling & Offset\nIf you need to put some time interval between now and the time of trigger"
      },
      "typeVersion": 1
    },
    {
      "id": "4ddd362a-d254-42e8-8b81-ecb8e31951fe",
      "name": "Nota Adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        0
      ],
      "parameters": {
        "width": 620,
        "height": 340,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Call Nominis API\nAPI to get information from the Saint of the day\n[More Info](https://nominis.cef.fr/contenus/integrations.html)"
      },
      "typeVersion": 1
    },
    {
      "id": "dc4ca251-80ec-4069-94b2-205bb111d4b2",
      "name": "Nota Adhesiva2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        -720
      ],
      "parameters": {
        "width": 1260,
        "height": 680,
        "content": "## Birthday & First name Operations\nManipulation fo find first name & birthday dates and see if there are some matches"
      },
      "typeVersion": 1
    },
    {
      "id": "42577f80-1c10-4935-af8f-076f1f2838c3",
      "name": "Nota Adhesiva3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1880,
        -620
      ],
      "parameters": {
        "width": 860,
        "height": 520,
        "content": "## Celebration message composition"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f1eb642f-f198-4d75-86ee-c4967d4f8791",
  "connections": {
    "de0a4d55-7bd7-4d24-97a0-593442472a57": {
      "main": [
        [
          {
            "node": "448e68ee-81e5-4487-b023-0aeb7666009d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "72561cef-18c0-42bb-aeba-5a0c9edebbb2": {
      "main": [
        [
          {
            "node": "8ae56325-b16b-4222-b14b-6631da56eba5",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "8ebf2870-feab-4ed9-bc18-2e1bd46cf0c6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "36836914-c1c0-45e4-8e40-e95255af0c04": {
      "main": [
        [
          {
            "node": "ae03ca3a-b89e-461d-9fee-8fa5e0835ff6",
            "type": "main",
            "index": 0
          },
          {
            "node": "693c9749-4d63-442a-b6f8-bd2090bb1be9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "af033f75-db4f-4bdc-b2ea-fb5a9d226165": {
      "main": [
        [
          {
            "node": "73b23829-3de7-4ce1-af1a-3c0d3d7b8d47",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8417f6b0-1174-48ae-81a0-367a95eb9f71": {
      "main": [
        [
          {
            "node": "a8ee01f9-05d6-4589-b399-a0ff141995ec",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a2f6a1b1-07e7-4ea8-8c44-507e4a4ce8d7": {
      "main": [
        [
          {
            "node": "de0a4d55-7bd7-4d24-97a0-593442472a57",
            "type": "main",
            "index": 0
          },
          {
            "node": "72561cef-18c0-42bb-aeba-5a0c9edebbb2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "73b23829-3de7-4ce1-af1a-3c0d3d7b8d47": {
      "main": [
        [
          {
            "node": "a2f6a1b1-07e7-4ea8-8c44-507e4a4ce8d7",
            "type": "main",
            "index": 0
          },
          {
            "node": "8417f6b0-1174-48ae-81a0-367a95eb9f71",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "61384cde-744a-4091-b639-dfbb9e801026": {
      "main": [
        [
          {
            "node": "54d92f95-03c9-4258-9ebf-66fb9f13f195",
            "type": "main",
            "index": 1
          }
        ],
        [
          {
            "node": "a66b44d7-6fee-4480-b2e7-dbf862c27d9b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8ae56325-b16b-4222-b14b-6631da56eba5": {
      "main": [
        [
          {
            "node": "1c3eecb1-5623-4f0d-b361-9b1f0f520c40",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1c3eecb1-5623-4f0d-b361-9b1f0f520c40": {
      "main": [
        [
          {
            "node": "40b49097-0910-44fc-9287-c976e13da70d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8ebf2870-feab-4ed9-bc18-2e1bd46cf0c6": {
      "main": [
        [
          {
            "node": "54d92f95-03c9-4258-9ebf-66fb9f13f195",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "448e68ee-81e5-4487-b023-0aeb7666009d": {
      "main": [
        [
          {
            "node": "4c6c0726-187f-4697-b935-a93e68e7e9d2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a8ee01f9-05d6-4589-b399-a0ff141995ec": {
      "main": [
        [
          {
            "node": "18992707-c7f8-471c-81c3-10c0c1c7562e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "18992707-c7f8-471c-81c3-10c0c1c7562e": {
      "main": [
        [
          {
            "node": "4c6c0726-187f-4697-b935-a93e68e7e9d2",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "4c6c0726-187f-4697-b935-a93e68e7e9d2": {
      "main": [
        [
          {
            "node": "0446428f-678c-4798-84a1-17a4cfdc5615",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "40b49097-0910-44fc-9287-c976e13da70d": {
      "main": [
        [
          {
            "node": "54d92f95-03c9-4258-9ebf-66fb9f13f195",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "54d92f95-03c9-4258-9ebf-66fb9f13f195": {
      "main": [
        [
          {
            "node": "2e26ec97-bff0-41be-914e-e978cba49cd5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2e26ec97-bff0-41be-914e-e978cba49cd5": {
      "main": [
        [
          {
            "node": "36836914-c1c0-45e4-8e40-e95255af0c04",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a66b44d7-6fee-4480-b2e7-dbf862c27d9b": {
      "main": [
        [
          {
            "node": "54d92f95-03c9-4258-9ebf-66fb9f13f195",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "0446428f-678c-4798-84a1-17a4cfdc5615": {
      "main": [
        [
          {
            "node": "61384cde-744a-4091-b639-dfbb9e801026",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Avanzado - Otros

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos26
Categoría1
Tipos de nodos11
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Autor
Thibaud

Thibaud

@tderouze

Automation consultant with over 10 years experience helping Sales & Marketing teams to streamline their processes.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34