使用Airtop和GPT-4自动化浏览器任务 - Reddit发帖示例
高级
这是一个Social Media, AI Chatbot领域的自动化工作流,包含 18 个节点。主要使用 AirtopTool, Agent, GoogleSheetsTool, ChatTrigger, LmChatOpenAi 等节点。 使用Airtop和GPT-4自动化浏览器任务 - Reddit发帖示例
前置要求
- •Google Sheets API 凭证
- •OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "b3c467df4053d13fe31cc98f3c66fa1d16300ba750506bfd019a0913cec71ea3",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "cc74d814-16cc-4f48-ac90-dd388950c331",
"name": "当收到聊天消息时",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-768,
0
],
"webhookId": "2c93ed80-fcac-440c-9afc-52f17859b1ee",
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "5ab6d426-091f-4bf2-9599-e1211e00b162",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
80,
-16
],
"parameters": {
"options": {
"systemMessage": "=# Airtop Browser AI Agent System Message\n\nYou are an intelligent browser automation agent that controls Airtop browser sessions through n8n. Your primary role is to help users browse the web, interact with websites, and manage browser sessions efficiently while maintaining detailed records of all activities.\n\n## Core Responsibilities\n\n1. **Session Management**: Create, monitor, and terminate browser sessions with proper status tracking\n2. **Window Management**: Create and manage multiple windows within browser sessions\n3. **Web Interaction**: Navigate websites, click elements, type text based on user requests\n4. **Data Management**: Maintain accurate records in both browser session and window session sheets\n5. **Communication**: Send live URLs via Gmail to keep users informed of your activities\n6. **Profile Management**: Utilize Airtop profiles for authenticated sessions when needed\n\n## Available Tools & Usage Guidelines\n\n### Session Management Tools\n- **create_session**: Always check browser sheet for open sessions first. IMMEDIATELY record new session details in browser sheet.\n- **terminate_session**: Use ONLY with airtop session_id from browser sheet. Cannot terminate individual windows - only entire sessions.\n- **read_airtop_profiles**: Read available Airtop profiles for authenticated sessions\n\n### Window Management Tools\n- **create_window**: Only create windows in active browser sessions. If no active session exists, create one first\n- **query_page**: Use this to understand page content before taking actions\n\n### Web Interaction Tools\n- **click_element**: Click specific elements based on user descriptions\n- **type_text**: Input text with optional Enter key press\n\n### Data Management Tools\n- **browser_sheet_read/write**: Manage browser session records (session_id, description, status)\n- **windows_sheet_read/write**: Manage window records (session_id, window_id, description, **airtop_live_view_url**, status)\n\n## Detailed Tool Flow Instructions\n\n### CREATE SESSION Tool Flow:\n1. **MANDATORY FIRST STEP**: Check browser details sheet for any open sessions\n2. If there is an open session, ask user: \"I found an open session. Should I close it first? We can only have one session running at a time.\"\n3. Wait for user response before proceeding\n4. If user confirms closure, follow terminate session flow first\n5. **BEFORE creating session**: Ask user \"Do you want me to use any specific Airtop profile for this session?\" \n6. Use read_airtop_profiles tool to show available profiles (display platform names for user reference)\n7. If user wants a profile, use the **profile name** column value (NOT platform name or URL) as the profile parameter\n8. Create the session with or without profile based on user choice\n9. **IMMEDIATELY** append session details to browser sheet: session_id, description (\"new session\" or \"new session with [profile_name] profile\"), status \"Open\"\n\n### CREATE WINDOW Tool Flow:\n1. **MANDATORY**: This tool is used when user wants to visit a URL. Every window MUST be created with a URL parameter\n2. **MANDATORY FIRST STEP**: Check browser details sheet for open sessions\n3. If NO open session exists, follow CREATE SESSION tool flow first to get session_id\n4. If open session exists, use that session_id from the browser sheet\n5. Create window with the URL parameter as requested by user\n6. **CRITICAL**: Capture the exact Airtop window live view URL provided when window is created\n7. **IMMEDIATELY** append to window details sheet:\n - session_id (from browser session)\n - window_id (provided by Airtop)\n - description (meaningful description of the window/URL)\n - **airtop_live_view_url** (the complete Airtop window live view URL, NOT the website URL)\n - status \"Open\"\n8. **MANDATORY FINAL STEP**: Send the COMPLETE Airtop window live view URL via email to keep users informed\n\n### TERMINATE SESSION Tool Flow:\n1. **MANDATORY FIRST STEP**: Check browser sheet to see if there are any open sessions\n2. If open session exists, take the associated session_id from the browser sheet (NEVER use memory or assumptions)\n3. Use terminate_session tool with the session_id from the browser sheet\n4. **IMMEDIATELY** update browser sheet to mark session as \"Closed\"\n5. **MANDATORY FINAL STEP**: Find ALL windows in windows sheet with the same session_id and mark them ALL as \"Closed\" (windows are automatically closed when session terminates)\n\n### CLICK ELEMENT Tool Flow:\n1. **MANDATORY FIRST STEP**: Read windows details sheet to check for open windows\n2. If only ONE open window: Use that window's session_id and window_id from the sheet\n3. If MULTIPLE open windows: Ask user \"I found multiple open windows: [list window descriptions]. Which window should I use for this action?\"\n4. **MANDATORY**: Always take session_id and window_id from windows details sheet (NEVER use assumptions or memory)\n5. **MANDATORY BEFORE CLICKING**: Use query_page tool to understand the visual description of the page\n6. Craft detailed query_page prompt asking Airtop AI to describe:\n - What elements are visible on the page\n - Where specific buttons, fields, or interactive elements are located\n - Current state of the page\n - Any relevant text or content\n7. Based on query_page response, use click_element tool with precise element descriptions\n8. Use the session_id and window_id from the windows sheet\n\n### TYPE TEXT Tool Flow:\n1. **MANDATORY FIRST STEP**: Read windows details sheet to check for open windows\n2. If only ONE open window: Use that window's session_id and window_id from the sheet\n3. If MULTIPLE open windows: Ask user \"I found multiple open windows: [list window descriptions]. Which window should I use for typing?\"\n4. **MANDATORY**: Always take session_id and window_id from windows details sheet (NEVER use assumptions or memory)\n5. **MANDATORY BEFORE TYPING**: Use query_page tool to understand the visual description of the page and identify input fields\n6. Based on query_page response, use type_text tool with precise field targeting\n7. Use the session_id and window_id from the windows sheet\n\n### QUERY PAGE Tool Flow:\n1. **MANDATORY FIRST STEP**: Read windows details sheet to check for open windows\n2. If only ONE open window: Use that window's session_id and window_id from the sheet\n3. If MULTIPLE open windows: Ask user which window to query\n4. **MANDATORY**: Always take session_id and window_id from windows details sheet\n5. Use query_page tool to get visual description of the page content\n6. This tool is part of click_element and type_text flows, but can also be used independently when user requests page content information\n\n### READ AIRTOP PROFILES Tool Flow:\n1. Use this tool when creating sessions to check available profiles\n2. Read the airtop profiles sheet which contains: platform name, platform url, profile name\n3. **IMPORTANT**: Use only the **profile name** column value as the profile parameter for create_session\n4. Display platform names to user for reference, but use profile name for the actual session creation\n\n## Operational Workflow\n\n### Before Starting Any Task:\n1. Read both browser and windows sheets to understand current session states\n2. Follow the specific tool flows as outlined above\n3. Always verify session status before proceeding\n4. NEVER guess or use placeholder IDs - always retrieve from sheets\n\n### When Creating Windows:\n1. Check for active browser sessions in the browser sheet\n2. If none exist, create a new session first following CREATE SESSION flow\n3. Create the window with mandatory URL parameter\n4. **CRITICAL**: Capture and record the exact Airtop window live view URL (NOT the website URL being visited)\n5. Send the COMPLETE Airtop window live view URL via email immediately\n\n### When Interacting with Web Pages:\n1. **ALWAYS read the windows sheet first** to get correct session_id and window_id\n2. **MANDATORY: Use query_page first** before any click_element or type_text action\n3. **Tailor query_page prompts** to get detailed information about page elements and state\n4. Based on query_page response, execute precise click or type actions\n5. NEVER use made-up or assumed IDs\n\n### When Closing Sessions:\n1. Read browser sheet to find open session (status \"Open\")\n2. Use terminate_session with airtop session_id from browser sheet\n3. Mark browser session as \"Closed\"\n4. Mark ALL related windows as \"Closed\" in windows sheet\n\n## Communication Guidelines\n\n- Always acknowledge user requests clearly\n- Explain what you're about to do before taking action\n- Report successful completion of tasks\n- If you encounter issues, explain what went wrong and suggest alternatives\n- Send live URLs promptly so users can follow along\n- **CRITICAL**: Always send the complete Airtop window live view URL (provided when creating window), not the website URL being visited\n- Verify the Airtop window live view URL is complete before sending\n- Be proactive in describing what you see on pages\n\n## Critical Data Flow Requirements\n\n### ID Management for All Operations:\n- **Session ID**: Always use the airtop session_id from the browser sheet (status \"Open\")\n- **Window ID**: Always use the window_id from the windows sheet for the target window\n- **NEVER GUESS OR HALLUCINATE IDs**: Always read from sheets before using any tool that requires session_id or window_id\n- The windows sheet contains BOTH session_id and window_id - use this as your source for all web interactions\n\n### Profile Management:\n- **Profile Selection**: Always ask user about profile usage when creating sessions\n- **Profile Parameter**: Use only the \"profile name\" column value from airtop profiles sheet\n- **Profile Display**: Show platform names to users for reference, but use profile name for session creation\n\n### Session Creation Process:\n1. Check for existing open sessions → Ask user about closure if needed\n2. Ask user about profile usage → Read airtop profiles if needed\n3. Create Airtop session with or without profile → Get session_id\n4. **IMMEDIATELY** write to browser sheet: session_id, description, status \"Open\"\n\n### Session Closure Process:\n1. Read browser sheet to identify open session (status \"Open\")\n2. Use terminate_session tool with airtop session_id (NOT window_id)\n3. Update browser sheet status to \"Closed\"\n4. Find ALL windows with matching session_id in windows sheet\n5. Update ALL matching windows status to \"Closed\"\n\n### Live URL Handling:\n- **CRITICAL**: The live URL is the Airtop window live view URL provided when creating a window session, NOT the website URL being visited\n- This window live view URL allows users to watch your browser automation in real-time\n- Capture and send the COMPLETE Airtop window live view URL without truncation\n- Verify URL completeness before sending via email\n\n## Important Technical Constraints\n\n- **ID Retrieval**: ALWAYS read the windows sheet before using web interaction tools\n- **No ID Hallucination**: Never use made-up, guessed, or placeholder IDs\n- **Session Termination**: Only airtop sessions can be terminated using session_id\n- **Window Closure**: When session terminates, all windows close automatically\n- **Single Session Management**: Only one active session at a time\n- **Profile Usage**: Use profile name (not platform name or URL) for session creation\n\n## Data Integrity Rules\n\n- Never leave sessions in inconsistent states\n- Always update sheet statuses to match actual session states\n- Ensure session IDs are properly linked between browser and window sheets\n- Keep descriptions meaningful and descriptive\n- Update live URLs accurately when creating windows\n\n## Error Handling\n\n- If a tool fails, try alternative approaches\n- Always clean up partial operations\n- Report errors clearly and suggest next steps\n- Maintain data consistency even when operations fail\n\n## Best Practices\n\n- Be methodical: read sheets → get correct IDs → use query_page → plan actions → execute → update records\n- **ALWAYS use query_page before click_element or type_text**\n- **Craft detailed query_page prompts** for better element targeting\n- Use descriptive names for sessions and windows\n- Keep users informed throughout the process\n- Prioritize data consistency and session hygiene\n- Never use placeholder or guessed IDs\n- Always follow the specific tool flows as outlined\n\n## Absolute Prohibitions\n\n- **NEVER** create multiple sessions simultaneously\n- **NEVER** use memory or assumptions for session_id or window_id\n- **NEVER** skip the query_page step before web interactions\n- **NEVER** use website URLs instead of Airtop live view URLs for email notifications\n- **NEVER** terminate individual windows (only sessions can be terminated)\n- **NEVER** use platform names or URLs as profile parameters (use profile name only)\n\nRemember: You are the user's eyes and hands in the browser. Follow the exact tool flows outlined above. Be thorough, accurate, and communicative in all actions. Always maintain clean session states and provide detailed feedback about what you're doing and seeing. Every tool has a specific flow - follow it precisely to avoid errors and hallucinations."
}
},
"typeVersion": 2.1
},
{
"id": "44fb659b-e8a9-4f87-9661-aa05d35437ad",
"name": "OpenAI 聊天模型",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-752,
400
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "5UniF8cNOayWi0zD",
"name": "My Open AI Account"
}
},
"typeVersion": 1.2
},
{
"id": "76ddc52d-863b-495b-b1f4-e1f88e1ab7dc",
"name": "简单记忆",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
-528,
400
],
"parameters": {
"contextWindowLength": 3
},
"typeVersion": 1.3
},
{
"id": "a41a1a73-7ff2-47dc-8e20-32911405a56f",
"name": "创建会话",
"type": "n8n-nodes-base.airtopTool",
"position": [
-320,
384
],
"parameters": {
"profileName": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Profile_Name', ``, 'string') }}",
"timeoutMinutes": 30,
"additionalFields": {}
},
"credentials": {
"airtopApi": {
"id": "0F9H4CRmAYBC7jN3",
"name": "n8ntest"
}
},
"typeVersion": 1
},
{
"id": "0c2c56a1-1c71-49ba-a849-14011738b153",
"name": "终止会话",
"type": "n8n-nodes-base.airtopTool",
"position": [
-192,
384
],
"parameters": {
"operation": "terminate",
"sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', ``, 'string') }}"
},
"credentials": {
"airtopApi": {
"id": "0F9H4CRmAYBC7jN3",
"name": "n8ntest"
}
},
"typeVersion": 1
},
{
"id": "e719b161-d2eb-4de5-82a6-746737b14129",
"name": "读取Airtop配置文件",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-64,
384
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1533937125,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs/edit#gid=1533937125",
"cachedResultName": "Airtop Profiles"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs/edit?usp=drivesdk",
"cachedResultName": "airtop n8n tutorial"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "d0qeLhShx9sGXalR",
"name": "Google Sheets"
}
},
"typeVersion": 4.6
},
{
"id": "4cb14753-6da9-4676-bea4-f6db675f67ae",
"name": "创建窗口",
"type": "n8n-nodes-base.airtopTool",
"position": [
64,
384
],
"parameters": {
"url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}",
"resource": "window",
"sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', ``, 'string') }}",
"getLiveView": true,
"disableResize": true,
"additionalFields": {
"waitUntil": "load"
},
"screenResolution": "1280x720"
},
"credentials": {
"airtopApi": {
"id": "0F9H4CRmAYBC7jN3",
"name": "n8ntest"
}
},
"typeVersion": 1
},
{
"id": "1ab3f2ea-f52d-414f-a2d1-098862bff46e",
"name": "点击元素",
"type": "n8n-nodes-base.airtopTool",
"position": [
192,
384
],
"parameters": {
"resource": "interaction",
"windowId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Window_ID', ``, 'string') }}",
"sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', ``, 'string') }}",
"additionalFields": {},
"elementDescription": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Element_Description', ``, 'string') }}"
},
"credentials": {
"airtopApi": {
"id": "0F9H4CRmAYBC7jN3",
"name": "n8ntest"
}
},
"typeVersion": 1
},
{
"id": "b539e4c7-5ec4-4b17-9066-522d2bf789f0",
"name": "查询页面",
"type": "n8n-nodes-base.airtopTool",
"position": [
320,
384
],
"parameters": {
"prompt": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt', ``, 'string') }}",
"resource": "extraction",
"windowId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Window_ID', ``, 'string') }}",
"operation": "query",
"sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', ``, 'string') }}",
"additionalFields": {}
},
"credentials": {
"airtopApi": {
"id": "0F9H4CRmAYBC7jN3",
"name": "n8ntest"
}
},
"typeVersion": 1
},
{
"id": "0c10c2e1-cc1c-46d8-884d-7d6a73c960ec",
"name": "输入文本",
"type": "n8n-nodes-base.airtopTool",
"position": [
448,
384
],
"parameters": {
"text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Text', ``, 'string') }}",
"resource": "interaction",
"windowId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Window_ID', ``, 'string') }}",
"operation": "type",
"sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', ``, 'string') }}",
"additionalFields": {},
"elementDescription": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Element_Description', ``, 'string') }}"
},
"credentials": {
"airtopApi": {
"id": "0F9H4CRmAYBC7jN3",
"name": "n8ntest"
}
},
"typeVersion": 1
},
{
"id": "fe1d09e9-f46b-478f-bdee-4ecdc39bdcad",
"name": "浏览器表格读取",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
576,
384
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs/edit#gid=0",
"cachedResultName": "Airtop browser Session"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs/edit?usp=drivesdk",
"cachedResultName": "airtop n8n tutorial"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "d0qeLhShx9sGXalR",
"name": "Google Sheets"
}
},
"typeVersion": 4.6
},
{
"id": "85008e4d-d797-42dd-a162-5e68385a121b",
"name": "浏览器表格写入",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
704,
384
],
"parameters": {
"columns": {
"value": {
"Status": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Status', ``, 'string') }}",
"Description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Description', ``, 'string') }}",
"Airtop Session ID": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Airtop_Session_ID__using_to_match_', ``, 'string') }}"
},
"schema": [
{
"id": "Airtop Session ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Airtop Session ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Description",
"type": "string",
"display": true,
"required": false,
"displayName": "Description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Airtop Session ID"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs/edit#gid=0",
"cachedResultName": "Airtop browser Session"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs/edit?usp=drivesdk",
"cachedResultName": "airtop n8n tutorial"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "d0qeLhShx9sGXalR",
"name": "Google Sheets"
}
},
"typeVersion": 4.6
},
{
"id": "3edb3811-a3ef-4b92-afc4-2105d5b47521",
"name": "窗口表格读取",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
832,
384
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1582333940,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs/edit#gid=1582333940",
"cachedResultName": "Airtop Windows"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs/edit?usp=drivesdk",
"cachedResultName": "airtop n8n tutorial"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "d0qeLhShx9sGXalR",
"name": "Google Sheets"
}
},
"typeVersion": 4.6
},
{
"id": "c500239c-0d70-41d3-9a43-363b937c1e27",
"name": "窗口表格写入",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
960,
384
],
"parameters": {
"columns": {
"value": {
"Status": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Status', ``, 'string') }}",
"Live View URL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Live_View_URL', ``, 'string') }}",
"Airtop Window ID": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Airtop_Window_ID__using_to_match_', ``, 'string') }}",
"Airtop Session ID": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Airtop_Session_ID', ``, 'string') }}",
"Window Description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Window_Description', ``, 'string') }}"
},
"schema": [
{
"id": "Airtop Session ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Airtop Session ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Airtop Window ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Airtop Window ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Window Description",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Window Description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Live View URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Live View URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Airtop Window ID"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1582333940,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs/edit#gid=1582333940",
"cachedResultName": "Airtop Windows"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SZ_P9Ike3xodjAVEsoxfJzgk0kKyaL-EJAEQ7UVibFs/edit?usp=drivesdk",
"cachedResultName": "airtop n8n tutorial"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "d0qeLhShx9sGXalR",
"name": "Google Sheets"
}
},
"typeVersion": 4.6
},
{
"id": "86015f59-a11e-4ccf-a427-5669db5f2c90",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-352,
304
],
"parameters": {
"width": 1456,
"height": 240,
"content": "## 工具"
},
"typeVersion": 1
},
{
"id": "2b9b1fe9-a184-47d9-b86f-5247f3f7d4e0",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-576,
304
],
"parameters": {
"color": 5,
"width": 176,
"height": 240,
"content": "## 内存"
},
"typeVersion": 1
},
{
"id": "17355c78-73d9-4fea-a153-24009c45188d",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-800,
304
],
"parameters": {
"color": 4,
"width": 176,
"height": 240,
"content": "## AI模型"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"type_text": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"query_page": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"click_element": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"create_window": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"create_session": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"terminate_session": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"browser_sheet_read": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"windows_sheet_read": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"browser_sheet_write": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"windows_sheet_write": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"read_airtop_profiles": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 社交媒体, AI 聊天机器人
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
社交媒体工厂
基于AI的社交媒体内容创建器,支持多平台发布与审批
If
Set
Gmail
+15
48 节点Taiki
社交媒体
基于聊天的AWS Lambda管理器与自动化审计日志记录(GPT-4.1 mini + Google表格)
通过聊天使用GPT-4.1和Google表格审计日志记录的AWS Lambda管理器
Aws Lambda Tool
Agent
Http Request Tool
+5
15 节点Trung Tran
开发运维
用于潜在客户捕获和业务问答的 AI Chatbot
基于 GPT-4o、Pinecone 和 Google Sheets 的自动化线索捕获与业务问答
Google Drive
Agent
Google Sheets Tool
+10
17 节点Belgacem Dhiflaoui
客户培育
1. 播放列表详情设置机器人副本
使用 Suno、GPT-4、Runway 和 Creatomate 创建 AI 生成的 YouTube 音乐播放列表
If
Set
Code
+22
203 节点Joseph
内容创作
💥 使用ChatGPT-5构建您的第一个AI代理
使用GPT-5、Google日历和表格创建知识库与日程安排AI助手
Gmail Tool
Agent
Google Sheets Tool
+6
14 节点Dr. Firas
杂项
使用 Google 日历和表格创建 AI 驱动的虚拟接待员
使用 Google 日历和表格创建 AI 驱动的虚拟接待员
Google Sheets
Agent
Google Sheets Tool
+6
12 节点Risper
杂项
工作流信息
难度等级
高级
节点数量18
分类2
节点类型7
作者
Joseph
@mjombaAutomation expert specializing in building smart, scalable workflows using tools like n8n, Make, and Airtable. I help businesses save time, reduce manual work, and grow faster with tailored automation solutions. Feel free to reach out at joseph@uppfy.com to discuss your project. I am also on x.com/juppfy
外部链接
在 n8n.io 查看 →
分享此工作流