This workflow corresponds to n8n.io template #4054 — we link there as the canonical source.
This workflow follows the Execute Workflow Trigger → Form Trigger recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "62A1O15JXFJXEhYH",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "X - Response in thread",
"tags": [],
"nodes": [
{
"id": "87c5b743-acfe-4af6-8f35-2166a3e688cc",
"name": "When Executed by Another Workflow",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-260,
-280
],
"parameters": {
"workflowInputs": {
"values": [
{
"name": "airtop_profile"
},
{
"name": "thread_url"
},
{
"name": "reply_text"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "84aecc2b-8edc-4488-b26c-113f50e86f0d",
"name": "Session",
"type": "n8n-nodes-base.airtop",
"position": [
180,
-180
],
"parameters": {
"profileName": "={{ $('Parameters').item.json.airtop_profile }}"
},
"credentials": {
"airtopApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "9a5eb1d6-9a68-43ce-bd7c-a279ab6c12db",
"name": "Window",
"type": "n8n-nodes-base.airtop",
"position": [
400,
-280
],
"parameters": {
"url": "={{ $('Parameters').item.json.thread_url }}",
"resource": "window",
"sessionId": "={{ $('Session').item.json.sessionId }}",
"getLiveView": true,
"disableResize": true,
"additionalFields": {
"waitUntil": "complete"
},
"screenResolution": "1300x100"
},
"credentials": {
"airtopApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "1e6bada8-3db1-488f-bacd-e1e6727099ef",
"name": "Type response",
"type": "n8n-nodes-base.airtop",
"position": [
840,
-280
],
"parameters": {
"text": "={{ $('Parameters').item.json.reply_text }}",
"resource": "interaction",
"windowId": "={{ $('Window').item.json.data.windowId }}",
"operation": "type",
"sessionId": "={{ $('Session').item.json.sessionId }}",
"additionalFields": {
"visualScope": "scan"
},
"elementDescription": "The input field labeled \"Post your reply\" located directly next to the \"Reply\" button"
},
"credentials": {
"airtopApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "406eb773-9f71-4adc-89d1-47f7e4add4ee",
"name": "Wait 8 secs",
"type": "n8n-nodes-base.wait",
"position": [
620,
-280
],
"parameters": {
"amount": 8
},
"typeVersion": 1.1
},
{
"id": "136d7419-9445-481c-9d58-937eccdf8bc6",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
-260,
-80
],
"parameters": {
"options": {},
"formTitle": "Reply to Thread",
"formFields": {
"values": [
{
"fieldLabel": "airtop_profile",
"requiredField": true
},
{
"fieldLabel": "thread_url",
"requiredField": true
},
{
"fieldLabel": "reply_text",
"requiredField": true
}
]
}
},
"typeVersion": 2.2
},
{
"id": "dcdb51f4-2161-4bb6-b56b-4b901ccd7b37",
"name": "Parameters",
"type": "n8n-nodes-base.set",
"position": [
-40,
-180
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "3069dadb-7312-4a34-bfee-cbc921893b8c",
"name": "airtop_profile",
"type": "string",
"value": "={{ $json.airtop_profile }}"
},
{
"id": "22160dd8-ac64-4f95-b946-0d0095607ccd",
"name": "thread_url",
"type": "string",
"value": "={{ $json.thread_url }}"
},
{
"id": "7bced294-83ff-40c7-ab6a-89c5ed759643",
"name": "reply_text",
"type": "string",
"value": "={{ $json.reply_text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "80652bee-1a09-4402-8aaf-61a32b78a4e8",
"name": "Click Reply button",
"type": "n8n-nodes-base.airtop",
"position": [
1280,
-280
],
"parameters": {
"resource": "interaction",
"windowId": "={{ $('Window').item.json.windowId }}",
"sessionId": "={{ $('Session').item.json.sessionId }}",
"additionalFields": {
"visualScope": "page"
},
"elementDescription": "Gray rounded button \"Reply\" located directly below the main tweet"
},
"credentials": {
"airtopApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "b23a93df-c297-46b7-b926-21e35966c4ea",
"name": "Terminate session",
"type": "n8n-nodes-base.airtop",
"position": [
400,
-80
],
"parameters": {
"operation": "terminate"
},
"credentials": {
"airtopApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "6696dd4b-a13c-4104-9dcb-5e56919e25db",
"name": "Post-action screenshot",
"type": "n8n-nodes-base.airtop",
"position": [
1060,
-280
],
"parameters": {
"resource": "window",
"operation": "takeScreenshot"
},
"credentials": {
"airtopApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "2b6bac96-0f02-4e55-ac54-0cf78e211cd7",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1000,
-540
],
"parameters": {
"width": 660,
"height": 800,
"content": "README\n# Automating X Post Responses\n\n## Use Case\nAutomatically responding to X (formerly Twitter) posts can help you engage with potential customers at scale, saving time while maintaining a personal touch.\n\n## What This Automation Does\nThis automation replies to specified X posts using the following input parameters:\n\n- `airtop_profile`: The name of your [Airtop Profile](https://portal.airtop.ai/browser-profiles) connected to X.\n- `thread_url`: The URL of the X post to reply to. [Example](https://x.com/thepatwalls/status/1921932138401726866)\n- `reply_text`: The message you want to post as a reply.\n\n## How It Works\n1. Creates a browser session using Airtop.\n2. Navigates to the specified X post.\n3. Types and submits the reply text.\n\n## Setup Requirements\n1. [Airtop API Key](https://portal.airtop.ai/api-keys) \u2014 free to generate.\n2. An [Airtop Profile](https://portal.airtop.ai/browser-profiles) connected to X (requires one-time login).\n\n## Next Steps\n- **Combine with X Monitoring**: Use this with the X monitoring automation to create a fully automated engagement pipeline.\n- **Extend to Other Platforms**: Adapt the automation for use on LinkedIn, Reddit, or any web community.\n\n\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "00e92561-05c3-4ba2-a34f-8b042f71bfb1",
"connections": {
"Window": {
"main": [
[
{
"node": "Wait 8 secs",
"type": "main",
"index": 0
}
]
]
},
"Session": {
"main": [
[
{
"node": "Window",
"type": "main",
"index": 0
},
{
"node": "Terminate session",
"type": "main",
"index": 0
}
]
]
},
"Parameters": {
"main": [
[
{
"node": "Session",
"type": "main",
"index": 0
}
]
]
},
"Wait 8 secs": {
"main": [
[
{
"node": "Type response",
"type": "main",
"index": 0
}
]
]
},
"Type response": {
"main": [
[
{
"node": "Post-action screenshot",
"type": "main",
"index": 0
}
]
]
},
"Click Reply button": {
"main": [
[]
]
},
"On form submission": {
"main": [
[
{
"node": "Parameters",
"type": "main",
"index": 0
}
]
]
},
"Post-action screenshot": {
"main": [
[
{
"node": "Click Reply button",
"type": "main",
"index": 0
}
]
]
},
"When Executed by Another Workflow": {
"main": [
[
{
"node": "Parameters",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
airtopApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automatically responding to X (formerly Twitter) posts can help you engage with potential customers at scale, saving time while maintaining a personal touch.
Source: https://n8n.io/workflows/4054/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Post on X. Uses airtop, executeWorkflowTrigger, stickyNote, formTrigger. Event-driven trigger; 9 nodes.
Seamlessly automate posting to X using Airtop and Make.
This automation scores companies based on their LinkedIn profile using custom Ideal Customer Profile (ICP) criteria. It’s ideal for qualifying B2B leads and prioritizing outreach based on fit.
Post on X. Uses airtop, executeWorkflowTrigger, formTrigger, stopAndError. Event-driven trigger; 10 nodes.
Engaging with conversations on X (formerly Twitter) is critical for brands and individuals monitoring sentiment, leads, or emerging trends. Manually collecting comments is time-consuming—this automati