{"workflow":{"id":13126,"name":"Summarize Gmail emails with Gemini and send an HTML action digest","views":195,"recentViews":0,"totalViews":195,"createdAt":"2026-01-31T00:06:07.342Z","description":"## Who’s it for\nThis template is for anyone who wants a quick, structured inbox review (founders, freelancers, support, operations) without reading every email.\n\n## What it does\nEvery 12 hours, the workflow checks Gmail for emails received in the last 12 hours, then summarizes each email and extracts the next action plus a priority level (high/normal/low). It generates a direct Gmail “Open message” link for each item (using `rfc822msgid`) and sends one clean HTML digest email. If there are no new emails, it sends a short “No new emails” message instead.\n\n## How to set up\n1) Connect your Gmail OAuth2 credentials in these nodes: **Fetch Emails**, **Send Summary**, **No Emails**.  \n2) Connect your Gemini credentials in **Google Gemini Chat Model**.  \n3) Update the recipient email in **Send Summary** and **No Emails** (`sendTo`), or replace it with a single variable in a Config/Set node.  \n4) Click **Test workflow** once, then activate the workflow.\n\n## Requirements\n- Gmail account + Gmail OAuth2 credentials in n8n.  \n- Google Gemini API access.\n\n## Recommended model\nUse **Gemini 2.5 Flash** for fast, reliable structured output. If the model is not available in your region/account, select the closest available Gemini model.\n\n## How to customize the workflow\n- Change the lookback window (12 hours → 24 hours, etc.) by editing the Date/Time calculation.  \n- Adjust the AI prompt rules (priority criteria, action wording, output fields).  \n- Modify the HTML digest design to match your branding.  \n- Remove or change the Inbox-only filter if you want to include other labels (Sent/Other).","workflow":{"meta":{"instanceId":"bd75bdbabc0bd94b1d6b989b3143d54ec12b60eea7566edc4e4666f0aa7e924e","templateCredsSetupCompleted":true},"nodes":[{"id":"1f043ca0-24bf-401a-9ca8-b98da78a3794","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1968,-944],"parameters":{"width":608,"height":816,"content":"## Workflow overview\n\n### Who it’s for\nAnyone who wants a fast, structured inbox review (founders, freelancers, support, ops).\n\n### What this workflow does\n- Runs every 12 hours (Schedule Trigger).\n- Fetches Gmail emails received after a calculated timestamp (now - 12 hours).\n- For each email: normalize fields → filter Inbox → AI extracts summary/action/priority → build a Gmail “Open message” link using **rfc822msgid** (Search Link).\n- Aggregates all results and sends one HTML digest email.\n\n### Recommended AI model\nUse **Gemini 2.5 Flash** for fast, reliable structured output (if you don’t see the model, pick the closest available model in your account/region).\n\n### Required setup before running\n- Add your own Gmail OAuth2 credentials (Fetch Emails / Send Summary / No Emails).\n- Add your own LLM credentials (Google Gemini Chat Model). [web:170]\n- Set the recipient email: update send To in “Send Summary” and “No Emails” (or replace with a variable in a Config/Set node).\n\n### Requirements\n- Gmail account + Gmail OAuth2 credentials in n8n.\n- Google Gemini API credentials.\n\n### Customizing this workflow\n- Change the lookback window (12 hours → 24 hours, etc.).\n- Adjust the AI prompt rules (priority/action style).\n- Customize the HTML digest design.\n- Remove the Inbox filter if you want other labels.\n"},"typeVersion":1},{"id":"aed906a4-b580-478c-a35f-1be5cb79b87f","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[720,-288],"parameters":{"color":7,"width":784,"height":736,"content":"### Build digest & send:\nCreates Gmail deep link per email, aggregates results, and sends one HTML digest."},"typeVersion":1},{"id":"35d132a0-12d1-4c6a-8657-010a7fa96f79","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-1120,-112],"parameters":{"color":7,"width":656,"height":560,"content":"### Fetch & prepare emails\nFetch Gmail emails since receivedAfter, then normalize fields (From/To/snippet/messageId) and keep Inbox only."},"typeVersion":1},{"id":"e87d4152-2188-4f95-9931-8cd6e688191e","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-1968,-112],"parameters":{"color":7,"width":384,"height":560,"content":"### Triggers\nRuns every 12 hours (schedule) or via manual test. Both paths go into the same flow."},"typeVersion":1},{"id":"6ecfd5e7-ad6f-4e74-a09f-eb6c4a08652d","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[352,-288],"parameters":{"color":7,"width":336,"height":736,"content":"### AI extraction: \nGemini analyzes each email and outputs structured JSON: summary, action, priority, recipient."},"typeVersion":1},{"id":"78352d23-a535-4c0e-a7fa-3d3f59ef9bca","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[-1552,-112],"parameters":{"color":7,"width":400,"height":560,"content":"### Config & Time window\n**Config (edit me)**  \nSet `recipientEmail` here. All Gmail nodes use it.\n\n**Time window**  \n\"Now - 12h\" timestamp for Gmail filter. Edit `hours: 12` → `24` for daily."},"typeVersion":1},{"id":"56c09543-477d-4224-975f-7a35ace3dbcc","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[-432,-288],"parameters":{"color":7,"width":752,"height":736,"content":"### Empty run handling\nIf: any emails found?\nChecks if emails exist. True → process. False → send \"No new emails\" HTML.\n### Send \"no new emails\" email\nUses recipientEmail from Config. Predictable schedule behavior.\n### Build Gmail link\nBuild Gmail \"Open message\" link\nExtracts TO email → builds rfc822msgid: deep link. Opens exact email in Gmail."},"typeVersion":1},{"id":"e0b8e04e-9f77-4e98-b288-93665c16750f","name":"Google Gemini Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[432,320],"parameters":{"options":{}},"typeVersion":1},{"id":"b713c822-51a1-4677-8b91-248a77dddcc4","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[576,320],"parameters":{"jsonSchemaExample":"[\n  {\n    \"email\": \"Person responsible (if known, else use 'Unspecified')\",\n    \"action\": \"What needs to be done\",\n    \"priority\": \"high | normal | low\",\n    \"summary\": \"Brief summary of the email content\",\n    \"recipient\":\"Who was the email sent to\" \n  }\n]"},"typeVersion":1.3},{"id":"2f7413dc-39bc-475f-aeba-8c9e3ae21787","name":"No Operation, do nothing","type":"n8n-nodes-base.noOp","position":[192,208],"parameters":{},"typeVersion":1},{"id":"b7bf6d3d-d9be-4e21-8117-f33815ca377f","name":"No Operation, do nothing1","type":"n8n-nodes-base.noOp","position":[-416,304],"parameters":{},"typeVersion":1},{"id":"c7a1a197-1bb7-4a1a-85f5-c050b7c54ce6","name":"When clicking ‘Test workflow’","type":"n8n-nodes-base.manualTrigger","position":[-1824,128],"parameters":{},"typeVersion":1},{"id":"31b1cb59-1790-42a3-8b96-cd3ca88fdde4","name":"Run every 12 hours","type":"n8n-nodes-base.scheduleTrigger","position":[-1824,-16],"parameters":{"rule":{"interval":[{"field":"hours","hoursInterval":12}]}},"typeVersion":1.2},{"id":"6f258bf4-eae4-4b3f-93b7-7ce6614a48ac","name":"Compute receivedAfter (now - 12h)","type":"n8n-nodes-base.dateTime","position":[-1328,128],"parameters":{"date":"={{ $now.minus({ hours: 12 }).toISO() }}","format":"x","options":{},"operation":"formatDate"},"typeVersion":2},{"id":"e66d8d44-b112-4534-bc2f-9c53ee26e050","name":"Fetch Gmail emails (receivedAfter)","type":"n8n-nodes-base.gmail","position":[-1104,128],"webhookId":"a0990a00-880e-4378-9001-af7e63ecf293","parameters":{"simple":false,"filters":{"receivedAfter":"={{ $json.formattedDate }}"},"options":{},"operation":"getAll","returnAll":true},"typeVersion":2.1,"alwaysOutputData":true},{"id":"6cd89664-23cd-4422-b448-c9f51ea6b76f","name":"Normalize email fields (From/To/snippet/messageId)","type":"n8n-nodes-base.set","position":[-896,128],"parameters":{"options":{},"assignments":{"assignments":[{"id":"decdd8a4-bb5c-4ed2-af01-0b9ef4d37b1a","name":"id","type":"string","value":"={{ $json.id }}"},{"id":"064e10f4-e85b-4eaf-af9d-de91e9f39f7a","name":"Body","type":"string","value":"={{ $json.text }}"},{"id":"60796d3f-31cf-4210-b41e-84a4659d05b9","name":"From","type":"string","value":"={{ $json.from.text }}"},{"id":"21eee509-5854-4180-926a-c943afab1889","name":"TO","type":"string","value":"={{ $json.to.text }}"},{"id":"a069836b-17ae-4baa-b779-4fb103bbbba4","name":"Subject","type":"string","value":"={{ $json.subject }}"},{"id":"d15239f9-e8ce-469d-80b2-fb1f4f8e7c05","name":"messageId","type":"string","value":"={{ $json.messageId }}"},{"id":"77941533-53ea-4f49-9bef-851e968c0c8f","name":"location","type":"string","value":"={{ $json.labelIds.includes('INBOX') ? 'Inbox' : ($json.labelIds.includes('SENT') ? 'Sent' : 'Other') }}"},{"id":"ddff66e7-a25f-41db-8513-c217448e128d","name":"html","type":"string","value":"={{ $json.html.replace(/<[^>]*>/g, '') }}"}]}},"typeVersion":3.4},{"id":"7abcb5ca-b6fd-47f6-82cd-674e6268dd5d","name":"Filter: Inbox only","type":"n8n-nodes-base.if","position":[-640,128],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"9114b6a0-a2a7-47f3-8128-d779d324a26d","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.location }}","rightValue":"Inbox"}]}},"typeVersion":2.2},{"id":"8d78f0c4-97c0-406f-bc76-0d0dbc915512","name":"If: any emails found?","type":"n8n-nodes-base.if","position":[-416,112],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"abf11dc4-3b7e-4750-819a-796b34c04bf1","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.id }}","rightValue":""}]}},"typeVersion":2.2},{"id":"88165175-2d59-4cdf-996e-9008bcd990a8","name":"Build Gmail “Open message” link","type":"n8n-nodes-base.set","position":[-16,-64],"parameters":{"options":{},"assignments":{"assignments":[{"id":"345f8cf2-1da7-45c7-81ac-941ee1d444a8","name":"link","type":"string","value":"=https://mail.google.com/mail/u/{{ $json.TO.match(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/g)[0] }}/#search/rfc822msgid:{{ encodeURIComponent($json.messageId.slice(1, -1)) }}"}]}},"typeVersion":3.4},{"id":"9fda7f18-e987-49f8-80cf-e684d785f240","name":"AI: extract summary, action, priority","type":"@n8n/n8n-nodes-langchain.agent","position":[432,96],"parameters":{"text":"=You are a highly efficient AI assistant specializing in email analysis and data extraction.\n\nYour primary task is to analyze the provided email data and use the `Structured Output Parser` tool to format the extracted information. Adhere strictly to the field descriptions below.\n\n**Field Extraction Rules:**\n\n* **sender_email**: From the 'From' input, you MUST extract ONLY the email address part (the text containing '@'). Ignore any names.\n    * Example 1: If 'From' is `Email_example`, the output for \"sender_email\" MUST be `premium@linkedin.com`.\n    * Example 2: If 'From' is `Email_example`, the output for \"sender_email\" MUST be `jobs@mail.xing.com`.\n* **action**: Describe the main action required from the email in a clear, concise phrase. If no specific action is needed, use \"Review\" or \"No action required\".\n* **priority**: Assign a priority based on these strict criteria:\n    * `high`: For urgent requests, time-sensitive approvals, meeting invitations, or critical security alerts.\n    * `normal`: For general updates, collaboration notes, non-urgent questions, or standard notifications.\n    * `low`: For newsletters, promotional content, social media notifications, or automated non-critical reports.\n* **summary**: Write a brief, one-sentence summary of the email's main point.\n* **recipient**: The recipient(s) of the email. Write just the email address.\n  Example: \"To\": \n\"\\\"Email_example\\\" \" or \"TO\": \"Email_example\" or \"To\": \n\"\"\n\nyou will recive **Snippet** as html and you have to find the email body from it.\n**Input Email Data:**\n\n* **From**: `{{ $('If: any emails found?').item.json.From }}`\n* **To**: `{{ $('If: any emails found?').item.json.TO }}`\n* **Snippet**: `{{ $('If: any emails found?').item.json.html }}`\n\nNow, analyze the data and call the `Structured Output Parser` tool with the correctly extracted values.","options":{},"promptType":"define","hasOutputParser":true},"retryOnFail":true,"typeVersion":2.2,"waitBetweenTries":500},{"id":"b40f687a-d573-4a9c-8278-3e82609a908b","name":"Merge: link + AI result","type":"n8n-nodes-base.merge","position":[912,80],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition"},"typeVersion":3.2},{"id":"2090f168-5a72-4c08-8158-39d1919c7fbf","name":"Aggregate: build digest list","type":"n8n-nodes-base.aggregate","position":[1120,80],"parameters":{"options":{},"aggregate":"aggregateAllItemData"},"typeVersion":1},{"id":"f07b9d41-c67a-4b26-a96a-c2f72ec093d3","name":"Send HTML digest email","type":"n8n-nodes-base.gmail","position":[1312,80],"webhookId":"154e9605-4c16-4866-8586-617c41826974","parameters":{"sendTo":"={{ $('Config (edit me)').item.json.recipientEmail }}","message":"=<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" />\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n  <title>Email Summary</title>\n  <style type=\"text/css\">\n    body { margin:0; padding:0; background:#eef6f1; }\n    a { color:#007A3D; text-decoration:underline; }\n    .wrap { width:600px; max-width:600px; }\n    @media only screen and (max-width: 640px) {\n      .wrap { width:100% !important; }\n      .px { padding-left:16px !important; padding-right:16px !important; }\n    }\n  </style>\n</head>\n\n<body style=\"margin:0; padding:0; background:#eef6f1;\">\n  <table role=\"presentation\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"background:#eef6f1;\">\n    <tr>\n      <td align=\"center\" style=\"padding:18px 12px;\">\n        <table role=\"presentation\" class=\"wrap\" width=\"600\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"width:600px; max-width:600px;\">\n          <tr>\n            <td style=\"background:#007A3D; color:#ffffff; border-radius:14px; padding:18px 18px;\">\n              <div style=\"font-family:Arial,Helvetica,sans-serif; font-size:20px; line-height:26px; font-weight:bold;\">\n                Email Summary & Actions\n              </div>\n              <div style=\"font-family:Arial,Helvetica,sans-serif; font-size:12px; line-height:18px; opacity:0.95; margin-top:4px;\">\n                A clean digest of your latest emails\n              </div>\n            </td>\n          </tr>\n\n          <tr>\n            <td style=\"padding:12px 0 0 0;\"></td>\n          </tr>\n\n          <tr>\n            <td style=\"background:#ffffff; border:1px solid #e6e6e6; border-radius:14px; overflow:hidden;\">\n              <table role=\"presentation\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n                <tr>\n                  <td class=\"px\" style=\"padding:16px 18px 6px 18px;\">\n                    <div style=\"font-family:Arial,Helvetica,sans-serif; font-size:13px; line-height:18px; color:#666;\">\n                      Items\n                    </div>\n                  </td>\n                </tr>\n\n                <tr>\n                  <td class=\"px\" style=\"padding:0 18px 18px 18px;\">\n                    {{ $json.data.map(item => {\n                      const o = (item.output && item.output[0]) ? item.output[0] : {};\n                      const priority = ((o.priority ? String(o.priority) : 'normal')).toLowerCase();\n                      const leftColor = priority === 'high' ? '#d9534f' : (priority === 'low' ? '#6b6e6b' : '#007A3D');\n                      const pillBg = priority === 'high' ? '#fbe9e8' : (priority === 'low' ? '#efefef' : '#e6f3ec');\n\n                      const sender = o.email ? String(o.email) : 'Unknown sender';\n                      const recipient = o.recipient ? String(o.recipient) : 'Unknown recipient';\n                      const summary = o.summary ? String(o.summary) : '';\n                      const action = o.action ? String(o.action) : '';\n                      const link = item.link ? String(item.link) : '#';\n\n                      return `\n                        <table role=\"presentation\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\"\n                               style=\"margin:0 0 12px 0; border:1px solid #eeeeee; border-radius:12px; overflow:hidden; background:#ffffff;\">\n                          <tr>\n                            <td style=\"width:8px; background:${leftColor}; font-size:0; line-height:0;\">&nbsp;</td>\n                            <td style=\"padding:14px 14px;\">\n                              <table role=\"presentation\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n                                <tr>\n                                  <td align=\"left\" style=\"padding:0;\">\n                                    <div style=\"font-family:Arial,Helvetica,sans-serif; font-size:14px; line-height:20px;\">\n                                      <span style=\"font-weight:bold; color:#007A3D;\">${sender}</span>\n                                      <span style=\"color:#999;\"> → </span>\n                                      <span style=\"color:#333;\">${recipient}</span>\n                                    </div>\n                                  </td>\n                                  <td align=\"right\" style=\"padding:0; white-space:nowrap;\">\n                                    <span style=\"display:inline-block; padding:4px 10px; border-radius:999px; font-family:Arial,Helvetica,sans-serif; font-size:11px; font-weight:bold; background:${pillBg}; color:${leftColor};\">\n                                      ${priority}\n                                    </span>\n                                  </td>\n                                </tr>\n\n                                ${summary ? `\n                                <tr>\n                                  <td colspan=\"2\" style=\"padding:10px 0 0 0;\">\n                                    <div style=\"font-family:Arial,Helvetica,sans-serif; font-size:13px; line-height:19px; color:#333;\">\n                                      <span style=\"font-weight:bold; color:#444;\">Summary:</span>\n                                      <span style=\"color:#111;\">${summary}</span>\n                                    </div>\n                                  </td>\n                                </tr>\n                                ` : ''}\n\n                                ${action ? `\n                                <tr>\n                                  <td colspan=\"2\" style=\"padding:8px 0 0 0;\">\n                                    <div style=\"font-family:Arial,Helvetica,sans-serif; font-size:13px; line-height:19px; color:#333;\">\n                                      <span style=\"font-weight:bold; color:#444;\">Action:</span>\n                                      <span style=\"color:#111;\">${action}</span>\n                                    </div>\n                                  </td>\n                                </tr>\n                                ` : ''}\n\n                                <tr>\n                                  <td colspan=\"2\" style=\"padding:12px 0 0 0;\">\n                                    <a href=\"${link}\" target=\"_blank\"\n                                       style=\"font-family:Arial,Helvetica,sans-serif; font-size:12px; font-weight:bold; color:#007A3D; text-decoration:underline;\">\n                                      Open message\n                                    </a>\n                                  </td>\n                                </tr>\n                              </table>\n                            </td>\n                          </tr>\n                        </table>\n                      `;\n                    }).join('') }}\n                  </td>\n                </tr>\n\n                <tr>\n                  <td style=\"background:#007A3D; color:#ffffff; text-align:center; padding:12px 18px;\">\n                    <div style=\"font-family:Arial,Helvetica,sans-serif; font-size:12px; line-height:18px;\">\n                      Generated by MJ-n8n Summarize AI Agent\n                    </div>\n                  </td>\n                </tr>\n\n              </table>\n            </td>\n          </tr>\n        </table>\n      </td>\n    </tr>\n  </table>\n</body>\n</html>\n","options":{"ccList":"","appendAttribution":false,"replyToSenderOnly":false},"subject":"=Email Summary"},"typeVersion":2.1},{"id":"83bcea59-9616-4a0a-b9e0-9bfe2bf00c35","name":"Send “no new emails” email","type":"n8n-nodes-base.gmail","position":[-16,208],"webhookId":"19c64515-a825-4f18-9985-1b5028b7cfac","parameters":{"sendTo":"={{ $('Config (edit me)').item.json.recipientEmail }}","message":"=<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Email Details</title>\n    <style>\n        body {\n            font-family: Arial, sans-serif;\n            margin: 0;\n            padding: 0;\n            background-color: #f9f9f9;\n            color: #333;\n            line-height: 1.6;\n        }\n        .email-container {\n            max-width: 600px;\n            margin: 20px auto;\n            background: #ffffff;\n            border: 1px solid #ddd;\n            border-radius: 10px;\n            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n        }\n        .email-header {\n            background-color: #007A3D;\n            color: #fff;\n            padding: 20px;\n            text-align: center;\n            border-top-left-radius: 10px;\n            border-top-right-radius: 10px;\n        }\n        .email-header h1 {\n            margin: 0;\n            font-size: 24px;\n        }\n        .email-content {\n            padding: 20px;\n        }\n        .email-footer {\n            background-color: #007A3D;\n            color: #fff;\n            text-align: center;\n            padding: 10px;\n            font-size: 14px;\n            border-bottom-left-radius: 10px;\n            border-bottom-right-radius: 10px;\n        }\n        .no-emails-message {\n            text-align: center;\n            padding: 40px 20px;\n            color: #333;\n            font-size: 18px;\n            font-weight: bold;\n        }\n    </style>\n</head>\n<body>\n    <div class=\"email-container\">\n        <div class=\"email-header\">\n            <h1>Email Summary & Actions</h1>\n        </div>\n        <div class=\"email-content\">\n            <div class=\"no-emails-message\">No new emails in the past 12 hours.</div>\n        </div>\n        <div class=\"email-footer\">\n            <p>Generated by MJ-n8n Summarize AI Agent<br />\n        </div>\n    </div>\n</body>\n</html>","options":{},"subject":"=Email Summary"},"typeVersion":2.1},{"id":"9ccaa82b-3ee8-491a-b1ab-7b49f088a511","name":"Config (edit me)","type":"n8n-nodes-base.set","position":[-1536,128],"parameters":{"options":{},"assignments":{"assignments":[{"id":"2014da21-4276-4bfb-b0eb-f59978a1a84d","name":"recipientEmail","type":"string","value":""}]}},"typeVersion":3.4},{"id":"ccc87453-9861-4386-a607-04378d408453","name":"No Operation, do nothing2","type":"n8n-nodes-base.noOp","position":[480,-64],"parameters":{},"typeVersion":1}],"pinData":{},"connections":{"Config (edit me)":{"main":[[{"node":"Compute receivedAfter (now - 12h)","type":"main","index":0}]]},"Filter: Inbox only":{"main":[[{"node":"If: any emails found?","type":"main","index":0}],[{"node":"No Operation, do nothing1","type":"main","index":0}]]},"Run every 12 hours":{"main":[[{"node":"Config (edit me)","type":"main","index":0}]]},"If: any emails found?":{"main":[[{"node":"Build Gmail “Open message” link","type":"main","index":0},{"node":"AI: extract summary, action, priority","type":"main","index":0}],[{"node":"Send “no new emails” email","type":"main","index":0}]]},"Merge: link + AI result":{"main":[[{"node":"Aggregate: build digest list","type":"main","index":0}]]},"Google Gemini Chat Model":{"ai_languageModel":[[{"node":"AI: extract summary, action, priority","type":"ai_languageModel","index":0}]]},"Structured Output Parser":{"ai_outputParser":[[{"node":"AI: extract summary, action, priority","type":"ai_outputParser","index":0}]]},"No Operation, do nothing2":{"main":[[{"node":"Merge: link + AI result","type":"main","index":0}]]},"Aggregate: build digest list":{"main":[[{"node":"Send HTML digest email","type":"main","index":0}]]},"Send “no new emails” email":{"main":[[{"node":"No Operation, do nothing","type":"main","index":0}]]},"Compute receivedAfter (now - 12h)":{"main":[[{"node":"Fetch Gmail emails (receivedAfter)","type":"main","index":0}]]},"When clicking ‘Test workflow’":{"main":[[{"node":"Config (edit me)","type":"main","index":0}]]},"Fetch Gmail emails (receivedAfter)":{"main":[[{"node":"Normalize email fields (From/To/snippet/messageId)","type":"main","index":0}]]},"Build Gmail “Open message” link":{"main":[[{"node":"No Operation, do nothing2","type":"main","index":0}]]},"AI: extract summary, action, priority":{"main":[[{"node":"Merge: link + AI result","type":"main","index":1}]]},"Normalize email fields (From/To/snippet/messageId)":{"main":[[{"node":"Filter: Inbox only","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":26,"nodeTypes":{"n8n-nodes-base.if":{"count":2},"n8n-nodes-base.set":{"count":3},"n8n-nodes-base.noOp":{"count":3},"n8n-nodes-base.gmail":{"count":3},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.dateTime":{"count":1},"n8n-nodes-base.aggregate":{"count":1},"n8n-nodes-base.stickyNote":{"count":7},"n8n-nodes-base.manualTrigger":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":1},"@n8n/n8n-nodes-langchain.lmChatGoogleGemini":{"count":1},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Mohammed Aljer","username":"m-j","bio":"","verified":false,"links":[""],"avatar":"https://gravatar.com/avatar/f7d915d86f2569fb9ad83717700995d40b75934772f22497143ad01e814c83b0?r=pg&d=retro&size=200"},"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":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"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/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"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/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.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":26,"icon":"fa:arrow-right","name":"n8n-nodes-base.noOp","codex":{"data":{"alias":["nothing"],"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/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/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/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/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.noop/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"organization\"]","defaults":{"name":"No Operation, do nothing","color":"#b0b0b0"},"iconData":{"icon":"arrow-right","type":"icon"},"displayName":"No Operation, do nothing","typeVersion":1,"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":221,"icon":"fa:clock","name":"n8n-nodes-base.dateTime","codex":{"data":{"resources":{"generic":[{"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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Date & Time","color":"#408000"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Date & Time","typeVersion":2,"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":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":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":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule 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":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1236,"icon":"file:aggregate.svg","name":"n8n-nodes-base.aggregate","codex":{"data":{"alias":["Aggregate","Combine","Flatten","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Aggregate"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjRkY2RDVBIiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMyIDE0OGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE0NmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJINDRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNDZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDQ0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wIDk2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTQ2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg0NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGQ9Ik03NCA3NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDExNi4yMTdjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjU2YzAgMjYuOTc4IDEwLjI3MiA1MS41NTcgMjcuMTE5IDcwLjAzOSA1LjA1NSA1LjU0NSA1LjA1NSAxNC4zNzcgMCAxOS45MjItMTYuODQ3IDE4LjQ4Mi0yNy4xMTkgNDMuMDYxLTI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMySDg2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTE2LjIxN2M0NC4xODMgMCA4MC0zNS44MTcgODAtODB2LTU2YzAtMzAuOTI4IDI1LjA3Mi01NiA1Ni01NmE1Ljc4MyA1Ljc4MyAwIDAgMCA1Ljc4My01Ljc4M3YtMzYuNDM0YTUuNzgzIDUuNzgzIDAgMCAwLTUuNzgzLTUuNzgzYy0zMC45MjggMC01Ni0yNS4wNzItNTYtNTZ2LTU2YzAtNDQuMTgzLTM1LjgxNy04MC04MC04MEg4NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zNzYgMjQ0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgzODhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUxMnY1MTJIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4="},"displayName":"Aggregate","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1262,"icon":"file:google.svg","name":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglegemini/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Google Gemini Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im0wIDExIDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Im0wIDM3IDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OCAxNyAyNGwtNC0zIDM1LTEweiIgY2xpcC1wYXRoPSJ1cmwoI2IpIi8+PC9zdmc+"},"displayName":"Google Gemini Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":43,"name":"Personal Productivity"},{"id":49,"name":"AI Summarization"}],"image":[]}}