{"workflow":{"id":14022,"name":"Extract vocabulary flashcards from Spotify listening with Gemini and Google Sheets","views":2,"recentViews":0,"totalViews":2,"createdAt":"2026-03-13T12:42:56.588Z","description":"## What this workflow does\n\nThis workflow turns your Spotify listening history into vocabulary flashcards for language learning.\n\nWhen you listen to music in your target language, you hear words hundreds of times without trying, they're already in your subconscious. This workflow extracts those words and turns them into flashcards, so you're connecting meaning to sounds you already know.\n\nEvery Sunday, the workflow:\n1. Fetches your recently played songs from Spotify\n2. Finds lyrics via lrclib.net\n3. Extracts 40-60 useful words (B1-B2 level) using Google Gemini\n4. Deduplicates against all previously learned words\n5. Writes new vocabulary to Google Sheets (master + weekly tab)\n\nReview with the free **Flashcard Lab** app (iOS + Android) which reads directly from Google Sheets with spaced repetition. Works for **any language**, just change the AI prompt.\n\n## Setup\n\n**Setup time: ~15 minutes**\n\n1. **Google Cloud Console:** Create project, enable Sheets API + Drive API, create OAuth2 credentials, set app to **\"In Production\"** (tokens expire after 7 days in Testing mode)\n2. **Gemini API:** Get a free key from [Google AI Studio](https://aistudio.google.com/apikey)\n3. **Spotify Developer Dashboard:** Create app, note Client ID + Secret\n4. **Google Sheet:** Create a sheet with tab \"All Vocabularies\" and headers `Word` + `Translation`\n5. **Import workflow**, connect credentials, select your Google Sheet in all Sheets nodes\n6. Click **\"Execute Workflow\"** to test\n7. Enable the schedule trigger for weekly runs\n\n## Changing the language\n\nEdit the prompt in **\"Prepare all Lyrics into Pairs\"** — that's the only place you need to change. All other nodes use generic `Word` and `Translation` columns.\n\n&gt; 🎧 **Tip:** Listen to music in the language you're learning. The whole point is that your brain already absorbed these words passively — the flashcards connect meaning to sounds you already know.\n\n## Full documentation\n\n👉 [GitHub Repository](https://github.com/Welat-E/-Learn-Any-Language-from-Your-Spotify-History)","workflow":{"meta":{"instanceId":"44dfaefb6be198fc0ae8c584d794a287f5fe8ac3d9cf000555ca28bdbe8ed321"},"nodes":[{"id":"ac555343-470d-4358-8a80-83fcb1f25680","name":"Cut out Duplicate Songs","type":"n8n-nodes-base.code","position":[-1056,32],"parameters":{"jsCode":"const seen = new Set();\n\nreturn items\n  .map(item => {\n    const track = item.json.track;\n    return {\n      json: {\n        trackName: track.name,\n        artistName: track.artists[0].name,\n        spotifyUrl: track.external_urls?.spotify || ''\n      }\n    };\n  })\n  .filter(item => {\n    const key = item.json.spotifyUrl;\n    if (seen.has(key)) return false;\n    seen.add(key);\n    return true;\n  });"},"typeVersion":2},{"id":"4385abe2-943e-41c1-b892-50a155c9970c","name":"Getting Lyrics","type":"n8n-nodes-base.httpRequest","onError":"continueRegularOutput","position":[-864,32],"parameters":{"url":"=https://lrclib.net/api/search?track_name={{ $json.trackName }}&artist_name={{ $json.artistName }}","options":{}},"retryOnFail":true,"typeVersion":4.4},{"id":"5562208c-a03f-4acf-aff2-52e3ae116417","name":"Google Gemini Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[-992,512],"parameters":{"options":{}},"typeVersion":1},{"id":"25c8d472-8d61-466d-a4e4-26daa4b44c51","name":"Every Sunday at noon","type":"n8n-nodes-base.scheduleTrigger","disabled":true,"position":[-1472,32],"parameters":{"rule":{"interval":[{"field":"cronExpression","expression":"0 12 * * 7"}]}},"typeVersion":1.3},{"id":"ea5d8c41-f819-466b-8a9e-45650617df8f","name":"Combine existing Words with new Words","type":"n8n-nodes-base.code","position":[-320,32],"parameters":{"jsCode":"const lyricsData = $('Put all Lyrics together').first().json;\n\nconst existingWords = items\n  .map(item => item.json.Word)\n  .filter(w => w);\n\nreturn [{\n  json: {\n    allLyrics: lyricsData.allLyrics,\n    songCount: lyricsData.songCount,\n    existingWords: existingWords\n  }\n}];"},"typeVersion":2},{"id":"8b180ba6-72d7-49e3-a3a3-ff2c92d8a5a0","name":"Append to All Vocabularies","type":"n8n-nodes-base.googleSheets","position":[96,448],"parameters":{"columns":{"value":{"Word":"={{ $json.Word }}","Translation":"={{ $json.Translation }}"},"schema":[{"id":"Word","type":"string","display":true,"removed":false,"required":false,"displayName":"Word","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Translation","type":"string","display":true,"removed":false,"required":false,"displayName":"Translation","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/YOUR_GOOGLE_SHEET_ID/edit#gid=0","cachedResultName":"All Vocabularies"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit?usp=drivesdk","cachedResultName":"v"}},"typeVersion":4.7},{"id":"ce615da7-f013-4ecd-84fb-9e5f8d7ea435","name":"Append to Weekly","type":"n8n-nodes-base.googleSheets","position":[96,256],"parameters":{"columns":{"value":{"Word":"={{ $json.Word }}","Translation":"={{ $json.Translation }}"},"schema":[{"id":"Word","type":"string","display":true,"removed":false,"required":false,"displayName":"Word","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Translation","type":"string","display":true,"removed":false,"required":false,"displayName":"Translation","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"name","value":"={{ $('Parse, Deduplicate, Week Code').first().json.sheetName }}"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit?usp=drivesdk","cachedResultName":"V"}},"typeVersion":4.7},{"id":"f6450cae-151f-4581-88a6-70a8aea78a40","name":"Create sheet","type":"n8n-nodes-base.googleSheets","onError":"continueRegularOutput","position":[96,48],"parameters":{"title":"={{ $json.sheetName }}","options":{},"operation":"create","documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit?usp=drivesdk","cachedResultName":"V"}},"retryOnFail":false,"typeVersion":4.7},{"id":"0d01d6fb-ab2e-4f9f-a58d-e4a23fef7091","name":"Cut out SheetName Column","type":"n8n-nodes-base.code","position":[-80,256],"parameters":{"jsCode":"return items.map(item => ({\n  json: {\n    Word: item.json.Word,\n    Translation: item.json.Translation\n  }\n}));"},"typeVersion":2},{"id":"320a4012-9d05-4f84-8ea5-1d3057903760","name":"Parse, Deduplicate, Week Code","type":"n8n-nodes-base.code","position":[-400,256],"parameters":{"jsCode":"// 1. Parse AI Output\nconst results = [];\nfor (const item of items) {\n  const output = item.json.output || '';\n  const clean = output.replace(/```json\\n?/g, '').replace(/```/g, '').trim();\n  try {\n    const words = JSON.parse(clean);\n    for (const word of words) {\n      results.push({\n        Word: word.word,\n        Translation: word.translation.replace(/\\s*\\(.*?\\)\\s*$/, '')\n      });\n    }\n  } catch (e) {\n    console.log('Parse Error:', e.message);\n    console.log('Raw output:', output);\n  }\n}\n\n// 2. Deduplicate\nconst existingWords = $('Combine existing Words with new Words')\n  .first()\n  .json\n  .existingWords\n  .map(w => String(w || '').toLowerCase().trim());\n\n\nconst unique = results.filter(r =>\n  !existingWords.includes(r.Word.toLowerCase().trim())\n);\n\n// 3. Week Number\nconst now = new Date();\nconst startOfYear = new Date(now.getFullYear(), 0, 1);\nconst weekNumber = Math.ceil(((now - startOfYear) / 86400000 + startOfYear.getDay() + 1) / 7);\nconst sheetName = `Week ${weekNumber}`;\n\nreturn unique.map(word => ({\n  json: {\n    Word: word.Word,\n    Translation: word.Translation,\n    sheetName: sheetName\n  }\n}));"},"typeVersion":2},{"id":"85b1c956-61a4-42e8-b55a-51399a9bb136","name":"Read all Vocabularies","type":"n8n-nodes-base.googleSheets","position":[-496,32],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=0","cachedResultName":"All Vocabularies"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit?usp=drivesdk","cachedResultName":"v"}},"typeVersion":4.7,"alwaysOutputData":true},{"id":"a3b0fb08-7bf9-4472-a4a2-694e1eeedc5a","name":"Put all Lyrics together","type":"n8n-nodes-base.code","position":[-672,32],"parameters":{"jsCode":"const songs = {};\n\nfor (const item of items) {\n  const data = item.json;\n  \n  let cleanTrack = (data.trackName || '')\n    .replace(/\\s*[\\(\\[].*?[\\)\\]]/g, '')\n    .replace(/^.*?\\s*-\\s*\"?/, '')\n    .replace(/['\"\\\\]/g, '')\n    .trim()\n    .toLowerCase();\n  \n  let cleanArtist = (data.artistName || '')\n    .replace(/\\s*-\\s*Topic$/i, '')\n    .trim()\n    .toLowerCase();\n  \n  const key = cleanArtist + ' - ' + cleanTrack;\n  const lyrics = data.plainLyrics || '';\n  \n  if (!songs[key] || lyrics.length > songs[key].plainLyrics.length) {\n    songs[key] = {\n      trackName: data.trackName || '',\n      artistName: cleanArtist,\n      plainLyrics: lyrics.replace(/[\\n\\r]+/g, ' ').replace(/\"/g, '\\\\\"')\n    };\n  }\n}\n\nlet allLyrics = '';\nconst uniqueSongs = Object.values(songs).filter(song => song.plainLyrics.length > 0);\n\nfor (const song of uniqueSongs) {\n  allLyrics += `\\n\\n--- ${song.trackName} by ${song.artistName} ---\\n${song.plainLyrics}`;\n}\n\nreturn [{\n  json: {\n    allLyrics: allLyrics.trim(),\n    songCount: uniqueSongs.length\n  }\n}];"},"typeVersion":2},{"id":"d2f489e3-6d7b-459d-8c8b-5de5fbd416e0","name":"Get the recently played Songs","type":"n8n-nodes-base.spotify","position":[-1264,32],"parameters":{"limit":20,"operation":"recentlyPlayed"},"typeVersion":1},{"id":"1746123a-c0f4-4647-af27-5405a57489f9","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1264,-16],"parameters":{"color":"#E6E6E6","width":496,"height":96,"content":"### 🎵 Fetches recently played songs from Spotify, removes duplicates, and gets lyrics from lrclib.net.\n\n"},"typeVersion":1},{"id":"f492d8c4-f78a-4beb-9d4b-ed8fe971e083","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-672,-16],"parameters":{"color":"#EBEBEB","width":464,"height":96,"content":"### 📖 Reads all previously learned words from Google Sheets for duplicate checking.\n\n\n"},"typeVersion":1},{"id":"3f5c49f9-8034-485a-83c4-0746038de529","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-704,464],"parameters":{"color":"#FFFFFF","width":304,"height":96,"content":"## 🤖 AI EXTRACTION\n➡️ To change the language: edit the prompt."},"typeVersion":1},{"id":"950ce12a-f627-4564-8892-30c670fa4192","name":"AI Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[-736,256],"parameters":{"text":"=All Lyrics:\n{{ $json.allLyrics }}","options":{"systemMessage":"=You are a vocabulary extraction assistant for language learners.\n\nInstructions:\n- You will receive lyrics from multiple songs\n- Extract a total of 40-60 of the most useful English vocabulary words across ALL songs\n- NO duplicates - each word only once, even if it appears in multiple songs\n- Skip proper nouns, names, slang abbreviations, and filler words\n- Skip very basic words like \"I\", \"you\", \"the\", \"is\", \"and\", \"to\", \"a\"\n- If a word is slang, extract its standard English equivalent\n- For each word provide the German translation\n- Focus on B1-B2 level vocabulary that is useful for everyday conversation\n\n\nRespond ONLY with a valid JSON array, no other text:\n[{\"word\": \"new vocabulary word\", \"translation\": \"translation in the learner's native language\"}]"},"promptType":"define"},"typeVersion":3.1},{"id":"fd131c0f-f8a9-4f34-933c-8cfbd939023a","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-1968,-192],"parameters":{"width":448,"height":656,"content":"## How it works\n\nEvery Sunday it fetches your recently played songs, finds the lyrics via lrclib.net, and uses Google Gemini to extract 40-60 useful vocabulary words (B1-B2 level). New words are deduplicated against all previously learned words and written to Google Sheets — both a master tab and a weekly tab.\n\nYou review the flashcards using the free Flashcard Lab app (iOS + Android), which reads directly from Google Sheets with built-in spaced repetition.\n\n### Setup\n1. Google Cloud Console: Create project, enable Sheets + Drive API, create OAuth2 credentials, set app to \"In Production\"\n2. Get a free Gemini API key from Google AI Studio\n3. Spotify Developer Dashboard: Create app, note Client ID + Secret\n4. Create a Google Sheet with tab \"All Vocabularies\" and headers \"Word\" + \"Translation\"\n5. Import workflow, connect credentials, select your Sheet in all Google Sheets nodes\n6. Test with \"Execute Workflow\", then enable the schedule trigger\n\n### Customization\nTo change the language: edit the prompt in \"Prepare all Lyrics into Pairs\" — that's the only place to change. Listen to music in the language you're learning for best results."},"typeVersion":1},{"id":"868c82e0-239c-40d2-a005-31103592e1d1","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[320,256],"parameters":{"color":3,"width":224,"height":128,"content":"⚠️ Set your Google Cloud app to \"In Production\" — in \"Testing\" mode, tokens expire after 7 days and break the weekly automation."},"typeVersion":1},{"id":"7a525920-6616-4cca-8207-165635336ae0","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[0,-160],"parameters":{"color":"#EBEBEB","width":304,"height":192,"content":"## 📝 SAVE TO SHEETS\n\nCreates a weekly tab (e.g. \"Week 11\") and writes\nnew words there + to the master \"All Vocabularies\" tab.\nUse Flashcard Lab app to study from the weekly tabs.\n\n"},"typeVersion":1}],"pinData":{},"connections":{"AI Agent":{"main":[[{"node":"Parse, Deduplicate, Week Code","type":"main","index":0}]]},"Getting Lyrics":{"main":[[{"node":"Put all Lyrics together","type":"main","index":0}]]},"Every Sunday at noon":{"main":[[{"node":"Get the recently played Songs","type":"main","index":0}]]},"Read all Vocabularies":{"main":[[{"node":"Combine existing Words with new Words","type":"main","index":0}]]},"Cut out Duplicate Songs":{"main":[[{"node":"Getting Lyrics","type":"main","index":0}]]},"Put all Lyrics together":{"main":[[{"node":"Read all Vocabularies","type":"main","index":0}]]},"Cut out SheetName Column":{"main":[[{"node":"Append to Weekly","type":"main","index":0}]]},"Google Gemini Chat Model":{"ai_languageModel":[[{"node":"AI Agent","type":"ai_languageModel","index":0}]]},"Get the recently played Songs":{"main":[[{"node":"Cut out Duplicate Songs","type":"main","index":0}]]},"Parse, Deduplicate, Week Code":{"main":[[{"node":"Create sheet","type":"main","index":0},{"node":"Cut out SheetName Column","type":"main","index":0},{"node":"Append to All Vocabularies","type":"main","index":0}]]},"Combine existing Words with new Words":{"main":[[{"node":"AI Agent","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":20,"nodeTypes":{"n8n-nodes-base.code":{"count":5},"n8n-nodes-base.spotify":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-base.googleSheets":{"count":4},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":1},"@n8n/n8n-nodes-langchain.lmChatGoogleGemini":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Welat Eren","username":"welat","bio":"","verified":false,"links":["https://www.linkedin.com/in/welateren"],"avatar":"https://gravatar.com/avatar/c6816f71e0b3246fc19971b2fac54ae4057f0062d8c5040b85d65668c4a7f37b?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":335,"icon":"file:spotify.svg","name":"n8n-nodes-base.spotify","codex":{"data":{"alias":["Music","Song"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.spotify/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/spotify/"}]},"categories":["Miscellaneous"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Spotify"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjYgNjUiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBmaWxsPSIjMWVkNzYwIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSIgZD0iTTMyIDBDMTQuMyAwIDAgMTQuMzM3IDAgMzJjMCAxNy43IDE0LjMzNyAzMiAzMiAzMiAxNy43IDAgMzItMTQuMzM3IDMyLTMyUzQ5LjY2MyAwIDMyIDBtMTQuNjggNDYuMTg0Yy0uNTczLjk1Ni0xLjc5NyAxLjIyMy0yLjc1My42NS03LjUzMi00LjU4OC0xNi45NzUtNS42Mi0yOC4xNC0zLjA5Ny0xLjA3LjIzLTIuMTQtLjQyLTIuMzctMS41cy40Mi0yLjE0IDEuNS0yLjM3YzEyLjE5Ni0yLjggMjIuNjctMS42MDYgMzEuMDgyIDMuNTU2YTIgMiAwIDAgMSAuNjg4IDIuNzUzem0zLjktOC43MTdjLS43MjYgMS4xODUtMi4yNTYgMS41My0zLjQ0Ljg0LTguNjAyLTUuMjc2LTIxLjcxNi02LjgwNS0zMS44ODUtMy43NDctMS4zMzguMzgyLTIuNzE0LS4zNDQtMy4wOTctMS42NDQtLjM4Mi0xLjMzOC4zNDQtMi43MTQgMS42ODItMy4wOTcgMTEuNjIyLTMuNTE3IDI2LjA3NC0xLjgzNSAzNS45NzYgNC4yNDQgMS4xNDcuNjg4IDEuNSAyLjIxNy43NjUgMy40MDN6bS4zNDQtOS4xYy0xMC4zMjMtNi4xMTctMjcuMzM2LTYuNy0zNy4yLTMuNzA4LTEuNTY4LjQ5Ny0zLjI1LS40Mi0zLjc0Ny0xLjk4OHMuNDItMy4yNSAxLjk4OC0zLjc0N2MxMS4zMTctMy40NCAzMC4xMjctMi43NTMgNDEuOTggNC4yODIgMS40MTUuODQgMS44NzMgMi42NzYgMS4wMzIgNC4xLS43NjUgMS40NTMtMi42MzggMS45MTItNC4wNTMgMS4wN3oiLz48L3N5bWJvbD48L3N2Zz4="},"displayName":"Spotify","typeVersion":1,"nodeCategories":[{"id":11,"name":"Miscellaneous"}]},{"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":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":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":[]}}