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 →
{
"updatedAt": "2025-07-31T11:07:29.975Z",
"createdAt": "2025-07-03T01:32:29.018Z",
"id": "Lus7iPOlIEhutmxh",
"name": "AutoPostTwitterRedbubble",
"active": false,
"isArchived": false,
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
-304,
-48
],
"id": "01ca2686-065c-431a-a8cb-2b0e62e2c9d4",
"name": "When clicking \u2018Execute workflow\u2019"
},
{
"parameters": {
"databaseId": 8,
"tableId": 35,
"additionalOptions": {
"filters": {
"fields": [
{
"field": 290,
"operator": "date_before",
"value": "={{ new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString().slice(0, 19) + 'Z' }}"
},
{
"field": 290,
"operator": "empty"
}
]
},
"filterType": "OR"
}
},
"type": "n8n-nodes-base.baserow",
"typeVersion": 1,
"position": [
-48,
-48
],
"id": "1decf708-d57f-4abf-b595-4d4bcc328253",
"name": "Baserow",
"credentials": {
"baserowApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "e705cabc-1171-4e47-881b-2ad21b9b376d",
"leftValue": "={{ $json.short_link_bitly }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
624,
-64
],
"id": "c00a366a-92a9-4236-b86f-677663f0912e",
"name": "If"
},
{
"parameters": {
"authentication": "oAuth2",
"longUrl": "={{ $('Separa_itens_baseRow').item.json.link_produto_original }}",
"additionalFields": {
"title": "={{ $json.title }}"
}
},
"type": "n8n-nodes-base.bitly",
"typeVersion": 1,
"position": [
1328,
448
],
"id": "a5fa2bb5-2e66-4f8b-b148-05bd76d368a8",
"name": "Bitly",
"credentials": {
"bitlyOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4.1-nano",
"mode": "list",
"cachedResultName": "GPT-4.1-NANO"
},
"messages": {
"values": [
{
"content": "=You are a witty social media strategist specializing in creating engaging Twitter threads. Your task is to generate a Twitter thread promoting a product with a playful tone and subtle sarcasm that hooks readers and drives engagement.\n\n**Instructions:**\n1. Create a Twitter thread based on the product type and description provided\n2. Use US English exclusively\n3. Maintain a playful tone with subtle sarcasm throughout\n4. Each tweet should flow naturally into the next, maintaining narrative cadence\n5. Include a call-to-action (CTA) in every tweet directing to the product link in the field {product_link}\n6. Respect the character limit provided (this accounts for the URL space that will be added dynamically)\n7. Output ONLY valid JSON format without markdown, formatting, or additional text\n\n\n**Output Format:**\nReturn a valid JSON object with the following structure:\n\n{\n \"thread\": [\n {\n \"tweet_number\": 1,\n \"content\": \"Tweet content here\",\n \"character_count\": 150\n },\n {\n \"tweet_number\": 2,\n \"content\": \"Tweet content here\",\n \"character_count\": 145\n }\n ],\n \"total_tweets\": 5,\n \"theme\": \"playful_sarcasm\",\n \"cta_included\": true\n}\n\n**Guidelines:**\n- Start with a hook that addresses a common pain point or desire\n- Use conversational language with strategic sarcasm\n- Include relevant emojis sparingly but effectively\n- Each tweet should end with a natural CTA phrase like \"Check it out:\", \"Get yours:\", \"Link below:\", etc.\n- Build anticipation and curiosity throughout the thread\n- End with a strong closing that reinforces the product's value\n- Keep tweets within the specified character limit\n- Ensure the thread tells a cohesive story about the product\n\n**Tone Examples:**\n- \"Because apparently we all need another gadget to feel complete...\"\n- \"Plot twist: this actually works...\"\n- \"Your wallet might hate me, but your [relevant area] will thank you...\"\n- \"Not to be dramatic, but this might change your life...\"\n\nGenerate the thread now based on the provided inputs.",
"role": "system"
},
{
"content": "=**Input Parameters:**\n- Product Type: {{ $json.product_type }}\n- Product Description: {{ $('If').item.json.product_description }}\n- Character Limit per Tweet: {{ 280 - $('If').item.json.short_link_bitly.length -1 }}"
}
]
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [
1696,
-80
],
"id": "2f19c421-5281-40de-b731-c7ac55a7673f",
"name": "OpenAI1",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "= {{ $json.message.content }}",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1424,
-80
],
"id": "54e448de-188d-4849-9647-df76c248c07c",
"name": "product_type"
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "={{ $json.message.content }}",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1040,
448
],
"id": "f17c1ced-169c-4755-b0bb-d8776028302e",
"name": "product_tittle_to_bitly"
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4.1-nano",
"mode": "list",
"cachedResultName": "GPT-4.1-NANO"
},
"messages": {
"values": [
{
"content": "=identifique o produto a partir da seguinte url e retorne um json valido sem utilizar marckdown ou qualquer outro formato apenas json, com a propriedade product_type\n{{ $json.link_produto_original }}"
}
]
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [
928,
-80
],
"id": "043b53cb-fca7-4840-99a9-5cd9b833ef8c",
"name": "genarete_product_type",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4.1-mini",
"mode": "list",
"cachedResultName": "GPT-4.1-MINI"
},
"messages": {
"values": [
{
"content": "=voc\u00ea \u00e9 um especialista em criar titulos para o bitly baseado na descri\u00e7\u00e3o do produto a seguir.\n {{ $json.product_description }}\nnao use markdown,\nresponda em formato json valido com chave title e product_type,\nidentifique o produto a partir da seguinte url e utilize ele no titulo gerado coloque o tipo do produto na chave product_type\n{{ $json.link_produto_original }}"
}
]
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [
624,
448
],
"id": "c9a9c4c0-ba61-4294-bf95-f54c84fb4c9a",
"name": "genarate_tittle_for_bitly",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "= {{ $json.message.content }}",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
2176,
-80
],
"id": "fb9209e8-e2de-4ae1-a68b-5a297f255574",
"name": "twitter_thread_content"
},
{
"parameters": {
"batchSize": 1,
"options": {}
},
"id": "4f9702a7-e2ff-4a83-ab1c-d1ffaf4a4ea8",
"name": "Separa_itens_baseRow",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 2,
"position": [
224,
-48
]
},
{
"parameters": {
"operation": "update",
"databaseId": 8,
"tableId": 35,
"rowId": "={{ $('Separa_itens_baseRow').item.json.id }}",
"fieldsUi": {
"fieldValues": [
{
"fieldId": 288,
"fieldValue": "={{ $json.link }}"
}
]
}
},
"type": "n8n-nodes-base.baserow",
"typeVersion": 1,
"position": [
1744,
448
],
"id": "2a750731-8be6-4597-8d4e-65deaeed2690",
"name": "Update_link",
"credentials": {
"baserowApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "update",
"databaseId": 8,
"tableId": 35,
"rowId": "={{ $json.baseRowId }}",
"fieldsUi": {
"fieldValues": [
{
"fieldId": 290,
"fieldValue": "={{ $now }}"
}
]
}
},
"type": "n8n-nodes-base.baserow",
"typeVersion": 1,
"position": [
2464,
192
],
"id": "55c852aa-c1db-49cc-af6e-3e8e91fefa36",
"name": "Baserow1",
"credentials": {
"baserowApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "QeRoi3zxnAYgeE8b",
"mode": "list",
"cachedResultName": "Post_Tweets"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"link_image_mockup": "={{ $('Separa_itens_baseRow').item.json.link_image_mockup }}",
"short_link_bitly": "={{ $('Baserow').item.json.short_link_bitly || $('Update_link').item.json.short_link_bitly }}",
"tweets": "={{ $json.thread }}",
"reference": "={{ $('Baserow').item.json.id.toString() }}"
},
"matchingColumns": [
"link_image_mockup",
"Update_link_short_link_bitly",
"short_link_bitly"
],
"schema": [
{
"id": "link_image_mockup",
"displayName": "link_image_mockup",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "short_link_bitly",
"displayName": "short_link_bitly",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "tweets",
"displayName": "tweets",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "reference",
"displayName": "reference",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": true
},
"options": {}
},
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.2,
"position": [
2480,
-80
],
"name": "Call Post_Tweets",
"id": "35856e42-4e41-49a3-8db6-e97e5aef4a89"
}
],
"connections": {
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Baserow",
"type": "main",
"index": 0
}
]
]
},
"Baserow": {
"main": [
[
{
"node": "Separa_itens_baseRow",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "genarete_product_type",
"type": "main",
"index": 0
}
],
[
{
"node": "genarate_tittle_for_bitly",
"type": "main",
"index": 0
}
]
]
},
"Bitly": {
"main": [
[
{
"node": "Update_link",
"type": "main",
"index": 0
}
]
]
},
"OpenAI1": {
"main": [
[
{
"node": "twitter_thread_content",
"type": "main",
"index": 0
}
]
]
},
"product_type": {
"main": [
[
{
"node": "OpenAI1",
"type": "main",
"index": 0
}
]
]
},
"product_tittle_to_bitly": {
"main": [
[
{
"node": "Bitly",
"type": "main",
"index": 0
}
]
]
},
"genarete_product_type": {
"main": [
[
{
"node": "product_type",
"type": "main",
"index": 0
}
]
]
},
"genarate_tittle_for_bitly": {
"main": [
[
{
"node": "product_tittle_to_bitly",
"type": "main",
"index": 0
}
]
]
},
"twitter_thread_content": {
"main": [
[
{
"node": "Call Post_Tweets",
"type": "main",
"index": 0
}
]
]
},
"Separa_itens_baseRow": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Update_link": {
"main": [
[
{
"node": "OpenAI1",
"type": "main",
"index": 0
}
]
]
},
"Baserow1": {
"main": [
[
{
"node": "Separa_itens_baseRow",
"type": "main",
"index": 0
}
]
]
},
"Call Post_Tweets": {
"main": [
[
{
"node": "Baserow1",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"staticData": null,
"meta": {
"templateCredsSetupCompleted": true
},
"versionId": "7f0c798d-57c3-47dc-8c6d-1cc390dc7b20",
"activeVersionId": null,
"triggerCount": 0,
"shared": [
{
"updatedAt": "2025-07-03T01:32:29.018Z",
"createdAt": "2025-07-03T01:32:29.018Z",
"role": "workflow:owner",
"workflowId": "Lus7iPOlIEhutmxh",
"projectId": "Fm4IyGowkpuhQseY"
}
],
"activeVersion": null,
"tags": []
}
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.
baserowApibitlyOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
AutoPostTwitterRedbubble. Uses baserow, bitly, openAi. Event-driven trigger; 14 nodes.
Source: https://github.com/AndersonNascimentoDosSantos/n8n-workflow-backup/blob/main/autoposttwitterredbubble-Lus7iPOlIEhutmxh.json — 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.
Ask questions like “How much did I spend on food last month?” and get instant answers from your financial data — directly in Telegram.
The Problem That it Solves
This intelligent email automation workflow helps you maximize engagement through domain-based outreach. It utilizes AI-powered personalization and strategic follow-ups to increase response rates. The
Note: Now includes an Apify alternative for Rapid API (Some users can't create new accounts on Rapid API, so I have added an alternative for you. But immediately you are able to get access to Rapid AP
Scrape ads – Pulls Facebook Ad Library data for "ai automation" keywords using Apify Filter & sort – Filters ads by page likes (>1,000) and separates into videos, images, and text ads Analyze creat