{"workflow":{"id":14369,"name":"Generate IPL post‑match and weekly email analyses with GPT‑4o, CricAPI and Gmail","views":22,"recentViews":1,"totalViews":22,"createdAt":"2026-03-26T12:22:16.683Z","description":"## 📊 Description\nThe scoreboard shows you what happened. This workflow tells you why it happened. Every time an IPL match ends this automation detects the completed result, fetches the full scorecard, and sends it to GPT-4o which produces a detailed journalist-style post-match analysis — innings breakdowns, tactical decisions, key turning points, player of the match, and what the result means for both teams. Every Monday it also generates a weekly roundup digest covering all the week's matches in one beautifully designed email.\nBuilt for sports media companies, IPL fan platforms, cricket newsletters, and automation agencies who want to produce expert-level match analysis at scale without a dedicated editorial team.\n\n## What This Workflow Does\n⏰ Polls CricAPI every 30 minutes for recently completed IPL matches\n📋 Checks the Match Log sheet to avoid analyzing the same match twice\n🏏 Detects new completed IPL matches and saves them to the Match Log\n🧮 Computes both innings run rates and builds a structured analytical prompt\n🤖 Sends full match context to GPT-4o which generates a complete post-match analysis\n📧 Assembles the analysis into a branded HTML email and sends it immediately after the match\n📝 Logs every analysis to the Analysis Log sheet with match name, winner, and player of match\n📊 Every Monday reads all analyses from the past 7 days and generates a weekly roundup\n🤖 GPT-4o writes the weekly digest with match recaps, player of the week, and next week preview\n📧 Sends the weekly roundup as a branded HTML email every Monday at 9AM\n\n## Key Benefits\n✅ Fully automatic — detects match completion and triggers analysis without manual input\n✅ Duplicate prevention — never analyzes the same match twice\n✅ GPT-4o writes like a cricket journalist not a data report\n✅ Two email formats — immediate post-match deep dive and weekly roundup digest\n✅ Complete audit trail across two Google Sheets\n✅ Falls back to any completed T20 when IPL is off-season so testing always works\n✅ Clean termination on both IF nodes — no dangling branches\n\n## How It Works\n\nSW1 — Match Completion Detector Every 30 minutes the workflow fetches all current and recent matches from CricAPI and reads the Match Log sheet. The Code node filters for completed IPL T20 matches by checking that the match name contains IPL or Indian Premier League, the match type is T20, and both matchStarted and matchEnded are true. It then compares every completed match against the set of already-analyzed match IDs in the Match Log. If a new unanalyzed match is found it gets saved to the Match Log with analyzed set to false and all scorecard data flows forward into the analysis engine. If no new match is found an IF node stops the workflow cleanly.\n\nSW2 — Deep Dive Analyzer The match data flows directly from SW1 into the analysis prompt builder. The Code node computes run rates for both innings and assembles a structured prompt containing both innings stats, the match result, and clear instructions for GPT-4o to act as a cricket journalist. GPT-4o returns a headline, 3-4 sentence match summary, separate tactical breakdowns for each innings, three key moments that decided the match, an overall tactical assessment, player of the match with reasoning, and a one-sentence forward-looking note. The response is parsed and assembled into a branded HTML email with a dark blue header, score display, color-coded analysis sections, and a player of the match spotlight. The email is sent immediately and both Google Sheets are updated to record that this match has been analyzed and the email has been sent.\n\nSW3 — Weekly Digest Every Monday at 9AM the workflow reads all rows from the Analysis Log and filters for entries from the past 7 days. If matches exist GPT-4o generates a weekly roundup covering the week's headline, individual one-liner recaps for each match, player of the week, the biggest talking point or controversy, and a preview of the upcoming week. The response is assembled into a branded weekly roundup email and sent. If no matches were analyzed in the past 7 days the workflow stops cleanly without sending a blank email.\n\n## Features\n- 30-minute polling for match completion detection\n- Dynamic IPL match filtering — no hardcoded IDs\n- Duplicate prevention via Match Log sheet lookup\n- Both innings run rate computation\n- GPT-4o post-match analysis with 8 structured output fields\n- Immediate post-match email delivery\n- Weekly Monday digest with recaps, POTW, talking point, and preview\n- Two branded HTML email templates with dark blue cricket theme\n- Two Google Sheets for match tracking and analysis history\n- IF nodes with No Operation fallbacks on both SW1 and SW3\n- Fallback to any completed T20 for off-season testing\n\n## Requirements\n- CricAPI account and API key — free tier at cricapi.com\n- OpenAI API key (GPT-4o access)\n- Google Sheets OAuth2 connection\n- Gmail OAuth2 connection\n\n## Setup Steps\n- Sign up at cricapi.com and get your free API key\n- Create a Google Sheet called \"IPL Post Match Analyzer\" with 2 sheets — Match Log and Analysis Log\n- Add the correct column headers to both sheets.\n- Paste your Sheet ID into all Google Sheets nodes\n- Connect Google Sheets OAuth2 credentials\n- Add your OpenAI API key to both OpenAI nodes\n- Add your Gmail OAuth2 credentials and set your email in both Gmail nodes\n- Activate the workflow — the system runs itself from here\n\n## Target Audience\n📺 Sports media companies automating post-match editorial content\n🏏 IPL cricket newsletters and fan platforms delivering expert analysis\n🤖 Automation agencies building cricket intelligence products for media and franchise clients\n📱 Fan apps that want to surface match analysis without hiring a commentary team\n","workflow":{"id":"mTKf5ngESISFLcY5","meta":{"instanceId":"8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177","templateCredsSetupCompleted":true},"name":"AI-Powered IPL Post-Match Analyzer That Generates Tactical Breakdowns and Weekly Roundups Automatically","tags":[],"nodes":[{"id":"612a7a89-f2d6-43e4-9e51-f99308c05f49","name":"Every 30 Min Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[0,0],"parameters":{"rule":{"interval":[{"field":"minutes","minutesInterval":30}]}},"typeVersion":1.3},{"id":"3f6aaa7c-3229-4701-b9ef-232b7e7b4227","name":"Read Match Log","type":"n8n-nodes-base.googleSheets","position":[464,0],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU/edit#gid=0","cachedResultName":"Match Log"},"documentId":{"__rl":true,"mode":"list","value":"1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU/edit?usp=drivesdk","cachedResultName":"IPL Post Match Analyzer"}},"credentials":{"googleSheetsOAuth2Api":{"id":"BEaZxNfQhO309g8r","name":"Google Sheets account 11"}},"typeVersion":4.7,"alwaysOutputData":true},{"id":"3654c841-7996-40cf-bc57-01ba62365759","name":"Find New Completed IPL Match","type":"n8n-nodes-base.code","position":[672,0],"parameters":{"jsCode":"const response = $('Fetch Recent Matches').first().json;\nconst matchLog = $('Read Match Log').all();\n\nconst matches = response.data || [];\n\n// Build set of already analyzed match IDs\nconst analyzedIds = new Set(\n  matchLog\n    .filter(r => r.json.analyzed === 'true' || r.json.analyzed === true)\n    .map(r => r.json.match_id)\n);\n\n// Find completed IPL match not yet analyzed\nconst completedIPL = matches.find(m => {\n  const name = (m.name || '').toUpperCase();\n  const isIPL = name.includes('IPL') || \n                name.includes('INDIAN PREMIER LEAGUE');\n  const isT20 = (m.matchType || '').toLowerCase() === 't20';\n  const isCompleted = m.matchStarted === true && \n                      m.matchEnded === true;\n  const notAnalyzed = !analyzedIds.has(m.id);\n  return isIPL && isT20 && isCompleted && notAnalyzed;\n});\n\n// Fallback for testing — use any completed T20\nconst fallback = matches.find(m =>\n  (m.matchType || '').toLowerCase() === 't20' &&\n  m.matchStarted === true &&\n  m.matchEnded === true &&\n  m.score && m.score.length >= 2 &&\n  !analyzedIds.has(m.id)\n);\n\nconst match = completedIPL || fallback;\n\nif (!match) {\n  return [{ json: { skip: true, reason: 'No new completed matches' } }];\n}\n\n// Parse scores\nconst scores = match.score || [];\nconst innings1 = scores[0] || {};\nconst innings2 = scores[1] || {};\n\n// Determine winner from status string\nconst status = match.status || '';\n\nreturn [{\n  json: {\n    skip: false,\n    matchId: match.id,\n    matchName: match.name,\n    matchDate: match.date,\n    teams: match.teams || [],\n    team1: match.teams?.[0] || 'Team A',\n    team2: match.teams?.[1] || 'Team B',\n    status,\n    innings1Score: `${innings1.r || 0}/${innings1.w || 0} (${innings1.o || 0} ov)`,\n    innings2Score: `${innings2.r || 0}/${innings2.w || 0} (${innings2.o || 0} ov)`,\n    innings1Runs: innings1.r || 0,\n    innings1Wickets: innings1.w || 0,\n    innings1Overs: innings1.o || 0,\n    innings2Runs: innings2.r || 0,\n    innings2Wickets: innings2.w || 0,\n    innings2Overs: innings2.o || 0,\n    isLiveIPL: !!completedIPL\n  }\n}];"},"typeVersion":2},{"id":"030e9e80-e8ba-4b60-a7e7-93d33a2b7369","name":"Fetch Recent Matches","type":"n8n-nodes-base.httpRequest","position":[256,0],"parameters":{"url":"https://api.cricapi.com/v1/currentMatches","options":{},"sendQuery":true,"queryParameters":{"parameters":[{"name":"apikey","value":"your_api_key"},{"name":"offset","value":"0"}]}},"typeVersion":4.3},{"id":"fbe37132-dcc0-4a61-a570-fb0f67708272","name":"Save to Match Log","type":"n8n-nodes-base.googleSheets","position":[1168,-16],"parameters":{"columns":{"value":{"date":"={{ $json.matchDate }}","winner":"={{ $json.status }}","analyzed":"false","match_id":"={{ $json.matchId }}","match_name":"={{ $json.matchName }}","analysis_sent":"false"},"schema":[{"id":"match_id","type":"string","display":true,"required":false,"displayName":"match_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"match_name","type":"string","display":true,"required":false,"displayName":"match_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"date","type":"string","display":true,"required":false,"displayName":"date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"winner","type":"string","display":true,"required":false,"displayName":"winner","defaultMatch":false,"canBeUsedToMatch":true},{"id":"analyzed","type":"string","display":true,"required":false,"displayName":"analyzed","defaultMatch":false,"canBeUsedToMatch":true},{"id":"analysis_sent","type":"string","display":true,"required":false,"displayName":"analysis_sent","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/1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU/edit#gid=0","cachedResultName":"Match Log"},"documentId":{"__rl":true,"mode":"list","value":"1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU/edit?usp=drivesdk","cachedResultName":"IPL Post Match Analyzer"}},"credentials":{"googleSheetsOAuth2Api":{"id":"BEaZxNfQhO309g8r","name":"Google Sheets account 11"}},"typeVersion":4.7,"alwaysOutputData":true},{"id":"4bced3d8-5bcf-4c12-baee-895c9a8f92c3","name":"Weekly Monday 9AM Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[80,768],"parameters":{"rule":{"interval":[{"field":"weeks","triggerAtDay":[1],"triggerAtHour":9}]}},"typeVersion":1.3},{"id":"f28ccf08-53d4-46ce-8782-eb6ca2b80216","name":"Read Analysis Log","type":"n8n-nodes-base.googleSheets","position":[288,768],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":419911676,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU/edit#gid=419911676","cachedResultName":"Analysis Log"},"documentId":{"__rl":true,"mode":"list","value":"1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU/edit?usp=drivesdk","cachedResultName":"IPL Post Match Analyzer"}},"credentials":{"googleSheetsOAuth2Api":{"id":"BEaZxNfQhO309g8r","name":"Google Sheets account 11"}},"typeVersion":4.7,"alwaysOutputData":true},{"id":"e681ec41-e244-47f3-903f-f49cfaa6f99f","name":"Build Weekly Digest Prompt","type":"n8n-nodes-base.code","position":[496,768],"parameters":{"jsCode":"const analyses = $input.all();\n\nif (analyses.length === 0) {\n  return [{ json: { skip: true, reason: 'No analyses this week' } }];\n}\n\n// Get last 7 days of analyses\nconst sevenDaysAgo = new Date();\nsevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);\n\nconst thisWeek = analyses.filter(a => {\n  const matchDate = new Date(a.json.date);\n  return matchDate >= sevenDaysAgo;\n});\n\nif (thisWeek.length === 0) {\n  return [{ json: { skip: true, reason: 'No matches this week' } }];\n}\n\nlet matchSummaries = '';\nthisWeek.forEach((a, i) => {\n  matchSummaries += `Match ${i+1}: ${a.json.match_name}\nResult: ${a.json.winner}\nPlayer of Match: ${a.json.player_of_match || 'N/A'}\nSummary: ${a.json.analysis_summary}\n\\n`;\n});\n\nconst prompt = `You are an IPL cricket journalist writing a weekly roundup newsletter.\n\nThis week's IPL matches:\n${matchSummaries}\n\nGenerate a weekly digest in this JSON format:\n{\n  \"week_headline\": \"Catchy headline summarizing this week's IPL action\",\n  \"week_intro\": \"2-3 sentence intro capturing the week's drama and key themes\",\n  \"match_recaps\": [\n    {\n      \"match\": \"match name\",\n      \"one_liner\": \"One punchy sentence recap of the match\"\n    }\n  ],\n  \"player_of_week\": \"Name and one sentence on the standout performer of the week\",\n  \"week_talking_point\": \"The biggest talking point or controversy from this week\",\n  \"next_week_preview\": \"2 sentences building anticipation for next week's matches\"\n}\n\nRules:\n- Write like a cricket journalist\n- Be opinionated and engaging\n- Use cricket language fans love`;\n\nreturn [{\n  json: {\n    prompt,\n    matchCount: thisWeek.length,\n    weekOf: new Date().toDateString()\n  }\n}];"},"typeVersion":2},{"id":"029d18a8-ff0d-435b-9d6f-95b0b46dc942","name":"Weekly Journalist","type":"@n8n/n8n-nodes-langchain.openAi","position":[1040,752],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4o-mini","cachedResultName":"GPT-4O-MINI"},"options":{},"responses":{"values":[{"content":"={{ $json.prompt }}"},{"role":"system","content":"You are an expert IPL cricket journalist. Always respond in valid JSON only. No markdown, no code blocks."}]},"builtInTools":{}},"credentials":{"openAiApi":{"id":"ODHuyqHDbzQIyI3P","name":"OpenAi account 4"}},"typeVersion":2.1},{"id":"54999499-3144-49cc-bd1e-645515ae10e8","name":"Parse & Build Weekly Email","type":"n8n-nodes-base.code","position":[1392,752],"parameters":{"jsCode":"const response = items[0].json.output[0].content[0].text;\nconst cleaned = response.replace(/```json|```/g, '').trim();\nconst parsed = JSON.parse(cleaned);\n\nconst data = $('Build Weekly Digest Prompt').first().json;\n\nconst recapsList = (parsed.match_recaps || [])\n  .map(m => `\n    <div style=\"background:#f5f5f5; border-left:4px solid #1a237e; padding:12px 16px; border-radius:6px; margin:10px 0;\">\n      <div style=\"font-weight:bold; color:#1a237e; font-size:13px;\">${m.match}</div>\n      <div style=\"margin-top:4px;\">${m.one_liner}</div>\n    </div>`\n  ).join('');\n\nconst htmlEmail = `<!DOCTYPE html>\n<html>\n<head>\n  <style>\n    body { font-family: Arial, sans-serif; background: #f5f5f5; margin: 0; padding: 0; }\n    .container { max-width: 600px; margin: 30px auto; background: #ffffff; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 20px rgba(0,0,0,0.08); }\n    .header { background: linear-gradient(135deg, #1a237e, #283593); padding: 30px; text-align: center; color: white; }\n    .header h1 { margin: 0; font-size: 22px; }\n    .header p { margin: 8px 0 0 0; font-size: 13px; opacity: 0.85; }\n    .body { padding: 30px; color: #333; }\n    .section-title { font-size: 13px; font-weight: bold; color: #1a237e; text-transform: uppercase; letter-spacing: 1px; margin: 20px 0 8px 0; }\n    .highlight-box { background: #e8eaf6; padding: 16px 20px; border-radius: 8px; margin: 12px 0; }\n    .potw { background: linear-gradient(135deg, #1a237e, #283593); color: white; padding: 16px 20px; border-radius: 8px; text-align: center; margin: 20px 0; }\n    .preview-box { background: #fff8e1; border-left: 4px solid #ff6f00; padding: 14px 18px; border-radius: 8px; margin: 12px 0; }\n    .footer { background: #f5f5f5; padding: 16px; text-align: center; font-size: 12px; color: #999; }\n  </style>\n</head>\n<body>\n  <div class=\"container\">\n    <div class=\"header\">\n      <h1>🏏 IPL Weekly Roundup</h1>\n      <p>Week of ${data.weekOf} · ${data.matchCount} Matches Analyzed</p>\n    </div>\n    <div class=\"body\">\n      <h2 style=\"color:#1a237e; margin-top:0;\">${parsed.week_headline}</h2>\n      <p>${parsed.week_intro}</p>\n\n      <div class=\"section-title\">📋 Match Recaps</div>\n      ${recapsList}\n\n      <div class=\"potw\">\n        <div style=\"font-size:12px; opacity:0.8; margin-bottom:6px;\">⭐ PLAYER OF THE WEEK</div>\n        <div style=\"font-size:16px; font-weight:bold;\">${parsed.player_of_week}</div>\n      </div>\n\n      <div class=\"section-title\">💬 Talking Point of the Week</div>\n      <div class=\"highlight-box\">${parsed.week_talking_point}</div>\n\n      <div class=\"section-title\">👀 Next Week Preview</div>\n      <div class=\"preview-box\">${parsed.next_week_preview}</div>\n    </div>\n    <div class=\"footer\">IPL Weekly Roundup · Powered by AI Analysis<br/>You are receiving this because you subscribed to IPL insights.</div>\n  </div>\n</body>\n</html>`;\n\nreturn [{\n  json: {\n    ...data,\n    htmlEmail,\n    subject: `🏏 IPL Weekly Roundup — ${parsed.week_headline}`\n  }\n}];"},"typeVersion":2},{"id":"2fec8592-672f-405d-ae0f-68d7539a22e7","name":"Send Weekly Digest","type":"n8n-nodes-base.gmail","position":[1696,752],"webhookId":"004181de-ae1f-494f-916e-efe1464e59c7","parameters":{"sendTo":"your_email_id","message":"={{ $json.htmlEmail }}","options":{},"subject":"={{ $json.subject }}"},"credentials":{"gmailOAuth2":{"id":"7Pkleeez0eCvwoON","name":"Gmail account 3"}},"typeVersion":2.2},{"id":"2c8fb2a5-332d-45ac-a27c-b8e37df7d66a","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-864,-528],"parameters":{"width":400,"height":544,"content":"## Workflow Overview\n\n### How It Works\nEvery IPL match tells a story that the scoreboard \nalone cannot capture. This workflow automatically \ndetects completed IPL matches, fetches the full \nscorecard, and sends it to GPT-4o which produces \na detailed journalist-style analysis covering \ninnings breakdowns, tactical decisions, key moments, \nplayer of the match, and what the result means for \nboth teams going forward. Every Monday it also \ngenerates a weekly roundup digest summarizing all \nthe week's matches in one beautifully designed email.\n\n### Setup Steps\n1. Sign up at cricapi.com and get your API key\n2. Add CRICAPI KEY in http nodes\n3. Create the Google Sheet with 2 sheets — \n   Match Log and Analysis Log\n4. Connect Google Sheets, OpenAI, and Gmail \n   credentials\n5. Add your email to both Gmail nodes\n6. Activate the workflow."},"typeVersion":1},{"id":"4a87cd3f-6c93-461a-97ba-d2a6feed9e8b","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-112,-192],"parameters":{"color":7,"width":1504,"height":400,"content":"Match Completion Detector runs every 30 minutes and polls CricAPI for recently completed T20 matches. It reads the Match Log sheet to check which matches have already been analyzed and finds any new completed IPL match that hasn't been processed yet. When a new match is found it saves it to the Match Log with analyzed set to false and passes all match data forward to the analysis engine. If no new match is found the workflow stops cleanly."},"typeVersion":1},{"id":"61664b7a-0574-4a05-bc18-63d81cd41b57","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[848,256],"parameters":{"color":7,"width":1504,"height":288,"content":"This flow receives the completed match data and builds a structured analytical prompt containing both innings stats, run rates, and result context. GPT-4o acts as a cricket analyst and produces a headline, match summary, innings analysis, key moments, tactical breakdown, and player of the match. The response is assembled into a branded HTML email and sent immediately. Both the Match Log and Analysis Log sheets are updated after every send."},"typeVersion":1},{"id":"4b2a3526-aaf2-4208-9227-490b59573367","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[16,608],"parameters":{"color":7,"width":1872,"height":352,"content":"Weekly Digest runs every Monday at 9AM. It reads all match analyses from the past 7 days in the Analysis Log sheet and sends them to GPT-4o which generates a weekly roundup — a headline, match recaps, player of the week, the biggest talking point, and a preview of the week ahead. The digest is sent as a branded HTML email. If no matches were analyzed in the past 7 days the workflow stops cleanly without sending anything."},"typeVersion":1},{"id":"7b2d03dc-3fe0-444f-b7c0-383ab7f52eb0","name":"IF Matches This Week","type":"n8n-nodes-base.if","position":[704,768],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"326354c3-5283-430a-96c3-9638e80ffe0f","operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.skip }}","rightValue":"true"}]},"looseTypeValidation":true},"typeVersion":2.3},{"id":"4badffe7-6af0-4ec3-bf9e-ff4a2eb90c31","name":"IF New Match Found","type":"n8n-nodes-base.if","position":[880,0],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"d0f44d2f-b525-4203-b94a-d3b9c3082378","operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.skip }}","rightValue":"true"}]},"looseTypeValidation":true},"typeVersion":2.3},{"id":"042debc4-f746-4160-be19-a20e55081f83","name":"Send Analysis Email","type":"n8n-nodes-base.gmail","position":[1744,368],"webhookId":"004181de-ae1f-494f-916e-efe1464e59c7","parameters":{"sendTo":"your_email_id","message":"={{ $json.htmlEmail }}","options":{},"subject":"={{ $json.subject }}"},"credentials":{"gmailOAuth2":{"id":"7Pkleeez0eCvwoON","name":"Gmail account 3"}},"typeVersion":2.2},{"id":"dde48779-b714-462a-9fd7-3f5d500fa10a","name":"Log to Analysis Log","type":"n8n-nodes-base.googleSheets","position":[2192,368],"parameters":{"columns":{"value":{"date":"={{ new Date().toISOString().split('T')[0] }}","winner":"={{ $('Parse Analysis & Build Email').item.json.status }}","email_sent":"true","match_name":"={{ $('Parse Analysis & Build Email').item.json.matchName }}","player_of_match":"={{ $('Parse Analysis & Build Email').item.json.player_of_match }}","analysis_summary":"={{ $('Parse Analysis & Build Email').item.json.analysis_summary }}"},"schema":[{"id":"date","type":"string","display":true,"required":false,"displayName":"date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"match_name","type":"string","display":true,"required":false,"displayName":"match_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"winner","type":"string","display":true,"required":false,"displayName":"winner","defaultMatch":false,"canBeUsedToMatch":true},{"id":"player_of_match","type":"string","display":true,"removed":false,"required":false,"displayName":"player_of_match","defaultMatch":false,"canBeUsedToMatch":true},{"id":"top_batter","type":"string","display":true,"removed":true,"required":false,"displayName":"top_batter","defaultMatch":false,"canBeUsedToMatch":true},{"id":"top_bowler","type":"string","display":true,"removed":true,"required":false,"displayName":"top_bowler","defaultMatch":false,"canBeUsedToMatch":true},{"id":"analysis_summary","type":"string","display":true,"required":false,"displayName":"analysis_summary","defaultMatch":false,"canBeUsedToMatch":true},{"id":"email_sent","type":"string","display":true,"required":false,"displayName":"email_sent","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":419911676,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU/edit#gid=419911676","cachedResultName":"Analysis Log"},"documentId":{"__rl":true,"mode":"list","value":"1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU/edit?usp=drivesdk","cachedResultName":"IPL Post Match Analyzer"}},"credentials":{"googleSheetsOAuth2Api":{"id":"BEaZxNfQhO309g8r","name":"Google Sheets account 11"}},"executeOnce":true,"typeVersion":4.7,"alwaysOutputData":true},{"id":"78d66cec-e495-4b95-bf3e-33c2c234a73f","name":"Update Match Log","type":"n8n-nodes-base.googleSheets","position":[1968,368],"parameters":{"columns":{"value":{"analyzed":"true","match_id":"={{ $('Parse Analysis & Build Email').item.json.matchId }}","analysis_sent":"true"},"schema":[{"id":"match_id","type":"string","display":true,"removed":false,"required":false,"displayName":"match_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"match_name","type":"string","display":true,"removed":true,"required":false,"displayName":"match_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"date","type":"string","display":true,"removed":true,"required":false,"displayName":"date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"winner","type":"string","display":true,"removed":true,"required":false,"displayName":"winner","defaultMatch":false,"canBeUsedToMatch":true},{"id":"analyzed","type":"string","display":true,"required":false,"displayName":"analyzed","defaultMatch":false,"canBeUsedToMatch":true},{"id":"analysis_sent","type":"string","display":true,"required":false,"displayName":"analysis_sent","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["match_id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU/edit#gid=0","cachedResultName":"Match Log"},"documentId":{"__rl":true,"mode":"list","value":"1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1wbTiDSQnwHaoUDQ_jLR3VxtTVCg_TCOvlXHAs8mvbMU/edit?usp=drivesdk","cachedResultName":"IPL Post Match Analyzer"}},"credentials":{"googleSheetsOAuth2Api":{"id":"BEaZxNfQhO309g8r","name":"Google Sheets account 11"}},"executeOnce":true,"typeVersion":4.7,"alwaysOutputData":true},{"id":"5784097b-e1d2-476e-b2c9-08f1a4071e9c","name":"Parse Analysis & Build Email","type":"n8n-nodes-base.code","position":[1520,368],"parameters":{"jsCode":"const response = items[0].json.output[0].content[0].text;\nconst cleaned = response.replace(/```json|```/g, '').trim();\nconst parsed = JSON.parse(cleaned);\n\nconst data = $('Build Analysis Prompt').first().json;\n\nconst keyMomentsList = (parsed.key_moments || [])\n  .map(m => `<li style=\"margin-bottom:10px;\">${m}</li>`)\n  .join('');\n\nconst htmlEmail = `<!DOCTYPE html>\n<html>\n<head>\n  <style>\n    body { font-family: Arial, sans-serif; background: #f5f5f5; margin: 0; padding: 0; }\n    .container { max-width: 600px; margin: 30px auto; background: #ffffff; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 20px rgba(0,0,0,0.08); }\n    .header { background: linear-gradient(135deg, #1a237e, #283593); padding: 30px; text-align: center; color: white; }\n    .header h1 { margin: 0; font-size: 22px; }\n    .header p { margin: 8px 0 0 0; font-size: 13px; opacity: 0.85; }\n    .scores { display: flex; background: #e8eaf6; padding: 16px 24px; justify-content: space-around; text-align: center; }\n    .score-block { flex: 1; }\n    .score-team { font-size: 12px; color: #555; text-transform: uppercase; font-weight: bold; }\n    .score-runs { font-size: 22px; font-weight: bold; color: #1a237e; }\n    .body { padding: 30px; color: #333; }\n    .section { margin: 20px 0; }\n    .section-title { font-size: 13px; font-weight: bold; color: #1a237e; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 8px; }\n    .analysis-box { background: #f5f5f5; border-left: 4px solid #1a237e; padding: 14px 18px; border-radius: 8px; margin: 12px 0; }\n    .moments-box { background: #e8eaf6; padding: 16px 20px; border-radius: 8px; margin: 12px 0; }\n    .tactical-box { background: #fff8e1; border-left: 4px solid #ff6f00; padding: 14px 18px; border-radius: 8px; margin: 12px 0; }\n    .potm { background: linear-gradient(135deg, #1a237e, #283593); color: white; padding: 16px 20px; border-radius: 8px; text-align: center; margin: 20px 0; }\n    .footer { background: #f5f5f5; padding: 16px; text-align: center; font-size: 12px; color: #999; }\n  </style>\n</head>\n<body>\n  <div class=\"container\">\n    <div class=\"header\">\n      <h1>🏏 Post-Match Deep Dive</h1>\n      <p>${data.matchName} · ${data.matchDate}</p>\n    </div>\n    <div class=\"scores\">\n      <div class=\"score-block\">\n        <div class=\"score-team\">${data.team1}</div>\n        <div class=\"score-runs\">${data.innings1Score}</div>\n      </div>\n      <div style=\"padding-top:12px; font-size:13px; color:#888;\">vs</div>\n      <div class=\"score-block\">\n        <div class=\"score-team\">${data.team2}</div>\n        <div class=\"score-runs\">${data.innings2Score}</div>\n      </div>\n    </div>\n    <div class=\"body\">\n      <h2 style=\"color:#1a237e; margin-top:0;\">${parsed.headline}</h2>\n      <p>${parsed.match_summary}</p>\n\n      <div class=\"section\">\n        <div class=\"section-title\">📊 1st Innings Analysis</div>\n        <div class=\"analysis-box\">${parsed.innings1_analysis}</div>\n      </div>\n\n      <div class=\"section\">\n        <div class=\"section-title\">🏃 2nd Innings Analysis</div>\n        <div class=\"analysis-box\">${parsed.innings2_analysis}</div>\n      </div>\n\n      <div class=\"section\">\n        <div class=\"section-title\">⚡ Key Moments</div>\n        <div class=\"moments-box\">\n          <ul style=\"padding-left:20px; margin:0;\">\n            ${keyMomentsList}\n          </ul>\n        </div>\n      </div>\n\n      <div class=\"section\">\n        <div class=\"section-title\">🧠 Tactical Breakdown</div>\n        <div class=\"tactical-box\">${parsed.tactical_breakdown}</div>\n      </div>\n\n      <div class=\"potm\">\n        <div style=\"font-size:12px; opacity:0.8; margin-bottom:6px;\">⭐ PLAYER OF THE MATCH</div>\n        <div style=\"font-size:16px; font-weight:bold;\">${parsed.player_of_match}</div>\n      </div>\n\n      <div class=\"section\">\n        <div class=\"section-title\">👀 What to Watch Next</div>\n        <p>${parsed.what_to_watch_next}</p>\n      </div>\n    </div>\n    <div class=\"footer\">IPL Post-Match Deep Dive · Powered by AI Analysis<br/>You are receiving this because you subscribed to IPL insights.</div>\n  </div>\n</body>\n</html>`;\n\nreturn [{\n  json: {\n    ...data,\n    headline: parsed.headline,\n    match_summary: parsed.match_summary,\n    player_of_match: parsed.player_of_match,\n    analysis_summary: parsed.analysis_summary,\n    htmlEmail,\n    subject: `🏏 Post-Match Analysis: ${parsed.headline}`\n  }\n}];"},"typeVersion":2},{"id":"199a16b3-d2ba-4e21-b067-3b176811c78e","name":"Match Analyst","type":"@n8n/n8n-nodes-langchain.openAi","position":[1168,368],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4o-mini","cachedResultName":"GPT-4O-MINI"},"options":{},"responses":{"values":[{"content":"={{ $json.prompt }}"}]},"builtInTools":{}},"credentials":{"openAiApi":{"id":"ODHuyqHDbzQIyI3P","name":"OpenAi account 4"}},"typeVersion":2.1},{"id":"191a93d8-8b59-423e-aea7-1c2793d1fabf","name":"Build Analysis Prompt","type":"n8n-nodes-base.code","position":[944,368],"parameters":{"jsCode":"const data = $('Find New Completed IPL Match').first().json;\n\nconst prompt = `You are an expert IPL cricket analyst and sports journalist. Analyze this completed T20 match and produce a detailed post-match breakdown.\n\nMatch: ${data.matchName}\nResult: ${data.status}\n${data.team1} Score: ${data.innings1Score}\n${data.team2} Score: ${data.innings2Score}\n\nInnings 1 Details:\n- Runs: ${data.innings1Runs}\n- Wickets: ${data.innings1Wickets}\n- Overs: ${data.innings1Overs}\n- Run Rate: ${data.innings1Overs > 0 ? (data.innings1Runs / data.innings1Overs).toFixed(2) : 'N/A'}\n\nInnings 2 Details:\n- Runs: ${data.innings2Runs}\n- Wickets: ${data.innings2Wickets}\n- Overs: ${data.innings2Overs}\n- Run Rate: ${data.innings2Overs > 0 ? (data.innings2Runs / data.innings2Overs).toFixed(2) : 'N/A'}\n\nRespond ONLY in this JSON format:\n{\n  \"headline\": \"Punchy match headline like a newspaper\",\n  \"match_summary\": \"3-4 sentence overview of how the match played out\",\n  \"innings1_analysis\": \"2-3 sentence tactical breakdown of the first innings — scoring rate, key phases, pressure points\",\n  \"innings2_analysis\": \"2-3 sentence tactical breakdown of the second innings — chase strategy, turning points, momentum shifts\",\n  \"key_moments\": [\n    \"Key moment 1 that decided the match\",\n    \"Key moment 2\",\n    \"Key moment 3\"\n  ],\n  \"tactical_breakdown\": \"2-3 sentences on the tactical decisions that won or lost the match — field settings, bowling changes, batting approach\",\n  \"player_of_match\": \"Name and one sentence on why they were the standout performer\",\n  \"what_to_watch_next\": \"One sentence on what this result means for both teams going forward\",\n  \"analysis_summary\": \"One sentence summary for logging\"\n}\n\nRules:\n- Write like a cricket journalist not a robot\n- Be specific about the numbers provided\n- Use cricket terminology fans understand\n- Be opinionated and analytical not neutral`;\n\nreturn [{\n  json: {\n    ...data,\n    prompt\n  }\n}];"},"typeVersion":2}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"77c8bff3-30ad-494a-a05e-24d0ca3791ef","connections":{"Match Analyst":{"main":[[{"node":"Parse Analysis & Build Email","type":"main","index":0}]]},"Read Match Log":{"main":[[{"node":"Find New Completed IPL Match","type":"main","index":0}]]},"Update Match Log":{"main":[[{"node":"Log to Analysis Log","type":"main","index":0}]]},"Read Analysis Log":{"main":[[{"node":"Build Weekly Digest Prompt","type":"main","index":0}]]},"Weekly Journalist":{"main":[[{"node":"Parse & Build Weekly Email","type":"main","index":0}]]},"IF New Match Found":{"main":[[{"node":"Save to Match Log","type":"main","index":0}]]},"Send Analysis Email":{"main":[[{"node":"Update Match Log","type":"main","index":0}]]},"Every 30 Min Trigger":{"main":[[{"node":"Fetch Recent Matches","type":"main","index":0}]]},"Fetch Recent Matches":{"main":[[{"node":"Read Match Log","type":"main","index":0}]]},"IF Matches This Week":{"main":[[{"node":"Weekly Journalist","type":"main","index":0}]]},"Build Analysis Prompt":{"main":[[{"node":"Match Analyst","type":"main","index":0}]]},"Weekly Monday 9AM Trigger":{"main":[[{"node":"Read Analysis Log","type":"main","index":0}]]},"Build Weekly Digest Prompt":{"main":[[{"node":"IF Matches This Week","type":"main","index":0}]]},"Parse & Build Weekly Email":{"main":[[{"node":"Send Weekly Digest","type":"main","index":0}]]},"Find New Completed IPL Match":{"main":[[{"node":"IF New Match Found","type":"main","index":0},{"node":"Build Analysis Prompt","type":"main","index":0}]]},"Parse Analysis & Build Email":{"main":[[{"node":"Send Analysis Email","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":23,"nodeTypes":{"n8n-nodes-base.if":{"count":2},"n8n-nodes-base.code":{"count":5},"n8n-nodes-base.gmail":{"count":2},"n8n-nodes-base.stickyNote":{"count":4},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-base.googleSheets":{"count":5},"n8n-nodes-base.scheduleTrigger":{"count":2},"@n8n/n8n-nodes-langchain.openAi":{"count":2}}},"status":"published","readyToDemo":null,"user":{"name":"Rahul Joshi","username":"rahul08","bio":"Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.\n\n","verified":true,"links":["https://www.linkedin.com/in/callrahul/"],"avatar":"https://gravatar.com/avatar/b6cf57822463143589b36ada06fbf6cb1509223a740fae3160b28f1ce41ccc12?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":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":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":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":1250,"icon":"file:openAi.svg","name":"@n8n/n8n-nodes-langchain.openAi","codex":{"data":{"alias":["LangChain","ChatGPT","Sora","DallE","whisper","audio","transcribe","tts","assistant"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Miscellaneous","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg1IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NiAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MSA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K"},"displayName":"OpenAI","typeVersion":2,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":31,"name":"Content Creation"},{"id":49,"name":"AI Summarization"}],"image":[]}}