Extraction automatique de tweets X et publication sur Telegram copie 2
Intermédiaire
Ceci est uncontenant 14 nœuds.Utilise principalement des nœuds comme Code, Wait, Telegram, HttpRequest, GoogleSheets. Grillage automatique des publications d'images X et publication sur Telegram, avec stockage dans Google Sheets
Prérequis
- •Token Bot Telegram
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Informations d'identification Google Sheets API
Nœuds utilisés (14)
Catégorie
-
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
"id": "ptwolWvQwd2VnU5e",
"meta": {
"instanceId": "237139412ba2bdccb5393d058ace6ee50c6bb809e4f130ea2f9b24f70a336b94"
},
"name": "Auto Scrape X Posts & Publish to Telegram copy 2",
"tags": [],
"nodes": [
{
"id": "260d511b-12b8-4dfb-93d9-6d0317c49dea",
"name": "Supprimer les doublons",
"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": "Boucle sur les éléments",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-16,
224
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "a13ca579-f044-4900-94f2-675d012ffa64",
"name": "Déclencheur : Démarrer la collecte sur 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": "Filtrer uniquement les tweets avec texte et image",
"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": "Sauvegarder les données collectées dans une feuille 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": "Formater et supprimer les liens des données collectées",
"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": "Attendre 3 minutes par publication",
"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": "Envoyer une photo et du texte dans votre chaîne",
"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": "Note adhésive",
"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": "Note adhésive 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": "Note adhésive 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": "Note adhésive 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": "Note adhésive 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
}
]
]
}
}
}Foire aux questions
Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Extracteur d'architecture d'API
Extracteur d'architecture d'API
If
Set
Code
+
If
Set
Code
88 NœudsPolina Medvedieva
Ingénierie
Moteur automatisé de contenu viral pour LinkedIn et X
Création et publication automatique de contenu viral pour LinkedIn et X avec l'IA
If
Set
Wait
+
If
Set
Wait
156 NœudsDiptamoy Barman
Création de contenu
Prospection de domaines : extraction automatisée de leads et ciblage
Outreach de domaine : extraction automatisée de prospects et contact ciblé
If
Code
Wait
+
If
Code
Wait
31 NœudsBadr
Ventes
Explorer les nœuds n8n dans la bibliothèque de références visuelles
Explorer les nœuds n8n dans la base de références visuelles
If
Ftp
Set
+
If
Ftp
Set
113 NœudsI versus AI
Autres
Extraction d'e-mails commerciaux à partir de listes Google Maps pour la génération de prospects
Extraire les adresses e-mail professionnelles à partir des listes Google Maps pour la génération de leads
Code
Wait
Limit
+
Code
Wait
Limit
20 NœudsJose Castillo
Génération de leads
Générer des prospects à l'aide de Google Maps - AlexK1919
Générer des prospects avec Google Maps
If
Set
Code
+
If
Set
Code
42 NœudsAlex Kim
Ventes
Informations sur le workflow
Niveau de difficulté
Intermédiaire
Nombre de nœuds14
Catégorie-
Types de nœuds9
Description de la difficulté
Auteur
Liens externes
Voir sur n8n.io →
Partager ce workflow