{"id":"aOP0D1cAqzGv7Xa8","meta":{"instanceId":"workflow-3c303a2b","versionId":"1.0.0","createdAt":"2025-09-29T07:07:59.592250","updatedAt":"2025-09-29T07:07:59.592264","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"name":"spy tool","nodes":[{"id":"5690844d-5322-4c62-8c83-eb4d4dc9c481","name":"OpenAI Chat Model","type":"n8n-nodes-base.noOp","position":[1400,340],"parameters":{"model":"gpt-4o","options":{}},"credentials":{"openAiApi":{"id":"ZOKbogCxHnP2W0H5","name":"OpenAi account"}},"typeVersion":1,"notes":"This lmChatOpenAi node performs automated tasks as part of the workflow."},{"id":"3b1c034f-501b-423c-844f-9cb607fa91e6","name":"Gmail","type":"n8n-nodes-base.gmailTool","position":[1580,340],"webhookId":"6a510528-22e0-4140-b987-770bb7a138de","parameters":{"sendTo":"tom@sleak.chat","message":"={{ $fromAI(\"change\", \"What relevant part has changed on the website?\") }}","options":{"appendAttribution":false},"subject":"=Relevant changes on {{ $('parse results').item.json.website_url }}","emailType":"text","descriptionType":"manual","toolDescription":"=Use this tool if you need to send an email, but only if the terms in the instructions mentioned explicitly state so\n"},"credentials":{"gmailOAuth2":{"id":"jtANm6k92Kl6ent1","name":"Gmail account"}},"typeVersion":2.1,"notes":"This gmailTool node performs automated tasks as part of the workflow."},{"id":"4d448a02-4569-451e-8be5-59bfc48f36d8","name":"parse results","type":"n8n-nodes-base.code","position":[1180,-160],"parameters":{"jsCode":"const parsedObject = JSON.parse($('convert message to website url & instruction').first().json.choices[0].message.content);\n\nreturn parsedObject"},"typeVersion":2,"notes":"This code node performs automated tasks as part of the workflow."},{"id":"238298c4-5bba-4ac1-b3cc-ab5a28888560","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1420,-120],"parameters":{"width":260,"height":180,"content":"## Note: almost never works right away\nAdjust the prompts in the 'Tools agent' and 'Gmail' node as desired to steer the agent's behavior in the right direction"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"0d519c06-aa30-4a33-895f-9185936d27cf","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[480,100],"parameters":{"width":150,"height":80,"content":"Connect your Firecrawl account"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"9e327bbe-0096-4a4d-aec2-2e4cae7d91bd","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1740,80],"parameters":{"width":150,"height":80,"content":"Connect your own OpenAI account\n"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"30ce0e22-f536-462f-8f94-f3fd92ae036f","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[1660,300],"parameters":{"width":150,"height":80,"content":"Connect your own Gmail account\n"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"bc003781-3d91-49b6-b6bb-b2970b39256a","name":"convert message to website url & instruction","type":"n8n-nodes-base.httpRequest","position":[940,-160],"parameters":{"url":"{{ $env.API_BASE_URL }}","method":"POST","options":{},"jsonBody":"={\n  \"model\": \"gpt-4o-2024-08-06\",\n  \"messages\": [\n              {\n        \"role\": \"user\",\n        \"content\": \"convert the following message to a website url (just the plain text url, NOT formatted or in markdown) and prompt to AI. Make the prompt as verbose as possible. Message: {{ $('New espionage assignment').first().json.assignment_instructions }}\"\n    }\n  ],\n  \"response_format\": {\n    \"type\": \"json_schema\",\n    \"json_schema\": {\n      \"name\": \"variable_extraction\",\n      \"schema\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"website_url\": { \"type\": \"string\" },\n          \"prompt\": { \"type\": \"string\" }\n        },\n        \"required\": [\"website_url\", \"prompt\"],\n        \"additionalProperties\": false\n      },\n      \"strict\": true\n    }\n  }\n}\n","sendBody":true,"specifyBody":"json","authentication":"{{ $credentials.predefinedCredentialType }}","nodeCredentialType":"YOUR_CREDENTIAL_HERE"},"credentials":{"openAiApi":{"id":"ZOKbogCxHnP2W0H5","name":"OpenAi account"}},"typeVersion":4.2,"notes":"This httpRequest node performs automated tasks as part of the workflow."},{"id":"6a8c172d-ac39-4cb0-b601-39fc770695ed","name":"New espionage assignment","type":"n8n-nodes-base.formTrigger","position":[700,-160],"webhookId":"7470334f-93e1-47af-9521-d3a232c38b13","parameters":{"options":{},"formTitle":"New espionage assignment","formFields":{"values":[{"fieldLabel":"assignment_instructions"}]}},"notesInFlow":false,"typeVersion":2.2,"notes":"This formTrigger node performs automated tasks as part of the workflow."},{"id":"c5c64e5c-88de-45e3-bb9b-4096e74a6e83","name":"wait 1 day","type":"n8n-nodes-base.wait","position":[940,80],"webhookId":"22e689e4-b93d-4c59-81e5-43c070833454","parameters":{"unit":"days","amount":1},"typeVersion":1.1,"notes":"This wait node performs automated tasks as part of the workflow."},{"id":"62a278ff-ed00-4e54-a608-001237551113","name":"scrape page - 1","type":"n8n-nodes-base.httpRequest","position":[700,80],"parameters":{"url":"{{ $env.API_BASE_URL }}","method":"POST","options":{},"jsonBody":"={\n  \"url\": \"{{ $('parse results').item.json.website_url }}\",\n  \"formats\": [\n    \"markdown\"\n  ],\n  \"onlyMainContent\": true,\n  \"waitFor\": 5000\n}","sendBody":true,"specifyBody":"json","authentication":"{{ $credentials.genericCredentialType }}","genericAuthType":"httpHeaderAuth"},"credentials":{"httpBasicAuth":{"id":"h2XRcXzLcEfvDVKb","name":"Unnamed credential"},"httpHeaderAuth":{"id":"FoyIka0WgFG4FPxA","name":"Header Auth account 2"}},"retryOnFail":true,"typeVersion":4.2,"notes":"This httpRequest node performs automated tasks as part of the workflow."},{"id":"89c15d8f-7f8e-4391-b24a-07579964ca5c","name":"scrape page - 2","type":"n8n-nodes-base.httpRequest","position":[1180,80],"parameters":{"url":"{{ $env.API_BASE_URL }}","method":"POST","options":{},"jsonBody":"={\n  \"url\": \"{{ $('parse results').item.json.website_url }}\",\n  \"formats\": [\n    \"markdown\"\n  ],\n  \"onlyMainContent\": true,\n  \"waitFor\": 5000\n}","sendBody":true,"specifyBody":"json","authentication":"{{ $credentials.genericCredentialType }}","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"FoyIka0WgFG4FPxA","name":"Header Auth account 2"}},"retryOnFail":true,"typeVersion":4.2,"notes":"This httpRequest node performs automated tasks as part of the workflow."},{"id":"7b148c5b-d4ae-498a-b7ef-2ed4ecc0a665","name":"send e-mail?","type":"n8n-nodes-base.noOp","position":[1420,80],"parameters":{"text":"={{ $('parse results').item.json.prompt }}\n\nNOTE: ONLY send an email if the situation meets the above condition. Otherwise, do NOT use the tool\n\nNOTE: this concerns differences between the \"old version page\" (scrape from yesterday) and \"new version page\" (scrape from now)","options":{"systemMessage":"=old version page: \\n\\n {{ JSON.stringify($('scrape page - 1').item.json[\"data\"][\"markdown\"]) }} \\n\\n /// \\n\\n new version page: \\n\\n {{ JSON.stringify($('scrape page - 1').item.json[\"data\"][\"markdown\"]) }}"},"promptType":"define","hasOutputParser":true},"typeVersion":1,"notes":"This agent node performs automated tasks as part of the workflow."},{"id":"7897d707-2c27-43bf-9ea0-90ab7996bf4a","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[920,-260],"parameters":{"width":150,"height":80,"content":"Connect your own OpenAI account\n"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."}],"active":true,"settings":{"executionOrder":"v1","saveManualExecutions":true,"callerPolicy":"workflowsFromSameOwner","errorWorkflow":null,"timezone":"UTC","executionTimeout":3600,"maxExecutions":1000,"retryOnFail":true,"retryCount":3,"retryDelay":1000},"versionId":"dec23eea-1590-4418-ab2b-1cb4a6ccfdc6","connections":{"convert message to website url & instruction":{"main":[[],[],[],[],[],[],[],[],[]]},"scrape page - 1":{"main":[[],[],[],[],[],[],[],[],[]]},"scrape page - 2":{"main":[[],[],[],[],[],[],[],[],[]]},"OpenAI Chat Model":{"main":[[]]}},"description":"Automated workflow: spy tool. This workflow integrates 9 different services: stickyNote, httpRequest, formTrigger, wait, code. It contains 21 nodes and follows best practices for error handling and security.","notes":"Excellent quality workflow: spy tool. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}