{"workflow":{"id":14502,"name":"Convert LINE handwritten memo images to tagged, searchable notes with Gemini, Google Drive and Google Sheets","views":2,"recentViews":1,"totalViews":2,"createdAt":"2026-03-31T02:22:13.887Z","description":"## LINE AI Handwritten Memo OCR & Tag Search System\n\nThis workflow converts handwritten memo images sent via LINE into structured, searchable knowledge using AI.Users simply send a handwritten memo photo. The workflow automatically performs OCR, summarizes the content, generates tags, and stores the results in Google Sheets.Images are archived in Google Drive, allowing easy access to the original memo later.\n\n## Main Features\n\n• AI OCR for handwritten memo recognition  \n• Automatic title and summary generation  \n• Tag extraction for knowledge organization  \n• Image archiving in Google Drive  \n• Structured storage in Google Sheets  \n• Tag-based memo search via LINE  \n• Tag list generation for easy navigation\n\n## User Commands (via LINE)\n\nSend an image  \n→ The memo is analyzed, summarized, tagged, and saved automatically.\n\n#タグ名  \n→ Searches memos that contain the specified tag.\n\n#タグリスト  \n→ Displays all tags currently stored in the database.\n\n## Workflow Steps\n\n1. Receive message from LINE via Webhook  \n2. Validate message type (image or command)  \n3. Save image to Google Drive  \n4. Run AI OCR and generate structured JSON  \n5. Parse and validate AI output safely  \n6. Store memo data in Google Sheets  \n7. Send completion message to the user\n\nIf OCR fails, the user receives guidance to retake the photo.\n\nStored Data Structure\n\nEach memo record includes:\n\n• Title  \n• Summary  \n• Tags  \n• Timestamp  \n• Link to the original image\n","workflow":{"id":"VBAdlukzjLaemKYa","meta":{"instanceId":"97026e32b0fb2a3a25c91da3619a13cf567f779540a0387b5ca4103b552a7346","templateCredsSetupCompleted":true},"name":"LINE AI Handwritten Memo OCR & Tag Search System","tags":[],"nodes":[{"id":"c63563b3-178e-43a6-8313-2662d4f582ec","name":"LINE_Receive_Webhook","type":"n8n-nodes-base.webhook","position":[-352,-352],"webhookId":"6ce9c2eb-72d5-40f1-8645-a45075e85881","parameters":{"path":"=e89b4943-1f2e-4d37-84ad-0fce0b78175e","options":{},"httpMethod":"=POST"},"typeVersion":2.1},{"id":"2485ae25-d2b6-4c64-91a5-18b83f160482","name":"LINE_Download_ImageContent","type":"n8n-nodes-base.httpRequest","position":[880,-368],"parameters":{"url":"=https://api-data.line.me/v2/bot/message/{{ $('LINE_Receive_Webhook').item.json.body.events[0].message.id }}/content","options":{"response":{"response":{"responseFormat":"file"}}},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"=Authorization","value":"=Bearer {{ $('Config_Set_Environment').item.json.LINE_ACCESS_TOKEN }}"}]}},"typeVersion":4.3},{"id":"7e255b30-152a-4a7a-904e-309c6ac4be42","name":"Drive_Upload_Image","type":"n8n-nodes-base.googleDrive","position":[1168,-368],"parameters":{"name":"={{ $('LINE_Receive_Webhook').item.json.body.events[0].message.id }}.jpg","driveId":{"__rl":true,"mode":"list","value":"My Drive","cachedResultUrl":"https://drive.google.com/drive/my-drive","cachedResultName":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"list","value":"1xR4KZbVauD6_J0t5YbPBvFSS1dxPLuWu","cachedResultUrl":"https://drive.google.com/drive/folders/1xR4KZbVauD6_J0t5YbPBvFSS1dxPLuWu","cachedResultName":"LINE_PIC"}},"credentials":{"googleDriveOAuth2Api":{"id":"LrC8DnMq9fQ1sFsr","name":"Google Drive account 2"}},"typeVersion":3},{"id":"e1486120-4929-4ecb-a838-c1cffdcbfa45","name":"AI_OCR_Analyze_Image","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[1568,-368],"parameters":{"text":"=You are a high-precision OCR-dedicated engine.\n\nRead the text in the image as accurately as possible.\nIf the text cannot be read, always output the following JSON and terminate the analysis:\n{\n  \"title\": \"\",\n  \"summary\": \"Unable to read the text.\",\n  \"tags\":[]\n}\n\nIf the text is readable, create the following based on a summarized version of the content:\n\nTitle\nSummary\nTags (up to three, important keywords)\n\nRules:\n\nCategory should be a short, easily summarized word.\nSummary should be readable and within 200 characters.\nTags should be single words, with no duplicates.\nAvoid overly abstract tags (e.g., important, memo).\n\nImportant:\n\nOutput only pure JSON.\nDo not include any explanations or preambles.\nAbsolutely do not output any text other than JSON.\n\nOutput the following items in JSON format:\n{\n  \"title\": \"\",\n  \"summary\": \"\",\n  \"tags\":[\"\",\"\",\"\"]\n}\n\n","batching":{},"messages":{"messageValues":[{"type":"HumanMessagePromptTemplate","messageType":"imageBinary"}]},"promptType":"define"},"typeVersion":1.7},{"id":"b58cc94f-97cd-4857-87c1-b312ebb9768e","name":"AI_Model_Gemini","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[1568,-208],"parameters":{"options":{"topP":1,"temperature":0,"maxOutputTokens":2048}},"credentials":{"googlePalmApi":{"id":"xE3DLCmOxxD6Vr6n","name":"Google Gemini(PaLM) Api account"}},"typeVersion":1},{"id":"2a32d0b4-2de6-461e-a432-0b5be1942010","name":"Data_Parse_OCR_JSON","type":"n8n-nodes-base.code","position":[1984,-368],"parameters":{"jsCode":"let raw = $json[\"text\"] || \"\";\n\n// ```Remove JSON\nraw = raw.replace(/```json\\s*/i, \"\").replace(/```/g, \"\").trim();\n\n// Extract only the JSON part.\nconst match = raw.match(/\\{[\\s\\S]*\\}/);\nif (match) {\n  raw = match[0];\n}\n\n// Parse\nlet parsed;\ntry {\n  parsed = JSON.parse(raw);\n} catch (e) {\n  parsed = {\n    title: \"\",\n    summary: raw.slice(0, 100),\n    tags: []\n  };\n}\n\n// title\nif (!parsed.title || typeof parsed.title !== \"string\") {\n  parsed.title = \"NoTitle\";\n}\n\n// summary\nif (!parsed.summary || typeof parsed.summary !== \"string\") {\n  parsed.summary = \"NoSummary\";\n}\n\n// tags\nif (!Array.isArray(parsed.tags)) {\n  parsed.tags = [];\n}\n\n// Sanitize the contents of the tags as well\nparsed.tags = parsed.tags\n  .filter(tag => typeof tag === \"string\")\n  .slice(0, 3);\n\n// Original item\nconst item = $input.first();\n\n// Merge\nitem.json = {\n  ...item.json,\n  ...parsed\n};\n\n// Keep binary\nitem.binary = $input.first().binary;\n\nreturn [item];"},"typeVersion":2},{"id":"7c8afb53-4d68-4855-b9ad-d666066b8092","name":"AI_Check_OCR_Failure","type":"n8n-nodes-base.if","position":[2208,-368],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"0cad7233-7daa-4bff-bde7-08f254669175","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.summary }}","rightValue":"=Unable to read the text."}]}},"typeVersion":2.3},{"id":"a64dd875-873d-4af2-ad8c-bc928603bf0c","name":"LINE_Reply_NoImage","type":"n8n-nodes-base.httpRequest","position":[720,560],"parameters":{"url":"=https://api.line.me/v2/bot/message/reply","method":"POST","options":{},"jsonBody":"={\n  \"replyToken\": \"{{$node['LINE_Receive_Webhook'].json.body.events[0].replyToken }}\",\n  \"messages\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"If you send a handwritten memo, I will summarize its contents.\nYou can also search for memos containing a specific tag using #tagname.\nUse #taglist to display the list of tags.\"\n    }\n  ]\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"=Authorization","value":"=Bearer {{$node[\"Config_Set_Environment\"].json.LINE_ACCESS_TOKEN }}"},{"name":"=Content-type","value":"=application/json"}]}},"typeVersion":4.3},{"id":"f6c5cf0f-764b-4a8a-88dd-f0e918897c04","name":"Sheets_Append_Row","type":"n8n-nodes-base.googleSheets","position":[2656,-352],"parameters":{"columns":{"value":{"date":"={{$now.format(\"yyyy-MM-dd HH:mm:ss\")}}","tags":"={{ $json.tags.join(\", \") }}","title":"={{ $json.title }}","webUrl":"={{ $('Drive_Upload_Image').item.json.webViewLink }}","summary":"={{ $json.summary }}"},"schema":[{"id":"date","type":"string","display":true,"removed":false,"required":false,"displayName":"date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"title","type":"string","display":true,"removed":false,"required":false,"displayName":"title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"summary","type":"string","display":true,"removed":false,"required":false,"displayName":"summary","defaultMatch":false,"canBeUsedToMatch":true},{"id":"webUrl","type":"string","display":true,"removed":false,"required":false,"displayName":"webUrl","defaultMatch":false,"canBeUsedToMatch":true},{"id":"tags","type":"string","display":true,"removed":false,"required":false,"displayName":"tags","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/1eFUe4xD5Xgd5BbQ2kT_QzKQzF3EspnuXdpYYv8p46HM/edit#gid=0","cachedResultName":"template"},"documentId":{"__rl":true,"mode":"list","value":"1eFUe4xD5Xgd5BbQ2kT_QzKQzF3EspnuXdpYYv8p46HM","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1eFUe4xD5Xgd5BbQ2kT_QzKQzF3EspnuXdpYYv8p46HM/edit?usp=drivesdk","cachedResultName":"OCR_data"}},"credentials":{"googleSheetsOAuth2Api":{"id":"egoCUdvIqtgf9YLy","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"802e8d5c-49bb-4af0-a950-73cd2160f110","name":"LINE_Push_Completion_Message","type":"n8n-nodes-base.httpRequest","position":[3024,-352],"parameters":{"url":"=https://api.line.me/v2/bot/message/push","method":"POST","options":{},"jsonBody":"={\n  \"to\":\"{{ $('LINE_Receive_Webhook').item.json.body.events[0].source.userId }}\",\n  \"messages\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"The text has been summarized and saved. The title is「{{$json.title}}」,and the tags are「{{ $json.tags }}」\\nThe summary is「{{ $json.summary }}」\\n\\nYou can search for notes containing a specific tag using #tagname.\\nUse #taglist to display the list of tags.\"\n    }\n  ]\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"=Authorization","value":"=Bearer {{ $('Config_Set_Environment').item.json.LINE_ACCESS_TOKEN }}"},{"name":"=Content-type","value":"=application/json"}]}},"typeVersion":4.3},{"id":"b8d79321-ca8b-402c-8606-c262dab9af48","name":"Config_Set_Environment","type":"n8n-nodes-base.set","position":[-128,-352],"parameters":{"options":{},"assignments":{"assignments":[{"id":"aa8b0c5c-df21-49f6-a885-eff8ad142d3d","name":"LINE_ACCESS_TOKEN","type":"string","value":"=YOUR_ACCESS_TOKEN"}]}},"typeVersion":3.4},{"id":"01d5539d-d2c5-40b9-84a1-abf4696cfa4a","name":"LINE_Reply_Processing","type":"n8n-nodes-base.httpRequest","position":[672,-368],"parameters":{"url":"=https://api.line.me/v2/bot/message/reply","method":"POST","options":{},"jsonBody":"={\n  \"replyToken\": \"{{$node['LINE_Receive_Webhook'].json.body.events[0].replyToken }}\",\n  \"messages\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"Processing… please wait a moment.\"\n    }\n  ]\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"=Authorization","value":"=Bearer {{$node[\"Config_Set_Environment\"].json.LINE_ACCESS_TOKEN }}"},{"name":"=Content-type","value":"=application/json"}]}},"typeVersion":4.3},{"id":"76592edc-f37d-47e0-bfe4-77caec17ca67","name":"LINE_Push_NoSummary","type":"n8n-nodes-base.httpRequest","position":[2400,-480],"parameters":{"url":"=https://api.line.me/v2/bot/message/push","method":"POST","options":{},"jsonBody":"={\n  \"to\":\"{{ $('LINE_Receive_Webhook').item.json.body.events[0].source.userId }}\",\n  \"messages\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"The image could not be read.\\n・The text may be too small.\\n・Please retake the photo in a well-lit area.\"\n    }\n  ]\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"=Authorization","value":"=Bearer {{ $('Config_Set_Environment').item.json.LINE_ACCESS_TOKEN }}"},{"name":"=Content-type","value":"=application/json"}]}},"typeVersion":4.3},{"id":"d339fe26-0f34-4838-9b2f-45583bfb12f7","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[112,-608],"parameters":{"color":7,"width":448,"height":400,"content":"## Detect message type\n\nThe workflow checks whether the incoming message is:\n\n• Image (handwritten memo)\n• Text command\n\nImage messages trigger the OCR pipeline.\n\nText messages are treated as commands such as tag search."},"typeVersion":1},{"id":"3e7d1cd1-c2eb-4394-9a19-9db8a68e8a04","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-1216,-672],"parameters":{"width":752,"height":1440,"content":"## LINE AI Handwritten Memo OCR & Tag Search System\n\nThis workflow converts handwritten memo images sent via LINE into structured, searchable knowledge using AI.Users simply send a handwritten memo photo. The workflow automatically performs OCR, summarizes the content, generates tags, and stores the results in Google Sheets.Images are archived in Google Drive, allowing easy access to the original memo later.\n\n## Main Features\n\n• AI OCR for handwritten memo recognition  \n• Automatic title and summary generation  \n• Tag extraction for knowledge organization  \n• Image archiving in Google Drive  \n• Structured storage in Google Sheets  \n• Tag-based memo search via LINE  \n• Tag list generation for easy navigation\n\n## User Commands (via LINE)\n\nSend an image  \n→ The memo is analyzed, summarized, tagged, and saved automatically.\n\n#tagname  \n→ Searches memos that contain the specified tag.\n\n#taglist\n→ Displays all tags currently stored in the database.\n\n## Workflow Steps\n\n1. Receive message from LINE via Webhook  \n2. Validate message type (image or command)  \n3. Save image to Google Drive  \n4. Run AI OCR and generate structured JSON  \n5. Parse and validate AI output safely  \n6. Store memo data in Google Sheets  \n7. Send completion message to the user\n\nIf OCR fails, the user receives guidance to retake the photo.\n\nStored Data Structure\n\nEach memo record includes:\n\n• Title  \n• Summary  \n• Tags  \n• Timestamp  \n• Link to the original image\n\n## Setup Requirements Before using this workflow:\n\n1. Create a LINE Messaging API channel\n2. Obtain a Channel Access Token\n3. Prepare a Google Sheet for memo storage\n4. Prepare a Google Drive folder for image storage\n5. Set credentials in the Config node\n・LINE API\n\n## Notes\n\n• OCR accuracy may vary depending on handwriting quality  \n• Very small or unclear text may not be recognized  \n• The workflow is optimized for quick memo capture and organization\n\n"},"typeVersion":1},{"id":"e93c4693-92f5-42d8-8bb3-d423a7f834ac","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-416,-640],"parameters":{"color":7,"width":512,"height":480,"content":"## Receive message from LINE \nThis workflow starts when a user sends a message to the LINE bot. \nThe LINE Messaging API sends an event to the webhook endpoint in n8n.\n\n The event contains:\n • userId \n • message type (image or text)\n • messageId\n\n This information is used to determine how the workflow should proceed."},"typeVersion":1},{"id":"d1209241-8ef0-4fb2-80dd-f88c2684f6d4","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[608,-608],"parameters":{"color":7,"width":512,"height":400,"content":"## Retrieve image from LINE\n\nIf the message is an image, the workflow retrieves the image file\nusing the LINE Messaging API.\n\nThe image binary data will be used for OCR processing and stored later."},"typeVersion":1},{"id":"cf049c97-084e-48d3-aab5-b58dafb094cc","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[1136,-608],"parameters":{"color":7,"width":384,"height":400,"content":"## Save image to Google Drive\n\nThe memo image is stored in Google Drive for long-term access.\n\nThis allows users to open the original handwritten memo later\nfrom the stored link."},"typeVersion":1},{"id":"f447bbfc-fbb7-4444-bd60-d4f375623776","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[1536,-640],"parameters":{"color":7,"width":368,"height":560,"content":"## AI OCR processing\n\nThe uploaded image is analyzed using AI OCR.\n\nThe AI extracts:\n\n• memo title\n• summary\n• tags\n• main text\n\nThe result is returned as structured JSON."},"typeVersion":1},{"id":"8c99d817-de3d-496b-b5ea-449d82e867cd","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[1920,-640],"parameters":{"color":7,"width":656,"height":448,"content":"## Parse AI response\n\nThe JSON response from the AI is validated and parsed.\n\nThis step ensures the workflow receives structured data\nbefore saving it into the database."},"typeVersion":1},{"id":"b0a1c12c-f0be-47eb-9cac-9c30dadc8d97","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[2592,-608],"parameters":{"color":7,"width":336,"height":416,"content":"## Store memo data\n\nThe memo data is stored in Google Sheets.\n\nEach record contains:\n\n• title\n• summary\n• tags\n• timestamp\n• image link."},"typeVersion":1},{"id":"d7767fd5-8c2d-4dd2-8afe-ee2a062d8c2d","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[2944,-528],"parameters":{"color":7,"width":400,"height":352,"content":"## Send confirmation message\n\nAfter the memo is successfully processed and stored,\na confirmation message is sent to the user via LINE.\n\nThe message confirms that the memo has been saved."},"typeVersion":1},{"id":"512ee1b5-34a6-460c-9ac7-328ca4758a08","name":"Extract_Tag","type":"n8n-nodes-base.code","position":[720,400],"parameters":{"jsCode":"const text = $('LINE_Receive_Webhook').first().json.body.events[0].message.text;\n\n// #delete\nconst tag = text.replace(\"#\",\"\").trim();\n\nreturn [\n{\njson:{\ntag:tag,\n}\n}\n];"},"typeVersion":2},{"id":"9c13a744-ba39-4936-adb3-fd9cb7269856","name":"Filter_By_Tag","type":"n8n-nodes-base.code","position":[1088,400],"parameters":{"jsCode":"const searchTag = $items(\"Extract_Tag\")[0].json.tag;\n\nconst rows = $input.all();\n\nconst results = rows.filter(row => {\n\n  const tags = row.json.tags || \"\";\n\n  return tags.toLowerCase().includes(searchTag.toLowerCase());\n\n});\n\nreturn results.slice(0,5);"},"typeVersion":2,"alwaysOutputData":true},{"id":"ec60432f-ef68-4ca9-aa4f-5e3e3fd0d14d","name":"Build_Search_Result","type":"n8n-nodes-base.code","position":[1248,400],"parameters":{"jsCode":"const items = $input.all();\n\n// Keep only the items that actually have data\nconst realItems = items.filter(item => item.json && (item.json.title || item.json.summary || (item.json.tags && item.json.tags.length)));\n\nlet payload;\n\nif (realItems.length === 0) {\n  payload = { message: \"No matching notes were found.\\\\nSend #taglist to see a list of available tags.\" };\n} else {\n  let text = \"Tag search results\\n\\n\";\n\n  realItems.forEach((item, i) => {\n    text += (i + 1) + \"\\n\";\n    text += \"Title:\" + (item.json.title || \"NoTitle\") + \"\\n\";\n    text += \"Summary:\" + (item.json.summary || \"NoSummary\") + \"\\n\";\n    text += \"tags:\" + (Array.isArray(item.json.tags) ? item.json.tags.join(\", \") : item.json.tags || \"\") + \"\\n\\n\";\n  });\n\n  payload = { message: text };\n}\n\nreturn [{ json: payload }];"},"typeVersion":2},{"id":"39f0f8a1-9594-41e3-be33-49d84328ce82","name":"LINE_Push_TagResults","type":"n8n-nodes-base.httpRequest","position":[1440,400],"parameters":{"url":"=https://api.line.me/v2/bot/message/push","method":"POST","options":{},"jsonBody":"={{ JSON.stringify({\n  to: $('LINE_Receive_Webhook').item.json.body.events[0].source.userId,\n  messages: [\n    {\n      type: \"text\",\n      text: $json.message\n    }\n  ]\n}) }}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"=Authorization","value":"=Bearer {{$node[\"Config_Set_Environment\"].json.LINE_ACCESS_TOKEN}}"},{"name":"=Content-Type","value":"=application/json"}]}},"typeVersion":4.3},{"id":"41507112-15c6-46c2-bad4-b4b010426457","name":"Sheets_Get_All_Memos","type":"n8n-nodes-base.googleSheets","position":[896,400],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1eFUe4xD5Xgd5BbQ2kT_QzKQzF3EspnuXdpYYv8p46HM/edit#gid=0","cachedResultName":"template"},"documentId":{"__rl":true,"mode":"list","value":"1eFUe4xD5Xgd5BbQ2kT_QzKQzF3EspnuXdpYYv8p46HM","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1eFUe4xD5Xgd5BbQ2kT_QzKQzF3EspnuXdpYYv8p46HM/edit?usp=drivesdk","cachedResultName":"OCR_data"}},"credentials":{"googleSheetsOAuth2Api":{"id":"egoCUdvIqtgf9YLy","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"b387017c-8dd2-40bc-b761-59898ca90d42","name":"Restore_Image_Binary","type":"n8n-nodes-base.code","position":[1360,-368],"parameters":{"jsCode":"const item = $input.first();\n\n// Restore binary\nitem.binary = $node[\"LINE_Download_ImageContent\"].binary;\n\nreturn [item];"},"typeVersion":2},{"id":"faf8aece-42ef-4ced-92be-645eac3a09ab","name":"Check_Image_Message","type":"n8n-nodes-base.if","position":[176,-352],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"58a4dbd8-8eed-400c-b94a-7083131e133a","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $('LINE_Receive_Webhook').item.json.body.events[0].message.type }}","rightValue":"image"},{"id":"69e0a667-2629-4538-9bb6-518274328f8b","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"","rightValue":""}]}},"typeVersion":2.3},{"id":"9d207368-4fb8-4a1e-941d-737f0af98b3c","name":"Check_Tag_Command","type":"n8n-nodes-base.if","position":[528,416],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"a73b3ed7-0dbb-489a-9ed6-fdb55b4b9d3d","operator":{"type":"string","operation":"startsWith"},"leftValue":"={{ $('LINE_Receive_Webhook').item.json.body.events[0].message.text }}","rightValue":"=#"}]}},"typeVersion":2.3},{"id":"50369319-eda2-4c0f-a7c3-350535c1274a","name":"Check_Tag_List_Command","type":"n8n-nodes-base.if","position":[336,0],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"bfbc6b45-7602-4be0-a7a6-790755851292","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $('LINE_Receive_Webhook').item.json.body.events[0].message.text }}","rightValue":"#taglist"}]}},"typeVersion":2.3},{"id":"c3962197-9330-45ce-b4ce-1478b37020d7","name":"Build_TagList","type":"n8n-nodes-base.code","position":[688,-16],"parameters":{"jsCode":"const rows = $input.all();\n\nlet tagSet = new Set();\n\nfor (const item of rows) {\n\n  const tags = item.json.tags || \"\";\n\n  tags.split(\",\")\n    .map(t => t.trim())\n    .filter(t => t !== \"\")\n    .forEach(t => tagSet.add(t));\n\n}\n\nconst tagList = Array.from(tagSet).sort();\n\nreturn [\n{\njson:{\ntagList: tagList,\ntagText: tagList.join(\"\\\\n\")\n}\n}\n];"},"typeVersion":2},{"id":"71d3cc39-0879-4e50-a36c-4a7276b34e19","name":"LINE_Push_TagList","type":"n8n-nodes-base.httpRequest","position":[848,-16],"parameters":{"url":"=https://api.line.me/v2/bot/message/push","method":"POST","options":{},"jsonBody":"={\n \"to\": \"{{ $('LINE_Receive_Webhook').first().json.body.events[0].source.userId }}\",\n \"messages\": [\n  {\n   \"type\": \"text\",\n  \"text\": \"{{ '【Taglist】\\\\n' + $json.tagText }}\"\n   \n  }\n ]\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"=Authorization","value":"=Bearer {{$node[\"Config_Set_Environment\"].json.LINE_ACCESS_TOKEN}}"}]}},"typeVersion":4.3},{"id":"aeadf7a0-5214-4342-941c-5d85ec18bc5f","name":"Sheets_Get_All_Memos_For_TagList","type":"n8n-nodes-base.googleSheets","position":[528,-16],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1eFUe4xD5Xgd5BbQ2kT_QzKQzF3EspnuXdpYYv8p46HM/edit#gid=0","cachedResultName":"template"},"documentId":{"__rl":true,"mode":"list","value":"1eFUe4xD5Xgd5BbQ2kT_QzKQzF3EspnuXdpYYv8p46HM","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1eFUe4xD5Xgd5BbQ2kT_QzKQzF3EspnuXdpYYv8p46HM/edit?usp=drivesdk","cachedResultName":"OCR_data"}},"credentials":{"googleSheetsOAuth2Api":{"id":"egoCUdvIqtgf9YLy","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"2f114e7c-3479-407e-bdab-744b523f3bd4","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[496,176],"parameters":{"color":7,"width":1104,"height":560,"content":"## Tag search command\n\nUsers can search memos by sending a tag command.\n\nExample\n#study\n#meeting\n\nThe workflow filters memos that contain the specified tag\nand returns the results to the user."},"typeVersion":1},{"id":"24ace017-7bea-4a40-bcfa-82ee564de1aa","name":"Sticky Note10","type":"n8n-nodes-base.stickyNote","position":[288,-192],"parameters":{"color":7,"width":768,"height":352,"content":"## Generate tag list\n\nThe workflow collects all stored tags\nand generates a unique tag list.\n\nThis helps users quickly see which topics\nare available in the memo database."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"c1c19ead-5e47-40d7-96af-79f1610b27f8","connections":{"Extract_Tag":{"main":[[{"node":"Sheets_Get_All_Memos","type":"main","index":0}]]},"Build_TagList":{"main":[[{"node":"LINE_Push_TagList","type":"main","index":0}]]},"Filter_By_Tag":{"main":[[{"node":"Build_Search_Result","type":"main","index":0}]]},"AI_Model_Gemini":{"ai_languageModel":[[{"node":"AI_OCR_Analyze_Image","type":"ai_languageModel","index":0}]]},"Check_Tag_Command":{"main":[[{"node":"Extract_Tag","type":"main","index":0}],[{"node":"LINE_Reply_NoImage","type":"main","index":0}]]},"Sheets_Append_Row":{"main":[[{"node":"LINE_Push_Completion_Message","type":"main","index":0}]]},"Drive_Upload_Image":{"main":[[{"node":"Restore_Image_Binary","type":"main","index":0}]]},"Build_Search_Result":{"main":[[{"node":"LINE_Push_TagResults","type":"main","index":0}]]},"Check_Image_Message":{"main":[[{"node":"LINE_Reply_Processing","type":"main","index":0}],[{"node":"Check_Tag_List_Command","type":"main","index":0}]]},"Data_Parse_OCR_JSON":{"main":[[{"node":"AI_Check_OCR_Failure","type":"main","index":0}]]},"AI_Check_OCR_Failure":{"main":[[{"node":"LINE_Push_NoSummary","type":"main","index":0}],[{"node":"Sheets_Append_Row","type":"main","index":0}]]},"AI_OCR_Analyze_Image":{"main":[[{"node":"Data_Parse_OCR_JSON","type":"main","index":0}]]},"LINE_Receive_Webhook":{"main":[[{"node":"Config_Set_Environment","type":"main","index":0}]]},"Restore_Image_Binary":{"main":[[{"node":"AI_OCR_Analyze_Image","type":"main","index":0}]]},"Sheets_Get_All_Memos":{"main":[[{"node":"Filter_By_Tag","type":"main","index":0}]]},"LINE_Reply_Processing":{"main":[[{"node":"LINE_Download_ImageContent","type":"main","index":0}]]},"Check_Tag_List_Command":{"main":[[{"node":"Sheets_Get_All_Memos_For_TagList","type":"main","index":0}],[{"node":"Check_Tag_Command","type":"main","index":0}]]},"Config_Set_Environment":{"main":[[{"node":"Check_Image_Message","type":"main","index":0}]]},"LINE_Download_ImageContent":{"main":[[{"node":"Drive_Upload_Image","type":"main","index":0}]]},"Sheets_Get_All_Memos_For_TagList":{"main":[[{"node":"Build_TagList","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":36,"nodeTypes":{"n8n-nodes-base.if":{"count":4},"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":6},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.stickyNote":{"count":11},"n8n-nodes-base.googleDrive":{"count":1},"n8n-nodes-base.httpRequest":{"count":7},"n8n-nodes-base.googleSheets":{"count":3},"@n8n/n8n-nodes-langchain.chainLlm":{"count":1},"@n8n/n8n-nodes-langchain.lmChatGoogleGemini":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Hiroshi Hashimoto","username":"hashimoto","bio":"I studied programming at a vocational school in Japan and obtained the Level 2 Information Technology Engineer certification. After that, I worked as a sales representative at a staffing agency.\n\nIn 2021, I opened a private tutoring school, where I serve as the head instructor, supporting elementary, junior high, and high school students with their studies. I also launched a QUREO programming school.\n\nSince 2025, I have been studying n8n and am aiming to become a certified creator.","verified":true,"links":[""],"avatar":"https://gravatar.com/avatar/ecf46725ebf0a3285bdf9964d3bf11caa76a1673b46a768348e403df1d47dd14?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"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/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"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/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/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/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/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/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/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-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":58,"icon":"file:googleDrive.svg","name":"n8n-nodes-base.googleDrive","codex":{"data":{"resources":{"generic":[{"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/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/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.googledrive/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Google Drive"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgODEgNzMiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwNjZkYSIgZD0ibTYuMDQ4IDYxLjI2IDMuNTI4IDYuMDk0Yy43MzMgMS4yODMgMS43ODcgMi4yOTEgMy4wMjQgMy4wMjRsMTIuNi0yMS44MUgwYTguMyA4LjMgMCAwIDAgMS4xIDQuMTI0eiIvPjxwYXRoIGZpbGw9IiMwMGFjNDciIGQ9Ik00MCAyMi45MSAyNy40IDEuMWMtMS4yMzcuNzMzLTIuMjkxIDEuNzQxLTMuMDI0IDMuMDI0TDEuMSA0NC40NDVBOC4zIDguMyAwIDAgMCAwIDQ4LjU2OGgyNS4yeiIvPjxwYXRoIGZpbGw9IiNlYTQzMzUiIGQ9Ik02Ny40IDcwLjM3OGMxLjIzNy0uNzMzIDIuMjkxLTEuNzQxIDMuMDI0LTMuMDI0bDEuNDY2LTIuNTIgNy4wMS0xMi4xNDJhOC4zIDguMyAwIDAgMCAxLjEtNC4xMjRINTQuNzk4bDUuMzYzIDEwLjUzOHoiLz48cGF0aCBmaWxsPSIjMDA4MzJkIiBkPSJNNDAgMjIuOTEgNTIuNiAxLjFDNTEuMzYzLjM2NyA0OS45NDMgMCA0OC40NzcgMEgzMS41MjRjLTEuNDY2IDAtMi44ODcuNDEyLTQuMTI0IDEuMXoiLz48cGF0aCBmaWxsPSIjMjY4NGZjIiBkPSJNNTQuNzk5IDQ4LjU2OEgyNS4ybC0xMi42IDIxLjgxYzEuMjM3LjczMyAyLjY1NyAxLjEgNC4xMjQgMS4xaDQ2LjU1MmMxLjQ2NiAwIDIuODg3LS40MTIgNC4xMjQtMS4xeiIvPjxwYXRoIGZpbGw9IiNmZmJhMDAiIGQ9Ik02Ny4yNjIgMjQuMjg0IDU1LjYyNCA0LjEyNEM1NC44OTEgMi44NDEgNTMuODM3IDEuODMzIDUyLjYgMS4xTDQwIDIyLjkxbDE0LjggMjUuNjU5aDI1LjE1NWE4LjMgOC4zIDAgMCAwLTEuMS00LjEyNHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Google Drive","typeVersion":3,"nodeCategories":[{"id":3,"name":"Data & Storage"}]},{"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":1123,"icon":"fa:link","name":"@n8n/n8n-nodes-langchain.chainLlm","codex":{"data":{"alias":["LangChain"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Chains","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"Basic LLM Chain","color":"#909298"},"iconData":{"icon":"link","type":"icon"},"displayName":"Basic LLM Chain","typeVersion":2,"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":35,"name":"Document Extraction"},{"id":49,"name":"AI Summarization"}],"image":[]}}