{"id":"1","name":"Twitter notifications","nodes":[{"name":"Twitter","type":"n8n-nodes-base.twitter","position":[610,260],"parameters":{"operation":"search","searchText":"n8n_io","additionalFields":{"resultType":"recent"}},"credentials":{"twitterOAuth1Api":"Twitter"},"typeVersion":1,"id":"67d6959e-44e9-486e-9552-e441eb9df205","notes":"This twitter node performs automated tasks as part of the workflow."},{"name":"Cron","type":"n8n-nodes-base.cron","position":[410,260],"parameters":{"triggerTimes":{"item":[{"mode":"everyMinute"}]}},"typeVersion":1,"id":"9df9c0d6-56c0-463f-b063-9a88870f4654","notes":"This cron node performs automated tasks as part of the workflow."},{"name":"Function","type":"n8n-nodes-base.function","position":[940,260],"parameters":{"functionCode":"const new_items = [];\nconst data = this.getWorkflowStaticData('node');\n\ndata.ids = data.ids || [];\n\nfor (var i=0; i<items.length; i++) {\n  if (data.ids.includes(items[i].json.id)) {\n    break;\n  } else {\n    new_items.push({json: {id: items[i].json.id, url: items[i].json.url, tweet: items[i].json.tweet, username: items[i].json.username, photo: items[i].json.photo, name: items[i].json.name, color: items[i].json.color}});\n  }\n}\n\ndata.ids = items.map(item => item.json.id)\nreturn new_items;\n"},"typeVersion":1,"id":"d531361a-0925-4cff-b0f9-03dcb100d2c2","notes":"This function node performs automated tasks as part of the workflow."},{"name":"Set","type":"n8n-nodes-base.set","position":[780,260],"parameters":{"values":{"number":[{"name":"id","value":"={{$node[\"Twitter\"].json[\"id\"]}}"}],"string":[{"name":"url","value":"={{ $env.WEBHOOK_URL }}{{$node[\"Twitter\"].json[\"user\"][\"screen_name\"]}}/status/{{$node[\"Twitter\"].json[\"id_str\"]}}"},{"name":"tweet","value":"={{$node[\"Twitter\"].json[\"text\"]}}"},{"name":"username","value":"={{$node[\"Twitter\"].json[\"user\"][\"screen_name\"]}}"},{"name":"photo","value":"={{$node[\"Twitter\"].json[\"user\"][\"profile_image_url_https\"]}}"},{"name":"name","value":"={{$node[\"Twitter\"].json[\"user\"][\"name\"]}}"},{"name":"color","value":"={{$node[\"Twitter\"].json[\"user\"][\"profile_link_color\"]}}"}]},"options":{"dotNotation":true},"keepOnlySet":true},"typeVersion":1,"id":"a270d651-8c96-4998-b81f-7cbfb0cf95b1","notes":"This set node performs automated tasks as part of the workflow."},{"name":"Mattermost","type":"n8n-nodes-base.mattermost","position":[1110,260],"parameters":{"message":"={{$node[\"Function\"].json[\"url\"]}}","channelId":"c81pcft85byeipbp3nptbmicah","attachments":[{"text":"={{$node[\"Function\"].json[\"tweet\"]}}","color":"=#{{$node[\"Function\"].json[\"color\"]}}","author_icon":"={{$node[\"Function\"].json[\"photo\"]}}","author_link":"={{ $env.WEBHOOK_URL }}{{$node[\"Function\"].json[\"username\"]}}","author_name":"={{$node[\"Function\"].json[\"name\"]}} ({{$node[\"Function\"].json[\"username\"]}})"}],"otherOptions":{}},"credentials":{"mattermostApi":"Mattermost"},"typeVersion":1,"id":"135e98a7-f1ae-4859-a5ff-858ed6a663cf","notes":"This mattermost node performs automated tasks as part of the workflow."},{"id":"error-5af17458","name":"Error Handler","type":"n8n-nodes-base.stopAndError","typeVersion":1,"position":[1000,400],"parameters":{"message":"Workflow execution error","options":{}}}],"settings":{"executionOrder":"v1","saveManualExecutions":true,"callerPolicy":"workflowsFromSameOwner","errorWorkflow":null,"timezone":"UTC","executionTimeout":3600,"maxExecutions":1000,"retryOnFail":true,"retryCount":3,"retryDelay":1000},"connections":{},"description":"Automated workflow: Twitter notifications. This workflow processes data and performs automated tasks.","meta":{"instanceId":"workflow-0721817e","versionId":"1.0.0","createdAt":"2025-09-29T07:07:50.876461","updatedAt":"2025-09-29T07:07:50.876472","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"notes":"Excellent quality workflow: Twitter notifications. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}