{"workflow":{"id":14805,"name":"Generate a daily multi-asset market report with TwelveData, Groq and Google Sheets","views":260,"recentViews":52,"totalViews":260,"createdAt":"2026-04-06T14:20:02.171Z","description":"# Multi-Asset Daily Market Snapshot\n\nThis workflow fully automates the creation of a daily multi-asset market report. It retrieves live pricing data for specified indices, forex pairs and commodities using the TwelveData API, manages rate limits safely and feeds the normalized data into a Groq-powered AI (Llama-3). The AI generates a professional, institutional-grade market summary which is then automatically logged in Google Sheets and emailed to your inbox. \n\n\n### Quick Implementation Steps\n\n1. **Import the Workflow:** Upload the JSON file into your n8n workspace.\n2. **Add Your Keys:** In the `Environment Config` node, paste your TwelveData API key. \n3. **Connect Accounts:** Authenticate your Google Sheets, Gmail and Groq API credentials in their respective nodes.\n4. **Prepare the Sheet:** Create a Google Sheet with two tabs (\"Sheet1\" for reports, \"Error logs\" for failures) matching the column headers defined in the Google Sheets nodes.\n5. **Execute:** Click \"Test Workflow\" (or trigger it manually) to fetch data and receive your daily snapshot.\n\n\n## What It Does\n\nThis workflow acts as an automated quantitative analyst. It starts by establishing your target asset watchlists across three categories: Indices (e.g., SPY, QQQ), Forex (e.g., EUR/USD) and Commodities (e.g., Gold, Oil). It breaks these lists down and carefully queues them up to fetch daily pricing from the TwelveData API. To ensure it doesn't overwhelm the API and get blocked, it uses a batching system with a built-in 15-second throttle. \n\nAs data flows in, the workflow actively monitors for errors. If an API call fails or hits a hard limit, it instantly logs the failure details into an \"Error logs\" Google Sheet and sends an emergency failure alert via Gmail. Successfully fetched data is normalized into a clean format, calculating daily percentage changes and basic bullish/bearish trends. \n\nFinally, the cleaned dataset is passed to a Llama-3 AI agent via Groq. Instructed to act as a macro strategist, the AI parses the numbers to generate a structured snapshot including a market summary, key movers, risk sentiment and actionable outlook. A custom script safely extracts these exact sections, logs the complete report into your main Google Sheet for historical tracking and delivers the final formatted text straight to your Gmail.\n\n\n## Who’s It For\n\nThis automation is ideal for \n- day traders, \n- macro analysts, \n- portfolio managers, \n- and financial newsletter writers. \n\nIt is exceptionally useful for anyone who spends the first hour of their morning manually checking tickers and writing up market summaries to share with a team or clients.\n\n\n## Requirements to Use This Workflow\n\n* An active **n8n instance**.\n* A **TwelveData API Key** for fetching real-time/daily financial market data.\n* A **Groq API account** to utilize the Llama-3 language model.\n* A **Google Workspace account** to authenticate both Google Sheets and Gmail nodes.\n* A **Google Sheet** pre-configured with the exact column headers expected by the workflow.\n\n\n## How It Works & How To Set Up\n\n**1. Configure the Environment**\n\nOpen the `Environment Config` node and input your `twelve_api_key`. The base API URL is already set up for you. \n\n**2. Define Your Watchlist**\n\nOpen the `Set Market Assets` node. Here you will see comma-separated lists for Indices, Forex and Commodities. You can replace these ticker symbols with any standard symbols supported by TwelveData.\n\n**3. API Throttling & Fetching**\n\nThe `Rate Controlled Queue` node processes one ticker at a time, followed by a 15-second `API Throttle` wait. This ensures you comply with free-tier or basic API limits. The `Fetch Asset Prices` node automatically constructs the HTTP request for each symbol.\n\n**4. Error Handling Pipeline**\n\nThe `Validate API Response` node checks if the TwelveData response status is \"ok\". If not, the workflow branches downward, logging the specific error code and symbol to your Google Sheet and sending a localized Gmail alert, before continuing the loop.\n\n**5. AI Processing & Normalization**\n\nOnce all loops finish, the `Normalize Market Data` node calculates the price changes. The `AI Market Insights` node then feeds this to Groq. You must select your Groq credentials in the attached `Insights` model node.\n\n**6. Final Delivery**\n\nThe `Parse AI Output` node uses Regex to strictly format the AI's response. Finally, the `Log Daily Market Report` node saves the record and the `Send Today's market summary` node emails you the results. \n\n\n## How To Customize Nodes\n\n* **Wait Node (API Throttle):** \n\nIf you have a premium TwelveData API plan with higher rate limits, you can reduce or remove the 15-second wait time to make the workflow run instantly.\n\n* **AI Market Insights:** \n\nYou can edit the System Message to change the AI's output tone or request additional sections (like \"Crypto Outlook\") if you add crypto tickers to your watchlist.\n\n* **Send Today's market summary:** \n\nThe current email format is plain text. You can change the \"Email Type\" to HTML and use CSS to design a beautiful, branded daily newsletter.\n\n\n## Add‑ons\n\n* **Scheduled Trigger:** \n\nReplace the \"Manual Trigger\" with a \"Schedule Trigger\" to automatically run this workflow every weekday at 4:30 PM EST right after the market closes.\n\n* **Slack Integration:** \n\nSwap out the Gmail nodes for Slack nodes to deliver the daily snapshot directly into your company's #finance or #trading channel.\n\n* **Multi-Model Routing:** \n\nAdd an IF node before the AI to route the data to OpenAI's GPT-4o if Groq's API is temporarily unavailable, ensuring 100% uptime for your daily reports.\n\n\n## Use Case Examples\n\n1. **Morning Prep for Day Traders:** \n\nRun the workflow an hour before the opening bell to get a quick digest of how forex and commodities behaved overnight.\n\n2. **Automated Client Newsletters:** \n\nFeed the final generated text into an email marketing tool (like Mailchimp or ActiveCampaign) to automatically send a daily brief to your subscribers.\n\n3. **Internal Risk Management:** \n\nUse the report to give a firm's trading desk a standardized baseline of macro risk sentiment before the trading day begins.\n\n4. **Historical Sentiment Tracking:** \n\nBy logging the AI's daily \"Risk Sentiment\" into Google Sheets, you can eventually build charts comparing AI sentiment versus actual market performance over time.\n\n5. **API Health Monitoring:** \n\nThe built-in failure alert branch acts as an excellent template for monitoring the uptime and health of third-party financial APIs.\n\n\n## Troubleshooting Guide\n\n| Issue | Possible Cause | Solution |\n| :--- | :--- | :--- |\n| **Workflow times out or runs endlessly** | The `Split In Batches` loop is not closing properly or the `Wait` node is set too high for server timeout limits. | Ensure n8n's execution timeout variable is high enough to accommodate 15 seconds per ticker. Reduce the watchlist size if necessary. |\n| **\"Unknown API Error\" in logs** | TwelveData rate limit exceeded or an invalid ticker symbol was requested. | Check the `Set Market Assets` node to ensure all symbols are correctly spelled. Verify your TwelveData API quota. |\n| **Parse AI Output node fails (Regex error)** | The Groq AI ignored formatting instructions and did not output the exact expected headers (e.g., \"Market Summary:\"). | Adjust the `AI Market Insights` prompt to be even stricter or lower the \"Temperature\" setting on the Groq model node to reduce creative variability. |\n| **Google Sheets Node throws a 400 error** | Column headers in your Google Sheet do not match the schema in the workflow. | Open the Google Sheets node and verify that columns like `execution_date`, `market_summary` and `key_movers` exist exactly as written in row 1 of your sheet. |\n\n\n## Need Help?\n\nStuck on setting up your API keys or looking to expand this workflow to include dozens of new asset classes and complex HTML formatting? \n\nIf you need advanced customizations, API troubleshooting or want to build a completely tailored financial automation architecture, **WeblineIndia** is here to help. Reach out to our [n8n team](https://www.weblineindia.com/hire-n8n-developers/) of integration experts to take your automated business processes to the next level!","workflow":{"id":"kn5HELmvtLeSYzsu","meta":{"instanceId":"9f24379abd1ca05a3f590fdaa874ca82fbc5e1188798d609d51d2a8f6bacb662","templateCredsSetupCompleted":true},"name":"Multi-Asset Daily Snapshot","tags":[],"nodes":[{"id":"108301be-fe1b-4b1a-b273-00213e3dc28d","name":"Set Market Assets","type":"n8n-nodes-base.set","position":[-320,912],"parameters":{"options":{},"assignments":{"assignments":[{"id":"03778b5d-2d63-46e6-beb3-b3f83ceeabcb","name":"Indices","type":"string","value":"SPY,QQQ,DIA"},{"id":"57bed606-a6d6-495b-8119-8afcb9da4704","name":"Forex","type":"string","value":"EUR/USD,USD/INR,GBP/USD,USD/JPY"},{"id":"1de3c6c9-121b-4e5e-b05c-136d0b33079f","name":"Commodities","type":"string","value":"XAU/USD,USO"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"ecbce792-bd83-43b1-89d2-33dcc4e3f0cf","name":"AI Market Insights","type":"@n8n/n8n-nodes-langchain.agent","position":[720,432],"parameters":{"text":"==Here is today's normalized multi-asset market data:\n\n{{ JSON.stringify($json.market_data, null, 2) }}\n\nAnalyze the data and generate a professional daily market report.\n\nImportant:\nFollow the exact output format specified in the system instructions.\nUse the provided percentage moves and trend data to determine sentiment and outlook.","options":{"systemMessage":"You are a professional multi-asset financial market strategist and macro analyst.\n\nYour task is to analyze normalized market data across equities, forex and commodities and generate a concise institutional-grade daily market snapshot.\n\nSTRICT RULES:\n- Output plain text only\n- No markdown\n- No JSON\n- No emojis\n- No bold text\n- No bullet symbols except hyphen (-) under Key Movers\n- Use the EXACT section headings below\n- Keep each section concise and professional\n- Mention actual percentage changes from provided data\n- Focus on trend, sentiment and actionable market insight\n- Avoid generic filler statements\n\nMANDATORY OUTPUT FORMAT:\n\nMarket Summary:\n2-3 lines summarizing the overall market direction and major trends.\n\nKey Movers:\n- Always include SPY\n- Always include XAU/USD\n- Always include USO\n- Add 2 to 3 other biggest movers\n\nRisk Sentiment:\nState one of:\nRisk-on\nRisk-off\nMixed\n\nActionable Insight:\n1-2 lines about what traders/investors should watch next.\n\nOutlook:\n1-2 lines on expected next-session bias."},"promptType":"define"},"typeVersion":3.1},{"id":"63ed006d-39e2-4e6c-8e77-cb9fbe38b0e4","name":"Insights","type":"@n8n/n8n-nodes-langchain.lmChatGroq","position":[720,608],"parameters":{"model":"llama-3.3-70b-versatile","options":{}},"credentials":{"groqApi":{"id":"QyoqMLjpMrMq0JV2","name":"harshal chaudhari groq acc"}},"typeVersion":1},{"id":"a9100ef5-e4b2-47ae-bef1-7dd4dd9ab61a","name":"Parse AI Output","type":"n8n-nodes-base.code","position":[1056,432],"parameters":{"jsCode":"let text = $json.output || \"\";\n\n// Clean raw text\ntext = text.replace(/\\\\n/g, '\\n').trim();\n\n// Extract sections safely\nconst summaryMatch = text.match(/Market Summary\\s*:\\s*([\\s\\S]*?)(?=Key Movers\\s*:|$)/i);\nconst moversMatch = text.match(/Key Movers\\s*:\\s*([\\s\\S]*?)(?=Risk Sentiment\\s*:|Actionable Insight\\s*:|$)/i);\nconst sentimentMatch = text.match(/Risk Sentiment\\s*:\\s*([\\s\\S]*?)(?=Actionable Insight\\s*:|$)/i);\nconst insightMatch = text.match(/Actionable Insight\\s*:\\s*([\\s\\S]*?)(?=Outlook\\s*:|$)/i);\nconst outlookMatch = text.match(/Outlook\\s*:\\s*([\\s\\S]*)/i);\n\n// Assign values\nlet summary = summaryMatch?.[1] || \"\";\nlet moversRaw = moversMatch?.[1] || \"\";\nlet sentiment = sentimentMatch?.[1] || \"\";\nlet insight = insightMatch?.[1] || \"\";\nlet outlook = outlookMatch?.[1] || \"\";\n\n// Common cleanup\nconst cleanText = (t) => {\n  if (!t) return \"\";\n\n  return t\n    .replace(/\\*\\*/g, \"\")\n    .replace(/\\s+/g, \" \")\n    .trim();\n};\n\nsummary = cleanText(summary);\nsentiment = cleanText(sentiment);\ninsight = cleanText(insight);\noutlook = cleanText(outlook);\n\n// Clean movers list\nconst movers = moversRaw\n  .split(/\\r?\\n+/)\n  .map(line =>\n    line\n      .replace(/^[-*•]\\s*/, \"\")\n      .replace(/\\s+/g, \" \")\n      .trim()\n  )\n  .filter(Boolean);\n\n// FIXED sentence trim (safe for decimals like 1.46%)\nconst trimToTwoSentences = (text) => {\n  if (!text) return \"\";\n\n  const sentences =\n    text.match(/(?:[^.!?]|\\d\\.\\d)+[.!?]+/g) || [text];\n\n  return sentences\n    .slice(0, 2)\n    .join(\" \")\n    .trim();\n};\n\nsummary = trimToTwoSentences(summary);\ninsight = trimToTwoSentences(insight);\noutlook = trimToTwoSentences(outlook);\n\n// Final output\nreturn [\n  {\n    json: {\n      market_summary: summary,\n      key_movers: movers,\n      risk_sentiment: sentiment,\n      insight,\n      outlook\n    }\n  }\n];"},"typeVersion":2},{"id":"e2f7f2da-f675-4778-b2e6-1f93129bffcb","name":"Send Today's market summary","type":"n8n-nodes-base.gmail","position":[1504,432],"webhookId":"a42c4067-aeaf-493c-a427-889ba6a71d9c","parameters":{"message":"=Market Summary:\n{{ $('Parse AI Output').item.json.market_summary }}\n\nKey Movers:\n{{ $('Parse AI Output').item.json.key_movers.join('\\n') }}\n\nRisk Sentiment:\n{{ $('Parse AI Output').item.json.risk_sentiment }}\n\nInsight:\n{{ $('Parse AI Output').item.json.insight }}\n\noutlook:\n{{ $json.outlook }}","options":{},"subject":"=today's market summary","emailType":"text"},"credentials":{"gmailOAuth2":{"id":"2bGhHtXnBefU5pfI","name":"harshal chaudhari gmail Acc"}},"typeVersion":2.2},{"id":"2f41c0a1-1cab-47ce-990c-53ed16e227df","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1504,448],"parameters":{"width":624,"height":576,"content":"# Multi-Asset Daily Market Snapshot\n\nThis workflow automates the **end-to-end process** of collecting, analyzing and delivering **daily financial market insights** across multiple asset classes including **equities, forex and commodities**. It integrates **real-time market data**, processes it into a **structured format** and uses **AI-powered analysis** to generate a **professional-grade market report** for faster and smarter decision-making.\n\n## How it Works:\nThe workflow begins by defining **asset groups** and fetching **live market data via API**. It then performs **data normalization and transformation** to create a clean dataset, which is analyzed using an **AI model** to generate insights like **market summary, key movers and sentiment**. Finally, the report is **stored and automatically delivered via email**.\n\n## Setup Steps:\n- **TwelveData API** – Add your API key in Environment Config to enable market data fetching  \n- **Groq API (Llama Model)** – Configure credentials to power AI-based market insights  \n- **Gmail OAuth** – Connect your Gmail account to send automated reports  \n- **Asset Configuration** – Customize symbols in \"Set Market Assets\" as per your needs  "},"typeVersion":1},{"id":"ae89094e-0088-4343-9db8-81dd3d57fc80","name":"Generate Daily Market Report","type":"n8n-nodes-base.manualTrigger","position":[-768,912],"parameters":{},"typeVersion":1},{"id":"0efb9155-073c-4075-832c-93d3d57dca97","name":"Environment Config","type":"n8n-nodes-base.set","position":[-544,912],"parameters":{"options":{},"assignments":{"assignments":[{"id":"2da88a5b-8b65-4617-a022-3f6aa09131e3","name":"api_base_url","type":"string","value":"https://api.twelvedata.com/time_series"},{"id":"559dc6bb-e3f6-4960-aa9f-f76aae65f4d1","name":"twelve_api_key","type":"string","value":""}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"502630b9-18b5-4479-9426-312f60e524bf","name":"Rate Controlled Queue","type":"n8n-nodes-base.splitInBatches","position":[176,880],"parameters":{"options":{},"batchSize":"={{ 1 }}"},"typeVersion":3},{"id":"89789f28-94a0-4ad1-88f8-74e5e0395233","name":"API Throttle","type":"n8n-nodes-base.wait","position":[416,896],"webhookId":"e6191fff-9547-41fe-8452-ce2c74431cba","parameters":{"amount":15},"typeVersion":1.1},{"id":"9bdb2163-8645-4acc-a7cd-224167857e6d","name":"Log API Error","type":"n8n-nodes-base.code","position":[1152,944],"parameters":{"jsCode":"return [\n  {\n    json: {\n      error_time: new Date().toISOString(),\n      error_status: $json.status,\n      error_message: $json.message || \"Unknown API error\",\n      failed_symbol: $json.meta?.symbol || \"N/A\"\n    }\n  }\n];"},"typeVersion":2},{"id":"0ece6cab-e490-4552-a052-617846dbc6aa","name":"Normalize Market Data","type":"n8n-nodes-base.code","position":[496,432],"parameters":{"jsCode":"const result = [];\nlet runIndex = 0;\n\n// Loop through every execution run of the Fetch node\nwhile (true) {\n  try {\n    // Grab the data for the specific loop iteration\n    const rawData = $items(\"Fetch Asset Prices\", 0, runIndex);\n    \n    // Break if we've reached the end of the runs\n    if (!rawData || rawData.length === 0) break;\n\n    for (const item of rawData) {\n      const data = item.json;\n      const latest = data.values?.[0];\n\n      // If data is missing (e.g. rate limit hit), record the error instead of skipping\n      if (!latest) {\n        result.push({\n          symbol: data.meta?.symbol || data.symbol || \"Unknown\",\n          status: data.status || \"error\",\n          message: data.message || \"No data received (likely rate limit)\"\n        });\n        continue;\n      }\n\n      const open = parseFloat(latest.open);\n      const close = parseFloat(latest.close);\n      const changePercent = ((close - open) / open) * 100;\n\n      result.push({\n        symbol: data.meta.symbol,\n        asset_type: data.meta.type,\n        price: close,\n        open,\n        high: parseFloat(latest.high),\n        low: parseFloat(latest.low),\n        date: latest.datetime,\n        change_percent: Number(changePercent.toFixed(2)),\n        trend: changePercent > 0 ? \"Bullish\" : \"Bearish\",\n        status: \"success\"\n      });\n    }\n    runIndex++; // Move to the next execution run\n  } catch (error) {\n    // When runIndex exceeds the total number of runs, it throws an error. Break the loop.\n    break;\n  }\n}\n\nreturn [\n  {\n    json: {\n      market_data: result\n    }\n  }\n];"},"typeVersion":2},{"id":"a6fbae73-0e5c-4221-aef5-4b40e432fcc6","name":"Alert API Faliure","type":"n8n-nodes-base.gmail","position":[1552,944],"webhookId":"95d68b1f-70c7-4f1c-9f2d-d9a0ebcc9d3e","parameters":{"message":"=Twelve Data API failed.\nStatus: {{ $json.status }}\nMessage: {{ $json.message }}","options":{},"subject":"API Failure Alert","emailType":"text"},"credentials":{"gmailOAuth2":{"id":"2bGhHtXnBefU5pfI","name":"harshal chaudhari gmail Acc"}},"typeVersion":2.2},{"id":"bac68de1-64f7-4985-bc6d-6fe469f65a64","name":"Log Daily Market Report","type":"n8n-nodes-base.googleSheets","position":[1264,432],"parameters":{"columns":{"value":{"status":"={{ \"SUCCESS\" }}","insight":"={{ $json.insight }}","outlook":"={{ $json.outlook }}","key_movers":"={{ $json.key_movers.join(', ') }}","total_assets":"={{ $items(\"Normalize Market Data\")[0].json.market_data.length }}","execution_date":"={{ $now }}","market_summary":"={{ $json.market_summary }}","risk_sentiment":"={{ $json.risk_sentiment }}","workflow_version":"v2.0-production"},"schema":[{"id":"execution_date","type":"string","display":true,"required":false,"displayName":"execution_date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"market_summary","type":"string","display":true,"required":false,"displayName":"market_summary","defaultMatch":false,"canBeUsedToMatch":true},{"id":"key_movers","type":"string","display":true,"required":false,"displayName":"key_movers","defaultMatch":false,"canBeUsedToMatch":true},{"id":"risk_sentiment","type":"string","display":true,"required":false,"displayName":"risk_sentiment","defaultMatch":false,"canBeUsedToMatch":true},{"id":"insight","type":"string","display":true,"required":false,"displayName":"insight","defaultMatch":false,"canBeUsedToMatch":true},{"id":"outlook","type":"string","display":true,"required":false,"displayName":"outlook","defaultMatch":false,"canBeUsedToMatch":true},{"id":"total_assets","type":"string","display":true,"required":false,"displayName":"total_assets","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"workflow_version","type":"string","display":true,"required":false,"displayName":"workflow_version","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1CVqkBpVaJ-OervAfC5TCPkfu-1Ys2LgFQbAZIeu4GNo/edit#gid=0","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"list","value":"1CVqkBpVaJ-OervAfC5TCPkfu-1Ys2LgFQbAZIeu4GNo","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1CVqkBpVaJ-OervAfC5TCPkfu-1Ys2LgFQbAZIeu4GNo/edit?usp=drivesdk","cachedResultName":"Multi Asset Daily Snapshot"}},"credentials":{"googleSheetsOAuth2Api":{"id":"YLNSloXJIWPMHBvp","name":"harshal chaudhari sheet acc"}},"typeVersion":4.7},{"id":"cf600bcc-c58d-4a61-8c86-36e9ed21d41b","name":"Append row in sheet","type":"n8n-nodes-base.googleSheets","position":[1344,944],"parameters":{"columns":{"value":{"status":"={{ 'FAILED' }}","error_code":"={{ $json.code || 'N/A' }}","error_message":"={{ $json.message || 'Unknown API error' }}","failed_symbol":"={{ $json.meta?.symbol || $json.symbol || 'N/A' }}","execution_date":"={{ $now }}","workflow_version":"v2.0-production"},"schema":[{"id":"execution_date","type":"string","display":true,"required":false,"displayName":"execution_date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"error_message","type":"string","display":true,"required":false,"displayName":"error_message","defaultMatch":false,"canBeUsedToMatch":true},{"id":"failed_symbol","type":"string","display":true,"required":false,"displayName":"failed_symbol","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"error_code","type":"string","display":true,"required":false,"displayName":"error_code","defaultMatch":false,"canBeUsedToMatch":true},{"id":"workflow_version","type":"string","display":true,"required":false,"displayName":"workflow_version","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":1278586321,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1CVqkBpVaJ-OervAfC5TCPkfu-1Ys2LgFQbAZIeu4GNo/edit#gid=1278586321","cachedResultName":"Error logs"},"documentId":{"__rl":true,"mode":"list","value":"1CVqkBpVaJ-OervAfC5TCPkfu-1Ys2LgFQbAZIeu4GNo","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1CVqkBpVaJ-OervAfC5TCPkfu-1Ys2LgFQbAZIeu4GNo/edit?usp=drivesdk","cachedResultName":"Multi Asset Daily Snapshot"}},"credentials":{"googleSheetsOAuth2Api":{"id":"YLNSloXJIWPMHBvp","name":"harshal chaudhari sheet acc"}},"typeVersion":4.7},{"id":"7fe0942c-51e6-49f6-857f-c67a134b34a8","name":"Fetch Asset Prices","type":"n8n-nodes-base.httpRequest","position":[640,896],"parameters":{"url":"={{ $('Environment Config').first().json.api_base_url }}","options":{},"sendQuery":true,"queryParameters":{"parameters":[{"name":"symbol","value":"={{ $json.symbol }}"},{"name":"interval","value":"1day"},{"name":"outputsize","value":"1"},{"name":"apikey","value":"={{ $('Environment Config').first().json.twelve_api_key }}"}]}},"typeVersion":4.3},{"id":"e08ad6f6-e72f-447f-a236-443d94dd502a","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-816,752],"parameters":{"color":7,"width":640,"height":400,"content":"## Workflow Trigger & Configuration\n\nThis section initializes the workflow execution and sets up all required environment variables such as API base URL and authentication keys. It ensures that the workflow has the correct configuration before starting the data processing pipeline."},"typeVersion":1},{"id":"e6573189-685e-4df7-a899-b85cde1a733f","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-128,816],"parameters":{"color":7,"width":1184,"height":448,"content":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Asset Splitting & API Fetch Pipeline\nThis section handles **asset breakdown and controlled data fetching** by splitting grouped assets into **individual symbols** for processing. It ensures smooth execution using **rate-controlled batching** and **API throttling**, preventing overload or failures while fetching real-time market data.\nThe pipeline guarantees **efficient API utilization**, maintains **data consistency** and enables reliable retrieval of **latest asset prices** for further analysis."},"typeVersion":1},{"id":"f707ee9a-1228-40a3-802b-e71bece6cd81","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[1104,768],"parameters":{"color":7,"width":640,"height":448,"content":"## Error Logging & Failure Alerts\n\nThis section manages **API failure handling and error tracking** by capturing failed responses and recording them for monitoring. It logs detailed error information into **Google Sheets** to maintain a history of issues for debugging and analysis.\nAdditionally, it triggers **real-time email alerts via Gmail** to notify about failures instantly, ensuring quick action and maintaining **workflow reliability and transparency**."},"typeVersion":1},{"id":"f9668280-cb6d-43aa-a4f6-44f30563e2cc","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[432,256],"parameters":{"color":7,"width":1264,"height":496,"content":"## AI Analysis & Report Generation\n\nThis section transforms structured market data into **actionable financial insights** using an **AI-powered model**. It generates key outputs like **market summary, key movers, risk sentiment and outlook**, providing a clear understanding of market conditions.\n\nThe AI response is then **parsed and structured**, stored in **Google Sheets for tracking** and delivered via **automated email notifications**, ensuring consistent and timely reporting."},"typeVersion":1},{"id":"14c3b771-838e-4f1a-850c-37ea32ddd87e","name":"Validate API Response","type":"n8n-nodes-base.if","position":[864,896],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"5f62f53f-e04d-4c78-8256-6814021efa44","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"ok"}]}},"typeVersion":2.3},{"id":"7bd9a42f-4788-44ab-947c-9d22c6cd5805","name":"split assests & Symbols","type":"n8n-nodes-base.code","position":[-80,880],"parameters":{"jsCode":"const data = items[0].json;\nconst output = [];\n\n// Define all asset classes\nconst assetGroups = [\n  { asset_class: \"Indices\", symbols: data.Indices },\n  { asset_class: \"Forex\", symbols: data.Forex },\n  { asset_class: \"Commodities\", symbols: data.Commodities }\n];\n\n// Split each asset group into individual symbols\nfor (const group of assetGroups) {\n  const symbols = group.symbols.split(',');\n\n  for (const symbol of symbols) {\n    output.push({\n      json: {\n        asset_class: group.asset_class,\n        symbol: symbol.trim()\n      }\n    });\n  }\n}\n\nreturn output;"},"typeVersion":2}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"723be7a3-5ce7-48da-9d7a-ebfebade5dc5","connections":{"Insights":{"ai_languageModel":[[{"node":"AI Market Insights","type":"ai_languageModel","index":0}]]},"API Throttle":{"main":[[{"node":"Fetch Asset Prices","type":"main","index":0}]]},"Log API Error":{"main":[[{"node":"Append row in sheet","type":"main","index":0}]]},"Parse AI Output":{"main":[[{"node":"Log Daily Market Report","type":"main","index":0}]]},"Alert API Faliure":{"main":[[{"node":"Rate Controlled Queue","type":"main","index":0}]]},"Set Market Assets":{"main":[[{"node":"split assests & Symbols","type":"main","index":0}]]},"AI Market Insights":{"main":[[{"node":"Parse AI Output","type":"main","index":0}]]},"Environment Config":{"main":[[{"node":"Set Market Assets","type":"main","index":0}]]},"Fetch Asset Prices":{"main":[[{"node":"Validate API Response","type":"main","index":0}]]},"Append row in sheet":{"main":[[{"node":"Alert API Faliure","type":"main","index":0}]]},"Normalize Market Data":{"main":[[{"node":"AI Market Insights","type":"main","index":0}]]},"Rate Controlled Queue":{"main":[[{"node":"Normalize Market Data","type":"main","index":0}],[{"node":"API Throttle","type":"main","index":0}]]},"Validate API Response":{"main":[[{"node":"Rate Controlled Queue","type":"main","index":0}],[{"node":"Log API Error","type":"main","index":0}]]},"Log Daily Market Report":{"main":[[{"node":"Send Today's market summary","type":"main","index":0}]]},"split assests & Symbols":{"main":[[{"node":"Rate Controlled Queue","type":"main","index":0}]]},"Generate Daily Market Report":{"main":[[{"node":"Environment Config","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":22,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":2},"n8n-nodes-base.code":{"count":4},"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.gmail":{"count":2},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-base.googleSheets":{"count":2},"n8n-nodes-base.manualTrigger":{"count":1},"n8n-nodes-base.splitInBatches":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"@n8n/n8n-nodes-langchain.lmChatGroq":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"WeblineIndia","username":"weblineindia","bio":"A Leading Software Engineering, Consulting & Outsourcing Services Company in USA & India serving Clients Globally since 1999.","verified":true,"links":["https://www.weblineindia.com/hire-n8n-developers/"],"avatar":"https://gravatar.com/avatar/a229d43aefca4588581583c58bb37b4773aebbdf4c1fef86a08bb1d38eae91fa?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":356,"icon":"file:gmail.svg","name":"n8n-nodes-base.gmail","codex":{"data":{"alias":["email","human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"transform\"]","defaults":{"name":"Gmail"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"},"displayName":"Gmail","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":514,"icon":"fa:pause-circle","name":"n8n-nodes-base.wait","codex":{"data":{"alias":["pause","sleep","delay","timeout"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Wait","color":"#804050"},"iconData":{"icon":"pause-circle","type":"icon"},"displayName":"Wait","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":838,"icon":"fa:mouse-pointer","name":"n8n-nodes-base.manualTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"When clicking ‘Execute workflow’","color":"#909298"},"iconData":{"icon":"mouse-pointer","type":"icon"},"displayName":"Manual Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1263,"icon":"file:groq.svg","name":"@n8n/n8n-nodes-langchain.lmChatGroq","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgroq/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Groq Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgaWQ9IkxheWVyXzIiCiAgIHZpZXdCb3g9IjAgMCA0OTkuOTk5OTkgNDk5Ljk5OTk5IgogICB2ZXJzaW9uPSIxLjEiCiAgIHdpZHRoPSI1MDAiCiAgIGhlaWdodD0iNTAwIgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzCiAgICAgaWQ9ImRlZnM0IiAvPjxnCiAgICAgaWQ9IlBBR0VTIj48Y2lyY2xlCiAgICAgICBzdHlsZT0iZmlsbDojZjU0ZjM1O2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDoxLjEzNjIyIgogICAgICAgaWQ9InBhdGg0IgogICAgICAgY3g9IjI1MCIKICAgICAgIGN5PSIyNTAiCiAgICAgICByPSIyNTAiIC8+PHBhdGgKICAgICAgIGQ9Ik0gMjUwLjUzNjY0LDk3LjEyMjk5NCBDIDE5Mi43MTkzMSw5Ni41ODg2MzggMTQ1LjQ4MjIyLDE0Mi45NzA3NSAxNDQuOTQ3ODYsMjAwLjc4ODA4IGMgLTAuNTM0MzQsNTcuODE3MzMgNDUuODQ3NzcsMTA1LjA1NDQyIDEwMy42NjUxLDEwNS41ODg3NyBoIDM2LjMzNjIxIHYgLTM5LjIyMTc0IGggLTM0LjQxMjUzIGMgLTM2LjEyMjQ4LDAuNDI3NSAtNjUuNzI1OCwtMjguNTM0NjIgLTY2LjE1MzI5LC02NC42NTcwOCAtMC40Mjc0OSwtMzYuMTIyNDggMjguNTM0NjMsLTY1LjcyNTgxIDY0LjY1NzA4LC02Ni4xNTMzIGggMS40OTYyMSBjIDM2LjEyMjQ4LDAgNjUuNDA1MiwyOS4yODI3MiA2NS41MTIwNyw2NS40MDUyIHYgMCA5Ni4zOTc4MyAwIGMgMCwzNS44MDE4NyAtMjkuMTc1ODUsNjQuOTc3NzMgLTY0Ljg3MDgzLDY1LjQwNTIxIC0xNy4wOTk0MSwtMC4xMDY4OCAtMzMuNDUwNzEsLTcuMDUzNTEgLTQ1LjUyNzE3LC0xOS4xMjk5NSBsIC0yNy43ODY1LDI3Ljc4NjUxIGMgMTkuMjM2ODEsMTkuMzQzNyA0NS4zMTMzOSwzMC4zNTE0MyA3Mi41NjU1NiwzMC42NzIwNSBoIDEuMzg5MzMgYyA1Ny4wNjkyNCwtMC44NTQ5NyAxMDIuOTE3LC00Ny4xMzAyMiAxMDMuMjM3NiwtMTA0LjE5OTQ1IFYgMTk5LjI5MTg5IEMgMzUzLjY2NzM5LDE0Mi40MzYzOSAzMDcuMjg1MjcsOTcuMTIyOTk0IDI1MC41MzY2NCw5Ny4xMjI5OTQgWiIKICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjBweCIKICAgICAgIGlkPSJwYXRoMS0zIiAvPjwvZz48L3N2Zz4K"},"displayName":"Groq Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":44,"name":"Crypto Trading"},{"id":49,"name":"AI Summarization"}],"image":[]}}