update workflows
This commit is contained in:
16
credential_stubs/QrDR9b0GKJWk2woe.json
Normal file
16
credential_stubs/QrDR9b0GKJWk2woe.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"id": "QrDR9b0GKJWk2woe",
|
||||||
|
"name": "b3nw@outlook.com",
|
||||||
|
"type": "microsoftOutlookOAuth2Api",
|
||||||
|
"data": {
|
||||||
|
"clientId": "",
|
||||||
|
"clientSecret": ""
|
||||||
|
},
|
||||||
|
"ownedBy": {
|
||||||
|
"type": "personal",
|
||||||
|
"projectId": "FeLO36wNUAcn61Wj",
|
||||||
|
"projectName": "Ben W <admin@ben.io>",
|
||||||
|
"personalEmail": "admin@ben.io"
|
||||||
|
},
|
||||||
|
"isGlobal": false
|
||||||
|
}
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
{
|
{
|
||||||
"id": "9UFJNgYndzFIHJAf",
|
"id": "Qtd00hn8bJt3xzhU",
|
||||||
"name": "Nano-GPT",
|
"name": "Qdrant Local",
|
||||||
"type": "openAiApi",
|
"type": "qdrantApi",
|
||||||
"data": {
|
"data": {
|
||||||
"apiKey": "",
|
"qdrantUrl": ""
|
||||||
"url": ""
|
|
||||||
},
|
},
|
||||||
"ownedBy": {
|
"ownedBy": {
|
||||||
"type": "personal",
|
"type": "personal",
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "TE5lVqfBn06ypxIU",
|
|
||||||
"name": "cerebras.ai",
|
|
||||||
"type": "openAiApi",
|
|
||||||
"data": {
|
|
||||||
"apiKey": "",
|
|
||||||
"url": ""
|
|
||||||
},
|
|
||||||
"ownedBy": {
|
|
||||||
"type": "personal",
|
|
||||||
"projectId": "FeLO36wNUAcn61Wj",
|
|
||||||
"projectName": "Ben W <admin@ben.io>",
|
|
||||||
"personalEmail": "admin@ben.io"
|
|
||||||
},
|
|
||||||
"isGlobal": false
|
|
||||||
}
|
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"id": "SItxcw7hDLHB7DYY",
|
"id": "UDrpaip2ru9PZoaJ",
|
||||||
"name": "Chutes AI",
|
"name": "rizon-gmail",
|
||||||
"type": "openAiApi",
|
"type": "gmailOAuth2",
|
||||||
"data": {
|
"data": {
|
||||||
"apiKey": "",
|
"clientId": "",
|
||||||
"url": ""
|
"clientSecret": ""
|
||||||
},
|
},
|
||||||
"ownedBy": {
|
"ownedBy": {
|
||||||
"type": "personal",
|
"type": "personal",
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"id": "QRBx9RMx4KoFwGgl",
|
"id": "sd09ohUHtJi2kPmv",
|
||||||
"name": "Nvidia account",
|
"name": "GitHub - b3nw",
|
||||||
"type": "openAiApi",
|
"type": "githubApi",
|
||||||
"data": {
|
"data": {
|
||||||
"apiKey": "",
|
"user": "",
|
||||||
"url": ""
|
"accessToken": ""
|
||||||
},
|
},
|
||||||
"ownedBy": {
|
"ownedBy": {
|
||||||
"type": "personal",
|
"type": "personal",
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"id": "sxSUdecXdMfKPuTu",
|
"id": "sxSUdecXdMfKPuTu",
|
||||||
"name": "llm-proxy.ben.io",
|
"name": "llm-proxy.ext.ben.io",
|
||||||
"type": "openAiApi",
|
"type": "openAiApi",
|
||||||
"data": {
|
"data": {
|
||||||
"apiKey": "",
|
"apiKey": "",
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
{
|
{
|
||||||
"id": "7dAOuF30uXa32ly3",
|
"id": "uT2JnQiHHw0pJIo2",
|
||||||
"name": "ollama local",
|
"name": "Mistral Cloud account",
|
||||||
"type": "openAiApi",
|
"type": "mistralCloudApi",
|
||||||
"data": {
|
"data": {
|
||||||
"apiKey": "",
|
"apiKey": ""
|
||||||
"url": ""
|
|
||||||
},
|
},
|
||||||
"ownedBy": {
|
"ownedBy": {
|
||||||
"type": "personal",
|
"type": "personal",
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "uYjjcswcBGrqXgpk",
|
|
||||||
"name": "openrouter",
|
|
||||||
"type": "openAiApi",
|
|
||||||
"data": {
|
|
||||||
"apiKey": "",
|
|
||||||
"url": "",
|
|
||||||
"header": true,
|
|
||||||
"headerName": "",
|
|
||||||
"headerValue": ""
|
|
||||||
},
|
|
||||||
"ownedBy": {
|
|
||||||
"type": "personal",
|
|
||||||
"projectId": "FeLO36wNUAcn61Wj",
|
|
||||||
"projectName": "Ben W <admin@ben.io>",
|
|
||||||
"personalEmail": "admin@ben.io"
|
|
||||||
},
|
|
||||||
"isGlobal": false
|
|
||||||
}
|
|
||||||
@@ -55,6 +55,14 @@
|
|||||||
"homeProjectId": "FeLO36wNUAcn61Wj",
|
"homeProjectId": "FeLO36wNUAcn61Wj",
|
||||||
"createdAt": "2025-12-21T15:55:27.361Z",
|
"createdAt": "2025-12-21T15:55:27.361Z",
|
||||||
"updatedAt": "2025-12-21T15:55:27.361Z"
|
"updatedAt": "2025-12-21T15:55:27.361Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "caxOx4NfY2vHcoNv",
|
||||||
|
"name": "Rizon",
|
||||||
|
"parentFolderId": null,
|
||||||
|
"homeProjectId": "FeLO36wNUAcn61Wj",
|
||||||
|
"createdAt": "2026-01-28T14:10:15.298Z",
|
||||||
|
"updatedAt": "2026-01-28T14:10:15.298Z"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
24
tags.json
24
tags.json
@@ -42,10 +42,6 @@
|
|||||||
"workflowId": "7kAZyLHOpYKg4riN",
|
"workflowId": "7kAZyLHOpYKg4riN",
|
||||||
"tagId": "ct0Rtzpu15B497av"
|
"tagId": "ct0Rtzpu15B497av"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"workflowId": "cPWZKfrHOUSUZjIp",
|
|
||||||
"tagId": "FydpKYmttDwoZVAA"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"workflowId": "Z_YHsJaf_pyFQR6e7VuLo",
|
"workflowId": "Z_YHsJaf_pyFQR6e7VuLo",
|
||||||
"tagId": "zrmVqhwdDmkuhhaQ"
|
"tagId": "zrmVqhwdDmkuhhaQ"
|
||||||
@@ -62,10 +58,6 @@
|
|||||||
"workflowId": "J3uKCCbSuQ1fdJkC",
|
"workflowId": "J3uKCCbSuQ1fdJkC",
|
||||||
"tagId": "FydpKYmttDwoZVAA"
|
"tagId": "FydpKYmttDwoZVAA"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"workflowId": "WkAdUd9jXTtPagGO",
|
|
||||||
"tagId": "FydpKYmttDwoZVAA"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"workflowId": "6S41oPplwN1S9Lz0",
|
"workflowId": "6S41oPplwN1S9Lz0",
|
||||||
"tagId": "FydpKYmttDwoZVAA"
|
"tagId": "FydpKYmttDwoZVAA"
|
||||||
@@ -74,6 +66,18 @@
|
|||||||
"workflowId": "NChjOd3ILEmt0FdyAt8qA",
|
"workflowId": "NChjOd3ILEmt0FdyAt8qA",
|
||||||
"tagId": "FydpKYmttDwoZVAA"
|
"tagId": "FydpKYmttDwoZVAA"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"workflowId": "kRZyX9H2uDHHncpE",
|
||||||
|
"tagId": "FydpKYmttDwoZVAA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"workflowId": "WkAdUd9jXTtPagGO",
|
||||||
|
"tagId": "FydpKYmttDwoZVAA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"workflowId": "cPWZKfrHOUSUZjIp",
|
||||||
|
"tagId": "FydpKYmttDwoZVAA"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"workflowId": "xXUnt2hL2FKxzOhBnkd3Z",
|
"workflowId": "xXUnt2hL2FKxzOhBnkd3Z",
|
||||||
"tagId": "FydpKYmttDwoZVAA"
|
"tagId": "FydpKYmttDwoZVAA"
|
||||||
@@ -81,10 +85,6 @@
|
|||||||
{
|
{
|
||||||
"workflowId": "xXUnt2hL2FKxzOhBnkd3Z",
|
"workflowId": "xXUnt2hL2FKxzOhBnkd3Z",
|
||||||
"tagId": "ct0Rtzpu15B497av"
|
"tagId": "ct0Rtzpu15B497av"
|
||||||
},
|
|
||||||
{
|
|
||||||
"workflowId": "kRZyX9H2uDHHncpE",
|
|
||||||
"tagId": "FydpKYmttDwoZVAA"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
769
workflows/-VWKaOsZlm3sb4OnTw7du.json
Normal file
769
workflows/-VWKaOsZlm3sb4OnTw7du.json
Normal file
@@ -0,0 +1,769 @@
|
|||||||
|
{
|
||||||
|
"id": "-VWKaOsZlm3sb4OnTw7du",
|
||||||
|
"name": "Mail Filtering",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"rule": {
|
||||||
|
"interval": [
|
||||||
|
{
|
||||||
|
"field": "minutes",
|
||||||
|
"minutesInterval": 15
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.scheduleTrigger",
|
||||||
|
"typeVersion": 1.3,
|
||||||
|
"position": [
|
||||||
|
-720,
|
||||||
|
312
|
||||||
|
],
|
||||||
|
"id": "72afcdf5-3f41-42df-944e-116b3aa5149e",
|
||||||
|
"name": "Schedule Trigger"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"operation": "getAll",
|
||||||
|
"output": "fields",
|
||||||
|
"fields": [
|
||||||
|
"flag",
|
||||||
|
"from",
|
||||||
|
"importance",
|
||||||
|
"replyTo",
|
||||||
|
"sender",
|
||||||
|
"subject",
|
||||||
|
"toRecipients",
|
||||||
|
"body",
|
||||||
|
"categories",
|
||||||
|
"isRead"
|
||||||
|
],
|
||||||
|
"filtersUI": {
|
||||||
|
"values": {
|
||||||
|
"filters": {
|
||||||
|
"foldersToInclude": [
|
||||||
|
"AQMkADAwATMwMAItOGQ1OS0yNWYxLTAwAi0wMAoALgAAA4foSHqzPq5LgyYr5fyXfDwBAMOp3uJuhWlAqL91oN-mo00AAAIBDAAAAA=="
|
||||||
|
],
|
||||||
|
"readStatus": "unread"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"options": {}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.microsoftOutlook",
|
||||||
|
"typeVersion": 2,
|
||||||
|
"position": [
|
||||||
|
-496,
|
||||||
|
320
|
||||||
|
],
|
||||||
|
"id": "70ea01a0-6c6a-4600-8892-53dea755bfe9",
|
||||||
|
"name": "Get many messages",
|
||||||
|
"webhookId": "f456d648-ebe8-4842-845a-f4e63f087ce2",
|
||||||
|
"credentials": {
|
||||||
|
"microsoftOutlookOAuth2Api": {
|
||||||
|
"id": "QrDR9b0GKJWk2woe",
|
||||||
|
"name": "b3nw@outlook.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"conditions": {
|
||||||
|
"options": {
|
||||||
|
"caseSensitive": true,
|
||||||
|
"leftValue": "",
|
||||||
|
"typeValidation": "strict",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"id": "e9fa4b1b-b120-4661-81bb-9356a02135fe",
|
||||||
|
"leftValue": "={{ $json.categories }}",
|
||||||
|
"rightValue": "",
|
||||||
|
"operator": {
|
||||||
|
"type": "array",
|
||||||
|
"operation": "empty",
|
||||||
|
"singleValue": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"combinator": "and"
|
||||||
|
},
|
||||||
|
"options": {}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.filter",
|
||||||
|
"typeVersion": 2.3,
|
||||||
|
"position": [
|
||||||
|
-272,
|
||||||
|
312
|
||||||
|
],
|
||||||
|
"id": "adf2f862-7fa2-42c4-84cc-01f2bb130b5c",
|
||||||
|
"name": "Filter"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"options": {}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.splitInBatches",
|
||||||
|
"typeVersion": 3,
|
||||||
|
"position": [
|
||||||
|
-48,
|
||||||
|
312
|
||||||
|
],
|
||||||
|
"id": "9649fa03-18d3-4c1f-8004-fe88223bc6f7",
|
||||||
|
"name": "Loop Over Items"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {},
|
||||||
|
"type": "n8n-nodes-base.noOp",
|
||||||
|
"name": "Replace Me",
|
||||||
|
"typeVersion": 1,
|
||||||
|
"position": [
|
||||||
|
1200,
|
||||||
|
-52
|
||||||
|
],
|
||||||
|
"id": "c1114ad0-3434-427b-82c6-21693037278c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"html": "={{ $('Loop Over Items').item.json.body.content }}",
|
||||||
|
"options": {}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.markdown",
|
||||||
|
"typeVersion": 1,
|
||||||
|
"position": [
|
||||||
|
176,
|
||||||
|
-48
|
||||||
|
],
|
||||||
|
"id": "43eaa2ff-8b3f-48d9-a707-9894a8a60e8f",
|
||||||
|
"name": "Markdown"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"assignments": {
|
||||||
|
"assignments": [
|
||||||
|
{
|
||||||
|
"id": "e47ef059-004e-4271-ba5d-5feef5a657ea",
|
||||||
|
"name": "subject",
|
||||||
|
"value": "={{ $json.subject }}",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8496c9f2-99c8-4434-9dda-baec131b36ab",
|
||||||
|
"name": "importance",
|
||||||
|
"value": "={{ $json.importance }}",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "739290db-6b7d-4eff-bdf4-4942befb9a30",
|
||||||
|
"name": "from",
|
||||||
|
"value": "={{ $json.sender.emailAddress }}",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d24a9321-6006-401d-96b4-0513368f7df7",
|
||||||
|
"name": "sender",
|
||||||
|
"value": "={{ $json.from.emailAddress }}",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "76379c26-25e6-4088-b631-c7cf48489837",
|
||||||
|
"name": "body",
|
||||||
|
"value": "={{ $json.data .replace(/<[^>]*>/g, '') // Remove HTML tags .replace(/\\[(.*?)\\]\\((.*?)\\)/g, '') // Remove Markdown links like [text](link) .replace(/!\\[.*?\\]\\(.*?\\)/g, '') // Remove Markdown images like  .replace(/\\|/g, '') // Remove table separators \"|\" .replace(/-{3,}/g, '') // Remove horizontal rule \"---\" .replace(/\\n+/g, ' ') // Remove multiple newlines .replace(/([^\\w\\s.,!?@])/g, '') // Remove special characters except essential ones .replace(/\\s{2,}/g, ' ') // Replace multiple spaces with a single space .trim() // Trim leading/trailing whitespace }}",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2a39ff4c-bc61-4da0-b1cd-5c5a85ce824e",
|
||||||
|
"name": "id",
|
||||||
|
"value": "={{ $json.id }}",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"options": {}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.set",
|
||||||
|
"typeVersion": 3.4,
|
||||||
|
"position": [
|
||||||
|
400,
|
||||||
|
-48
|
||||||
|
],
|
||||||
|
"id": "417ccbbb-b21d-430d-9bfc-121e78d166d3",
|
||||||
|
"name": "var mapping"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"inputText": "={{ $json.body }}",
|
||||||
|
"categories": {
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"category": "Childcare & School",
|
||||||
|
"description": "Identify all correspondence from Tadpoles or Stepping Stone School, specifically including \"Daily Reports,\" \"Snapshots,\" and teacher notes for August (Gus) and Quinn. This also includes enrichment programs like Soccer Shots or Techie Kids Club"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Home & Maintenance",
|
||||||
|
"description": "Capture emails from PreFix regarding \"Home Maintenance,\" \"HomeHub\" logins, or service requests like \"Assemble Playscape\". Include utility-related alerts from the City of Austin and neighborhood-specific items like \"1415 Dwyce\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Finance & Accounts",
|
||||||
|
"description": "Filter for documents related to HealthEquity (HSA contributions or investment activity), Schwab brokerage accounts, and employee benefits or leave processing from Sedgwick. Include tax documents and insurance updates."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Travel & Reservations",
|
||||||
|
"description": "Focus on airline communications, specifically American Airlines AAdvantage updates regarding \"mileage expiration\" or flight bookings. This should also cover hotel, rental car, and trip itinerary confirmations."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Health & Wellness",
|
||||||
|
"description": "Identify appointment reminders and \"Action Requested\" notifications from Form Health or Pediatric Associates of Austin. Include any correspondence related to care team updates or medical follow-ups."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Community & Religious",
|
||||||
|
"description": "Select emails related to local community organizations or religious centers, such as \"Welcome to Temple Beth Shalom\" or correspondence involving Mallory and Rachel Walter regarding local events"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Shopping & Rewards",
|
||||||
|
"description": "Organize order confirmations, \"Autoship\" reminders from Chewy, and promotional updates from retailers like Chipotle. This includes tracking notifications from USPS Informed Delivery"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Tech & Support",
|
||||||
|
"description": "Capture automated security alerts from the Microsoft account team (e.g., \"New app(s) connected\"), system status updates, and professional tool notifications from platforms like n8n or Atlassian."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"multiClass": true,
|
||||||
|
"systemPromptTemplate": "Please classify the text provided by the user into one of the following categories: {categories}, and use the provided formatting instructions below. Don't explain, and only output the json."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.textClassifier",
|
||||||
|
"typeVersion": 1.1,
|
||||||
|
"position": [
|
||||||
|
624,
|
||||||
|
-48
|
||||||
|
],
|
||||||
|
"id": "5399726f-2bb8-45bc-838c-4c8472ec29e6",
|
||||||
|
"name": "Text Classifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"model": {
|
||||||
|
"__rl": true,
|
||||||
|
"value": "antigravity/gemini-2.5-flash-lite",
|
||||||
|
"mode": "list",
|
||||||
|
"cachedResultName": "antigravity/gemini-2.5-flash-lite"
|
||||||
|
},
|
||||||
|
"responsesApiEnabled": false,
|
||||||
|
"options": {
|
||||||
|
"responseFormat": "json_object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
|
||||||
|
"typeVersion": 1.3,
|
||||||
|
"position": [
|
||||||
|
624,
|
||||||
|
336
|
||||||
|
],
|
||||||
|
"id": "427926f3-ff5f-449d-800f-d28aa557a8d8",
|
||||||
|
"name": "OpenAI Chat Model",
|
||||||
|
"credentials": {
|
||||||
|
"openAiApi": {
|
||||||
|
"id": "sxSUdecXdMfKPuTu",
|
||||||
|
"name": "llm-proxy.ben.io"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"operation": "update",
|
||||||
|
"messageId": {
|
||||||
|
"__rl": true,
|
||||||
|
"value": "={{ $json.id }}",
|
||||||
|
"mode": "id"
|
||||||
|
},
|
||||||
|
"updateFields": {
|
||||||
|
"categories": [
|
||||||
|
"Tech & Support"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.microsoftOutlook",
|
||||||
|
"typeVersion": 2,
|
||||||
|
"position": [
|
||||||
|
976,
|
||||||
|
432
|
||||||
|
],
|
||||||
|
"id": "fb6afde8-ee15-4fec-8fb9-54573e7585a9",
|
||||||
|
"name": "Update - Tech",
|
||||||
|
"webhookId": "58b45295-0db5-4e67-a437-9ba8ede35c13",
|
||||||
|
"credentials": {
|
||||||
|
"microsoftOutlookOAuth2Api": {
|
||||||
|
"id": "QrDR9b0GKJWk2woe",
|
||||||
|
"name": "b3nw@outlook.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"operation": "update",
|
||||||
|
"messageId": {
|
||||||
|
"__rl": true,
|
||||||
|
"value": "={{ $json.id }}",
|
||||||
|
"mode": "id"
|
||||||
|
},
|
||||||
|
"updateFields": {
|
||||||
|
"categories": [
|
||||||
|
"Shopping & Rewards"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.microsoftOutlook",
|
||||||
|
"typeVersion": 2,
|
||||||
|
"position": [
|
||||||
|
976,
|
||||||
|
240
|
||||||
|
],
|
||||||
|
"id": "bab657d3-f297-461d-af84-5ecaa4f29773",
|
||||||
|
"name": "Update - Shopping",
|
||||||
|
"webhookId": "58b45295-0db5-4e67-a437-9ba8ede35c13",
|
||||||
|
"credentials": {
|
||||||
|
"microsoftOutlookOAuth2Api": {
|
||||||
|
"id": "QrDR9b0GKJWk2woe",
|
||||||
|
"name": "b3nw@outlook.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"operation": "update",
|
||||||
|
"messageId": {
|
||||||
|
"__rl": true,
|
||||||
|
"value": "={{ $json.id }}",
|
||||||
|
"mode": "id"
|
||||||
|
},
|
||||||
|
"updateFields": {
|
||||||
|
"categories": [
|
||||||
|
"Community & Religious"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.microsoftOutlook",
|
||||||
|
"typeVersion": 2,
|
||||||
|
"position": [
|
||||||
|
976,
|
||||||
|
48
|
||||||
|
],
|
||||||
|
"id": "199143aa-46fd-40a1-b3a1-a864430dd194",
|
||||||
|
"name": "Update - Community",
|
||||||
|
"webhookId": "58b45295-0db5-4e67-a437-9ba8ede35c13",
|
||||||
|
"credentials": {
|
||||||
|
"microsoftOutlookOAuth2Api": {
|
||||||
|
"id": "QrDR9b0GKJWk2woe",
|
||||||
|
"name": "b3nw@outlook.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"operation": "update",
|
||||||
|
"messageId": {
|
||||||
|
"__rl": true,
|
||||||
|
"value": "={{ $json.id }}",
|
||||||
|
"mode": "id"
|
||||||
|
},
|
||||||
|
"updateFields": {
|
||||||
|
"categories": [
|
||||||
|
"Health & Wellness"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.microsoftOutlook",
|
||||||
|
"typeVersion": 2,
|
||||||
|
"position": [
|
||||||
|
976,
|
||||||
|
624
|
||||||
|
],
|
||||||
|
"id": "7a37c92e-9d95-4439-819f-ed3e5047e720",
|
||||||
|
"name": "Update - Health",
|
||||||
|
"webhookId": "58b45295-0db5-4e67-a437-9ba8ede35c13",
|
||||||
|
"credentials": {
|
||||||
|
"microsoftOutlookOAuth2Api": {
|
||||||
|
"id": "QrDR9b0GKJWk2woe",
|
||||||
|
"name": "b3nw@outlook.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"operation": "update",
|
||||||
|
"messageId": {
|
||||||
|
"__rl": true,
|
||||||
|
"value": "={{ $json.id }}",
|
||||||
|
"mode": "id"
|
||||||
|
},
|
||||||
|
"updateFields": {
|
||||||
|
"categories": [
|
||||||
|
"Travel & Reservations"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.microsoftOutlook",
|
||||||
|
"typeVersion": 2,
|
||||||
|
"position": [
|
||||||
|
976,
|
||||||
|
-144
|
||||||
|
],
|
||||||
|
"id": "0973245d-91cc-4c85-b451-ca94cf076488",
|
||||||
|
"name": "Update - Travel",
|
||||||
|
"webhookId": "58b45295-0db5-4e67-a437-9ba8ede35c13",
|
||||||
|
"credentials": {
|
||||||
|
"microsoftOutlookOAuth2Api": {
|
||||||
|
"id": "QrDR9b0GKJWk2woe",
|
||||||
|
"name": "b3nw@outlook.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"operation": "update",
|
||||||
|
"messageId": {
|
||||||
|
"__rl": true,
|
||||||
|
"value": "={{ $json.id }}",
|
||||||
|
"mode": "id"
|
||||||
|
},
|
||||||
|
"updateFields": {
|
||||||
|
"categories": [
|
||||||
|
"Finance & Accounts"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.microsoftOutlook",
|
||||||
|
"typeVersion": 2,
|
||||||
|
"position": [
|
||||||
|
976,
|
||||||
|
-336
|
||||||
|
],
|
||||||
|
"id": "10b8fbc6-37e0-4a62-9fb6-bddeac773532",
|
||||||
|
"name": "Update - Finance",
|
||||||
|
"webhookId": "58b45295-0db5-4e67-a437-9ba8ede35c13",
|
||||||
|
"credentials": {
|
||||||
|
"microsoftOutlookOAuth2Api": {
|
||||||
|
"id": "QrDR9b0GKJWk2woe",
|
||||||
|
"name": "b3nw@outlook.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"operation": "update",
|
||||||
|
"messageId": {
|
||||||
|
"__rl": true,
|
||||||
|
"value": "={{ $json.id }}",
|
||||||
|
"mode": "id"
|
||||||
|
},
|
||||||
|
"updateFields": {
|
||||||
|
"categories": [
|
||||||
|
"Finance & Accounts"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.microsoftOutlook",
|
||||||
|
"typeVersion": 2,
|
||||||
|
"position": [
|
||||||
|
976,
|
||||||
|
-528
|
||||||
|
],
|
||||||
|
"id": "173fdbb7-5be2-4915-b194-5ee6fd2bbaef",
|
||||||
|
"name": "Update - Home",
|
||||||
|
"webhookId": "58b45295-0db5-4e67-a437-9ba8ede35c13",
|
||||||
|
"credentials": {
|
||||||
|
"microsoftOutlookOAuth2Api": {
|
||||||
|
"id": "QrDR9b0GKJWk2woe",
|
||||||
|
"name": "b3nw@outlook.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"operation": "update",
|
||||||
|
"messageId": {
|
||||||
|
"__rl": true,
|
||||||
|
"value": "={{ $json.id }}",
|
||||||
|
"mode": "id"
|
||||||
|
},
|
||||||
|
"updateFields": {
|
||||||
|
"categories": [
|
||||||
|
"Finance & Accounts"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.microsoftOutlook",
|
||||||
|
"typeVersion": 2,
|
||||||
|
"position": [
|
||||||
|
976,
|
||||||
|
-720
|
||||||
|
],
|
||||||
|
"id": "74d245b0-eecd-4622-8670-d79beba32a12",
|
||||||
|
"name": "Update - Childcare",
|
||||||
|
"webhookId": "58b45295-0db5-4e67-a437-9ba8ede35c13",
|
||||||
|
"credentials": {
|
||||||
|
"microsoftOutlookOAuth2Api": {
|
||||||
|
"id": "QrDR9b0GKJWk2woe",
|
||||||
|
"name": "b3nw@outlook.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"connections": {
|
||||||
|
"Schedule Trigger": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Get many messages",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Get many messages": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Filter",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Filter": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Loop Over Items",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Loop Over Items": {
|
||||||
|
"main": [
|
||||||
|
[],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Markdown",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Replace Me": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Loop Over Items",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Markdown": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "var mapping",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"var mapping": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Text Classifier",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"OpenAI Chat Model": {
|
||||||
|
"ai_languageModel": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Text Classifier",
|
||||||
|
"type": "ai_languageModel",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Text Classifier": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Update - Childcare",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Update - Home",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Update - Finance",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Update - Travel",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Update - Health",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Update - Community",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Update - Shopping",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Update - Tech",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Update - Health": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Replace Me",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Update - Tech": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Replace Me",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Update - Shopping": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Replace Me",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Update - Community": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Replace Me",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Update - Travel": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Replace Me",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Update - Finance": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Replace Me",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Update - Home": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Replace Me",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Update - Childcare": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Replace Me",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"executionOrder": "v1",
|
||||||
|
"availableInMCP": false
|
||||||
|
},
|
||||||
|
"triggerCount": 0,
|
||||||
|
"versionId": "40fb01ad-0fbe-4397-b50f-88d0acca709c",
|
||||||
|
"owner": {
|
||||||
|
"type": "personal",
|
||||||
|
"projectId": "FeLO36wNUAcn61Wj",
|
||||||
|
"projectName": "Ben W <admin@ben.io>",
|
||||||
|
"personalEmail": "admin@ben.io"
|
||||||
|
},
|
||||||
|
"parentFolderId": "OJ2UfPNUOAOHlllh",
|
||||||
|
"isArchived": false
|
||||||
|
}
|
||||||
566
workflows/21kEHGQ_E07Uq7irNExUD.json
Normal file
566
workflows/21kEHGQ_E07Uq7irNExUD.json
Normal file
@@ -0,0 +1,566 @@
|
|||||||
|
{
|
||||||
|
"id": "21kEHGQ_E07Uq7irNExUD",
|
||||||
|
"name": "Email Review",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"pollTimes": {
|
||||||
|
"item": [
|
||||||
|
{
|
||||||
|
"mode": "everyHour"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"filters": {
|
||||||
|
"readStatus": "unread"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.gmailTrigger",
|
||||||
|
"typeVersion": 1.3,
|
||||||
|
"position": [
|
||||||
|
-640,
|
||||||
|
-208
|
||||||
|
],
|
||||||
|
"id": "f83c959d-3d77-4a81-983f-e0c960945209",
|
||||||
|
"name": "Gmail Trigger",
|
||||||
|
"credentials": {
|
||||||
|
"gmailOAuth2": {
|
||||||
|
"id": "UDrpaip2ru9PZoaJ",
|
||||||
|
"name": "rizon-gmail"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"rules": {
|
||||||
|
"values": [
|
||||||
|
{
|
||||||
|
"conditions": {
|
||||||
|
"options": {
|
||||||
|
"caseSensitive": true,
|
||||||
|
"leftValue": "",
|
||||||
|
"typeValidation": "strict",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"leftValue": "={{ $json.To }}",
|
||||||
|
"rightValue": "kline@rizon.net",
|
||||||
|
"operator": {
|
||||||
|
"type": "string",
|
||||||
|
"operation": "equals"
|
||||||
|
},
|
||||||
|
"id": "0ae6c938-bc7e-4d81-a117-7752355ad4a7"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"combinator": "and"
|
||||||
|
},
|
||||||
|
"renameOutput": true,
|
||||||
|
"outputKey": "kline@rizon.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"conditions": {
|
||||||
|
"options": {
|
||||||
|
"caseSensitive": true,
|
||||||
|
"leftValue": "",
|
||||||
|
"typeValidation": "strict",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"id": "bb4620f5-6d35-4ce0-819e-bae2e04904eb",
|
||||||
|
"leftValue": "={{ $json.To }}",
|
||||||
|
"rightValue": "rizon@list.shadowserver.org",
|
||||||
|
"operator": {
|
||||||
|
"type": "string",
|
||||||
|
"operation": "equals"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"combinator": "and"
|
||||||
|
},
|
||||||
|
"renameOutput": true,
|
||||||
|
"outputKey": "shadowserver@rizon.net"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"allMatchingOutputs": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.switch",
|
||||||
|
"typeVersion": 3.4,
|
||||||
|
"position": [
|
||||||
|
-320,
|
||||||
|
-96
|
||||||
|
],
|
||||||
|
"id": "e0376f85-0771-49a2-83a0-2729157eff30",
|
||||||
|
"name": "Route"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"method": "=GET",
|
||||||
|
"url": "={{ $json.report_url }}",
|
||||||
|
"options": {
|
||||||
|
"response": {
|
||||||
|
"response": {
|
||||||
|
"responseFormat": "file",
|
||||||
|
"outputPropertyName": "csv"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.httpRequest",
|
||||||
|
"typeVersion": 4.3,
|
||||||
|
"position": [
|
||||||
|
96,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"id": "4e9f294b-5d5f-4fd0-965b-3f30c546de94",
|
||||||
|
"name": "Report Download"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"assignments": {
|
||||||
|
"assignments": [
|
||||||
|
{
|
||||||
|
"id": "d9b5b017-4602-4622-9207-bf5063b7f148",
|
||||||
|
"name": "=report_url",
|
||||||
|
"value": "={{ $json.snippet.match(/https:\\/\\/[^\\s]+/)[0] }}",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"includeOtherFields": true,
|
||||||
|
"options": {}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.set",
|
||||||
|
"typeVersion": 3.4,
|
||||||
|
"position": [
|
||||||
|
-112,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"id": "703f00f1-c533-4793-b6b9-59c45982f682",
|
||||||
|
"name": "Parse Report URL"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"operation": "html",
|
||||||
|
"binaryPropertyName": "csv",
|
||||||
|
"options": {
|
||||||
|
"headerRow": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.extractFromFile",
|
||||||
|
"typeVersion": 1.1,
|
||||||
|
"position": [
|
||||||
|
304,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"id": "5a99cb18-40b6-4f5f-bb50-659f4a1c7240",
|
||||||
|
"name": "Extract from File"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"operation": "upsert",
|
||||||
|
"schema": {
|
||||||
|
"__rl": true,
|
||||||
|
"mode": "list",
|
||||||
|
"value": "public"
|
||||||
|
},
|
||||||
|
"table": {
|
||||||
|
"__rl": true,
|
||||||
|
"value": "shadowserver_rizon",
|
||||||
|
"mode": "list",
|
||||||
|
"cachedResultName": "shadowserver_rizon"
|
||||||
|
},
|
||||||
|
"columns": {
|
||||||
|
"mappingMode": "defineBelow",
|
||||||
|
"value": {
|
||||||
|
"report_timestamp": "={{ $json.timestamp }}",
|
||||||
|
"port": "={{ $json.port }}",
|
||||||
|
"asn": "={{ $json.asn }}",
|
||||||
|
"naics": "={{ $json.naics }}",
|
||||||
|
"tag": "={{ $json.tag }}",
|
||||||
|
"ip": "={{ $json.ip }}",
|
||||||
|
"last_seen_at": "={{ $now }}",
|
||||||
|
"hostname_source": "={{ $json.hostname_source }}",
|
||||||
|
"hostname": "={{ $json.hostname }}",
|
||||||
|
"device_vendor": "={{ $json.device_vendor }}",
|
||||||
|
"device_type": "={{ $json.device_type }}",
|
||||||
|
"device_model": "={{ $json.device_model }}",
|
||||||
|
"device_version": "={{ $json.device_version }}",
|
||||||
|
"sector": "={{ $json.sector }}",
|
||||||
|
"city": "={{ $json.city }}",
|
||||||
|
"region": "={{ $json.region }}",
|
||||||
|
"geo": "={{ $json.geo }}",
|
||||||
|
"protocol": "={{ $json.protocol }}",
|
||||||
|
"severity": "={{ $json.severity }}",
|
||||||
|
"human_timestamp": "={{ DateTime.fromMillis(($json.timestamp - 25569) * 86400 * 1000).toISO() }}"
|
||||||
|
},
|
||||||
|
"matchingColumns": [
|
||||||
|
"port",
|
||||||
|
"ip",
|
||||||
|
"tag"
|
||||||
|
],
|
||||||
|
"schema": [
|
||||||
|
{
|
||||||
|
"id": "id",
|
||||||
|
"displayName": "id",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": true,
|
||||||
|
"display": true,
|
||||||
|
"type": "number",
|
||||||
|
"canBeUsedToMatch": true,
|
||||||
|
"removed": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "report_timestamp",
|
||||||
|
"displayName": "report_timestamp",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "number",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "human_timestamp",
|
||||||
|
"displayName": "human_timestamp",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "dateTime",
|
||||||
|
"canBeUsedToMatch": false,
|
||||||
|
"removed": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "severity",
|
||||||
|
"displayName": "severity",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ip",
|
||||||
|
"displayName": "ip",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": true,
|
||||||
|
"removed": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "protocol",
|
||||||
|
"displayName": "protocol",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "port",
|
||||||
|
"displayName": "port",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "number",
|
||||||
|
"canBeUsedToMatch": true,
|
||||||
|
"removed": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "tag",
|
||||||
|
"displayName": "tag",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": true,
|
||||||
|
"removed": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "asn",
|
||||||
|
"displayName": "asn",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "number",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "geo",
|
||||||
|
"displayName": "geo",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "region",
|
||||||
|
"displayName": "region",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "city",
|
||||||
|
"displayName": "city",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "naics",
|
||||||
|
"displayName": "naics",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "number",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "sector",
|
||||||
|
"displayName": "sector",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "device_vendor",
|
||||||
|
"displayName": "device_vendor",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "device_type",
|
||||||
|
"displayName": "device_type",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "device_model",
|
||||||
|
"displayName": "device_model",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "device_version",
|
||||||
|
"displayName": "device_version",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "hostname",
|
||||||
|
"displayName": "hostname",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "hostname_source",
|
||||||
|
"displayName": "hostname_source",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "created_at",
|
||||||
|
"displayName": "created_at",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "dateTime",
|
||||||
|
"canBeUsedToMatch": false,
|
||||||
|
"removed": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "last_seen_at",
|
||||||
|
"displayName": "last_seen_at",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "dateTime",
|
||||||
|
"canBeUsedToMatch": false,
|
||||||
|
"removed": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"attemptToConvertTypes": false,
|
||||||
|
"convertFieldsToString": false
|
||||||
|
},
|
||||||
|
"options": {}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.postgres",
|
||||||
|
"typeVersion": 2.6,
|
||||||
|
"position": [
|
||||||
|
528,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"id": "e56c9aa3-923d-4088-a502-d075e348461c",
|
||||||
|
"name": "Insert or update rows in a table",
|
||||||
|
"credentials": {
|
||||||
|
"postgres": {
|
||||||
|
"id": "Ik8CFyap8ic2Md3M",
|
||||||
|
"name": "n8n-infra"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"operation": "getAll",
|
||||||
|
"limit": 5,
|
||||||
|
"filters": {
|
||||||
|
"labelIds": [
|
||||||
|
"Label_734823692276842075"
|
||||||
|
],
|
||||||
|
"receivedAfter": "={{ $now.minus({ minutes: 300 }).toFormat('yyyy/MM/dd HH:mm:ss') }}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.gmail",
|
||||||
|
"typeVersion": 2.2,
|
||||||
|
"position": [
|
||||||
|
-640,
|
||||||
|
32
|
||||||
|
],
|
||||||
|
"id": "436506e9-2fca-4dac-9a57-e9cef92193b6",
|
||||||
|
"name": "Get many messages",
|
||||||
|
"webhookId": "4835dd9b-345a-4ef3-b5e6-524ec0d83e29",
|
||||||
|
"credentials": {
|
||||||
|
"gmailOAuth2": {
|
||||||
|
"id": "UDrpaip2ru9PZoaJ",
|
||||||
|
"name": "rizon-gmail"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {},
|
||||||
|
"type": "n8n-nodes-base.manualTrigger",
|
||||||
|
"typeVersion": 1,
|
||||||
|
"position": [
|
||||||
|
-848,
|
||||||
|
32
|
||||||
|
],
|
||||||
|
"id": "87718be7-f310-470b-acc2-918f9c146203",
|
||||||
|
"name": "When clicking ‘Execute workflow’"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"connections": {
|
||||||
|
"Gmail Trigger": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Route",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Route": {
|
||||||
|
"main": [
|
||||||
|
[],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Parse Report URL",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Parse Report URL": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Report Download",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Report Download": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Extract from File",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Extract from File": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Insert or update rows in a table",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Get many messages": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Route",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"When clicking ‘Execute workflow’": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Get many messages",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"executionOrder": "v1",
|
||||||
|
"availableInMCP": false
|
||||||
|
},
|
||||||
|
"triggerCount": 1,
|
||||||
|
"versionId": "5fb89ea8-06ae-4f75-a759-7d24018e255b",
|
||||||
|
"owner": {
|
||||||
|
"type": "personal",
|
||||||
|
"projectId": "FeLO36wNUAcn61Wj",
|
||||||
|
"projectName": "Ben W <admin@ben.io>",
|
||||||
|
"personalEmail": "admin@ben.io"
|
||||||
|
},
|
||||||
|
"parentFolderId": "caxOx4NfY2vHcoNv",
|
||||||
|
"isArchived": false
|
||||||
|
}
|
||||||
21
workflows/Pv-qCW0IA2IxNGm-fPXxh.json
Normal file
21
workflows/Pv-qCW0IA2IxNGm-fPXxh.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"id": "Pv-qCW0IA2IxNGm-fPXxh",
|
||||||
|
"name": "Github Notifications",
|
||||||
|
"nodes": [],
|
||||||
|
"connections": {},
|
||||||
|
"settings": {
|
||||||
|
"executionOrder": "v1",
|
||||||
|
"binaryMode": "separate",
|
||||||
|
"availableInMCP": false
|
||||||
|
},
|
||||||
|
"triggerCount": 0,
|
||||||
|
"versionId": "21d1b6ec-1622-426a-a06a-5e2e70d81513",
|
||||||
|
"owner": {
|
||||||
|
"type": "personal",
|
||||||
|
"projectId": "FeLO36wNUAcn61Wj",
|
||||||
|
"projectName": "Ben W <admin@ben.io>",
|
||||||
|
"personalEmail": "admin@ben.io"
|
||||||
|
},
|
||||||
|
"parentFolderId": "OJ2UfPNUOAOHlllh",
|
||||||
|
"isArchived": false
|
||||||
|
}
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
304
|
304
|
||||||
],
|
],
|
||||||
"id": "2f0708e1-996c-4705-b374-2a119fcd6b18",
|
"id": "2f0708e1-996c-4705-b374-2a119fcd6b18",
|
||||||
"name": "Get Active Followed Series1",
|
"name": "Get Active Followed Series",
|
||||||
"credentials": {
|
"credentials": {
|
||||||
"postgres": {
|
"postgres": {
|
||||||
"id": "dsnKfvOBMkgU21Lt",
|
"id": "dsnKfvOBMkgU21Lt",
|
||||||
@@ -86,7 +86,7 @@
|
|||||||
"main": [
|
"main": [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"node": "Get Active Followed Series1",
|
"node": "Get Active Followed Series",
|
||||||
"type": "main",
|
"type": "main",
|
||||||
"index": 0
|
"index": 0
|
||||||
}
|
}
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"Get Active Followed Series1": {
|
"Get Active Followed Series": {
|
||||||
"main": [
|
"main": [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
"saveExecutionProgress": true
|
"saveExecutionProgress": true
|
||||||
},
|
},
|
||||||
"triggerCount": 0,
|
"triggerCount": 0,
|
||||||
"versionId": "5d298782-fb60-4d33-9e38-97878b179d62",
|
"versionId": "34e2aea3-0a6e-41fd-b277-207bfd0f6804",
|
||||||
"owner": {
|
"owner": {
|
||||||
"type": "personal",
|
"type": "personal",
|
||||||
"projectId": "FeLO36wNUAcn61Wj",
|
"projectId": "FeLO36wNUAcn61Wj",
|
||||||
|
|||||||
@@ -123,7 +123,8 @@
|
|||||||
"series_name": "={{ $('Merge').item.json.output.series }}",
|
"series_name": "={{ $('Merge').item.json.output.series }}",
|
||||||
"audible_asin": "={{ $('Merge').item.json.output.asin }}",
|
"audible_asin": "={{ $('Merge').item.json.output.asin }}",
|
||||||
"failure_reason": "={{ $('Merge').item.json.output.failure_reason }}",
|
"failure_reason": "={{ $('Merge').item.json.output.failure_reason }}",
|
||||||
"category": "general"
|
"category": "general",
|
||||||
|
"followed_series_id": "={{ $('Call MAM Series Matcher').item.json.series_id }}"
|
||||||
},
|
},
|
||||||
"matchingColumns": [
|
"matchingColumns": [
|
||||||
"smb_path"
|
"smb_path"
|
||||||
@@ -265,6 +266,16 @@
|
|||||||
"display": true,
|
"display": true,
|
||||||
"type": "dateTime",
|
"type": "dateTime",
|
||||||
"canBeUsedToMatch": false
|
"canBeUsedToMatch": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "followed_series_id",
|
||||||
|
"displayName": "followed_series_id",
|
||||||
|
"required": false,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": false,
|
||||||
|
"removed": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"attemptToConvertTypes": false,
|
"attemptToConvertTypes": false,
|
||||||
@@ -860,9 +871,9 @@
|
|||||||
"parameters": {
|
"parameters": {
|
||||||
"model": {
|
"model": {
|
||||||
"__rl": true,
|
"__rl": true,
|
||||||
"value": "minimax/minimax-m2.1",
|
"value": "antigravity/gemini-3-flash",
|
||||||
"mode": "list",
|
"mode": "list",
|
||||||
"cachedResultName": "minimax/minimax-m2.1"
|
"cachedResultName": "antigravity/gemini-3-flash"
|
||||||
},
|
},
|
||||||
"responsesApiEnabled": false,
|
"responsesApiEnabled": false,
|
||||||
"options": {}
|
"options": {}
|
||||||
@@ -877,10 +888,40 @@
|
|||||||
"name": "OpenAI Chat Model",
|
"name": "OpenAI Chat Model",
|
||||||
"credentials": {
|
"credentials": {
|
||||||
"openAiApi": {
|
"openAiApi": {
|
||||||
"id": "9UFJNgYndzFIHJAf",
|
"id": "sxSUdecXdMfKPuTu",
|
||||||
"name": "Nano-GPT"
|
"name": "llm-proxy.ben.io"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"workflowId": {
|
||||||
|
"__rl": true,
|
||||||
|
"value": "WkAdUd9jXTtPagGO",
|
||||||
|
"mode": "list",
|
||||||
|
"cachedResultUrl": "/workflow/WkAdUd9jXTtPagGO",
|
||||||
|
"cachedResultName": "MAM Series Matcher"
|
||||||
|
},
|
||||||
|
"workflowInputs": {
|
||||||
|
"mappingMode": "defineBelow",
|
||||||
|
"value": {},
|
||||||
|
"matchingColumns": [],
|
||||||
|
"schema": [],
|
||||||
|
"attemptToConvertTypes": false,
|
||||||
|
"convertFieldsToString": true
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"waitForSubWorkflow": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.executeWorkflow",
|
||||||
|
"typeVersion": 1.3,
|
||||||
|
"position": [
|
||||||
|
2112,
|
||||||
|
352
|
||||||
|
],
|
||||||
|
"id": "5e966fb1-22e6-405c-b2cb-14cc7ae53cb1",
|
||||||
|
"name": "Call 'MAM Series Matcher'"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"connections": {
|
"connections": {
|
||||||
@@ -937,7 +978,7 @@
|
|||||||
"main": [
|
"main": [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"node": "Merge",
|
"node": "Call 'MAM Series Matcher'",
|
||||||
"type": "main",
|
"type": "main",
|
||||||
"index": 0
|
"index": 0
|
||||||
}
|
}
|
||||||
@@ -1199,6 +1240,17 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"Call 'MAM Series Matcher'": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Merge",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
@@ -1207,7 +1259,7 @@
|
|||||||
"availableInMCP": false
|
"availableInMCP": false
|
||||||
},
|
},
|
||||||
"triggerCount": 1,
|
"triggerCount": 1,
|
||||||
"versionId": "507140b0-a21b-428f-a230-906217819b6c",
|
"versionId": "7e06408b-8b2a-4d35-83fa-00ffadece2f8",
|
||||||
"owner": {
|
"owner": {
|
||||||
"type": "personal",
|
"type": "personal",
|
||||||
"projectId": "FeLO36wNUAcn61Wj",
|
"projectId": "FeLO36wNUAcn61Wj",
|
||||||
|
|||||||
236
workflows/kQIViyYKgY1d4E99.json
Normal file
236
workflows/kQIViyYKgY1d4E99.json
Normal file
@@ -0,0 +1,236 @@
|
|||||||
|
{
|
||||||
|
"id": "kQIViyYKgY1d4E99",
|
||||||
|
"name": "RizonHelp IRC Bot",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"path": "rizonhelp",
|
||||||
|
"responseMode": "lastNode",
|
||||||
|
"options": {}
|
||||||
|
},
|
||||||
|
"id": "webhook-trigger",
|
||||||
|
"name": "Webhook Trigger",
|
||||||
|
"position": [
|
||||||
|
-560,
|
||||||
|
208
|
||||||
|
],
|
||||||
|
"type": "n8n-nodes-base.webhook",
|
||||||
|
"typeVersion": 2,
|
||||||
|
"webhookId": "7c1b6e59-8b48-498c-b166-55127d0e298f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"jsCode": "// Format response for IRC - handle various QA Chain output formats\nconst input = $input.first().json;\n\n// Extract response text\nlet response = '';\nif (typeof input.response === 'string') {\n response = input.response;\n} else if (typeof input.text === 'string') {\n response = input.text;\n} else if (typeof input.output === 'string') {\n response = input.output;\n} else if (input.response && typeof input.response.text === 'string') {\n response = input.response.text;\n} else {\n response = JSON.stringify(input);\n}\n\nconst lowerResponse = response.toLowerCase();\n\n// REJECT patterns - common off-topic response indicators\nconst rejectPatterns = [\n '__ignore__',\n 'no_response',\n \"i don't know\",\n \"i do not know\",\n \"you're welcome\",\n \"is there anything else\",\n \"can i help you with\",\n \"what do you need help with\",\n \"how can i assist\",\n \"hello.\",\n \"hi there\",\n \"hi!\",\n \"hello!\",\n \"not in the context\",\n \"not related to\",\n \"no information about\",\n \"not mentioned\",\n \"outside the scope\",\n \"large language model\",\n \"llm\",\n \"artificial intelligence\",\n \"ai model\",\n \"i am an ai\",\n \"i'm an ai\",\n \"as an ai\",\n \"i am a bot\",\n \"i'm a bot\"\n];\n\n// REQUIRE patterns - valid responses MUST contain at least one of these\nconst requirePatterns = [\n '/msg',\n '/ns',\n '/cs',\n '/hs',\n '/bs',\n '/mode',\n '/join',\n '/part',\n '/kick',\n '/ban',\n '/topic',\n 'wiki.rizon.net',\n 'chanserv',\n 'nickserv',\n 'hostserv',\n 'memoserv',\n 'botserv',\n 'operserv'\n];\n\n// Check for rejection patterns\nconst hasRejectPattern = rejectPatterns.some(p => lowerResponse.includes(p));\n\n// Check for required patterns (valid IRC help content)\nconst hasRequiredPattern = requirePatterns.some(p => lowerResponse.includes(p));\n\n// Reject if: empty, has reject pattern, OR lacks any valid IRC content\nif (response.trim() === '' || hasRejectPattern || !hasRequiredPattern) {\n return { json: { response: '', wiki_url: null } };\n}\n\n// Extract wiki URL if mentioned\nlet wikiUrl = null;\nconst wikiMatch = response.match(/https:\\/\\/wiki\\.rizon\\.net\\S*/);\nif (wikiMatch) {\n wikiUrl = wikiMatch[0].replace(/[).,]$/, '');\n}\n\nreturn {\n json: {\n response: response.trim().replace(/\\n/g, ' '),\n wiki_url: wikiUrl\n }\n};"
|
||||||
|
},
|
||||||
|
"id": "response-formatter",
|
||||||
|
"name": "Response Formatter",
|
||||||
|
"position": [
|
||||||
|
160,
|
||||||
|
208
|
||||||
|
],
|
||||||
|
"type": "n8n-nodes-base.code",
|
||||||
|
"typeVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"model": {
|
||||||
|
"__rl": true,
|
||||||
|
"value": "nvidia_nim/moonshotai/kimi-k2.5",
|
||||||
|
"mode": "list",
|
||||||
|
"cachedResultName": "nvidia_nim/moonshotai/kimi-k2.5"
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"timeout": 30000
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"id": "55629594-7004-4807-94a8-c842558e5db9",
|
||||||
|
"name": "Chat Model Primary",
|
||||||
|
"position": [
|
||||||
|
-432,
|
||||||
|
480
|
||||||
|
],
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
|
||||||
|
"typeVersion": 1.2,
|
||||||
|
"credentials": {
|
||||||
|
"openAiApi": {
|
||||||
|
"id": "sxSUdecXdMfKPuTu",
|
||||||
|
"name": "llm-proxy.ext.ben.io"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"promptType": "define",
|
||||||
|
"text": "={{ $json.body.question }}",
|
||||||
|
"options": {
|
||||||
|
"systemPromptTemplate": "Rizon IRC help context:\n{context}\n\nYou answer \"how do I\" questions about Rizon IRC using the context above.\nFormat: [command] - More info: [URL]\n\nIMPORTANT: If the user's question is NOT asking something relevant to IRC, output ONLY this exact text with no explanation:\n__IGNORE__\n\nThings that are NOT IRC help questions (output __IGNORE__):\n- Statements like \"thanks\", \"ok\", \"interesting\", \"cool\"\n- Random text that isn't a question\n- Greetings like \"hello\", \"hi\"\n- Anything not asking how to use IRC or IRC services"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"id": "bc8a8f9c-dfa8-4b64-ac87-b81ebed1e9fa",
|
||||||
|
"name": "QA Chain",
|
||||||
|
"position": [
|
||||||
|
-304,
|
||||||
|
208
|
||||||
|
],
|
||||||
|
"retryOnFail": true,
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.chainRetrievalQa",
|
||||||
|
"typeVersion": 1.4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"topK": 5
|
||||||
|
},
|
||||||
|
"id": "922a7ee0-42bc-4d92-9c11-16772f20119d",
|
||||||
|
"name": "Vector Store Retriever",
|
||||||
|
"position": [
|
||||||
|
-208,
|
||||||
|
432
|
||||||
|
],
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.retrieverVectorStore",
|
||||||
|
"typeVersion": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"qdrantCollection": {
|
||||||
|
"__rl": true,
|
||||||
|
"cachedResultName": "rizon-help",
|
||||||
|
"mode": "list",
|
||||||
|
"value": "rizon-help"
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"contentPayloadKey": "page_content"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"id": "31f65541-f828-45ca-bc2e-64118aa718c7",
|
||||||
|
"name": "Qdrant Vector Store",
|
||||||
|
"position": [
|
||||||
|
-208,
|
||||||
|
640
|
||||||
|
],
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
|
||||||
|
"typeVersion": 1.3,
|
||||||
|
"credentials": {
|
||||||
|
"qdrantApi": {
|
||||||
|
"id": "Qtd00hn8bJt3xzhU",
|
||||||
|
"name": "Qdrant Local"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"content": "## Model Notes\n\nfast dedalus model: \n* dedaluslabs/moonshot/kimi-k2-thinking-turbo"
|
||||||
|
},
|
||||||
|
"type": "n8n-nodes-base.stickyNote",
|
||||||
|
"typeVersion": 1,
|
||||||
|
"position": [
|
||||||
|
-1040,
|
||||||
|
256
|
||||||
|
],
|
||||||
|
"id": "a8dcf9fe-8728-4af8-a1e5-7a0d62ff26d6",
|
||||||
|
"name": "Sticky Note"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"model": "embeddinggemma:latest"
|
||||||
|
},
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
|
||||||
|
"typeVersion": 1,
|
||||||
|
"position": [
|
||||||
|
-128,
|
||||||
|
848
|
||||||
|
],
|
||||||
|
"id": "14c8c8f8-e081-4dc7-9eb5-971aa152a92c",
|
||||||
|
"name": "Embeddings Ollama",
|
||||||
|
"credentials": {
|
||||||
|
"ollamaApi": {
|
||||||
|
"id": "l1g3pgQImkg18AzR",
|
||||||
|
"name": "Ollama account"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"connections": {
|
||||||
|
"Chat Model Primary": {
|
||||||
|
"ai_languageModel": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"node": "QA Chain",
|
||||||
|
"type": "ai_languageModel"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"QA Chain": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"node": "Response Formatter",
|
||||||
|
"type": "main"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Qdrant Vector Store": {
|
||||||
|
"ai_vectorStore": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"node": "Vector Store Retriever",
|
||||||
|
"type": "ai_vectorStore"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Vector Store Retriever": {
|
||||||
|
"ai_retriever": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"node": "QA Chain",
|
||||||
|
"type": "ai_retriever"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Webhook Trigger": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"node": "QA Chain",
|
||||||
|
"type": "main"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Embeddings Ollama": {
|
||||||
|
"ai_embedding": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Qdrant Vector Store",
|
||||||
|
"type": "ai_embedding",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"executionOrder": "v1",
|
||||||
|
"callerPolicy": "workflowsFromSameOwner",
|
||||||
|
"availableInMCP": false
|
||||||
|
},
|
||||||
|
"triggerCount": 1,
|
||||||
|
"versionId": "f5d59633-0e3c-4a64-a228-655e71ae20b3",
|
||||||
|
"owner": {
|
||||||
|
"type": "personal",
|
||||||
|
"projectId": "FeLO36wNUAcn61Wj",
|
||||||
|
"projectName": "Ben W <admin@ben.io>",
|
||||||
|
"personalEmail": "admin@ben.io"
|
||||||
|
},
|
||||||
|
"parentFolderId": "caxOx4NfY2vHcoNv",
|
||||||
|
"isArchived": false
|
||||||
|
}
|
||||||
@@ -3,44 +3,45 @@
|
|||||||
"name": "MAM Transmission Manager",
|
"name": "MAM Transmission Manager",
|
||||||
"nodes": [
|
"nodes": [
|
||||||
{
|
{
|
||||||
"parameters": {},
|
|
||||||
"id": "start",
|
|
||||||
"name": "Start",
|
|
||||||
"position": [
|
"position": [
|
||||||
224,
|
224,
|
||||||
128
|
128
|
||||||
],
|
],
|
||||||
"type": "n8n-nodes-base.executeWorkflowTrigger",
|
"type": "n8n-nodes-base.executeWorkflowTrigger",
|
||||||
"typeVersion": 1
|
"typeVersion": 1,
|
||||||
|
"id": "start",
|
||||||
|
"name": "Start",
|
||||||
|
"parameters": {}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "http-add-torrent",
|
||||||
|
"name": "Add Torrent to Transmission",
|
||||||
|
"onError": "continueRegularOutput",
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"method": "POST",
|
|
||||||
"url": "http://seed-1.dfw.ben.io:9091/transmission/rpc",
|
|
||||||
"authentication": "genericCredentialType",
|
|
||||||
"genericAuthType": "httpBasicAuth",
|
|
||||||
"sendHeaders": true,
|
|
||||||
"headerParameters": {
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"name": "X-Transmission-Session-Id",
|
|
||||||
"value": "={{ $('Merge Session to Files').item.json.headers[\"X-Transmission-Session-Id\"] }}"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"sendBody": true,
|
|
||||||
"specifyBody": "json",
|
"specifyBody": "json",
|
||||||
"jsonBody": "={\n \"method\": \"torrent-add\",\n \"arguments\": {\n \"metainfo\": \"{{ $('Extract from File').item.json.data }}\",\n \"download-dir\": \"/home/seed_/.transmission/downloads/audio\",\n \"paused\": true\n }\n}",
|
|
||||||
"options": {
|
"options": {
|
||||||
"response": {
|
"response": {
|
||||||
"response": {
|
"response": {
|
||||||
"fullResponse": true
|
"fullResponse": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"id": "http-add-torrent",
|
"headerParameters": {
|
||||||
"name": "Add Torrent to Transmission",
|
"parameters": [
|
||||||
|
{
|
||||||
|
"value": "={{ $('Merge Session to Files').item.json.headers[\"X-Transmission-Session-Id\"] }}",
|
||||||
|
"name": "X-Transmission-Session-Id"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sendHeaders": true,
|
||||||
|
"genericAuthType": "httpBasicAuth",
|
||||||
|
"method": "POST",
|
||||||
|
"sendBody": true,
|
||||||
|
"url": "http://seed-1.dfw.ben.io:9091/transmission/rpc",
|
||||||
|
"authentication": "genericCredentialType",
|
||||||
|
"jsonBody": "={\n \"method\": \"torrent-add\",\n \"arguments\": {\n \"metainfo\": \"{{ $('Extract from File').item.json.data }}\",\n \"download-dir\": \"/home/seed_/.transmission/downloads/audio\",\n \"paused\": true\n }\n}"
|
||||||
|
},
|
||||||
"position": [
|
"position": [
|
||||||
1792,
|
1792,
|
||||||
128
|
128
|
||||||
@@ -52,68 +53,99 @@
|
|||||||
"id": "iymUPilnVhfL3h5D",
|
"id": "iymUPilnVhfL3h5D",
|
||||||
"name": "transmission"
|
"name": "transmission"
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"onError": "continueRegularOutput"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"parameters": {
|
|
||||||
"jsCode": "const responses = $input.all();\nconst originals = $('Start').all();\nconst mergedPayloads = $('Merge Session Context').all();\n\nfunction getOriginal(index) {\n return originals[index]?.json || originals[0]?.json || {};\n}\n\nfunction getSessionId(index) {\n return mergedPayloads[index]?.json?.session_id || mergedPayloads[0]?.json?.session_id || '';\n}\n\nconst outputs = [];\n\nfor (let i = 0; i < responses.length; i++) {\n const item = responses[i];\n const body = item.json.body || item.json;\n const result = body?.result;\n const args = body?.arguments || {};\n const torrentInfo = args['torrent-added'] || args['torrent-duplicate'];\n const sessionId = getSessionId(i);\n const originalInput = getOriginal(i);\n\n if (item.error || (!torrentInfo && result !== 'duplicate' && result !== 'success')) {\n outputs.push({\n json: {\n status: 'failed',\n error: item.error?.message || result || 'Unknown error adding torrent',\n torrent_id: null,\n session_id: sessionId,\n original_input: originalInput\n }\n });\n continue;\n }\n\n if (!torrentInfo) {\n outputs.push({\n json: {\n status: 'failed',\n error: 'Could not extract torrent info from response',\n torrent_id: null,\n session_id: sessionId,\n original_input: originalInput\n }\n });\n continue;\n }\n\n outputs.push({\n json: {\n status: 'queued',\n torrent_id: torrentInfo.id,\n torrent_hash: torrentInfo.hashString,\n torrent_name: torrentInfo.name,\n session_id: sessionId,\n original_input: originalInput\n }\n });\n}\n\nreturn outputs;"
|
|
||||||
},
|
|
||||||
"id": "code-extract-torrent-id",
|
|
||||||
"name": "Extract Torrent ID",
|
|
||||||
"position": [
|
"position": [
|
||||||
2016,
|
2016,
|
||||||
128
|
128
|
||||||
],
|
],
|
||||||
"type": "n8n-nodes-base.code",
|
"type": "n8n-nodes-base.code",
|
||||||
"typeVersion": 2
|
"typeVersion": 2,
|
||||||
|
"id": "code-extract-torrent-id",
|
||||||
|
"name": "Extract Torrent ID",
|
||||||
|
"parameters": {
|
||||||
|
"jsCode": "const responses = $input.all();\nconst originals = $('Start').all();\nconst mergedPayloads = $('Merge Session Context').all();\n\nfunction getOriginal(index) {\n return originals[index]?.json || originals[0]?.json || {};\n}\n\nfunction getSessionId(index) {\n return mergedPayloads[index]?.json?.session_id || mergedPayloads[0]?.json?.session_id || '';\n}\n\nconst outputs = [];\n\nfor (let i = 0; i < responses.length; i++) {\n const item = responses[i];\n const body = item.json.body || item.json;\n const result = body?.result;\n const args = body?.arguments || {};\n const torrentInfo = args['torrent-added'] || args['torrent-duplicate'];\n const sessionId = getSessionId(i);\n const originalInput = getOriginal(i);\n\n if (item.error || (!torrentInfo && result !== 'duplicate' && result !== 'success')) {\n outputs.push({\n json: {\n status: 'failed',\n error: item.error?.message || result || 'Unknown error adding torrent',\n torrent_id: null,\n session_id: sessionId,\n original_input: originalInput\n }\n });\n continue;\n }\n\n if (!torrentInfo) {\n outputs.push({\n json: {\n status: 'failed',\n error: 'Could not extract torrent info from response',\n torrent_id: null,\n session_id: sessionId,\n original_input: originalInput\n }\n });\n continue;\n }\n\n outputs.push({\n json: {\n status: 'queued',\n torrent_id: torrentInfo.id,\n torrent_hash: torrentInfo.hashString,\n torrent_name: torrentInfo.name,\n session_id: sessionId,\n original_input: originalInput\n }\n });\n}\n\nreturn outputs;"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"position": [
|
||||||
|
2240,
|
||||||
|
128
|
||||||
|
],
|
||||||
|
"type": "n8n-nodes-base.if",
|
||||||
|
"typeVersion": 2.2,
|
||||||
|
"id": "if-filter-success",
|
||||||
|
"name": "Filter Success",
|
||||||
|
"parameters": {
|
||||||
|
"conditions": {
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"id": "filter-success",
|
||||||
|
"leftValue": "={{ $json.status }}",
|
||||||
|
"operator": {
|
||||||
|
"operation": "equals",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"rightValue": "queued"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"options": {
|
||||||
|
"caseSensitive": true,
|
||||||
|
"leftValue": "",
|
||||||
|
"typeValidation": "strict"
|
||||||
|
},
|
||||||
|
"combinator": "and"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Respond Complete",
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"respondWith": "allIncomingItems",
|
"respondWith": "allIncomingItems",
|
||||||
"options": {}
|
"options": {}
|
||||||
},
|
},
|
||||||
"id": "respond-complete",
|
|
||||||
"name": "Respond Complete",
|
|
||||||
"position": [
|
"position": [
|
||||||
2464,
|
2688,
|
||||||
128
|
128
|
||||||
],
|
],
|
||||||
"type": "n8n-nodes-base.respondToWebhook",
|
"type": "n8n-nodes-base.respondToWebhook",
|
||||||
"typeVersion": 1
|
"typeVersion": 1,
|
||||||
|
"id": "respond-complete"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"name": "Merge Session to Files",
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"language": "pythonNative",
|
"language": "pythonNative",
|
||||||
"pythonCode": "# 1. Access the input item\nitem = _items[0]['json']\n\n# 2. Extract the data we need\n# UPDATE: The input key is now 'dl_link', not 'download_link'\ndownload_link = item.get('dl_link')\nsession_id = item.get('session_id')\n\n# 3. Create the Transmission Payload\npayload = {\n \"method\": \"torrent-add\",\n \"arguments\": {\n \"filename\": download_link,\n \"download-dir\": \"/home/seed_/.transmission/downloads/audio\",\n \"paused\": True \n }\n}\n\n# 4. Return the formatted data\nreturn [{\n \"json\": {\n # UPDATE: Map 'title' correctly for any old nodes that need it\n \"title\": item.get('meta_title'),\n \n # NEW: Pass through all metadata for the Postgres Logger\n \"meta_title\": item.get('meta_title'),\n \"meta_series\": item.get('meta_series'),\n \"meta_book_number\": item.get('meta_book_number'),\n \"meta_author\": item.get('meta_author'),\n \"mam_id\": item.get('mam_id'),\n \"dl_link\": download_link,\n \n # Transmission Data\n \"transmission_body\": payload,\n \"headers\": {\n \"X-Transmission-Session-Id\": session_id\n }\n }\n}]"
|
"pythonCode": "# 1. Access the input item\nitem = _items[0]['json']\n\n# 2. Extract the data we need\n# UPDATE: The input key is now 'dl_link', not 'download_link'\ndownload_link = item.get('dl_link')\nsession_id = item.get('session_id')\n\n# 3. Create the Transmission Payload\npayload = {\n \"method\": \"torrent-add\",\n \"arguments\": {\n \"filename\": download_link,\n \"download-dir\": \"/home/seed_/.transmission/downloads/audio\",\n \"paused\": True \n }\n}\n\n# 4. Return the formatted data\nreturn [{\n \"json\": {\n # UPDATE: Map 'title' correctly for any old nodes that need it\n \"title\": item.get('meta_title'),\n \n # NEW: Pass through all metadata for the Postgres Logger\n \"meta_title\": item.get('meta_title'),\n \"meta_series\": item.get('meta_series'),\n \"meta_book_number\": item.get('meta_book_number'),\n \"meta_author\": item.get('meta_author'),\n \"mam_id\": item.get('mam_id'),\n \"dl_link\": download_link,\n \n # Transmission Data\n \"transmission_body\": payload,\n \"headers\": {\n \"X-Transmission-Session-Id\": session_id\n }\n }\n}]"
|
||||||
},
|
},
|
||||||
"type": "n8n-nodes-base.code",
|
|
||||||
"typeVersion": 2,
|
|
||||||
"position": [
|
"position": [
|
||||||
896,
|
896,
|
||||||
128
|
128
|
||||||
],
|
],
|
||||||
"id": "d6d9f145-6b10-452f-aa08-2dc669c3b4d6",
|
"type": "n8n-nodes-base.code",
|
||||||
"name": "Merge Session to Files"
|
"typeVersion": 2,
|
||||||
|
"id": "d6d9f145-6b10-452f-aa08-2dc669c3b4d6"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "dde23141-d708-48e7-942f-08aa1d749189",
|
||||||
|
"name": "Merge Session Context",
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"mode": "combine",
|
"options": {},
|
||||||
"combineBy": "combineByPosition",
|
"combineBy": "combineByPosition",
|
||||||
"options": {}
|
"mode": "combine"
|
||||||
},
|
},
|
||||||
"type": "n8n-nodes-base.merge",
|
|
||||||
"typeVersion": 3.2,
|
|
||||||
"position": [
|
"position": [
|
||||||
672,
|
672,
|
||||||
128
|
128
|
||||||
],
|
],
|
||||||
"id": "dde23141-d708-48e7-942f-08aa1d749189",
|
"type": "n8n-nodes-base.merge",
|
||||||
"name": "Merge Session Context"
|
"typeVersion": 3.2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "acb7d649-a853-44e7-84e8-f82398f3008a",
|
||||||
|
"name": "MAM Get File HTTP Request",
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"url": "={{ $json.transmission_body.arguments.filename }}",
|
|
||||||
"authentication": "genericCredentialType",
|
"authentication": "genericCredentialType",
|
||||||
"genericAuthType": "httpHeaderAuth",
|
"genericAuthType": "httpHeaderAuth",
|
||||||
"options": {
|
"options": {
|
||||||
@@ -123,16 +155,15 @@
|
|||||||
"responseFormat": "file"
|
"responseFormat": "file"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"type": "n8n-nodes-base.httpRequest",
|
"url": "={{ $json.transmission_body.arguments.filename }}"
|
||||||
"typeVersion": 4.3,
|
},
|
||||||
"position": [
|
"position": [
|
||||||
1120,
|
1120,
|
||||||
128
|
128
|
||||||
],
|
],
|
||||||
"id": "acb7d649-a853-44e7-84e8-f82398f3008a",
|
"type": "n8n-nodes-base.httpRequest",
|
||||||
"name": "MAM Get File HTTP Request",
|
"typeVersion": 4.3,
|
||||||
"credentials": {
|
"credentials": {
|
||||||
"httpBasicAuth": {
|
"httpBasicAuth": {
|
||||||
"id": "iymUPilnVhfL3h5D",
|
"id": "iymUPilnVhfL3h5D",
|
||||||
@@ -145,77 +176,79 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"typeVersion": 1.1,
|
||||||
|
"id": "acb1b56b-ac9a-41ec-ad60-7ce983b8cdd7",
|
||||||
|
"name": "Extract from File",
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"operation": "binaryToPropery",
|
"operation": "binaryToPropery",
|
||||||
"options": {}
|
"options": {}
|
||||||
},
|
},
|
||||||
"type": "n8n-nodes-base.extractFromFile",
|
|
||||||
"typeVersion": 1.1,
|
|
||||||
"position": [
|
"position": [
|
||||||
1568,
|
1568,
|
||||||
128
|
128
|
||||||
],
|
],
|
||||||
"id": "acb1b56b-ac9a-41ec-ad60-7ce983b8cdd7",
|
"type": "n8n-nodes-base.extractFromFile"
|
||||||
"name": "Extract from File"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"parameters": {
|
|
||||||
"language": "pythonNative",
|
|
||||||
"pythonCode": "results = []\n\nfor item in _items:\n # 1. Get the binary data from the previous download node\n # n8n stores the file in the 'binary' key. The default property name is usually 'data'.\n # We need the 'data' field inside that, which contains the Base64 string.\n binary_ref = item.get('binary', {}).get('data', {})\n b64_string = binary_ref.get('data')\n\n if b64_string:\n # 2. Create the exact JSON body Transmission expects for file uploads\n # We use \"metainfo\" for the actual file content (Base64)\n payload = {\n \"method\": \"torrent-add\",\n \"arguments\": {\n \"metainfo\": b64_string, \n \"download-dir\": \"/home/seed_/.transmission/downloads/audio\",\n \"paused\": False\n }\n }\n\n # 3. Preserve any existing JSON (like session_id) if it exists, or start fresh\n new_json = item.get('json', {}).copy()\n new_json['transmission_body'] = payload\n \n results.append({\n \"json\": new_json,\n # Pass the binary through just in case, though we don't strictly need it anymore\n \"binary\": item.get('binary', {})\n })\n\nreturn results"
|
|
||||||
},
|
|
||||||
"type": "n8n-nodes-base.code",
|
|
||||||
"typeVersion": 2,
|
|
||||||
"position": [
|
"position": [
|
||||||
1344,
|
1344,
|
||||||
128
|
128
|
||||||
],
|
],
|
||||||
|
"type": "n8n-nodes-base.code",
|
||||||
|
"typeVersion": 2,
|
||||||
"id": "0b011613-50e9-4612-ac6e-1f6ac0e39ebb",
|
"id": "0b011613-50e9-4612-ac6e-1f6ac0e39ebb",
|
||||||
"name": "Prepare Transmission Payload"
|
"name": "Prepare Transmission Payload",
|
||||||
|
"parameters": {
|
||||||
|
"pythonCode": "results = []\n\nfor item in _items:\n # 1. Get the binary data from the previous download node\n # n8n stores the file in the 'binary' key. The default property name is usually 'data'.\n # We need the 'data' field inside that, which contains the Base64 string.\n binary_ref = item.get('binary', {}).get('data', {})\n b64_string = binary_ref.get('data')\n\n if b64_string:\n # 2. Create the exact JSON body Transmission expects for file uploads\n # We use \"metainfo\" for the actual file content (Base64)\n payload = {\n \"method\": \"torrent-add\",\n \"arguments\": {\n \"metainfo\": b64_string, \n \"download-dir\": \"/home/seed_/.transmission/downloads/audio\",\n \"paused\": False\n }\n }\n\n # 3. Preserve any existing JSON (like session_id) if it exists, or start fresh\n new_json = item.get('json', {}).copy()\n new_json['transmission_body'] = payload\n \n results.append({\n \"json\": new_json,\n # Pass the binary through just in case, though we don't strictly need it anymore\n \"binary\": item.get('binary', {})\n })\n\nreturn results",
|
||||||
|
"language": "pythonNative"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"workflowId": {
|
"workflowId": {
|
||||||
"__rl": true,
|
|
||||||
"value": "NChjOd3ILEmt0FdyAt8qA",
|
|
||||||
"mode": "list",
|
"mode": "list",
|
||||||
"cachedResultUrl": "/workflow/NChjOd3ILEmt0FdyAt8qA",
|
"value": "NChjOd3ILEmt0FdyAt8qA",
|
||||||
"cachedResultName": "Transmission: Get Session"
|
"__rl": true,
|
||||||
|
"cachedResultName": "Transmission: Get Session",
|
||||||
|
"cachedResultUrl": "/workflow/NChjOd3ILEmt0FdyAt8qA"
|
||||||
},
|
},
|
||||||
"workflowInputs": {
|
"workflowInputs": {
|
||||||
"mappingMode": "defineBelow",
|
|
||||||
"value": {
|
|
||||||
"server_id": "seed-1.dfw.ben.io"
|
|
||||||
},
|
|
||||||
"matchingColumns": [
|
"matchingColumns": [
|
||||||
"server_id"
|
"server_id"
|
||||||
],
|
],
|
||||||
"schema": [
|
"schema": [
|
||||||
{
|
{
|
||||||
"id": "server_id",
|
|
||||||
"displayName": "server_id",
|
|
||||||
"required": false,
|
|
||||||
"defaultMatch": false,
|
"defaultMatch": false,
|
||||||
"display": true,
|
"display": true,
|
||||||
"canBeUsedToMatch": true,
|
"displayName": "server_id",
|
||||||
|
"id": "server_id",
|
||||||
|
"removed": false,
|
||||||
|
"required": false,
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"removed": false
|
"canBeUsedToMatch": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"value": {
|
||||||
|
"server_id": "seed-1.dfw.ben.io"
|
||||||
|
},
|
||||||
"attemptToConvertTypes": false,
|
"attemptToConvertTypes": false,
|
||||||
"convertFieldsToString": true
|
"convertFieldsToString": true,
|
||||||
|
"mappingMode": "defineBelow"
|
||||||
},
|
},
|
||||||
"options": {}
|
"options": {}
|
||||||
},
|
},
|
||||||
"type": "n8n-nodes-base.executeWorkflow",
|
|
||||||
"typeVersion": 1.3,
|
|
||||||
"position": [
|
"position": [
|
||||||
448,
|
448,
|
||||||
208
|
208
|
||||||
],
|
],
|
||||||
|
"type": "n8n-nodes-base.executeWorkflow",
|
||||||
|
"typeVersion": 1.3,
|
||||||
"id": "175e270a-b1d9-41d0-981a-1f83258443b1",
|
"id": "175e270a-b1d9-41d0-981a-1f83258443b1",
|
||||||
"name": "Transmission: Get Session"
|
"name": "Transmission: Get Session"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "5a79163a-a211-475c-b53e-79d086a4c9a7",
|
||||||
|
"name": "Insert rows in a table",
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"__rl": true,
|
"__rl": true,
|
||||||
@@ -223,197 +256,195 @@
|
|||||||
"value": "public"
|
"value": "public"
|
||||||
},
|
},
|
||||||
"table": {
|
"table": {
|
||||||
"__rl": true,
|
"cachedResultName": "download_history",
|
||||||
"value": "download_history",
|
|
||||||
"mode": "list",
|
"mode": "list",
|
||||||
"cachedResultName": "download_history"
|
"value": "download_history",
|
||||||
|
"__rl": true
|
||||||
},
|
},
|
||||||
"columns": {
|
"columns": {
|
||||||
"mappingMode": "defineBelow",
|
|
||||||
"value": {
|
"value": {
|
||||||
"mam_id": "={{ $json.original_input.mam_id }}",
|
|
||||||
"torrent_url": "={{ $('Extract Torrent ID').item.json.original_input.dl_link }}",
|
|
||||||
"book_id": "={{ null }}",
|
|
||||||
"torrent_hash": "={{ $json.torrent_hash }}",
|
"torrent_hash": "={{ $json.torrent_hash }}",
|
||||||
"filename": "={{ $('Extract Torrent ID').item.json.torrent_name }}",
|
"filename": "={{ $json.torrent_name }}",
|
||||||
"status": "={{ $json.status }}",
|
"meta_author": "={{ $json.original_input.meta_author }}",
|
||||||
"meta_title": "={{ $json.original_input.meta_title }}",
|
"meta_title": "={{ $json.original_input.meta_title }}",
|
||||||
|
"status": "={{ $json.status }}",
|
||||||
|
"book_id": "={{ null }}",
|
||||||
|
"mam_id": "={{ $json.original_input.mam_id }}",
|
||||||
"meta_series": "={{ $json.original_input.meta_series }}",
|
"meta_series": "={{ $json.original_input.meta_series }}",
|
||||||
"meta_book_number": "={{ $json.original_input.meta_book_number }}",
|
"torrent_url": "={{ $json.original_input.dl_link }}",
|
||||||
"meta_author": "={{ $json.original_input.meta_author }}"
|
"meta_book_number": "={{ $json.original_input.meta_book_number }}"
|
||||||
},
|
},
|
||||||
|
"attemptToConvertTypes": false,
|
||||||
|
"convertFieldsToString": false,
|
||||||
|
"mappingMode": "defineBelow",
|
||||||
"matchingColumns": [
|
"matchingColumns": [
|
||||||
"id"
|
"id"
|
||||||
],
|
],
|
||||||
"schema": [
|
"schema": [
|
||||||
{
|
{
|
||||||
"id": "id",
|
|
||||||
"displayName": "id",
|
|
||||||
"required": false,
|
|
||||||
"defaultMatch": true,
|
"defaultMatch": true,
|
||||||
"display": true,
|
"display": true,
|
||||||
"type": "string",
|
"displayName": "id",
|
||||||
"canBeUsedToMatch": true,
|
"id": "id",
|
||||||
"removed": false
|
"removed": false,
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "book_id",
|
|
||||||
"displayName": "book_id",
|
|
||||||
"required": false,
|
"required": false,
|
||||||
"defaultMatch": false,
|
|
||||||
"display": true,
|
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"canBeUsedToMatch": true
|
"canBeUsedToMatch": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"display": true,
|
||||||
|
"displayName": "book_id",
|
||||||
|
"id": "book_id",
|
||||||
|
"required": false,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": true,
|
||||||
|
"defaultMatch": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "torrent_url",
|
"id": "torrent_url",
|
||||||
"displayName": "torrent_url",
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": true,
|
||||||
"defaultMatch": false,
|
"defaultMatch": false,
|
||||||
"display": true,
|
"display": true,
|
||||||
"type": "string",
|
"displayName": "torrent_url"
|
||||||
"canBeUsedToMatch": true
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "torrent_hash",
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
"displayName": "torrent_hash",
|
"displayName": "torrent_hash",
|
||||||
|
"id": "torrent_hash",
|
||||||
"required": true,
|
"required": true,
|
||||||
"defaultMatch": false,
|
|
||||||
"display": true,
|
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"canBeUsedToMatch": true
|
"canBeUsedToMatch": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "filename",
|
|
||||||
"displayName": "filename",
|
|
||||||
"required": true,
|
|
||||||
"defaultMatch": false,
|
"defaultMatch": false,
|
||||||
"display": true,
|
"display": true,
|
||||||
|
"displayName": "filename",
|
||||||
|
"id": "filename",
|
||||||
|
"required": true,
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"canBeUsedToMatch": true
|
"canBeUsedToMatch": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "transmission_path",
|
"id": "transmission_path",
|
||||||
"displayName": "transmission_path",
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": true,
|
||||||
"defaultMatch": false,
|
"defaultMatch": false,
|
||||||
"display": true,
|
"display": true,
|
||||||
"type": "string",
|
"displayName": "transmission_path"
|
||||||
"canBeUsedToMatch": true
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "gateway_path",
|
"display": true,
|
||||||
"displayName": "gateway_path",
|
"displayName": "gateway_path",
|
||||||
|
"id": "gateway_path",
|
||||||
"required": false,
|
"required": false,
|
||||||
"defaultMatch": false,
|
|
||||||
"display": true,
|
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"canBeUsedToMatch": true
|
"canBeUsedToMatch": true,
|
||||||
|
"defaultMatch": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "status",
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
"displayName": "status",
|
"displayName": "status",
|
||||||
|
"id": "status",
|
||||||
"required": false,
|
"required": false,
|
||||||
"defaultMatch": false,
|
|
||||||
"display": true,
|
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"canBeUsedToMatch": true
|
"canBeUsedToMatch": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "downloaded_at",
|
|
||||||
"displayName": "downloaded_at",
|
|
||||||
"required": false,
|
|
||||||
"defaultMatch": false,
|
"defaultMatch": false,
|
||||||
"display": true,
|
"display": true,
|
||||||
|
"displayName": "downloaded_at",
|
||||||
|
"id": "downloaded_at",
|
||||||
|
"required": false,
|
||||||
"type": "dateTime",
|
"type": "dateTime",
|
||||||
"canBeUsedToMatch": true
|
"canBeUsedToMatch": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "created_at",
|
|
||||||
"displayName": "created_at",
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"type": "dateTime",
|
||||||
|
"canBeUsedToMatch": true,
|
||||||
"defaultMatch": false,
|
"defaultMatch": false,
|
||||||
"display": true,
|
"display": true,
|
||||||
"type": "dateTime",
|
"displayName": "created_at",
|
||||||
"canBeUsedToMatch": true
|
"id": "created_at"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "updated_at",
|
"id": "updated_at",
|
||||||
"displayName": "updated_at",
|
|
||||||
"required": false,
|
"required": false,
|
||||||
"defaultMatch": false,
|
|
||||||
"display": true,
|
|
||||||
"type": "dateTime",
|
"type": "dateTime",
|
||||||
"canBeUsedToMatch": true
|
"canBeUsedToMatch": true,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
|
"displayName": "updated_at"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "meta_title",
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": true,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
"displayName": "meta_title",
|
"displayName": "meta_title",
|
||||||
"required": false,
|
"id": "meta_title",
|
||||||
"defaultMatch": false,
|
"required": false
|
||||||
"display": true,
|
|
||||||
"type": "string",
|
|
||||||
"canBeUsedToMatch": true
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "meta_series",
|
"canBeUsedToMatch": true,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
"displayName": "meta_series",
|
"displayName": "meta_series",
|
||||||
|
"id": "meta_series",
|
||||||
"required": false,
|
"required": false,
|
||||||
"defaultMatch": false,
|
"type": "string"
|
||||||
"display": true,
|
|
||||||
"type": "string",
|
|
||||||
"canBeUsedToMatch": true
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "meta_book_number",
|
"type": "string",
|
||||||
|
"canBeUsedToMatch": true,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
"displayName": "meta_book_number",
|
"displayName": "meta_book_number",
|
||||||
"required": false,
|
"id": "meta_book_number",
|
||||||
"defaultMatch": false,
|
"required": false
|
||||||
"display": true,
|
|
||||||
"type": "string",
|
|
||||||
"canBeUsedToMatch": true
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "meta_author",
|
"canBeUsedToMatch": true,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true,
|
||||||
"displayName": "meta_author",
|
"displayName": "meta_author",
|
||||||
|
"id": "meta_author",
|
||||||
"required": false,
|
"required": false,
|
||||||
"defaultMatch": false,
|
"type": "string"
|
||||||
"display": true,
|
|
||||||
"type": "string",
|
|
||||||
"canBeUsedToMatch": true
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "mam_id",
|
|
||||||
"displayName": "mam_id",
|
"displayName": "mam_id",
|
||||||
|
"id": "mam_id",
|
||||||
"required": false,
|
"required": false,
|
||||||
"defaultMatch": false,
|
|
||||||
"display": true,
|
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"canBeUsedToMatch": true
|
"canBeUsedToMatch": true,
|
||||||
|
"defaultMatch": false,
|
||||||
|
"display": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "error_log",
|
"canBeUsedToMatch": true,
|
||||||
"displayName": "error_log",
|
|
||||||
"required": false,
|
|
||||||
"defaultMatch": false,
|
"defaultMatch": false,
|
||||||
"display": true,
|
"display": true,
|
||||||
"type": "string",
|
"displayName": "error_log",
|
||||||
"canBeUsedToMatch": true
|
"id": "error_log",
|
||||||
|
"required": false,
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"attemptToConvertTypes": false,
|
|
||||||
"convertFieldsToString": false
|
|
||||||
},
|
},
|
||||||
"options": {}
|
"options": {}
|
||||||
},
|
},
|
||||||
|
"position": [
|
||||||
|
2464,
|
||||||
|
48
|
||||||
|
],
|
||||||
"type": "n8n-nodes-base.postgres",
|
"type": "n8n-nodes-base.postgres",
|
||||||
"typeVersion": 2.6,
|
"typeVersion": 2.6,
|
||||||
"position": [
|
|
||||||
2240,
|
|
||||||
128
|
|
||||||
],
|
|
||||||
"id": "5a79163a-a211-475c-b53e-79d086a4c9a7",
|
|
||||||
"name": "Insert rows in a table",
|
|
||||||
"credentials": {
|
"credentials": {
|
||||||
"postgres": {
|
"postgres": {
|
||||||
"id": "9grzZwW7Br6SzdV8",
|
"id": "9grzZwW7Br6SzdV8",
|
||||||
@@ -423,18 +454,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"connections": {
|
"connections": {
|
||||||
"Add Torrent to Transmission": {
|
"Filter Success": {
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"index": 0,
|
|
||||||
"node": "Extract Torrent ID",
|
|
||||||
"type": "main"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Extract Torrent ID": {
|
|
||||||
"main": [
|
"main": [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
@@ -442,43 +462,12 @@
|
|||||||
"type": "main",
|
"type": "main",
|
||||||
"index": 0
|
"index": 0
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
]
|
|
||||||
},
|
|
||||||
"Start": {
|
|
||||||
"main": [
|
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"node": "Transmission: Get Session",
|
|
||||||
"type": "main",
|
"type": "main",
|
||||||
"index": 0
|
"index": 0,
|
||||||
},
|
"node": "Respond Complete"
|
||||||
{
|
|
||||||
"node": "Merge Session Context",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Merge Session to Files": {
|
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "MAM Get File HTTP Request",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Merge Session Context": {
|
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Merge Session to Files",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
@@ -487,9 +476,20 @@
|
|||||||
"main": [
|
"main": [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"node": "Prepare Transmission Payload",
|
|
||||||
"type": "main",
|
"type": "main",
|
||||||
"index": 0
|
"index": 0,
|
||||||
|
"node": "Prepare Transmission Payload"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Add Torrent to Transmission": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"node": "Extract Torrent ID",
|
||||||
|
"type": "main"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
@@ -505,13 +505,51 @@
|
|||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"Merge Session to Files": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"node": "MAM Get File HTTP Request",
|
||||||
|
"type": "main"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Start": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"node": "Transmission: Get Session",
|
||||||
|
"type": "main"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"node": "Merge Session Context",
|
||||||
|
"type": "main"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
"Prepare Transmission Payload": {
|
"Prepare Transmission Payload": {
|
||||||
"main": [
|
"main": [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"node": "Extract from File",
|
|
||||||
"type": "main",
|
"type": "main",
|
||||||
"index": 0
|
"index": 0,
|
||||||
|
"node": "Extract from File"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Insert rows in a table": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "main",
|
||||||
|
"index": 0,
|
||||||
|
"node": "Respond Complete"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
@@ -527,21 +565,35 @@
|
|||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"Insert rows in a table": {
|
"Merge Session Context": {
|
||||||
"main": [
|
"main": [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"node": "Respond Complete",
|
|
||||||
"type": "main",
|
"type": "main",
|
||||||
"index": 0
|
"index": 0,
|
||||||
|
"node": "Merge Session to Files"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Extract Torrent ID": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "main",
|
||||||
|
"index": 0,
|
||||||
|
"node": "Filter Success"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"settings": {},
|
"settings": {
|
||||||
|
"callerPolicy": "workflowsFromSameOwner",
|
||||||
|
"availableInMCP": false
|
||||||
|
},
|
||||||
"triggerCount": 0,
|
"triggerCount": 0,
|
||||||
"versionId": "ea21c736-ae26-492b-aa4d-f1096fa4af15",
|
"versionId": "1e834370-1769-4d3d-a487-f84a442b2dcc",
|
||||||
"owner": {
|
"owner": {
|
||||||
"type": "personal",
|
"type": "personal",
|
||||||
"projectId": "FeLO36wNUAcn61Wj",
|
"projectId": "FeLO36wNUAcn61Wj",
|
||||||
|
|||||||
@@ -59,69 +59,6 @@
|
|||||||
"type": "n8n-nodes-base.scheduleTrigger",
|
"type": "n8n-nodes-base.scheduleTrigger",
|
||||||
"typeVersion": 1.2
|
"typeVersion": 1.2
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"authentication": "privateKey",
|
|
||||||
"command": "/home/b3nw/.npm-global/bin/opencode run -m antigravity/gemini-3-pro-preview --title \"quota-reset-gemini-pro\" \"ping\"",
|
|
||||||
"cwd": "~/"
|
|
||||||
},
|
|
||||||
"id": "ssh-gemini-pro",
|
|
||||||
"name": "SSH - Gemini Pro Ping",
|
|
||||||
"position": [
|
|
||||||
304,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"type": "n8n-nodes-base.ssh",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"credentials": {
|
|
||||||
"sshPrivateKey": {
|
|
||||||
"id": "S2dcVMjrpg0I0kdV",
|
|
||||||
"name": "vscode-dev.local.ben.io"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"authentication": "privateKey",
|
|
||||||
"command": "/home/b3nw/.npm-global/bin/opencode run -m antigravity/gemini-3-flash --title \"quota-reset-gemini-flash\" \"ping\"",
|
|
||||||
"cwd": "~/"
|
|
||||||
},
|
|
||||||
"id": "ssh-gemini-flash",
|
|
||||||
"name": "SSH - Gemini Flash Ping",
|
|
||||||
"position": [
|
|
||||||
304,
|
|
||||||
208
|
|
||||||
],
|
|
||||||
"type": "n8n-nodes-base.ssh",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"credentials": {
|
|
||||||
"sshPrivateKey": {
|
|
||||||
"id": "S2dcVMjrpg0I0kdV",
|
|
||||||
"name": "vscode-dev.local.ben.io"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"authentication": "privateKey",
|
|
||||||
"command": "/home/b3nw/.npm-global/bin/opencode run -m antigravity/claude-sonnet-4-5 --title \"quota-reset-claude\" \"ping\"",
|
|
||||||
"cwd": "~/"
|
|
||||||
},
|
|
||||||
"id": "ssh-claude",
|
|
||||||
"name": "SSH - Claude Ping",
|
|
||||||
"position": [
|
|
||||||
304,
|
|
||||||
400
|
|
||||||
],
|
|
||||||
"type": "n8n-nodes-base.ssh",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"credentials": {
|
|
||||||
"sshPrivateKey": {
|
|
||||||
"id": "S2dcVMjrpg0I0kdV",
|
|
||||||
"name": "vscode-dev.local.ben.io"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"rule": {
|
"rule": {
|
||||||
@@ -161,6 +98,176 @@
|
|||||||
"name": "vscode-dev.local.ben.io"
|
"name": "vscode-dev.local.ben.io"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"model": {
|
||||||
|
"__rl": true,
|
||||||
|
"value": "antigravity/gemini-3-flash",
|
||||||
|
"mode": "list",
|
||||||
|
"cachedResultName": "antigravity/gemini-3-flash"
|
||||||
|
},
|
||||||
|
"responsesApiEnabled": false,
|
||||||
|
"options": {
|
||||||
|
"responseFormat": "text"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
|
||||||
|
"typeVersion": 1.3,
|
||||||
|
"position": [
|
||||||
|
1488,
|
||||||
|
592
|
||||||
|
],
|
||||||
|
"id": "6692ee3d-d084-4e2e-baf1-57f4dc54e31f",
|
||||||
|
"name": "antigravity/gemini-3-flash-preview",
|
||||||
|
"credentials": {
|
||||||
|
"openAiApi": {
|
||||||
|
"id": "sxSUdecXdMfKPuTu",
|
||||||
|
"name": "llm-proxy.ext.ben.io"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"promptType": "define",
|
||||||
|
"text": "Hello, what is today's date?",
|
||||||
|
"batching": {}
|
||||||
|
},
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.chainLlm",
|
||||||
|
"typeVersion": 1.9,
|
||||||
|
"position": [
|
||||||
|
416,
|
||||||
|
400
|
||||||
|
],
|
||||||
|
"id": "95a4b9f5-fd77-4425-9381-dfaa47de5f48",
|
||||||
|
"name": "Firmware Wakeup"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"model": {
|
||||||
|
"__rl": true,
|
||||||
|
"value": "firmware/openai/gpt-5.2",
|
||||||
|
"mode": "list",
|
||||||
|
"cachedResultName": "firmware/openai/gpt-5.2"
|
||||||
|
},
|
||||||
|
"responsesApiEnabled": false,
|
||||||
|
"options": {
|
||||||
|
"responseFormat": "text"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
|
||||||
|
"typeVersion": 1.3,
|
||||||
|
"position": [
|
||||||
|
416,
|
||||||
|
592
|
||||||
|
],
|
||||||
|
"id": "dcab26b6-21f7-4204-b82e-00e171bd6cde",
|
||||||
|
"name": "openai/gpt-5.2",
|
||||||
|
"credentials": {
|
||||||
|
"openAiApi": {
|
||||||
|
"id": "sxSUdecXdMfKPuTu",
|
||||||
|
"name": "llm-proxy.ext.ben.io"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"model": {
|
||||||
|
"__rl": true,
|
||||||
|
"mode": "id",
|
||||||
|
"value": "antigravity/claude-sonnet-4.5"
|
||||||
|
},
|
||||||
|
"responsesApiEnabled": false,
|
||||||
|
"options": {
|
||||||
|
"responseFormat": "text"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
|
||||||
|
"typeVersion": 1.3,
|
||||||
|
"position": [
|
||||||
|
768,
|
||||||
|
592
|
||||||
|
],
|
||||||
|
"id": "5ba81750-7c3d-4d0c-902f-8ec17c4a031d",
|
||||||
|
"name": "claude-sonnet-4.5",
|
||||||
|
"credentials": {
|
||||||
|
"openAiApi": {
|
||||||
|
"id": "sxSUdecXdMfKPuTu",
|
||||||
|
"name": "llm-proxy.ext.ben.io"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"model": {
|
||||||
|
"__rl": true,
|
||||||
|
"mode": "id",
|
||||||
|
"value": "antigravity/gemini-3-pro-preview"
|
||||||
|
},
|
||||||
|
"responsesApiEnabled": false,
|
||||||
|
"options": {
|
||||||
|
"responseFormat": "text"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
|
||||||
|
"typeVersion": 1.3,
|
||||||
|
"position": [
|
||||||
|
1120,
|
||||||
|
592
|
||||||
|
],
|
||||||
|
"id": "8771c6b9-3a31-4232-adf1-d6b3e20f4db3",
|
||||||
|
"name": "gemini-3-pro-preview",
|
||||||
|
"credentials": {
|
||||||
|
"openAiApi": {
|
||||||
|
"id": "sxSUdecXdMfKPuTu",
|
||||||
|
"name": "llm-proxy.ext.ben.io"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"promptType": "define",
|
||||||
|
"text": "Hello, what is today's date?",
|
||||||
|
"batching": {}
|
||||||
|
},
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.chainLlm",
|
||||||
|
"typeVersion": 1.9,
|
||||||
|
"position": [
|
||||||
|
768,
|
||||||
|
400
|
||||||
|
],
|
||||||
|
"id": "bacdcfb7-e50c-489c-ad4f-3d6db55d717e",
|
||||||
|
"name": "Antigravity Wakeup Claude"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"promptType": "define",
|
||||||
|
"text": "Hello, what is today's date?",
|
||||||
|
"batching": {}
|
||||||
|
},
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.chainLlm",
|
||||||
|
"typeVersion": 1.9,
|
||||||
|
"position": [
|
||||||
|
1488,
|
||||||
|
400
|
||||||
|
],
|
||||||
|
"id": "7b32e064-bc9e-4336-b97d-835df22495d4",
|
||||||
|
"name": "Antigravity Wakeup G3Flash"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"promptType": "define",
|
||||||
|
"text": "Hello, what is today's date?",
|
||||||
|
"batching": {}
|
||||||
|
},
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.chainLlm",
|
||||||
|
"typeVersion": 1.9,
|
||||||
|
"position": [
|
||||||
|
1120,
|
||||||
|
400
|
||||||
|
],
|
||||||
|
"id": "7ccf1ef6-7fab-4193-bef5-09056f483e19",
|
||||||
|
"name": "Antigravity Wakeup G3Pro"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"connections": {
|
"connections": {
|
||||||
@@ -168,19 +275,9 @@
|
|||||||
"main": [
|
"main": [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"index": 0,
|
"node": "Firmware Wakeup",
|
||||||
"node": "SSH - Gemini Pro Ping",
|
"type": "main",
|
||||||
"type": "main"
|
"index": 0
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": 0,
|
|
||||||
"node": "SSH - Gemini Flash Ping",
|
|
||||||
"type": "main"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": 0,
|
|
||||||
"node": "SSH - Claude Ping",
|
|
||||||
"type": "main"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
@@ -189,19 +286,9 @@
|
|||||||
"main": [
|
"main": [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"index": 0,
|
"node": "Firmware Wakeup",
|
||||||
"node": "SSH - Gemini Pro Ping",
|
"type": "main",
|
||||||
"type": "main"
|
"index": 0
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": 0,
|
|
||||||
"node": "SSH - Gemini Flash Ping",
|
|
||||||
"type": "main"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": 0,
|
|
||||||
"node": "SSH - Claude Ping",
|
|
||||||
"type": "main"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
@@ -210,19 +297,9 @@
|
|||||||
"main": [
|
"main": [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"index": 0,
|
"node": "Firmware Wakeup",
|
||||||
"node": "SSH - Gemini Pro Ping",
|
"type": "main",
|
||||||
"type": "main"
|
"index": 0
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": 0,
|
|
||||||
"node": "SSH - Gemini Flash Ping",
|
|
||||||
"type": "main"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": 0,
|
|
||||||
"node": "SSH - Claude Ping",
|
|
||||||
"type": "main"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
@@ -237,6 +314,83 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"antigravity/gemini-3-flash-preview": {
|
||||||
|
"ai_languageModel": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Antigravity Wakeup G3Flash",
|
||||||
|
"type": "ai_languageModel",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Firmware Wakeup": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Antigravity Wakeup Claude",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"openai/gpt-5.2": {
|
||||||
|
"ai_languageModel": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Firmware Wakeup",
|
||||||
|
"type": "ai_languageModel",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"claude-sonnet-4.5": {
|
||||||
|
"ai_languageModel": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Antigravity Wakeup Claude",
|
||||||
|
"type": "ai_languageModel",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gemini-3-pro-preview": {
|
||||||
|
"ai_languageModel": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Antigravity Wakeup G3Pro",
|
||||||
|
"type": "ai_languageModel",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Antigravity Wakeup Claude": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Antigravity Wakeup G3Pro",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Antigravity Wakeup G3Pro": {
|
||||||
|
"main": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "Antigravity Wakeup G3Flash",
|
||||||
|
"type": "main",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
@@ -248,7 +402,7 @@
|
|||||||
"availableInMCP": false
|
"availableInMCP": false
|
||||||
},
|
},
|
||||||
"triggerCount": 4,
|
"triggerCount": 4,
|
||||||
"versionId": "19367657-60c0-4f22-9cdf-84508906970c",
|
"versionId": "de114a0a-4971-4f4d-9969-59f44015336a",
|
||||||
"owner": {
|
"owner": {
|
||||||
"type": "personal",
|
"type": "personal",
|
||||||
"projectId": "FeLO36wNUAcn61Wj",
|
"projectId": "FeLO36wNUAcn61Wj",
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user