Notificaciones de cumpleaños y efemérides
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)
- •Bot Token de Telegram
- •Pueden requerirse credenciales de autenticación para la API de destino
Nodos utilizados (26)
Categoría
{
"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
}
]
]
}
}
}¿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.
Flujos de trabajo relacionados recomendados
Thibaud
@tderouzeAutomation consultant with over 10 years experience helping Sales & Marketing teams to streamline their processes.
Compartir este flujo de trabajo