Recordatorio automatizado de noticias de acciones a través de Google RSS, Openrouter y Telegram

Avanzado

Este es unCrypto Trading, AI Summarizationflujo de automatización del dominio deautomatización que contiene 22 nodos.Utiliza principalmente nodos como If, Code, Merge, JinaAi, Telegram. Alerta automática de noticias de acciones basada en RSS de Google, Gemini y notificaciones de Telegram

Requisitos previos
  • Bot Token de Telegram
  • Credenciales de API de Google Sheets
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": "zyj0hJZNNR3mKvEx",
  "name": "Automated Stock News Alerts via Google RSS, Openrouter & Telegram",
  "tags": [],
  "nodes": [
    {
      "id": "b4739068-769f-4638-83cf-94a7c611caad",
      "name": "Agregar o actualizar fila en hoja",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2380,
        620
      ],
      "parameters": {
        "columns": {
          "value": {
            "ID": "={{ $('Merge').item.json.id }}",
            "URL": "={{ $json.realUrl }}",
            "Date": "={{ $('Merge').item.json.pubDate }}",
            "Title": "={{ $('Merge').item.json.title }}"
          },
          "schema": [
            {
              "id": "ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Summary",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SentToTelegram",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "SentToTelegram",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "109kj97ABR37XviIpxARCFviZwq8opOoe--rayOeFDSo"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "4d5abad5-44ac-4698-a178-f6da494d83d7",
      "name": "Nota adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        860,
        140
      ],
      "parameters": {
        "color": 7,
        "width": 460,
        "height": 760,
        "content": "### ⏰ Scheduler\n\n**Function:**  \nThis node triggers the entire workflow at a predefined interval. It ensures that the system checks for new stock news regularly without manual intervention.\n\n**Configuration:**\n- **Mode:** Every X minutes\n- **Interval:** 15 minutes (default, can be customized based on user needs)\n\n**Notes:**\n- You can adjust the interval depending on how frequently you want to monitor news updates.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8f3aeb9c-380e-4d91-a8e0-f2c856d360b5",
      "name": "Nota adhesiva7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "color": 6,
        "width": 780,
        "height": 1300,
        "content": "## 🎯 Purpose\nThis workflow helps you automatically monitor stock related news, extract the main content, summarize it using a LLM (via OpenRouter), and send real time alerts to Telegram and store them in Google Sheets.\n\n## ⚙️ How It Works\n### Trigger\n- A Cron node triggers the workflow every 15 minutes (adjustable).\n- RSS Feed node checks latest articles from Google Alerts RSS.\n- The workflow filters duplicates using Google Sheets as a log.\n- The article URL is sent to Jina AI Readability API to extract the main body text.\n- The content is summarized using a model from OpenRouter (e.g., Gemini, Claude, GPT-4).\n- You can customize the prompt to suit your tone and analysis needs.\n- The result is appended to a Google Sheets file.\n- Sends the title, summary, and reccomendation to Telegram chat.\n\n**🧾 Google Sheets Template**\nCreate a Google Sheet using this template: [Stock Alert](https://docs.google.com/spreadsheets/d/109kj97ABR37XviIpxARCFviZwq8opOoe--rayOeFDSo/edit?usp=sharing)\n\n## 🧰 Requirements\n- Telegram Bot + your Chat ID\n- OpenRouter account and API key\n- Jina AI account for content extraction\n- Google Account with access to Google Sheets\n- Google Alerts RSS feed\n\n## 🛠 Setup Instructions\n- Install required credentials:\n  - Add OpenRouter API key to n8n credentials.\n  - Add Telegram Bot Token and Chat ID.\n  - Add Google Sheets credentials.\n  - Add Jina AI credentials.\n- Create or copy the Google Sheet using the link above.\n- Go to Google Alerts, create alerts, and copy the RSS feed URL.\n- Replace placeholder API keys and URLs.\n- Adjust Telegram Chat ID.\n\n## 🔐 Security Note\nAll sensitive credentials (e.g., API keys, personal chat IDs) have been removed from this template. Please replace them using the n8n credentials manager before activating the workflow."
      },
      "typeVersion": 1
    },
    {
      "id": "f00e3efd-e11e-4340-adef-c87b01c4818c",
      "name": "Leer contenido de URL",
      "type": "n8n-nodes-base.jinaAi",
      "position": [
        2980,
        500
      ],
      "parameters": {
        "url": "={{ $('Get row(s) in sheet').item.json.URL }}",
        "options": {},
        "requestOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "f86e1a17-48b9-4a3b-a428-b4e6edc27d6f",
      "name": "Agente de IA",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        3300,
        500
      ],
      "parameters": {
        "text": "=Create a summary of up to 200 words from {{ $json.content }} Add a description of the affected stocks (stock code). Add a sentiment description (uptrend, downtrend, sideways, positive, negative or others). The writing format is as follows: Title\\nCategory\\nSummary\\nSentiment\\nReccomendation. Write in plain text without punctuation, use emoji to more interactive.",
        "options": {
          "systemMessage": "You are a professional analyst who has studied a lot about stock movements. Use the following news articles to see the company's fundamentals, sentiment, and future projections."
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "b94dff41-913d-4e8b-9ea8-3fe9d36041ab",
      "name": "Modelo de Chat OpenRouter",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        3300,
        700
      ],
      "parameters": {
        "model": "google/gemini-2.0-flash-exp:free",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "f4d18c3e-7ed8-44d8-b699-82c6923e642f",
      "name": "Combinar",
      "type": "n8n-nodes-base.merge",
      "position": [
        1960,
        620
      ],
      "parameters": {
        "numberInputs": 3
      },
      "typeVersion": 3.2
    },
    {
      "id": "552b48ff-8921-4878-8c65-4d1f9c63f6e0",
      "name": "Obtener fila(s) en hoja",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2580,
        620
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "109kj97ABR37XviIpxARCFviZwq8opOoe--rayOeFDSo"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "2dc342e9-9f0b-4f1e-8889-60b61bcb42f2",
      "name": "Enviar un mensaje de texto",
      "type": "n8n-nodes-base.telegram",
      "position": [
        3960,
        500
      ],
      "parameters": {
        "text": "={{ $json.Summary }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f49aa596-c969-4c4f-b466-79f962c2a658",
      "name": "Agregar o actualizar fila en hoja1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3740,
        500
      ],
      "parameters": {
        "columns": {
          "value": {
            "URL": "={{ $('Read URL content').item.json.url }}",
            "Summary": "={{ $json.output }}",
            "SentToTelegram": "true"
          },
          "schema": [
            {
              "id": "ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Summary",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SentToTelegram",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "SentToTelegram",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "URL"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "109kj97ABR37XviIpxARCFviZwq8opOoe--rayOeFDSo"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "966d4fb2-39e1-4e8f-a6bc-847f49e2f6f0",
      "name": "Activador programado1",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        1020,
        620
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 15
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b9d23403-da7b-4c43-a6b4-aeaa38ac6e2d",
      "name": "Sin operación, no hacer nada",
      "type": "n8n-nodes-base.noOp",
      "position": [
        2980,
        720
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "002d50e3-f1d5-4bcc-b342-7c94f9d22bf8",
      "name": "Nota adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1420,
        140
      ],
      "parameters": {
        "color": 7,
        "width": 460,
        "height": 840,
        "content": "### 📡 RSS Feed (Google Alerts)\n\n**Function:**  \nThis node fetches the latest news articles from Google Alerts RSS feeds based on specific stock related keywords.\n\n**Configuration:**\n- **RSS Feed URL:** Generated from Google Alerts using chosen keywords (e.g., `IPO`, `stock acquisition`, `company merger`, or specific company names like `AAPL`, `NVDA`, etc.)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c17cce05-0f63-47ee-abdf-e5c016819766",
      "name": "Nota adhesiva2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1940,
        140
      ],
      "parameters": {
        "color": 7,
        "width": 560,
        "height": 840,
        "content": "### 🔗 Merge & Extract Real URL\n\n**Function:**  \nAfter collecting articles from multiple RSS Feed nodes, this step merges the data and **extracts the actual article URL**, since Google Alerts RSS provides redirect URLs (e.g., `https://www.google.com/url?...`).\n\n**Processing Steps:**\n- Use a **Merge** node to combine outputs from multiple RSS nodes.\n- Use a **Function** node to:\n  - Parse the `link` field from the RSS item.\n  - Extract the real URL from the `url` query parameter of Google's redirect link.\n- Save data to **Google Sheets**\n"
      },
      "typeVersion": 1
    },
    {
      "id": "134bf506-303f-45aa-a659-93c7a9c8252d",
      "name": "Obtener URL real",
      "type": "n8n-nodes-base.code",
      "position": [
        2160,
        620
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "return {\n  realUrl: $json.link.includes(\"google.com/url\")\n    ? decodeURIComponent($json.link.match(/url=([^&]+)/)[1])\n    : $json.link\n};\n"
      },
      "typeVersion": 2
    },
    {
      "id": "6011ec34-cb71-4db6-b3a6-a8a190db78fc",
      "name": "Si",
      "type": "n8n-nodes-base.if",
      "position": [
        2760,
        620
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "67a8680d-5aca-4e40-9ae7-f91925461807",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.Summary }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "4a05175a-00ef-42b7-a8f5-87d6d729313f",
      "name": "Nota adhesiva3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2560,
        140
      ],
      "parameters": {
        "color": 7,
        "width": 620,
        "height": 840,
        "content": "### 📄 Extract Content (Jina AI)\n\n**Function:**  \nThis step extracts the **main content** (article body) from the real URL using **Jina AI’s article reader API**.\n\n**Processing Steps:**\n- Use an **IF node** to check whether the article already contains extracted content.\n  - **If content exists:** Do nothing.\n  - **If content is empty or missing:** Continue to next step.\n- Use **Jina AI API** to extract the full article content from the `realUrl`.\n\n**Output:**\n- The full article text is stored in a field such as `extractedContent` or `fullText`.\n- This text will be passed to the summarization step."
      },
      "typeVersion": 1
    },
    {
      "id": "cdf4b5fd-8da9-49d4-a79b-cfb6bcf4dac3",
      "name": "Nota adhesiva4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3200,
        140
      ],
      "parameters": {
        "color": 7,
        "width": 440,
        "height": 840,
        "content": "### 🧠 Summarize & Analyze (LLM via OpenRouter)\n\n**Function:**  \nThis node uses a **Large Language Model (LLM)** via the **OpenRouter API** to summarize and analyze the extracted article content. The goal is to turn raw text into concise, actionable insights.\n\n- You can customize the **system message** and **user prompt** to suit your use case.\n- **Model**: Choose from a variety of models via OpenRouter (GPT-4, Claude, etc.).\n\n**Output:**\n- `summary`: A brief overview of the article.\n- `analysis`: Optional insight or investment angle.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f71646be-296c-47d0-9443-126c03405faa",
      "name": "Nota adhesiva5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3700,
        140
      ],
      "parameters": {
        "color": 7,
        "width": 440,
        "height": 840,
        "content": "### 🗂️ Save to Google Sheets and Send to Telegram\nThis step saves the results of the summarization and analysis into the existing **Google Sheets database** to maintain a structured log of processed news.\n\n### 📲 Send to Telegram\nDelivers the summarized news and analysis via **Telegram Bot API** for real-time alerts.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "ce580e6b-e954-4cf0-a55b-f9e67be8a905",
      "name": "Adquisición de Acciones",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        1580,
        440
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "d64cf706-d073-4d1a-a793-4ab66a32da28",
      "name": "Recompra de Acciones",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        1580,
        620
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "1a3e5030-0b82-4649-910f-bfc8d0a28866",
      "name": "Acción NVDA",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        1580,
        800
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "connections": {
    "6011ec34-cb71-4db6-b3a6-a8a190db78fc": {
      "main": [
        [
          {
            "node": "f00e3efd-e11e-4340-adef-c87b01c4818c",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "b9d23403-da7b-4c43-a6b4-aeaa38ac6e2d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f4d18c3e-7ed8-44d8-b699-82c6923e642f": {
      "main": [
        [
          {
            "node": "134bf506-303f-45aa-a659-93c7a9c8252d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f86e1a17-48b9-4a3b-a428-b4e6edc27d6f": {
      "main": [
        [
          {
            "node": "f49aa596-c969-4c4f-b466-79f962c2a658",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1a3e5030-0b82-4649-910f-bfc8d0a28866": {
      "main": [
        [
          {
            "node": "f4d18c3e-7ed8-44d8-b699-82c6923e642f",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "134bf506-303f-45aa-a659-93c7a9c8252d": {
      "main": [
        [
          {
            "node": "b4739068-769f-4638-83cf-94a7c611caad",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d64cf706-d073-4d1a-a793-4ab66a32da28": {
      "main": [
        [
          {
            "node": "f4d18c3e-7ed8-44d8-b699-82c6923e642f",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "f00e3efd-e11e-4340-adef-c87b01c4818c": {
      "main": [
        [
          {
            "node": "f86e1a17-48b9-4a3b-a428-b4e6edc27d6f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "966d4fb2-39e1-4e8f-a6bc-847f49e2f6f0": {
      "main": [
        [
          {
            "node": "1a3e5030-0b82-4649-910f-bfc8d0a28866",
            "type": "main",
            "index": 0
          },
          {
            "node": "d64cf706-d073-4d1a-a793-4ab66a32da28",
            "type": "main",
            "index": 0
          },
          {
            "node": "ce580e6b-e954-4cf0-a55b-f9e67be8a905",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ce580e6b-e954-4cf0-a55b-f9e67be8a905": {
      "main": [
        [
          {
            "node": "f4d18c3e-7ed8-44d8-b699-82c6923e642f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "552b48ff-8921-4878-8c65-4d1f9c63f6e0": {
      "main": [
        [
          {
            "node": "6011ec34-cb71-4db6-b3a6-a8a190db78fc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b94dff41-913d-4e8b-9ea8-3fe9d36041ab": {
      "ai_languageModel": [
        [
          {
            "node": "f86e1a17-48b9-4a3b-a428-b4e6edc27d6f",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "b4739068-769f-4638-83cf-94a7c611caad": {
      "main": [
        [
          {
            "node": "552b48ff-8921-4878-8c65-4d1f9c63f6e0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f49aa596-c969-4c4f-b466-79f962c2a658": {
      "main": [
        [
          {
            "node": "2dc342e9-9f0b-4f1e-8889-60b61bcb42f2",
            "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 - Comercio de criptomonedas, Resumen de IA

¿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

Generador automatizado de prospectos comerciales locales basado en IA, redes sociales y enlaces de WhatsApp
Generación automatizada de leads comerciales locales usando IA, redes sociales y enlaces de WhatsApp
If
Code
Limit
+
If
Code
Limit
29 NodosBudi SJ
Generación de leads
Análisis inteligente diario de grupos de WhatsApp: Análisis con GPT-4.1 y transcripción de mensajes de voz
Análisis inteligente diario de grupos de WhatsApp: análisis con GPT-4.1 y transcripción de mensajes de voz
If
Set
Code
+
If
Set
Code
52 NodosDaniel Lianes
Varios
Analizador de mercado AI de múltiples timeframes para SOL/USDT y sistema de trading (aprobación por Telegram)
Automatización de operaciones de Solana con Gemini IA, análisis de múltiples marcos de tiempo y AFK Crypto
If
Code
Wait
+
If
Code
Wait
56 NodosJeff
Comercio de criptomonedas
Sistema POS inteligente con actualizaciones en tiempo real de Telegram y Sheets
Crear pedidos de venta usando una interfaz Web POS, informes de IA, recordatorios de Telegram y Sheets
Code
Wait
Webhook
+
Code
Wait
Webhook
16 NodosBudi SJ
CRM
Importar automáticamente artículos de investigación a Zotero mediante el DOI URL de Telegram
Importar artículos de investigación de Telegram a Zotero con resumen y resumen de IA
If
Set
Code
+
If
Set
Code
25 NodosBudi SJ
Resumen de IA
Extracción de Datos de Negocios en Google Maps Impulsada por IA y Exportación a Tablas
Extracción de datos de negocios en Google Maps basada en IA, con soporte para enriquecimiento de datos y exportación a tablas
If
Code
Wait
+
If
Code
Wait
25 NodosMsaid Mohamed el hadi
Generación de leads
Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos22
Categoría2
Tipos de nodos12
Descripción de la dificultad

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

Autor
Budi SJ

Budi SJ

@budisj

I’m a Product Designer who also works as an Automation Developer. With a background in product design and systems thinking, I build user-centered workflows. My focus is on helping teams and businesses work more productively through impactful automation systems.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34