{"id":"1","name":"TwitterWorkflow","nodes":[{"name":"On clicking 'execute'","type":"n8n-nodes-base.manualTrigger","disabled":true,"position":[400,850],"parameters":{},"typeVersion":1,"id":"7770b446-671f-40a2-ad0e-88f9228896b1","notes":"This manualTrigger node performs automated tasks as part of the workflow."},{"name":"Filter Tweet Data","type":"n8n-nodes-base.set","position":[680,300],"parameters":{"values":{"string":[{"name":"Tweet","value":"={{$node[\"n8n.io mentions\"].json[\"text\"]}}"},{"name":"Tweet ID","value":"={{$node[\"n8n.io mentions\"].json[\"id\"]}}"},{"name":"Tweet URL","value":"={{ $env.WEBHOOK_URL }}{{$node[\"n8n.io mentions\"].json[\"user\"][\"screen_name\"]}}/status/{{$node[\"n8n.io mentions\"].json[\"id_str\"]}}"}]},"options":{},"keepOnlySet":true},"typeVersion":1,"id":"d072d51c-5fdc-4518-ab32-bde1456d6049","notes":"This set node performs automated tasks as part of the workflow."},{"name":"Only get new tweets","type":"n8n-nodes-base.function","position":[910,300],"parameters":{"functionCode":"const staticData = getWorkflowStaticData('global');\nconst newTweetIds = items.map(item => item.json[\"Tweet ID\"]);\nconst oldTweetIds = staticData.oldTweetIds; \n\nif (!oldTweetIds) {\n  staticData.oldTweetIds = newTweetIds;\n  return items;\n}\n\n\nconst actualNewTweetIds = newTweetIds.filter((id) => !oldTweetIds.includes(id));\nconst actualNewTweets = items.filter((data) => actualNewTweetIds.includes(data.json['Tweet ID']));\nstaticData.oldTweetIds = [...actualNewTweetIds, ...oldTweetIds];\n\nreturn actualNewTweets;\n"},"typeVersion":1,"id":"a9ff92fc-c971-4b21-8717-3f2d07cd96a1","notes":"This function node performs automated tasks as part of the workflow."},{"name":"n8n.io mentions","type":"n8n-nodes-base.twitter","position":[480,300],"parameters":{"operation":"search","searchText":"@n8n_io","additionalFields":{}},"credentials":{"twitterOAuth1Api":"Twitter Credentials"},"typeVersion":1,"id":"e0773949-f15a-432a-a852-b1b7330afbfd","notes":"This twitter node performs automated tasks as part of the workflow."},{"name":"RocketChat","type":"n8n-nodes-base.rocketchat","position":[1150,300],"parameters":{"text":"=New Mention!: {{$node[\"Filter Tweet Data\"].json[\"Tweet\"]}}.\nSee it here: {{$node[\"Only get new tweets\"].json[\"Tweet URL\"]}}","channel":"general","options":{},"jsonParameters":true},"credentials":{"rocketchatApi":"Rocket Chat API"},"typeVersion":1,"id":"42f96e43-2898-4b2c-961f-031048c32833","notes":"This rocketchat node performs automated tasks as part of the workflow."},{"name":"Cron","type":"n8n-nodes-base.cron","position":[270,300],"parameters":{"triggerTimes":{"item":[{"mode":"everyX","unit":"minutes","value":1}]}},"typeVersion":1,"id":"9325bf7d-cd71-420c-a139-850779d72660","notes":"This cron node performs automated tasks as part of the workflow."},{"id":"error-ffbfefc1","name":"Error Handler","type":"n8n-nodes-base.stopAndError","typeVersion":1,"position":[1000,400],"parameters":{"message":"Workflow execution error","options":{}}}],"active":false,"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: TwitterWorkflow. This workflow processes data and performs automated tasks.","meta":{"instanceId":"workflow-23e78fd1","versionId":"1.0.0","createdAt":"2025-09-29T07:07:48.909017","updatedAt":"2025-09-29T07:07:48.909034","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"notes":"Excellent quality workflow: TwitterWorkflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}