AutomationFlowsMarketing & Ads › Launch 5-day Ecommerce Social Campaigns with Posta and Deepseek

Launch 5-day Ecommerce Social Campaigns with Posta and Deepseek

ByStefan Gimeson @stgime on n8n.io

This workflow runs manually, fetches the product data and image via HTTP, generates 5-day captions in DeepSeek, and schedules posts in Posta for the active social accounts, limiting it to one account per platform. Runs when you manually execute the workflow. Fetches a product…

Event trigger★★★★☆ complexityAI-powered21 nodesHTTP RequestChain LlmLm Chat Deep SeekN8N Nodes Posta
Marketing & Ads Trigger: Event Nodes: 21 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #16361 — we link there as the canonical source.

This workflow follows the Chainllm → HTTP Request recipe pattern — see all workflows that pair these two integrations.

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 →

Download .json
{
  "id": "ZIzfh6sIe4ToAqeC",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "E-commerce product launch campaign",
  "tags": [
    {
      "id": "8xBogo6fq3RQfLdT",
      "name": "autopost",
      "createdAt": "2026-06-02T09:01:25.831Z",
      "updatedAt": "2026-06-02T09:01:25.831Z"
    },
    {
      "id": "ESvKanJ6OwKaH6u4",
      "name": "posta",
      "createdAt": "2026-06-02T09:01:40.639Z",
      "updatedAt": "2026-06-02T09:01:40.639Z"
    },
    {
      "id": "Yj8jMnpGLDXpmAr4",
      "name": "e-commerce",
      "createdAt": "2026-06-03T12:31:06.730Z",
      "updatedAt": "2026-06-03T12:31:06.730Z"
    },
    {
      "id": "ZG1V0O463Dgrj7Gj",
      "name": "product",
      "createdAt": "2026-06-03T12:31:12.744Z",
      "updatedAt": "2026-06-03T12:31:12.744Z"
    }
  ],
  "nodes": [
    {
      "id": "4e36d194-eb12-48fe-8ffd-09dbc45f5f14",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1184,
        -336
      ],
      "parameters": {
        "width": 480,
        "height": 816,
        "content": "## E-commerce product launch campaign\n\n### How it works\n\n1. A manual trigger fetches the product, downloads its image, and uploads it to Posta as media.\n2. Your active social accounts are selected and de-duplicated to one post per platform.\n3. The product and platforms are combined and expanded into a multi-day campaign matrix.\n4. An LLM writes per-platform captions, which are parsed and merged back per account.\n5. Posta creates the scheduled launch posts across the campaign.\n\n### Setup steps\n\n- [ ] Add your Posta credential (API token) to the Posta nodes\n- [ ] Add your DeepSeek (LLM) credential to the 'Basic LLM Chain' model\n- [ ] Point 'Fetch product' at your product source (URL or API)\n- [ ] Confirm the accounts in 'Get many social accounts' and the campaign length in 'Expand to days'\n\n### Customization\n\nChange the number of campaign days and the per-platform caption prompt to fit your launch."
      },
      "typeVersion": 1
    },
    {
      "id": "a8f16864-4140-4359-86bb-f3aa5e912fac",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -624,
        -336
      ],
      "parameters": {
        "color": 7,
        "width": 1056,
        "height": 272,
        "content": "## Fetch product and media\n\nStarts the run, fetches the product, and uploads its image to Posta."
      },
      "typeVersion": 1
    },
    {
      "id": "cff07305-37a3-4bd8-b7c6-b1b0d9e2e10b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        -32
      ],
      "parameters": {
        "color": 7,
        "width": 816,
        "height": 352,
        "content": "## Select target accounts\n\nLoads social accounts, keeps active ones, and limits to one post per platform."
      },
      "typeVersion": 1
    },
    {
      "id": "c349713b-94a5-4985-9d16-51e00eda3b25",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        544,
        -336
      ],
      "parameters": {
        "color": 7,
        "width": 448,
        "height": 304,
        "content": "## Build campaign matrix\n\nCombines product and platforms, then expands into a multi-day schedule."
      },
      "typeVersion": 1
    },
    {
      "id": "43007709-31a8-4af9-9c38-8ed152ac2d3a",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1104,
        -336
      ],
      "parameters": {
        "color": 7,
        "width": 544,
        "height": 544,
        "content": "## Generate captions with AI\n\nAn LLM writes per-platform captions, which are then parsed into structured data."
      },
      "typeVersion": 1
    },
    {
      "id": "a6fabe76-fa14-4899-9761-9d80d672b198",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1776,
        -112
      ],
      "parameters": {
        "color": 7,
        "width": 480,
        "height": 304,
        "content": "## Assemble and publish\n\nMerges captions per account and creates the scheduled launch posts."
      },
      "typeVersion": 1
    },
    {
      "id": "71e9da98-d459-41ff-9796-09e645ad6de8",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -576,
        -224
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "95935938-a652-4bff-b5ec-5ef6801aa73c",
      "name": "Fetch product",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -352,
        -224
      ],
      "parameters": {
        "url": "https://fakestoreapi.com/products/1",
        "options": {}
      },
      "typeVersion": 4.4
    },
    {
      "id": "dce15ba8-975c-46f6-ac1c-2017bc9b480a",
      "name": "Basic LLM Chain",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1152,
        -208
      ],
      "parameters": {
        "text": "=Write ONE {{ $json.platform }} caption for day {{ $json.day }} of a 5-day campaign\n  for \"{{ $json.title }}\" ({{ $json.description }}, ${{ $json.price }}).\n  End with 3\u20135 relevant hashtags. Return only the caption \u2014 no preamble.",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "message": "You are the best social media marketing expert in the world."
            }
          ]
        },
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "044989a2-8cf9-4865-a50a-51b2c58f72e8",
      "name": "DeepSeek Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatDeepSeek",
      "position": [
        1152,
        48
      ],
      "parameters": {
        "model": "deepseek-v4-pro",
        "options": {}
      },
      "credentials": {
        "deepSeekApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "23da3937-9a5c-40d3-b871-82fbfd291199",
      "name": "Get many social accounts",
      "type": "n8n-nodes-posta.posta",
      "position": [
        -352,
        80
      ],
      "parameters": {
        "resource": "socialAccount"
      },
      "credentials": {
        "postaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "886cbb0c-d24a-4344-a2d7-e9652ba78d56",
      "name": "Keep active accounts",
      "type": "n8n-nodes-base.filter",
      "position": [
        -64,
        80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "965b8dcb-cbbf-4a09-be7d-91190b09681e",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.isActive }}",
              "rightValue": false
            },
            {
              "id": "0650294d-1302-4d4b-97ed-14826faddb9a",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "40308f8a-15ff-4eaf-a450-2f8db59ea539",
      "name": "One post per platform",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        272,
        160
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {},
        "fieldsToCompare": "platform"
      },
      "typeVersion": 2
    },
    {
      "id": "a12e72fe-1ba7-4895-b419-097d34ca44ed",
      "name": "Combine product + platforms",
      "type": "n8n-nodes-base.merge",
      "position": [
        592,
        -208
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.2
    },
    {
      "id": "70a87504-d83b-4a22-b4d3-ada5dcc09b30",
      "name": "Parse LLM captions",
      "type": "n8n-nodes-base.code",
      "position": [
        1504,
        -208
      ],
      "parameters": {
        "jsCode": "const ctx = $('Expand to days').all();\n  return $input.all().map((item, i) => {\n    const day = ctx[i].json.day;\n    return {\n      json: {\n        platform: ctx[i].json.platform,\n        day,\n        caption: item.json.text,\n        mediaId:  ctx[i].json.mediaId,\n        scheduledAt: $now\n          .plus({ days: day })                                  // day 1 = tomorrow, day 5 = +5\n          .set({ hour: 9, minute: 0, second: 0, millisecond: 0 }) // post at 09:00\n          .toUTC()\n          .toISO(),                                             // strict UTC ISO the API wants\n      },\n    };\n  });"
      },
      "typeVersion": 2
    },
    {
      "id": "b12bdda8-009d-4a53-bfca-d213eb8153b3",
      "name": "Expand to days",
      "type": "n8n-nodes-base.code",
      "position": [
        848,
        -208
      ],
      "parameters": {
        "jsCode": "return $input.all().flatMap(i =>\n    [1,2,3,4,5].map(day => ({ json: { ...i.json, day } }))\n  );"
      },
      "typeVersion": 2
    },
    {
      "id": "1447b440-295f-4586-b626-04641c2979bb",
      "name": "Merge captions per account",
      "type": "n8n-nodes-base.merge",
      "position": [
        1824,
        16
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "fieldsToMatchString": "platform"
      },
      "typeVersion": 3.2
    },
    {
      "id": "60fbaf61-4f56-4607-b851-a0a1f10ef977",
      "name": "Create a post",
      "type": "n8n-nodes-posta.posta",
      "position": [
        2112,
        16
      ],
      "parameters": {
        "caption": "={{ $json.caption }}",
        "resource": "post",
        "operation": "create",
        "additionalFields": {
          "isDraft": false,
          "mediaIds": "= {{ $json.mediaId }}"
        },
        "socialAccountIds": "= {{ $json.id }}",
        "platformConfigurations": {}
      },
      "credentials": {
        "postaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d1f45c2b-c557-48da-b10a-708491d81c70",
      "name": "Download product image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -96,
        -224
      ],
      "parameters": {
        "url": "={{ $json.image }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "b8d6ab49-2385-48fb-b7a3-b69bb6a95797",
      "name": "Upload media",
      "type": "n8n-nodes-posta.posta",
      "position": [
        80,
        -224
      ],
      "parameters": {
        "resource": "media"
      },
      "credentials": {
        "postaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "205d4483-bb45-4bd1-bcf7-525fd22f56eb",
      "name": "Attach product media id",
      "type": "n8n-nodes-base.set",
      "position": [
        288,
        -224
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c5a46e5b-3a92-42b8-bf14-d473fee0281c",
              "name": "mediaId",
              "type": "string",
              "value": "={{ $json.media.id }}"
            },
            {
              "id": "7addd58f-f2da-4dbb-8865-cfaa061de77d",
              "name": "title",
              "type": "string",
              "value": "={{ $('Fetch product').first().json.title }}"
            },
            {
              "id": "ddbf23e7-facd-4b29-8406-d9c39d4d8f20",
              "name": "description",
              "type": "string",
              "value": "={{ $('Fetch product').first().json.description }}"
            },
            {
              "id": "ad5022e7-ddf4-48c6-9aa0-6f80b9cc5f31",
              "name": "price",
              "type": "string",
              "value": "={{ $('Fetch product').first().json.price }}"
            },
            {
              "id": "775e372b-c120-4ab2-ac72-c23527ca7dc2",
              "name": "image",
              "type": "string",
              "value": "={{ $('Fetch product').first().json.image }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "executionOrder": "v1"
  },
  "versionId": "4ddba110-25ff-4606-8e61-cf21aea05740",
  "connections": {
    "Upload media": {
      "main": [
        [
          {
            "node": "Attach product media id",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch product": {
      "main": [
        [
          {
            "node": "Download product image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Expand to days": {
      "main": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain": {
      "main": [
        [
          {
            "node": "Parse LLM captions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse LLM captions": {
      "main": [
        [
          {
            "node": "Merge captions per account",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "DeepSeek Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Keep active accounts": {
      "main": [
        [
          {
            "node": "One post per platform",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "One post per platform": {
      "main": [
        [
          {
            "node": "Combine product + platforms",
            "type": "main",
            "index": 1
          },
          {
            "node": "Merge captions per account",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Download product image": {
      "main": [
        [
          {
            "node": "Upload media",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Attach product media id": {
      "main": [
        [
          {
            "node": "Combine product + platforms",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get many social accounts": {
      "main": [
        [
          {
            "node": "Keep active accounts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge captions per account": {
      "main": [
        [
          {
            "node": "Create a post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine product + platforms": {
      "main": [
        [
          {
            "node": "Expand to days",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Fetch product",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get many social accounts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow runs manually, fetches the product data and image via HTTP, generates 5-day captions in DeepSeek, and schedules posts in Posta for the active social accounts, limiting it to one account per platform. Runs when you manually execute the workflow. Fetches a product…

Source: https://n8n.io/workflows/16361/ — original creator credit. Request a take-down →

More Marketing & Ads workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Marketing & Ads

E-commerce product launch campaign. Uses httpRequest, chainLlm, lmChatDeepSeek, n8n-nodes-posta. Event-driven trigger; 30 nodes.

HTTP Request, Chain Llm, Lm Chat Deep Seek +1
Marketing & Ads

Lead Generation + Outreach. Uses httpRequest, manualTrigger, googleSheets, scheduleTrigger. Event-driven trigger; 15 nodes.

HTTP Request, Google Sheets, Chain Llm +1
Marketing & Ads

Ad Agency in a box. Uses httpRequest, splitOut, outputParserStructured, chainLlm. Webhook trigger; 54 nodes.

HTTP Request, Output Parser Structured, Chain Llm +5
Marketing & Ads

The Recap AI - Insurance Lawyer Lead Gen. Uses executeWorkflowTrigger, formTrigger, @mendable/n8n-nodes-firecrawl, googleSheets. Event-driven trigger; 33 nodes.

Execute Workflow Trigger, Form Trigger, @Mendable/N8N Nodes Firecrawl +4
Marketing & Ads

LinkedinComments (youtube). Uses stickyNote, httpRequest, lmChatGoogleGemini, outputParserAutofixing. Webhook trigger; 27 nodes.

HTTP Request, Google Gemini Chat, Output Parser Autofixing +3