트위터 자동 좋아요(프로필 게시물 추출기) - 크리에이터 센터
이것은Social Media분야의자동화 워크플로우로, 37개의 노드를 포함합니다.주로 If, Set, Code, Wait, HttpRequest 등의 노드를 사용하며. Phantombuster와 SharePoint AI를 사용하여 선택한 프로필의 트윗에 자동으로 좋아요를 누르기
- •대상 API의 인증 정보가 필요할 수 있음
- •OpenAI API Key
사용된 노드 (37)
카테고리
{
"id": "7vlFEfwMDxHgN4T5",
"meta": {
"instanceId": "2cf742429c2e3ee4e5a20069d3d8a75208519303b864f026a79464efa726bd95",
"templateCredsSetupCompleted": true
},
"name": "Twitter Auto Liking (Profile Post Extractor) - Creators Hub",
"tags": [
{
"id": "Tl9QVfvwkdFQyffg",
"name": "n8n Creators Hub",
"createdAt": "2025-08-01T09:19:22.310Z",
"updatedAt": "2025-08-01T09:19:22.310Z"
}
],
"nodes": [
{
"id": "c6e770b5-380e-4732-a13c-b1edd7cfd7f1",
"name": "대기1",
"type": "n8n-nodes-base.wait",
"position": [
-112,
-832
],
"webhookId": "f571ac4c-9223-4569-b50e-8aea01e88b2b",
"parameters": {
"amount": 15
},
"typeVersion": 1.1
},
{
"id": "6d9a71e8-f02e-4efa-ad2d-1405794b4591",
"name": "Get Random Post",
"type": "n8n-nodes-base.code",
"position": [
-2544,
-832
],
"parameters": {
"jsCode": "const data = $input.all().map(item => item.json);\n\nif (!data || data.length === 0) {\n throw new Error('No Instagram posts data found');\n}\n\n// Get a random post\nconst randomPost = data[Math.floor(Math.random() * data.length)];\n\n// Return only postUrl and description\nreturn {\n json: {\n postUrl: randomPost.tweetUrl\n }\n};"
},
"typeVersion": 2
},
{
"id": "35c31150-4817-46ca-a455-ee96931ecbb1",
"name": "Create CSV Binary",
"type": "n8n-nodes-base.code",
"position": [
-1040,
-832
],
"parameters": {
"jsCode": "// Extract correct values\nconst tweetUrl = $('Get Random Post').first().json.postUrl;\n\n// Clean utility\nconst clean = str => String(str || \"\").replace(/[\\u200B-\\u200D\\uFEFF]/g, \"\").trim();\n\n// Escape and quote single data row\nconst row = [\n `\"${clean(tweetUrl).replace(/\"/g, '\"\"')}\"`\n];\n\n// Convert to buffer without header or BOM\nconst csvBuffer = Buffer.from(row.join(\",\") + \"\\n\", \"utf8\");\n\n// Return binary file\nreturn [\n {\n binary: {\n data: {\n data: csvBuffer,\n mimeType: \"text/csv\",\n fileName: \"phantombuster_clean.csv\"\n }\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "2658a86d-7a7a-473a-8042-ce8ddd903073",
"name": "Upload CSV",
"type": "n8n-nodes-base.microsoftSharePoint",
"position": [
-848,
-832
],
"parameters": {
"site": {
"__rl": true,
"mode": "list",
"value": "plemeo.sharepoint.com,f304c34c-1252-4b99-a852-059c2036c718,c3bf26ab-bf44-4334-8e5b-e8b680bb9e1d",
"cachedResultName": "plemeo"
},
"folder": {
"__rl": true,
"mode": "list",
"value": "01M45PWAY4RSXX7PGSC5CL27V2Y7XYSNQZ",
"cachedResultName": "Phantombuster"
},
"fileName": "twitter_posts_to_like.csv",
"operation": "upload",
"fileContents": "data",
"requestOptions": {}
},
"credentials": {
"microsoftSharePointOAuth2Api": {
"id": "jZkLTQXyVEzxtmp3",
"name": "Microsoft SharePoint account"
}
},
"typeVersion": 1
},
{
"id": "a0c010f7-412c-4965-a553-b93a42ed1470",
"name": "Get Response",
"type": "n8n-nodes-base.phantombuster",
"position": [
128,
-832
],
"parameters": {
"agentId": "7281446865767808",
"operation": "getOutput",
"additionalFields": {}
},
"credentials": {
"phantombusterApi": {
"id": "Zf0AAqqdjBFfyW4W",
"name": "Phantombuster account"
}
},
"typeVersion": 1
},
{
"id": "7a3f97aa-8a1d-4cca-ab24-a1cacbc9ee92",
"name": "메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2096,
-1360
],
"parameters": {
"color": 5,
"width": 1400,
"height": 400,
"content": "## Get Twitter Posts By Scraping defined Profiles\n"
},
"typeVersion": 1
},
{
"id": "b2c79320-dc4f-42c4-90c0-22b9f496b990",
"name": "메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-672,
-944
],
"parameters": {
"width": 980,
"height": 300,
"content": "## Launch Autoliking Agent to Like Tweet\n"
},
"typeVersion": 1
},
{
"id": "647d5d1d-6f10-4b40-831c-c9cb1dda30b9",
"name": "Get Autoliking 에이전트",
"type": "n8n-nodes-base.phantombuster",
"position": [
-560,
-832
],
"parameters": {
"agentId": "275516550112020",
"operation": "get"
},
"credentials": {
"phantombusterApi": {
"id": "Zf0AAqqdjBFfyW4W",
"name": "Phantombuster account"
}
},
"typeVersion": 1
},
{
"id": "cab368e6-7e0d-4e2b-8f12-3652003898c3",
"name": "Launch AL 에이전트",
"type": "n8n-nodes-base.phantombuster",
"position": [
-336,
-832
],
"parameters": {
"agentId": "275516550112020",
"jsonParameters": true,
"additionalFields": {
"argumentsJson": "={\n \"spreadsheetUrl\": \"{{$('Upload CSV').item.json['@content.downloadUrl']}}\",\n \"sessionCookie\": \"{{ $('Set ENV Variables').first().json.ENV_SESSION_COOKIE }}\"\n}"
}
},
"credentials": {
"phantombusterApi": {
"id": "Zf0AAqqdjBFfyW4W",
"name": "Phantombuster account"
}
},
"typeVersion": 1
},
{
"id": "627f9fcc-6a94-46c2-8c7c-2c64f5bc9c4f",
"name": "설정 ENV Variables",
"type": "n8n-nodes-base.set",
"position": [
-912,
-1680
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e24e8c1a-c6c9-4ae2-a0ef-e0e7369dc262",
"name": "ENV_SEARCH_HASHTAGS",
"type": "string",
"value": "={{ $json.output.parseJson().hashtag }}"
},
{
"id": "cf050595-8ad9-4f78-bca4-f463e8b9982e",
"name": "ENV_SESSION_COOKIE",
"type": "string",
"value": "={{ $('Select Cookie').first().json.output.parseJson().session_cookie }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "96caed29-d191-4da5-9d34-045c2c7a676f",
"name": "일정 트리거",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-2032,
-1680
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"triggerAtMinute": 5
}
]
}
},
"typeVersion": 1.2
},
{
"id": "cca8b3ac-2470-48f0-b53f-68b9ba7f61b4",
"name": "Update file",
"type": "n8n-nodes-base.microsoftSharePoint",
"position": [
-1216,
-832
],
"parameters": {
"file": {
"__rl": true,
"mode": "list",
"value": "01M45PWA3IDDODOJRNIRH3WEA77A27CBYU",
"cachedResultName": "twitter_posts_already_liked.csv"
},
"site": {
"__rl": true,
"mode": "list",
"value": "plemeo.sharepoint.com,f304c34c-1252-4b99-a852-059c2036c718,c3bf26ab-bf44-4334-8e5b-e8b680bb9e1d",
"cachedResultName": "plemeo"
},
"folder": {
"__rl": true,
"mode": "list",
"value": "01M45PWAY4RSXX7PGSC5CL27V2Y7XYSNQZ",
"cachedResultName": "Phantombuster"
},
"fileName": "twitter_posts_already_liked.csv",
"operation": "update",
"fileContents": "data",
"requestOptions": {},
"changeFileContent": true
},
"credentials": {
"microsoftSharePointOAuth2Api": {
"id": "jZkLTQXyVEzxtmp3",
"name": "Microsoft SharePoint account"
}
},
"typeVersion": 1
},
{
"id": "36fee782-f44a-4a74-b0e6-d32deba563a0",
"name": "Download file",
"type": "n8n-nodes-base.microsoftSharePoint",
"position": [
-2368,
-832
],
"parameters": {
"file": {
"__rl": true,
"mode": "list",
"value": "01M45PWA3IDDODOJRNIRH3WEA77A27CBYU",
"cachedResultName": "twitter_posts_already_liked.csv"
},
"site": {
"__rl": true,
"mode": "list",
"value": "plemeo.sharepoint.com,f304c34c-1252-4b99-a852-059c2036c718,c3bf26ab-bf44-4334-8e5b-e8b680bb9e1d",
"cachedResultName": "plemeo"
},
"folder": {
"__rl": true,
"mode": "list",
"value": "01M45PWAY4RSXX7PGSC5CL27V2Y7XYSNQZ",
"cachedResultName": "Phantombuster"
},
"requestOptions": {}
},
"credentials": {
"microsoftSharePointOAuth2Api": {
"id": "jZkLTQXyVEzxtmp3",
"name": "Microsoft SharePoint account"
}
},
"typeVersion": 1
},
{
"id": "d0031b62-cf49-4ba1-81cf-ea06d245b24c",
"name": "Check if in List",
"type": "n8n-nodes-base.code",
"position": [
-2000,
-832
],
"parameters": {
"jsCode": "const randomPost = normalizeUrl($('Get Random Post').first().json.postUrl);\nconst allItems = $('Extract from File').all();\n\nif (!allItems || allItems.length === 0) {\n return [{ json: { isDuplicate: false } }];\n}\n\nfunction normalizeUrl(url) {\n if (typeof url !== 'string') {\n console.log(\"🚨 NOT A STRING:\", url);\n return '';\n }\n return url.trim().toLowerCase().replace(/\\/$/, '');\n}\n\n// Helper function to get postUrl value regardless of BOM\nfunction getPostUrl(item) {\n const json = item.json;\n // Try normal field name first\n if (json.postUrl) return json.postUrl;\n \n // Look for any field containing \"postUrl\"\n const postUrlKey = Object.keys(json).find(key => key.includes('postUrl'));\n return postUrlKey ? json[postUrlKey] : null;\n}\n\nconsole.log(\"✅ randomPost:\", randomPost);\nconsole.log(\"✅ allItems:\", allItems);\n\nlet isDuplicate = false;\n\nfor (const item of allItems) {\n const candidateRaw = getPostUrl(item);\n const candidate = normalizeUrl(candidateRaw);\n\n console.log(`🟠 Comparing:\\n→ raw: ${candidateRaw}\\n→ normalized: ${candidate}\\n→ target: ${randomPost}`);\n\n if (candidate === randomPost) {\n isDuplicate = true;\n break;\n }\n}\n\nreturn [{ json: { isDuplicate } }];"
},
"typeVersion": 2
},
{
"id": "f36f1ef6-8869-4517-ad3c-850b1796df3e",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
-1824,
-832
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "bcef43b3-e773-45ba-b245-19ab3fc1e508",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $('Check if in List').first().json.isDuplicate }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "c7fc61b1-a07c-4b05-a16b-f0aef290e15f",
"name": "대기2",
"type": "n8n-nodes-base.wait",
"position": [
-2704,
-832
],
"webhookId": "3c20174c-186a-4a61-8e8c-b78c7e0bacba",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "e61e59bb-ea2a-43c3-8392-41a6d37d9166",
"name": "Prepare Updated Data",
"type": "n8n-nodes-base.code",
"position": [
-1600,
-832
],
"parameters": {
"jsCode": "const existingUrls = $('Extract from File').all().map(item => {\n // Get the first key (which has the BOM) and use its value\n const firstKey = Object.keys(item.json)[0];\n return { postUrl: item.json[firstKey] };\n});\n\nconsole.log(\"existingUrls: \", existingUrls);\n\nconst randomPost = $('Get Random Post').first().json.postUrl;\nconsole.log(\"randomPost: \", randomPost);\n\nreturn [\n ...existingUrls,\n { postUrl: randomPost }\n].map(entry => ({ json: entry }));"
},
"typeVersion": 2
},
{
"id": "787a8e4d-0db7-4d64-a944-563c25aabe6f",
"name": "파일에서 추출",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-2176,
-832
],
"parameters": {
"options": {
"headerRow": true
}
},
"typeVersion": 1,
"alwaysOutputData": true
},
{
"id": "8b8f121a-4559-47df-ba4a-e8be3c244eab",
"name": "파일로 변환",
"type": "n8n-nodes-base.convertToFile",
"position": [
-1392,
-832
],
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "3577e201-49d7-4532-a89d-25003d7e1de9",
"name": "Get Available Session Cookies",
"type": "n8n-nodes-base.microsoftSharePoint",
"position": [
-1776,
-1680
],
"parameters": {
"file": {
"__rl": true,
"mode": "list",
"value": "01M45PWA34GI5X5O5IFVHKQPOE25PSALOH",
"cachedResultName": "twitter_session_cookies.txt"
},
"site": {
"__rl": true,
"mode": "list",
"value": "plemeo.sharepoint.com,f304c34c-1252-4b99-a852-059c2036c718,c3bf26ab-bf44-4334-8e5b-e8b680bb9e1d",
"cachedResultName": "plemeo"
},
"folder": {
"__rl": true,
"mode": "list",
"value": "01M45PWAY4RSXX7PGSC5CL27V2Y7XYSNQZ",
"cachedResultName": "Phantombuster"
},
"requestOptions": {}
},
"credentials": {
"microsoftSharePointOAuth2Api": {
"id": "jZkLTQXyVEzxtmp3",
"name": "Microsoft SharePoint account"
}
},
"typeVersion": 1
},
{
"id": "f6dd4baa-cdd1-4b55-b6b4-22f368feb428",
"name": "Extract Cookies",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-1552,
-1680
],
"parameters": {
"options": {},
"operation": "text"
},
"typeVersion": 1
},
{
"id": "d1265483-a58c-4822-87e1-a2de388469e5",
"name": "Select Cookie",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-1264,
-1680
],
"parameters": {
"text": "=################## PROMPT ##################\n\n**ROLE:** You are a session-cookie selector.\n\n**CURRENT BERLIN TIME** \nDate & time : {{ $now.setZone('Europe/Berlin').format('DD HH:mm:ss') }} \nHour (00-23): {{ $now.setZone('Europe/Berlin').format('HH') }}\n\n**SESSION COOKIES (keep order):** \n{{ $json.data }}\n\n**SELECTION LOGIC**\n\n1. Let \n • N = number of cookies in the list (2 ≤ N ≤ 4). \n • H = current hour as an integer (0–23). \n • W = 24 ÷ N (the width of each time slice in hours, always an integer).\n\n2. Determine the slice index: \n sliceIndex = floor(H ÷ W) // 0-based\n\n3. Choose the cookie at position *(sliceIndex + 1)* in the list. \n • Example when N = 4 (W = 6): \n 00-05 → 1st, 06-11 → 2nd, 12-17 → 3rd, 18-23 → 4th \n • Example when N = 3 (W = 8): \n 00-07 → 1st, 08-15 → 2nd, 16-23 → 3rd \n • Example when N = 2 (W = 12): \n 00-11 → 1st, 12-23 → 2nd\n\n**OUTPUT FORMAT** \nReturn only the selected session cookie value in a valid JSON-Field called \"session_cookie\", nothing else.\n\n##############################################",
"options": {},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "addb3be4-24ae-4dff-84ae-0a472ff200fb",
"name": "OpenAI 채팅 모델2",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1232,
-1520
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "chatgpt-4o-latest",
"cachedResultName": "chatgpt-4o-latest"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "E4PFATctY0kV00hl",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "0d837b39-b583-47f1-89a2-ecb9d08ff033",
"name": "Get Profile Extractor 에이전트",
"type": "n8n-nodes-base.phantombuster",
"position": [
-2016,
-1216
],
"parameters": {
"agentId": "8659007661393374",
"operation": "get"
},
"credentials": {
"phantombusterApi": {
"id": "Zf0AAqqdjBFfyW4W",
"name": "Phantombuster account"
}
},
"typeVersion": 1
},
{
"id": "3d1caf00-2462-43ed-80b2-4cfd03dd2fb8",
"name": "Get List of Accounts",
"type": "n8n-nodes-base.microsoftSharePoint",
"position": [
-1840,
-1216
],
"parameters": {
"file": {
"__rl": true,
"mode": "list",
"value": "01M45PWAYTFGE7UCNBL5FL6WE45C6RHJML",
"cachedResultName": "twitter_profiles_to_scrape.csv"
},
"site": {
"__rl": true,
"mode": "list",
"value": "plemeo.sharepoint.com,f304c34c-1252-4b99-a852-059c2036c718,c3bf26ab-bf44-4334-8e5b-e8b680bb9e1d",
"cachedResultName": "plemeo"
},
"folder": {
"__rl": true,
"mode": "list",
"value": "01M45PWAY4RSXX7PGSC5CL27V2Y7XYSNQZ",
"cachedResultName": "Phantombuster"
},
"fileName": "twitter_profiles_to_scrape.csv",
"operation": "update",
"requestOptions": {}
},
"credentials": {
"microsoftSharePointOAuth2Api": {
"id": "jZkLTQXyVEzxtmp3",
"name": "Microsoft SharePoint account"
}
},
"typeVersion": 1
},
{
"id": "81fbec14-f944-45cb-8100-d85ec61bb0f9",
"name": "If Empty",
"type": "n8n-nodes-base.if",
"position": [
-848,
-1216
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "77805c7a-32a4-492e-9084-6a459e8d6b65",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.isEmpty() }}",
"rightValue": "true"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "6023c9b1-c98f-4507-8b04-865c675da934",
"name": "HTTP 요청",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1344,
-1216
],
"parameters": {
"url": "https://api.phantombuster.com/api/v2/agents/fetch?id=8659007661393374",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "phantombusterApi"
},
"credentials": {
"phantombusterApi": {
"id": "Zf0AAqqdjBFfyW4W",
"name": "Phantombuster account"
}
},
"typeVersion": 4.2
},
{
"id": "ba1d5f3e-5304-49dc-9aad-ea0bb8237ffd",
"name": "HTTP 요청1",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1184,
-1216
],
"parameters": {
"url": "=https://phantombuster.s3.amazonaws.com/{{ $json.data?.orgS3Folder || $json.orgS3Folder }}/{{ $json.data?.s3Folder || $json.s3Folder }}/filtered_result.csv\n",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "phantombusterApi"
},
"credentials": {
"phantombusterApi": {
"id": "Zf0AAqqdjBFfyW4W",
"name": "Phantombuster account"
}
},
"typeVersion": 4.2
},
{
"id": "0a3c2d98-049f-46b5-8177-85264eb75688",
"name": "Prepare Posts",
"type": "n8n-nodes-base.code",
"position": [
-1008,
-1216
],
"parameters": {
"jsCode": "// Split the \"data\" field into lines\nconst raw = $json[\"data\"] || \"\";\nconst lines = raw.split(\"\\n\").map(l => l.trim()).filter(Boolean);\n\n// First line is the header (\"tweetUrl\")\nconst header = lines.shift();\n\n// Build an array of { tweetUrl } objects\nreturn lines.map(url => {\n return {\n json: {\n tweetUrl: url\n }\n };\n});\n"
},
"typeVersion": 2
},
{
"id": "1777b14e-bb81-45df-9abd-231d3983f755",
"name": "대기3",
"type": "n8n-nodes-base.wait",
"position": [
-1504,
-1216
],
"webhookId": "c81a742f-4551-4bcc-932b-c9de71ab1f4d",
"parameters": {
"amount": 30
},
"typeVersion": 1.1
},
{
"id": "c0d92811-5b1f-4209-8b3a-3a0b2ed14654",
"name": "Launch 에이전트1",
"type": "n8n-nodes-base.phantombuster",
"position": [
-1680,
-1216
],
"parameters": {
"agentId": "={{ $('Get Profile Extractor Agent').item.json.id }}",
"jsonParameters": true,
"additionalFields": {
"argumentsJson": "={\n \"numberOfTweetsPerProfile\": 20,\n \"feedType\": \"tweet\",\n \"filters\": \"tweetLink\",\n \"spreadsheetUrl\": \"{{$('Get List of Accounts').item.json['@content.downloadUrl']}}\",\n \"sessionCookie\": \"{{$('Set ENV Variables').item.json.ENV_SESSION_COOKIE}}\"\n}"
}
},
"credentials": {
"phantombusterApi": {
"id": "Zf0AAqqdjBFfyW4W",
"name": "Phantombuster account"
}
},
"typeVersion": 1
},
{
"id": "8bbe1e90-0cfc-4b9f-9486-870f9c5f059a",
"name": "메모4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2096,
-1792
],
"parameters": {
"color": 6,
"width": 1400,
"height": 400,
"content": "## Start Workflow and Retrieve Session Cookie\n"
},
"typeVersion": 1
},
{
"id": "809c4f0e-0166-424e-9568-0409af09bcab",
"name": "메모5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2480,
-1792
],
"parameters": {
"width": 352,
"height": 256,
"content": "### 1) Hashtag & Cookie Selection \n**What it does** \n• Downloads cookie list → **Select Cookie** (GPT-4o) picks one based on time slice. \n\n**Credentials** \nOpenAI + SharePoint OAuth2.\n\n**Tweaks** \n• Add/remove cookies in SharePoint file."
},
"typeVersion": 1
},
{
"id": "9f503394-0d7a-46ea-98dc-caa1036d559d",
"name": "메모1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2736,
-944
],
"parameters": {
"color": 3,
"width": 2040,
"height": 300,
"content": "## Get Random Post, Check if Already Liked and Upload to SharePoint\n"
},
"typeVersion": 1
},
{
"id": "7452d2d1-3d1a-42d6-bf73-de404305fffa",
"name": "메모6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2560,
-1360
],
"parameters": {
"width": 432,
"height": 304,
"content": "### 2) Tweet Scraping & Deduplication \n**What it does** \n• Runs Phantombuster Profile Extractor Agent → gets ~20 tweets. \n• Chooses one at random, compares with `twitter_posts_already_liked.csv`.\n\n**Credentials** \nPhantombuster API + SharePoint OAuth2.\n\n**Tweaks** \n• Change duplicate logic inside **Check if in List**."
},
"typeVersion": 1
},
{
"id": "3d61e6bb-5311-4051-ac7e-94706f41e20d",
"name": "메모7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2736,
-624
],
"parameters": {
"width": 464,
"height": 272,
"content": "### 3) CSV Upload & Auto-like Launch \n**What it does** \n• Creates a 1-row CSV with the chosen tweet URL. \n• Uploads it to SharePoint and passes the public link to the Autolike Agent.\n\n**Credentials** \nSharePoint OAuth2 + Phantombuster API.\n\n**Tweaks** \n• Change file/folder names in **Upload CSV**. \n• Replace SharePoint with another storage provider."
},
"typeVersion": 1
},
{
"id": "5f001e85-76c2-457a-b9bc-693bff694259",
"name": "메모8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-672,
-624
],
"parameters": {
"width": 400,
"height": 288,
"content": "### 4) Rate Limiting & Scheduling \n**What it does** \n• Hourly **Schedule Trigger** plus **Wait** nodes throttle launches to ≈1 000 likes/day.\n\n**Credentials** \nNone\n\n**Tweaks** \n• Edit the cron rule or `Wait` durations to meet your own limits. \n• Remove **Wait** nodes if Phantombuster limits are higher on your plan."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "c4cb49d1-f823-4898-bd71-8d22d57bf2a7",
"connections": {
"f36f1ef6-8869-4517-ad3c-850b1796df3e": {
"main": [
[
{
"node": "Wait2",
"type": "main",
"index": 0
}
],
[
{
"node": "e61e59bb-ea2a-43c3-8392-41a6d37d9166",
"type": "main",
"index": 0
}
]
]
},
"Wait1": {
"main": [
[
{
"node": "a0c010f7-412c-4965-a553-b93a42ed1470",
"type": "main",
"index": 0
}
]
]
},
"Wait2": {
"main": [
[
{
"node": "6d9a71e8-f02e-4efa-ad2d-1405794b4591",
"type": "main",
"index": 0
}
]
]
},
"Wait3": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"81fbec14-f944-45cb-8100-d85ec61bb0f9": {
"main": [
[],
[
{
"node": "Wait2",
"type": "main",
"index": 0
}
]
]
},
"2658a86d-7a7a-473a-8042-ce8ddd903073": {
"main": [
[
{
"node": "Get Autoliking Agent",
"type": "main",
"index": 0
}
]
]
},
"cca8b3ac-2470-48f0-b53f-68b9ba7f61b4": {
"main": [
[
{
"node": "35c31150-4817-46ca-a455-ee96931ecbb1",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "HTTP Request1",
"type": "main",
"index": 0
}
]
]
},
"36fee782-f44a-4a74-b0e6-d32deba563a0": {
"main": [
[
{
"node": "Extract from File",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request1": {
"main": [
[
{
"node": "0a3c2d98-049f-46b5-8177-85264eb75688",
"type": "main",
"index": 0
}
]
]
},
"Launch Agent1": {
"main": [
[
{
"node": "Wait3",
"type": "main",
"index": 0
}
]
]
},
"0a3c2d98-049f-46b5-8177-85264eb75688": {
"main": [
[
{
"node": "81fbec14-f944-45cb-8100-d85ec61bb0f9",
"type": "main",
"index": 0
}
]
]
},
"d1265483-a58c-4822-87e1-a2de388469e5": {
"main": [
[
{
"node": "Set ENV Variables",
"type": "main",
"index": 0
}
]
]
},
"Convert to File": {
"main": [
[
{
"node": "cca8b3ac-2470-48f0-b53f-68b9ba7f61b4",
"type": "main",
"index": 0
}
]
]
},
"f6dd4baa-cdd1-4b55-b6b4-22f368feb428": {
"main": [
[
{
"node": "d1265483-a58c-4822-87e1-a2de388469e5",
"type": "main",
"index": 0
}
]
]
},
"6d9a71e8-f02e-4efa-ad2d-1405794b4591": {
"main": [
[
{
"node": "36fee782-f44a-4a74-b0e6-d32deba563a0",
"type": "main",
"index": 0
}
]
]
},
"Launch AL Agent": {
"main": [
[
{
"node": "Wait1",
"type": "main",
"index": 0
}
]
]
},
"d0031b62-cf49-4ba1-81cf-ea06d245b24c": {
"main": [
[
{
"node": "f36f1ef6-8869-4517-ad3c-850b1796df3e",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "3577e201-49d7-4532-a89d-25003d7e1de9",
"type": "main",
"index": 0
}
]
]
},
"35c31150-4817-46ca-a455-ee96931ecbb1": {
"main": [
[
{
"node": "2658a86d-7a7a-473a-8042-ce8ddd903073",
"type": "main",
"index": 0
}
]
]
},
"Extract from File": {
"main": [
[
{
"node": "d0031b62-cf49-4ba1-81cf-ea06d245b24c",
"type": "main",
"index": 0
}
]
]
},
"Set ENV Variables": {
"main": [
[
{
"node": "Get Profile Extractor Agent",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model2": {
"ai_languageModel": [
[
{
"node": "d1265483-a58c-4822-87e1-a2de388469e5",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Get Autoliking Agent": {
"main": [
[
{
"node": "Launch AL Agent",
"type": "main",
"index": 0
}
]
]
},
"3d1caf00-2462-43ed-80b2-4cfd03dd2fb8": {
"main": [
[
{
"node": "Launch Agent1",
"type": "main",
"index": 0
}
]
]
},
"e61e59bb-ea2a-43c3-8392-41a6d37d9166": {
"main": [
[
{
"node": "Convert to File",
"type": "main",
"index": 0
}
]
]
},
"Get Profile Extractor Agent": {
"main": [
[
{
"node": "3d1caf00-2462-43ed-80b2-4cfd03dd2fb8",
"type": "main",
"index": 0
}
]
]
},
"3577e201-49d7-4532-a89d-25003d7e1de9": {
"main": [
[
{
"node": "f6dd4baa-cdd1-4b55-b6b4-22f368feb428",
"type": "main",
"index": 0
}
]
]
}
}
}이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 소셜 미디어
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
plemeo
@plemeoHi, I'm Gerhard from Plemeo. At plemeo.ai, we focus on AI-driven automation and workflow optimization. Our deep expertise with n8n enables us to streamline processes and boost efficiency in software development. This allows us to deliver real, measurable improvements. Curious how plemeo.ai and n8n can benefit your business? Reach out at info@plemeo.de or visit plemeo.ai.
이 워크플로우 공유