{ "nodes": [ { "id": "ee3cd6ff-40ba-40d4-bbbf-90244da4a272", "name": "When clicking ‘Test workflow’", "type": "n8n-nodes-base.manualTrigger", "position": [ 0, -155 ], "parameters": {}, "typeVersion": 1 }, { "id": "68584aab-c5f3-450a-a1e3-cddc8d64082d", "name": "Extract from File", "type": "n8n-nodes-base.extractFromFile", "position": [ 1100, -280 ], "parameters": { "options": {}, "operation": "fromJson" }, "typeVersion": 1 }, { "id": "e23a67a1-44df-4b83-a80a-9383f4432c7d", "name": "If is archived is false", "type": "n8n-nodes-base.if", "position": [ 1540, -280 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "e051d2f2-7c22-4864-bbe7-4832cc54acaa", "operator": { "type": "boolean", "operation": "false", "singleValue": true }, "leftValue": "={{ $json.data.isArchived }}", "rightValue": "" } ] } }, "typeVersion": 2.2 }, { "id": "313764d0-f115-46d3-a2e3-1fde647f7d85", "name": "OpenAI Chat Model", "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", "position": [ 1848, -60 ], "parameters": { "model": { "__rl": true, "mode": "list", "value": "gpt-4o-mini" }, "options": {} }, "credentials": { "openAiApi": { "id": "1IOLtYX7aTspCAN8", "name": "OpenAI Pollup" } }, "typeVersion": 1.2 }, { "id": "81fcc7a0-955d-4930-b203-8e98d57e3c4c", "name": "If extension is json", "type": "n8n-nodes-base.filter", "position": [ 660, -280 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "7b80be39-b5cc-4f96-8529-75559aaece38", "operator": { "name": "filter.operator.equals", "type": "string", "operation": "equals" }, "leftValue": "={{ $json.name.split('.').pop(); }}", "rightValue": "=json" } ] } }, "typeVersion": 2.2 }, { "id": "1c8c81ea-d0ae-4925-ae4b-05482c1b5fa2", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ -340, -380 ], "parameters": { "color": 4, "width": 260, "height": 440, "content": "## How to export your Google keep notes \n* Google has a dedicated service for exporting your google data, called [Google Takeout](https://takeout.google.com/), you'll have to login it. \n* Click on \"Deselect all\" then select only Google Keep and click on \"Next\". \n- Select the destination (use \"Send download link via mail\" as you'll have to uncompress a zip file before to send it again to Google Drive)\n- Upload to Google Drive all json files from your uncompresed file, to specific directory and you are ready to start!\n" }, "typeVersion": 1 }, { "id": "31eb6398-cca0-4ed1-910a-470fa49c9727", "name": "Search in \"Keep\" folder", "type": "n8n-nodes-base.googleDrive", "position": [ 220, -155 ], "parameters": { "limit": 2, "filter": { "folderId": { "__rl": true, "mode": "list", "value": "1BggjRVCqyDnECK_mB2M-PYareptQv99P", "cachedResultUrl": "https://drive.google.com/drive/folders/1BggjRVCqyDnECK_mB2M-PYareptQv99P", "cachedResultName": "Keep" }, "whatToSearch": "files" }, "options": {}, "resource": "fileFolder" }, "credentials": { "googleDriveOAuth2Api": { "id": "veQ5hnnOES56fTcI", "name": "Google Drive account good" } }, "typeVersion": 3 }, { "id": "653d04b2-4020-4254-a8f5-53e15228adb7", "name": "Loop every 10 items", "type": "n8n-nodes-base.splitInBatches", "position": [ 440, -155 ], "parameters": { "options": {}, "batchSize": 10 }, "typeVersion": 3 }, { "id": "c1171bd7-5e2d-49e6-a52b-6e9282cb093d", "name": "Download the files", "type": "n8n-nodes-base.googleDrive", "position": [ 880, -280 ], "parameters": { "fileId": { "__rl": true, "mode": "id", "value": "={{ $json.id }}" }, "options": {}, "operation": "download" }, "credentials": { "googleDriveOAuth2Api": { "id": "veQ5hnnOES56fTcI", "name": "Google Drive account good" } }, "typeVersion": 3 }, { "id": "4d9caff3-2ac8-40fc-91a4-1b395e693141", "name": "Put some AI treatment here if you need it", "type": "@n8n/n8n-nodes-langchain.agent", "notes": "Yu can use this AI Agent to process a number or anything you need from your notes", "position": [ 1760, -280 ], "parameters": { "text": "=Extract the amount in euros of the input. output just the amount and nothing else. \nHere is the input:{{ $json.data.textContent }}", "options": {}, "promptType": "define" }, "typeVersion": 1.8 }, { "id": "d97c4e02-4b1a-479f-8492-e601c553ac57", "name": "Set the fields for export", "type": "n8n-nodes-base.set", "position": [ 2136, -280 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "d05409ea-b739-47bd-9c07-0dea40b83de1", "name": "textContent", "type": "string", "value": "={{ $('If is archived is false').item.json.data.textContent }}" }, { "id": "acbe202e-de95-4a47-a90b-78556fec4650", "name": "Edited", "type": "string", "value": "={{ new Date($('If is archived is false').item.json.data.userEditedTimestampUsec / 1000).toLocaleString() }}" }, { "id": "13f00e53-75fd-4db5-9a22-b5e329c72b47", "name": "Created", "type": "string", "value": "={{ new Date($('If is archived is false').item.json.data.createdTimestampUsec / 1000).toLocaleString() }}" }, { "id": "7e58e874-5238-4fb6-8b00-ea947c59ec4b", "name": "isArchived", "type": "boolean", "value": "={{ $('If is archived is false').item.json.data.isArchived }}" }, { "id": "721f31d8-4944-4a63-878e-71816eee755c", "name": "Amount", "type": "string", "value": "={{ $json.output }}" } ] } }, "typeVersion": 3.4 }, { "id": "0f8d9b1f-f5de-477f-ad50-eeb89bcf8dc7", "name": "Add to google sheet", "type": "n8n-nodes-base.googleSheets", "position": [ 2356, -155 ], "parameters": { "columns": { "value": {}, "schema": [ { "id": "textContent", "type": "string", "display": true, "removed": false, "required": false, "displayName": "textContent", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "Edited", "type": "string", "display": true, "removed": false, "required": false, "displayName": "Edited", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "Created", "type": "string", "display": true, "removed": false, "required": false, "displayName": "Created", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "isArchived", "type": "string", "display": true, "removed": false, "required": false, "displayName": "isArchived", "defaultMatch": false, "canBeUsedToMatch": true } ], "mappingMode": "autoMapInputData", "matchingColumns": [], "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {}, "operation": "appendOrUpdate", "sheetName": { "__rl": true, "mode": "list", "value": "gid=0", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1rjgyHw6XU4NTRCx4eXuQ0AIXhY3mWqxg1NiAhrSnuzE/edit#gid=0", "cachedResultName": "Sheet1" }, "documentId": { "__rl": true, "mode": "list", "value": "1rjgyHw6XU4NTRCx4eXuQ0AIXhY3mWqxg1NiAhrSnuzE", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1rjgyHw6XU4NTRCx4eXuQ0AIXhY3mWqxg1NiAhrSnuzE/edit?usp=drivesdk", "cachedResultName": "googl keep export (10/05/25)" } }, "credentials": { "googleSheetsOAuth2Api": { "id": "gdLmm513ROUyH6oU", "name": "Google Sheets account" } }, "typeVersion": 4.5 }, { "id": "31141cf2-94d6-45ad-8632-18001a6d4d36", "name": "Filter", "type": "n8n-nodes-base.if", "position": [ 1320, -280 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "or", "conditions": [ { "id": "11bacf5f-6675-4681-b205-5e5293eaae02", "operator": { "type": "string", "operation": "contains" }, "leftValue": "={{ $json.data.textContentHtml }}", "rightValue": "dépensé" }, { "id": "c40da1df-559c-4278-bde1-cdb8e65c8428", "operator": { "type": "string", "operation": "contains" }, "leftValue": "={{ $json.data.textContentHtml }}", "rightValue": "depense" } ] } }, "typeVersion": 2.2 }, { "id": "c4c941f5-6579-4f4f-9916-cdd496498760", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ 2300, -360 ], "parameters": { "color": 5, "height": 360, "content": "## Create an empty google sheet file\n\nThat will get your entries from the notes " }, "typeVersion": 1 }, { "id": "3ab60239-85cf-4c84-94d3-659fdfef4316", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [ 140, -300 ], "parameters": { "color": 5, "height": 360, "content": "## Set the directory Where you put the files" }, "typeVersion": 1 }, { "id": "49546099-e072-4183-a14e-fff80928920d", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [ 1240, -480 ], "parameters": { "color": 5, "height": 360, "content": "## Filter the files\n\nIf you need the content to contain a word, or after a certain date.\n\nIf you don't need to filter it, just remove the node" }, "typeVersion": 1 }, { "id": "195923a2-faf9-40c3-95c0-08fdc078e291", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [ 1720, -500 ], "parameters": { "color": 5, "width": 320, "height": 560, "content": "## Process each file with AI\n\nIf you need the extract some information from the contextq, you can do it here. If you don't need it, just delete the node" }, "typeVersion": 1 }, { "id": "07b3570a-72cf-480b-b3b8-fb461b57822d", "name": "Sticky Note5", "type": "n8n-nodes-base.stickyNote", "position": [ -340, 80 ], "parameters": { "color": 4, "width": 380, "height": 300, "content": "## Setup\n* Export your Google Keep notes (see \"how to export your Google Keep notes\")\n\n- Connect Google Drive, OpenAI, and Google Sheets in n8n.\n\n- Set the correct folder path for your notes in the “Search in ‘Keep’ folder” node.\n\n- Point the Google Sheet node to your spreadsheet" }, "typeVersion": 1 }, { "id": "48e1cff2-2748-4d15-91b4-d5ee2f5d9581", "name": "Sticky Note6", "type": "n8n-nodes-base.stickyNote", "position": [ -340, -500 ], "parameters": { "width": 720, "height": 100, "content": "## Contact me\n### If you need some help with this workflow: Write to me: [thomas@pollup.net](mailto:thomas@pollup.net)\n" }, "typeVersion": 1 } ], "connections": { "Filter": { "main": [ [ { "node": "If is archived is false", "type": "main", "index": 0 } ] ] }, "Extract from File": { "main": [ [ { "node": "Filter", "type": "main", "index": 0 } ] ] }, "OpenAI Chat Model": { "ai_languageModel": [ [ { "node": "Put some AI treatment here if you need it", "type": "ai_languageModel", "index": 0 } ] ] }, "Download the files": { "main": [ [ { "node": "Extract from File", "type": "main", "index": 0 } ] ] }, "Add to google sheet": { "main": [ [ { "node": "Loop every 10 items", "type": "main", "index": 0 } ] ] }, "Loop every 10 items": { "main": [ [], [ { "node": "If extension is json", "type": "main", "index": 0 } ] ] }, "If extension is json": { "main": [ [ { "node": "Download the files", "type": "main", "index": 0 } ] ] }, "If is archived is false": { "main": [ [ { "node": "Put some AI treatment here if you need it", "type": "main", "index": 0 } ] ] }, "Search in \"Keep\" folder": { "main": [ [ { "node": "Loop every 10 items", "type": "main", "index": 0 } ] ] }, "Set the fields for export": { "main": [ [ { "node": "Add to google sheet", "type": "main", "index": 0 } ] ] }, "When clicking ‘Test workflow’": { "main": [ [ { "node": "Search in \"Keep\" folder", "type": "main", "index": 0 } ] ] }, "Put some AI treatment here if you need it": { "main": [ [ { "node": "Set the fields for export", "type": "main", "index": 0 } ] ] } } }