X 트윗 자동 스크랩 및 Telegram에 게시 사본2
중급
이것은자동화 워크플로우로, 14개의 노드를 포함합니다.주로 Code, Wait, Telegram, HttpRequest, GoogleSheets 등의 노드를 사용하며. Google 시트 저장을 사용한 X 이미지 게시물 자동 스크래핑 및 Telegram 게시
사전 요구사항
- •Telegram Bot Token
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
사용된 노드 (14)
카테고리
-
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "ptwolWvQwd2VnU5e",
"meta": {
"instanceId": "237139412ba2bdccb5393d058ace6ee50c6bb809e4f130ea2f9b24f70a336b94"
},
"name": "Auto Scrape X Posts & Publish to Telegram copy 2",
"tags": [],
"nodes": [
{
"id": "260d511b-12b8-4dfb-93d9-6d0317c49dea",
"name": "중복 제거",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
512,
-112
],
"parameters": {
"options": {
"historySize": 10000
},
"operation": "removeItemsSeenInPreviousExecutions",
"dedupeValue": "={{ $json.tweet_id }}"
},
"typeVersion": 2
},
{
"id": "863dc17e-446c-4118-9171-0db7402b967f",
"name": "항목 반복 처리",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-16,
224
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "a13ca579-f044-4900-94f2-675d012ffa64",
"name": "트리거: X에서 스크래핑 시작",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-512,
-112
],
"parameters": {},
"typeVersion": 1
},
{
"id": "1939f7d2-4ebd-459c-aaaa-8c4f5fdd0e94",
"name": "Twitter API",
"type": "n8n-nodes-base.httpRequest",
"position": [
-272,
-112
],
"parameters": {
"url": "https://api.twitterapi.io/twitter/user/last_tweets",
"options": {},
"sendQuery": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"queryParameters": {
"parameters": [
{
"name": "userID",
"value": "1361142028667662338"
},
{
"name": "userName",
"value": "@Inku_Fr"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "L7K4reMunvy4mC3C",
"name": "X scrapping utilisateur"
}
},
"typeVersion": 4.2
},
{
"id": "9a988b26-1746-4175-b0ff-92c06f391d99",
"name": "텍스트와 이미지가 있는 트윗만 필터링",
"type": "n8n-nodes-base.code",
"position": [
256,
-112
],
"parameters": {
"jsCode": "// Filter only tweets that have text and an image\nreturn items\n .map(item => {\n return {\n json: {\n author_name: item.json.author_name,\n author_username: item.json.author_username,\n tweet_text: item.json.tweet_text,\n tweet_url: item.json.tweet_url,\n tweet_id: item.json.tweet_id,\n created_at: item.json.created_at,\n image_url: item.json.first_image_url // retrieve the image link\n }\n };\n })\n .filter(item => item.json.tweet_text && item.json.image_url); // only keeps tweets with text AND images\n"
},
"typeVersion": 2
},
{
"id": "93da9f3b-fea4-4d56-a900-298891ccd28d",
"name": "스크래핑 데이터를 Google 시트에 저장",
"type": "n8n-nodes-base.googleSheets",
"position": [
-512,
224
],
"parameters": {
"columns": {
"value": {
"URL": "={{ $json.tweet_url }}",
"Date": "={{ $json.created_at }}",
"Image": "={{ $json.image_url }}",
"Contenu": "={{ $json.tweet_text }}",
"ID Tweet": "={{ $json.tweet_id }}",
"Nom du compte": "={{ $json.author_name }}",
"Nom d'utilisateur": "={{ $json.author_username }}"
},
"schema": [
{
"id": "ID Tweet",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "ID Tweet",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contenu",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Contenu",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Image",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Image",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Nom d'utilisateur",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Nom d'utilisateur",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Nom du compte",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Nom du compte",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MSy_TwbRjl_IprnzZp9yX_W8pLeVxPd1c_gNnJgtykY/edit#gid=0",
"cachedResultName": "Feuille 1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1xZbBYTPYAW-625aRFwfxNzkTA-nbVY7Mv_EX3ubk1uQ",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xZbBYTPYAW-625aRFwfxNzkTA-nbVY7Mv_EX3ubk1uQ/edit?usp=drivesdk",
"cachedResultName": "INSTANT ANIME"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "fvaXnOXV63MxY546",
"name": "Google Sheets account 4"
}
},
"typeVersion": 4.6
},
{
"id": "4fc30aa0-ef16-4865-80f4-1b8e7d924d4f",
"name": "스크래핑 데이터 형식 지정 및 링크 제거",
"type": "n8n-nodes-base.code",
"position": [
-272,
224
],
"parameters": {
"jsCode": "// Filter and clean tweets\nreturn $input.all()\n .map(item => {\n let text = item.json.Contenu;\n\n // Removes links\n text = text.replace(/https?:\\/\\/\\S+/g, '').trim();\n\n return {\n json: {\n author_name: item.json[\"Nom du compte\"],\n author_username: item.json[\"Nom d'utilisateur\"],\n tweet_text: text,\n tweet_url: item.json.URL,\n tweet_id: item.json[\"ID Tweet\"],\n created_at: item.json.Date,\n first_image_url: item.json.Image,\n }\n };\n })\n // Only keep tweets that have text and an image\n .filter(item => item.json.tweet_text && item.json.first_image_url);\n"
},
"typeVersion": 2
},
{
"id": "f3495493-6a6a-48b8-979d-35e246583fc3",
"name": "게시물당 3분 대기",
"type": "n8n-nodes-base.wait",
"position": [
512,
240
],
"webhookId": "1eeb5acf-2934-4d56-b9a7-aeeb203dd465",
"parameters": {
"unit": "minutes",
"amount": 3
},
"typeVersion": 1.1
},
{
"id": "83ca9695-a6d7-4ed5-86c5-8455ecbf984e",
"name": "채널에 사진과 텍스트 전송",
"type": "n8n-nodes-base.telegram",
"position": [
256,
240
],
"webhookId": "d009379b-bf0d-4468-bea8-0a1ae64e8c99",
"parameters": {
"file": "={{ $json.first_image_url }}",
"chatId": "=@instantanimee",
"operation": "sendPhoto",
"additionalFields": {
"caption": "={{ $json.tweet_text }}"
}
},
"credentials": {
"telegramApi": {
"id": "kbRZDVqu7tIpKwc7",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "6d359557-113a-4b5a-ae02-df43ecf98a67",
"name": "스티커 메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-368,
-272
],
"parameters": {
"color": 6,
"width": 256,
"height": 352,
"content": "## Enter the ID and username of the user account you want to scrape."
},
"typeVersion": 1
},
{
"id": "f36be26a-4ae5-4e8a-b52b-d1b78726328a",
"name": "스티커 메모1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-64,
-272
],
"parameters": {
"color": 6,
"width": 784,
"height": 352,
"content": "## It will format the data. It also filters the tweets, keeping only those that contain text and at least one image."
},
"typeVersion": 1
},
{
"id": "7fa0a416-8c2e-48dd-9aab-144d9f2afd82",
"name": "스티커 메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-592,
144
],
"parameters": {
"color": 6,
"width": 1312,
"height": 320,
"content": "## Publish the tweet on your telegram channel with a wait time of 3 minutes per post"
},
"typeVersion": 1
},
{
"id": "09e7411e-dca4-43ad-8cb9-4f0e95f5448f",
"name": "스티커 메모4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1488,
-480
],
"parameters": {
"width": 624,
"height": 1216,
"content": "\n\n## Who’s it for\n\nThis automation template is designed for content creators, social media managers, and automation enthusiasts who want to automatically scrape X (Twitter) posts with images and publish them directly to a Telegram channel — without writing a single line of code.\n\n## How it works\n\n- Trigger: Start scraping from a specific X (Twitter) account using its ID and username.\n\n- Fetch data: The workflow calls the Twitter API to collect recent tweets.\n\n- Format data: Extracts fields such as author name, username, tweet text, tweet URL, tweet ID, creation date, images, and video URL.\n\n- Filter: Keeps only tweets that contain text and at least one image.\n\n- Remove duplicates: Ensures no repeated tweets are processed.\n\n- Save: Stores the cleaned tweet data into a Google Sheet for backup and future use.\n\n- Clean text: Removes unnecessary links from the tweet text before publishing.\n\n- Loop & Publish: Iterates over the filtered tweets and sends them (text + image) to your Telegram channel.\n\n- Delay: Waits 3 minutes between each post to avoid spamming.\n\n## How to use\n\n- Enter the Twitter ID and username of the account you want to scrape.\n\n- Connect your Google Sheets account to store the data.\n\n- Connect your Telegram bot and channel where the posts will be published.\n\n- Start the workflow → tweets will be scraped, filtered, saved, and automatically published on Telegram.\n\n## Requirements\n\n- A valid Twitter API connection or scraping endpoint.\n\n- A Google Sheet for storing scraped tweets.\n\n- A Telegram Bot connected to your channel.\n\n- n8n or any automation tool where this workflow runs.\n\n## ❓ Need help\n\n**Contact me for consulting and support:** [LinkedIn](https://www.linkedin.com/in/jaures-nya-83a033270/) / [YouTube](https://www.youtube.com/@jauresnya) \n"
},
"typeVersion": 1
},
{
"id": "5641d972-fc52-4c85-8a30-5ecbf6308852",
"name": "스티커 메모3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-816,
-480
],
"parameters": {
"color": 7,
"width": 1792,
"height": 1056,
"content": "## Use this workflow to automates the process of scraping tweets from X (Twitter) and publishing them to a Telegram channel\n### What problem is this workflow solving? / Use case\nMy workflow is solving the problem of automating content curation and cross-posting from Twitter to Telegram, while keeping it clean, organized, spam-free, and consistent."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "e1819680-5476-42e8-8fc1-56098c8e04b6",
"connections": {
"1939f7d2-4ebd-459c-aaaa-8c4f5fdd0e94": {
"main": [
[
{
"node": "9a988b26-1746-4175-b0ff-92c06f391d99",
"type": "main",
"index": 0
}
]
]
},
"863dc17e-446c-4118-9171-0db7402b967f": {
"main": [
[],
[
{
"node": "83ca9695-a6d7-4ed5-86c5-8455ecbf984e",
"type": "main",
"index": 0
}
]
]
},
"260d511b-12b8-4dfb-93d9-6d0317c49dea": {
"main": [
[
{
"node": "93da9f3b-fea4-4d56-a900-298891ccd28d",
"type": "main",
"index": 0
}
]
]
},
"f3495493-6a6a-48b8-979d-35e246583fc3": {
"main": [
[
{
"node": "863dc17e-446c-4118-9171-0db7402b967f",
"type": "main",
"index": 0
}
]
]
},
"a13ca579-f044-4900-94f2-675d012ffa64": {
"main": [
[
{
"node": "1939f7d2-4ebd-459c-aaaa-8c4f5fdd0e94",
"type": "main",
"index": 0
}
]
]
},
"83ca9695-a6d7-4ed5-86c5-8455ecbf984e": {
"main": [
[
{
"node": "f3495493-6a6a-48b8-979d-35e246583fc3",
"type": "main",
"index": 0
}
]
]
},
"93da9f3b-fea4-4d56-a900-298891ccd28d": {
"main": [
[
{
"node": "4fc30aa0-ef16-4865-80f4-1b8e7d924d4f",
"type": "main",
"index": 0
}
]
]
},
"9a988b26-1746-4175-b0ff-92c06f391d99": {
"main": [
[
{
"node": "260d511b-12b8-4dfb-93d9-6d0317c49dea",
"type": "main",
"index": 0
}
]
]
},
"4fc30aa0-ef16-4865-80f4-1b8e7d924d4f": {
"main": [
[
{
"node": "863dc17e-446c-4118-9171-0db7402b967f",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
API 아키텍처 추출기
API 아키텍처 추출기
If
Set
Code
+
If
Set
Code
88 노드Polina Medvedieva
엔지니어링
LinkedIn 및 X 바이럴 콘텐츠 자동 엔진
사용AI생성및게시자동생성LinkedIn및X의病毒콘텐츠
If
Set
Wait
+
If
Set
Wait
156 노드Diptamoy Barman
콘텐츠 제작
도메인 외부 연결: 자동화된 잠재 고객 추출과 방향적 접근
도메인 외부 연결: 자동화된 잠재 고객 추출 및 방향적 접근
If
Code
Wait
+
If
Code
Wait
31 노드Badr
영업
시각화 참조 라이브러리에서 n8n 노드를 탐색
可视化 참조 라이브러리에서 n8n 노드를 탐색
If
Ftp
Set
+
If
Ftp
Set
113 노드I versus AI
기타
Google 맵 목록에서 비즈니스 이메일을 잠재 고객 생성에 사용
Google 지도 목록에서 비즈니스 이메일을 추출하여 잠재 고객 생성을 위해 사용합니다.
Code
Wait
Limit
+
Code
Wait
Limit
20 노드Jose Castillo
리드 생성
Google Maps를 사용하여 잠재 고객 생성 - AlexK1919
Google Maps를 사용하여 잠재 고객 생성
If
Set
Code
+
If
Set
Code
42 노드Alex Kim
영업