AutomationFlowsAI & RAG › Log Gold and Silver Prices and Email Groq Insights with Google Sheets

Log Gold and Silver Prices and Email Groq Insights with Google Sheets

ByWeblineIndia @weblineindia on n8n.io

This workflow manually logs daily Gold and Silver prices from GoldAPI into Google Sheets, summarizes historical monthly averages, generates seasonal insights with Groq (LLM), builds QuickChart bar charts, and emails a formatted report via Gmail. Starts manually and loads a…

Event trigger★★★★☆ complexityAI-powered22 nodesHTTP RequestGoogle SheetsAgentGroq ChatGmail
AI & RAG Trigger: Event Nodes: 22 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #16362 — we link there as the canonical source.

This workflow follows the Agent → Gmail recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "nreg5ev46Edlsh1x",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Commodity Seasonal Trend Logger with Monthly Pattern Insights (Sheets + AI)",
  "tags": [],
  "nodes": [
    {
      "id": "3e68d90a-94c2-4394-80fc-49f36a8ffbc9",
      "name": "Fetch Gold Price API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -16,
        -240
      ],
      "parameters": {
        "url": "=https://www.goldapi.io/api/{{ $json.Symbol }}/INR",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "x-access-token",
              "value": "goldapi-2305t2smncslld7-io"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "98a8093d-69c4-4092-bcba-875d3b542688",
      "name": "Format Data for Sheet",
      "type": "n8n-nodes-base.set",
      "position": [
        0,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "30222d0b-7e7a-4d1a-b941-d26caac0f4ba",
              "name": "ID",
              "type": "string",
              "value": "={{ $today.toFormat('yyyy-MM-dd') }}-{{ $('Loop Commodity').item.json.Commodity }}"
            },
            {
              "id": "40e6d8a4-f3de-45fb-9307-81063e6f38f6",
              "name": "Price",
              "type": "number",
              "value": "={{ parseFloat((($json.price / 31.1035) * 10).toFixed(2)) }}"
            },
            {
              "id": "d2ffbe29-db0f-4490-8027-4a5bd1743013",
              "name": "=Date",
              "type": "string",
              "value": "={{ $today.toFormat('yyyy-MM-dd') }}"
            },
            {
              "id": "8b9a585f-aa52-488b-a3e2-6fa61a3ec3f5",
              "name": "Month",
              "type": "string",
              "value": "={{ $today.toFormat('MMMM') }}"
            },
            {
              "id": "50f9d210-896e-4204-8ec5-9d0fdb713043",
              "name": "Commodity",
              "type": "string",
              "value": "={{ $('Loop Commodity').item.json.Commodity }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ba6f691c-fbe2-4645-b9fc-27396c57fb36",
      "name": "Save to Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        512,
        -32
      ],
      "parameters": {
        "columns": {
          "value": {
            "ID": "={{ $json.ID }}",
            "Date": "={{ $json.Date }}",
            "Month": "={{ $json.Month }}",
            "Price": "={{ $json.Price }}",
            "Commodity": "={{ $json.Commodity }}"
          },
          "schema": [
            {
              "id": "ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Price",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Price",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Month",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Month",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Commodity",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Commodity",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 571476420,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KCjydTlah16mwb-Dt4kTP10TNnUX-zlCLfcaC02erPo/edit#gid=571476420",
          "cachedResultName": "04_HistoricalData"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1KCjydTlah16mwb-Dt4kTP10TNnUX-zlCLfcaC02erPo",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KCjydTlah16mwb-Dt4kTP10TNnUX-zlCLfcaC02erPo/edit?usp=drivesdk",
          "cachedResultName": "n8n-projects"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "f273e703-73e4-473b-af47-134492de3534",
      "name": "Fetch Historical Data",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        928,
        -272
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 571476420,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KCjydTlah16mwb-Dt4kTP10TNnUX-zlCLfcaC02erPo/edit#gid=571476420",
          "cachedResultName": "04_HistoricalData"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1KCjydTlah16mwb-Dt4kTP10TNnUX-zlCLfcaC02erPo",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KCjydTlah16mwb-Dt4kTP10TNnUX-zlCLfcaC02erPo/edit?usp=drivesdk",
          "cachedResultName": "n8n-projects"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.7
    },
    {
      "id": "d756b6e4-3591-4f4d-b9fa-7f22d4eae109",
      "name": "Calculate Monthly Averages",
      "type": "n8n-nodes-base.summarize",
      "position": [
        976,
        -64
      ],
      "parameters": {
        "options": {
          "skipEmptySplitFields": true
        },
        "fieldsToSplitBy": "Month, Commodity",
        "fieldsToSummarize": {
          "values": [
            {
              "field": "Price",
              "aggregation": "average"
            },
            {
              "field": "Price",
              "aggregation": "max"
            },
            {
              "field": "Price",
              "aggregation": "min"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "60253b02-984d-48b9-9ae7-bdaf955c0bad",
      "name": "Combine Data for AI",
      "type": "n8n-nodes-base.code",
      "position": [
        1168,
        -256
      ],
      "parameters": {
        "jsCode": "// 1. Create the Indian Rupee formatter\nconst inrFormatter = new Intl.NumberFormat('en-IN', {\n  style: 'currency',\n  currency: 'INR',\n  minimumFractionDigits: 2\n});\n\n// 2. Map through the items and include the Commodity name\nconst formattedData = $input.all().map(item => {\n  const month = item.json.Month;\n  const commodity = item.json.Commodity; // <--- Added this!\n  const price = item.json.average_Price;\n  \n  const formattedPrice = inrFormatter.format(price);\n  \n  return `${commodity} - ${month}: ${formattedPrice}`;\n}).join('\\n');\n\n// 3. Return the clean text block\nreturn { json: { aiPromptData: formattedData } };"
      },
      "typeVersion": 2
    },
    {
      "id": "2ec14589-c6d5-481a-a2ee-d885b662ea6b",
      "name": "Generate Financial Insights",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1504,
        -256
      ],
      "parameters": {
        "text": "==Act as a macroeconomic data analyst. Review this monthly seasonal data for Gold and Silver. \nIdentify the overall market trend, and give a concise summary comparing the two assets.\n\nYou MUST return your analysis strictly as a valid JSON object using exactly this schema. Do not use markdown formatting, conversational text, or code blocks (like ```json).\n\n{\n  \"gold_insight\": \"1 sentence on Gold's strongest/weakest trend\",\n  \"silver_insight\": \"1 sentence on Silver's strongest/weakest trend\",\n  \"overall_market_trend\": \"Upward, Downward, or Mixed\",\n  \"summary\": \"Your 2-sentence macro summary comparing the assets\"\n}\n\nHere is the data:\n{{ $json.aiPromptData }}",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 3.1
    },
    {
      "id": "c6e59ae3-c02c-462a-8935-f4e967058249",
      "name": "Groq Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGroq",
      "position": [
        1440,
        -80
      ],
      "parameters": {
        "model": "openai/gpt-oss-20b",
        "options": {}
      },
      "credentials": {
        "groqApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a81d0b97-6fd2-4180-9849-106a9d4484e3",
      "name": "Parse AI JSON",
      "type": "n8n-nodes-base.code",
      "position": [
        1792,
        -256
      ],
      "parameters": {
        "jsCode": "// 1. Get the raw text from the AI node (adjust 'text' if your AI node outputs to a different field name)\nlet rawResponse = $input.first().json.output\n\n// 2. Safety check: Remove markdown formatting just in case\nrawResponse = rawResponse.replace(/```json/g, '').replace(/```/g, '').trim();\n\n// 3. Convert the text into a real JSON object\nconst parsedData = JSON.parse(rawResponse);\n\n// 4. Return the structured data\nreturn { json: parsedData };"
      },
      "typeVersion": 2
    },
    {
      "id": "3a2e1e7e-9c53-4ebc-a052-2d40890da264",
      "name": "Send Report",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2256,
        -256
      ],
      "parameters": {
        "sendTo": "RECEIVER MAIL ID",
        "message": "==<div style=\"font-family: Arial, sans-serif; border: 1px solid #ddd; padding: 20px; border-radius: 10px;\">\n  <h2 style=\"color: #2c3e50;\">Macro Market Seasonal Report (Gold & Silver)</h2>\n  \n  <p><strong>Macro Summary:</strong> {{ $json.summary }}</p>\n  \n  <hr>\n  \n  <p><strong>Asset Insights (Prices per 10g):</strong></p>\n  <ul>\n    <li><strong> Gold:</strong> {{ $json.gold_insight }}</li>\n    <li><strong> Silver:</strong> {{ $json.silver_insight }}</li>\n    <li><strong> Overall Market Trend:</strong> <span style=\"font-weight:bold;\">{{ $json.overall_market_trend }}</span></li>\n  </ul>\n\n  <hr>\n\n  <h3> Gold Price Volatility</h3>\n  <img src=\"{{ $json.gold_chart_url }}\" alt=\"Gold Chart\" style=\"width: 100%; max-width: 600px; margin-bottom: 20px;\">\n  \n  <h3> Silver Price Volatility</h3>\n  <img src=\"{{ $json.silver_chart_url }}\" alt=\"Silver Chart\" style=\"width: 100%; max-width: 600px;\">\n  \n  <p style=\"font-size: 11px; color: #888; margin-top: 20px;\">\n    This is an automated multi-asset report generated by your n8n Commodity Logger.\n  </p>\n</div>",
        "options": {},
        "subject": "test"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "a519a675-70e0-46d1-859e-1fb96493980f",
      "name": "Asset Roster",
      "type": "n8n-nodes-base.code",
      "position": [
        -528,
        -240
      ],
      "parameters": {
        "jsCode": "return [\n  {\n    json: {\n      Commodity: \"Gold\",\n      Symbol: \"XAU\"\n    }\n  },\n  {\n    json: {\n      Commodity: \"Silver\",\n      Symbol: \"XAG\"\n    }\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "c24c7f4e-0d6a-41d1-b391-1ee50250f95e",
      "name": "Check Today's Price",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        384,
        -176
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "={{ $json.Date }}",
              "lookupColumn": "Date"
            },
            {
              "lookupValue": "={{ $json.Commodity }}",
              "lookupColumn": "Commodity"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 571476420,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KCjydTlah16mwb-Dt4kTP10TNnUX-zlCLfcaC02erPo/edit#gid=571476420",
          "cachedResultName": "04_HistoricalData"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1KCjydTlah16mwb-Dt4kTP10TNnUX-zlCLfcaC02erPo",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KCjydTlah16mwb-Dt4kTP10TNnUX-zlCLfcaC02erPo/edit?usp=drivesdk",
          "cachedResultName": "n8n-projects"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7,
      "alwaysOutputData": true
    },
    {
      "id": "2fa1e7c5-ff25-4dab-8a59-559da283f768",
      "name": "Calculate Max Price",
      "type": "n8n-nodes-base.code",
      "position": [
        608,
        -176
      ],
      "parameters": {
        "jsCode": "// 1. Get the freshly fetched live API data\nconst newData = $('Format Data for Sheet').first().json;\nconst newPrice = parseFloat(newData.Price);\n\n// 2. Set our default existing price to 0\nlet existingPrice = 0;\n\n// 3. SAFELY check if the sheet gave us a price\nconst sheetData = $input.first();\nif (sheetData && sheetData.json && sheetData.json.Price) {\n    existingPrice = parseFloat(sheetData.json.Price);\n}\n\n// 4. Keep the highest price\nconst maxPrice = Math.max(newPrice, existingPrice);\n\n// 5. Output the final data for the Save node\nreturn {\n  json: {\n    ID: newData.ID, \n    Date: newData.Date,\n    Month: newData.Month,\n    Commodity: newData.Commodity,\n    Price: maxPrice\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "933804cf-cb07-4d67-8b2a-90663d538b6c",
      "name": "Generate Comparative Chart",
      "type": "n8n-nodes-base.code",
      "position": [
        2000,
        -256
      ],
      "parameters": {
        "jsCode": "// 1. Get all the grouped data from earlier in the workflow\nconst summarizedData = $('Calculate Monthly Averages').all();\n\n// 2. Separate Gold and Silver Data\nconst goldData = summarizedData.filter(item => item.json.Commodity === 'Gold');\nconst silverData = summarizedData.filter(item => item.json.Commodity === 'Silver');\n\n// Helper function to build a QuickChart URL\nfunction buildChartUrl(data, label, color, title) {\n  if (data.length === 0) return \"\";\n  \n  const labels = data.map(item => item.json.Month.substring(0,3));\n  const averages = data.map(item => item.json.average_Price);\n  \n  const chartConfig = {\n    type: 'bar',\n    data: {\n      labels: labels,\n      datasets: [{ label: label, backgroundColor: color, data: averages }]\n    },\n    options: {\n      title: { display: true, text: title }\n    }\n  };\n  return `https://quickchart.io/chart?w=600&h=300&c=${encodeURIComponent(JSON.stringify(chartConfig))}`;\n}\n\n// 3. Generate the two separate URLs\nconst goldChartUrl = buildChartUrl(goldData, 'Gold Avg Price (10g)', '#d4af37', 'Gold Seasonal Trend');\nconst silverChartUrl = buildChartUrl(silverData, 'Silver Avg Price (10g)', '#C0C0C0', 'Silver Seasonal Trend');\n\n// 4. Output the separate URLs alongside the AI data\nreturn {\n  json: {\n    ...$input.first().json,\n    gold_chart_url: goldChartUrl,\n    silver_chart_url: silverChartUrl\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "81c49b47-5b8d-4add-af63-32cdf1eb762b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -704,
        -400
      ],
      "parameters": {
        "color": 7,
        "width": 496,
        "height": 368,
        "content": "## Setup & Loop\nThis is the workflow's \"brain.\" It defines which assets we care about (Gold and Silver) and triggers the sequence. The loop ensures that every subsequent step\u2014from price fetching to sheet updates\u2014is performed individually for each commodity in the list."
      },
      "typeVersion": 1
    },
    {
      "id": "909dd864-d434-4b41-818b-f6b9ff3b901a",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        -432
      ],
      "parameters": {
        "color": 7,
        "width": 336,
        "height": 608,
        "content": "## Data Collection \nThe \"Data Harvester\" phase. It reaches out to the GoldAPI to grab the latest market rates in INR. Once the data arrives, a Set node cleans it up, converting units (like Tolas or Ounces) into a standard format that\u2019s easy to read and store."
      },
      "typeVersion": 1
    },
    {
      "id": "0c85495a-4776-45aa-881b-9539e7dbeb9c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        336,
        -464
      ],
      "parameters": {
        "color": 7,
        "width": 448,
        "height": 608,
        "content": "## Database Sync & Max Price Logic\nThe \"Database Guard.\" Before saving, it checks the Google Sheet to see if we already logged a price for today. If it finds one, it compares the two and keeps the highest value (Max Price), preventing duplicate entries while ensuring the most volatile peak is recorded."
      },
      "typeVersion": 1
    },
    {
      "id": "b153fba2-dd68-4b15-a9ed-83b205c0c0ea",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        880,
        -496
      ],
      "parameters": {
        "color": 7,
        "width": 432,
        "height": 592,
        "content": "## Trend Analysis\nThis section shifts from \"daily logging\" to \"big picture thinking.\" It pulls the entire history of the sheet, groups the prices by month and commodity, and calculates the averages. This creates a clean \"data block\" that the AI can actually understand."
      },
      "typeVersion": 1
    },
    {
      "id": "f5c3467f-da55-4303-a59f-ae9867189876",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1376,
        -448
      ],
      "parameters": {
        "color": 7,
        "width": 768,
        "height": 528,
        "content": "## AI & Visuals\nThe \"Insight Engine.\" It feeds the monthly averages into a Groq-powered LLM to get a human-like market summary. Simultaneously, it generates dynamic chart URLs via QuickChart so the final report isn't just a wall of text, but a visual dashboard."
      },
      "typeVersion": 1
    },
    {
      "id": "3f6ee692-d2cd-4bae-a4f4-438f6cf49079",
      "name": "Loop Commodity",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -320,
        -256
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "968e384f-5143-4ee4-b751-ce9a39f73042",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1312,
        -1264
      ],
      "parameters": {
        "width": 528,
        "height": 880,
        "content": "## Workflow Summary\nThis workflow automates the daily monitoring of Gold and Silver prices. It fetches live data, updates a Google Sheet to maintain a historical record, and then uses AI to analyze monthly trends. Finally, it creates visual bar charts and emails a professional market report.\n\n### How it Works\n1. Trigger: You start the flow manually (or on a schedule).\n\n2. Fetch: It loops through \"Gold\" and \"Silver,\" hitting an external API for current INR prices.\n\n3. Log: It checks your Google Sheet. If today's price is already there, it compares them; otherwise, it appends the new price.\n\n4. Analyze: It pulls all historical data from the sheet, calculates monthly averages, and sends that \"big picture\" to a Groq-powered AI.\n\n5. Visualize & Send: A code snippet turns those averages into chart URLs (via QuickChart), and the final Gmail node sends everything to your inbox.\n\n## Steps to Setup\n1. API Keys: Get a free key from goldapi.io and add it to the Fetch Gold Price API header.\n\n2. Google Sheets: Connect your Google account and select the specific spreadsheet you want to use for historical data.\n\n3. AI Credentials: Add your Groq API key to the Groq Chat Model node.\n\n4. Email: In the Send Report node, replace \"RECEIVER MAIL ID\" with your actual email address.\n\n5. Test: Hit \"Execute Workflow\" to ensure the sheet updates and the email arrives."
      },
      "typeVersion": 1
    },
    {
      "id": "e0713b26-7636-45c4-a16d-30f0a7733819",
      "name": "Start Workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -688,
        -240
      ],
      "parameters": {},
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "baed4ef8-010f-4925-afa7-52ec4166a9e5",
  "connections": {
    "Asset Roster": {
      "main": [
        [
          {
            "node": "Loop Commodity",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI JSON": {
      "main": [
        [
          {
            "node": "Generate Comparative Chart",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save to Sheet": {
      "main": [
        [
          {
            "node": "Loop Commodity",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Commodity": {
      "main": [
        [
          {
            "node": "Fetch Historical Data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Fetch Gold Price API",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start Workflow": {
      "main": [
        [
          {
            "node": "Asset Roster",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Groq Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Generate Financial Insights",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Calculate Max Price": {
      "main": [
        [
          {
            "node": "Save to Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Today's Price": {
      "main": [
        [
          {
            "node": "Calculate Max Price",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine Data for AI": {
      "main": [
        [
          {
            "node": "Generate Financial Insights",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Gold Price API": {
      "main": [
        [
          {
            "node": "Format Data for Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Historical Data": {
      "main": [
        [
          {
            "node": "Calculate Monthly Averages",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Data for Sheet": {
      "main": [
        [
          {
            "node": "Check Today's Price",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculate Monthly Averages": {
      "main": [
        [
          {
            "node": "Combine Data for AI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Comparative Chart": {
      "main": [
        [
          {
            "node": "Send Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Financial Insights": {
      "main": [
        [
          {
            "node": "Parse AI JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow manually logs daily Gold and Silver prices from GoldAPI into Google Sheets, summarizes historical monthly averages, generates seasonal insights with Groq (LLM), builds QuickChart bar charts, and emails a formatted report via Gmail. Starts manually and loads a…

Source: https://n8n.io/workflows/16362/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This n8n workflow automates your entire B2B outreach pipeline from lead discovery to personalized cold email delivery. Submit a form, let Apollo find and enrich your leads, review AI-generated emails

Output Parser Structured, Agent, Groq Chat +4
AI & RAG

This workflow automates the tracking of stock market sector rotation. It fetches a list of active stocks from Google Sheets, pulls their last 5 days of market data from Yahoo Finance and calculates mo

Groq Chat, Google Sheets, HTTP Request +2
AI & RAG

&gt; Smart Stock Risk Alerts in Minutes

Google Sheets, Gmail, Agent +2
AI & RAG

Arvifund - Supabase (Fixed v5). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 91 nodes.

HTTP Request, Telegram, Google Sheets +9
AI & RAG

Arvifund - Supabase. Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.

HTTP Request, Telegram, Google Sheets +8