Auto-Generate E-Commerce Promotional Carousels with n8n (Gemini 2.5 + Social Publishing)
Upload product image & description → AI generates 4 promo images (prompts target vertical 9:16) → auto-store & optionally publish to Instagram/TikTok/YouTube/Facebook
- Who
- E-commerce operators, digital marketers, social media managers
- You get
- Generate 4 promo images with real-people usage scenes (prompts target vertical 9:16; the request sets no dimensions; not tested by us) from a single product photo, plus social copy, with optional auto-publishing
Constraints
Requires an n8n instance. Prerequisites: sign up at fal.ai for API token (Gemini 2.5 Flash image generation); register at imgbb for API key (image hosting); configure OpenAI API key (copy generation); optionally register at upload-post.com and link an Instagram business account (auto-publishing). Credential types: httpHeaderAuth, openAiApi, googlePalmApi, uploadPostApi. Input: product image (JPG/PNG/WebP) + text description. Output: 4 promo image URLs (9:16 is a prompt target; the HTTP request sets no dimensions, so the ratio is not guaranteed) + social copy + optional multi-platform publish.
What they did
Author carlosgracia published this workflow template on the n8n official template library. The template demonstrates an end-to-end automation: users upload a product image and description via an n8n form; a Gemini 2.5 Pro-powered AI Agent generates a 4-image promotional storyboard (prompts, environment, sound); then fal.ai's Gemini 2.5 Flash image editing API generates 4 images in parallel from prompts that request vertical 9:16; after imgbb hosting, GPT-4.1 generates social copy; finally, optional publishing to Instagram, TikTok, YouTube, and Facebook via upload-post.com.
How it went
The source reports the template has been viewed 1705 times (n8n-8002-api.json). The author claims the workflow automatically generates social carousel images with real-people usage scenes and promotional text, with optional auto-publishing. Actual results depend on fal.ai image generation quality, prompt tuning, and upload-post.com service stability.
Worth knowing
1. Image generation actually calls fal.run/fal-ai/gemini-25-flash-image/edit, not the official Google Gemini API directly; a fal.ai account and token are required. 2. The Structured Output Parser's jsonSchemaExample in workflow.json is a placeholder (astrology theme); actual runtime output is driven by the Storyboard Agent dynamically. 3. upload-post.com is a third-party service; evaluate its stability, pricing, and platform API change risks independently. 4. This site has not tested the workflow; reproduction=not_tested. After building, validate the full pipeline with test images before production use. 5. Credential types include httpHeaderAuth (fal.ai), openAiApi, googlePalmApi (Gemini Pro), and uploadPostApi; configure each in n8n.
n8n workflow template
Structure checked · Not run-testedUse “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.
Setup and test checklist
Credentials to connect
- Connect your own fal.ai Header Auth to all four Gemini image HTTP nodes, Gemini credentials to Google Gemini Chat Model, and OpenAI credentials to Generate Carousel Description.
- Set imgbb_api_key in Set APIs Vars. Connect Upload Post and your social accounts only if publishing is required.
Configuration to replace
- Confirm that your n8n supports the template nodes. Upload Post uses the third-party community node n8n-nodes-upload-post; if unavailable, remove the publishing branch for an image-only test.
- Replace __UKH_IMGBB_API_KEY__, __UKH_UPLOAD_POST_USER__ and __UKH_FACEBOOK_PAGE_ID__. Keep real secrets in your own instance and out of shared exports.
- Disable or disconnect Upload Post before the first test. The source already connects it to Instagram, TikTok, YouTube and Facebook; a manual run can also publish.
- number_of_images defaults to 1 per branch. The prompt requests 9:16 but the HTTP request sets no dimensions. The parser example and storyboard output instructions also differ; inspect actual output.
Test input and expected output
- Use one non-sensitive product photo and description in the Photo Upload Form test entry; keep the workflow inactive.
- Check prompt1–prompt4, all four image branches, HTTP binary.data, imgbb URLs and the caption before connecting publishing. These are acceptance checks, not a claim of successful execution.
- Gemini, fal.ai, OpenAI, imgbb and optional publishing services receive data and may charge. Check your accounts and run one test before any batch.
Template changes
- Author credential bindings, instance metadata and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
- Only the imgbb sample token, Upload Post sample account and Facebook page placeholder were replaced with explicit __UKH_…__ placeholders. Publishing connections and prompts are unchanged.
Template retrieved: 2026-10-24
Steps
Upload product image and description via form
Before the first test, disable or disconnect the 'Upload Post' node (see step 5) so a test run cannot publish to social media. Then trigger the 'Photo Upload Form' node (formTrigger) in n8n. Upload a product image and fill in the 'Product description' text area. On submission, the workflow splits data into two branches: one enters AI storyboard analysis, the other merges image variables.
AI generates 4-image storyboard (Storyboard Agent)
The 'Storyboard Agent' node calls Google Gemini 2.5 Pro (via googlePalmApi credential) to analyze the product description and output a strict JSON storyboard containing: title (≤60 chars), 4 image generation prompts (prompt1-prompt4), environment description, and sound description. A Structured Output Parser enforces JSON compliance; a Think tool assists reasoning.
Execution prompt · Source text。Storyboard Agent node System Message field
Role: You are a creative director specialized in promotional ads for social media. You will produce a 4-image carousel (vertical 9:16) to promote products. The goal is to create authentic content that generates engagement and conversions. Content rules: - ALWAYS include people using the product naturally - Add visible promotional text in images (offers, benefits, CTAs) - Show product in real usage situations - Create attractive compositions for Instagram/TikTok/Facebook - Maintain visual coherence between the 4 images - Focus on generating engagement and conversion - Output strictly valid compact JSON, no prose, no markdown. Language: Follow the input description language (ES/EN).
Execution prompt · Source text。Storyboard Agent node Text/Prompt field
==Use this product description: {{ $json["Product description"] }} Create a promotional carousel of 4 images for social media. Focus on showing the product IN USE by real people with promotional text. Your task: 1. Design 4 independent images showing different aspects of the product 2. Include people using/enjoying the product naturally 3. Add promotional text elements, benefits or call-to-actions 4. Create an engaging carousel for Instagram/TikTok/Facebook For the product context, consider: - Real people using the product in everyday situations - Visible promotional text (offers, benefits, CTAs) - Authentic environments related to product usage - Compositions that generate engagement and conversion Return ONLY a compact JSON with these keys (no prose): { "title": "<≤60 chars, catchy hook title that captures attention>", "prompt1": "<Image 1: Person using the product - vertical 9:16, includes visible promotional text, natural environment>", "prompt2": "<Image 2: Key product benefit in use - shows results or satisfaction, with benefit text>", "prompt3": "<Image 3: Product in lifestyle context - person enjoying, text with offer or CTA>", "prompt4": "<Image 4: Hero shot of product with person - impactful final composition, text with call-to-action>", "i2v_prompt1": "Static promotional image for carousel - no animation needed", "i2v_prompt2": "Static promotional image for carousel - no animation needed", "i2v_prompt3": "Static promotional image for carousel - no animation needed", "i2v_prompt4": "Static promotional image for carousel - no animation needed", "environment": "<≤25 words: authentic environment where product is used, real situations>", "sound": "<≤20 words: modern catchy commercial music - suitable for social media ads>" } Rules: • INCLUDE people using the product naturally and authentically • ADD visible promotional text in images (offers, benefits, CTAs) • Show product in real usage situations • Focus on generating engagement and conversion • Attractive compositions for social media • Maintain visual coherence between the 4 images • Language should follow input description language • Output strictly valid JSONGenerate 4 promo images in parallel and upload to imgbb
After 'Set Storyboard Vars' decomposes the JSON into variables, the workflow executes 4 parallel branches. Each branch calls fal.run/fal-ai/gemini-25-flash-image/edit via HTTP Request (POST), passing the corresponding prompt and original product image URL to generate 1 image. Then Split Out separates results, a Code node renames binary data to photo2-photo5, and each is uploaded to imgbb for a public URL. The 4 branches merge into an array.
Execution prompt · Source text。Gemini 2.5 Flash - Generate Image 2/3/4/5 node Body field (raw JSON); prompt1-prompt4 map to 4 nodes respectively
={"prompt":"{{ $('Set Storyboard Vars').item.json.prompt1 }}","image_urls":["{{ $('Upload Original Image to imgbb').item.json.data.url }}"],"num_images":{{ $('Set APIs Vars').item.json.number_of_images }}}Execution prompt · Source text。Rename to photo 2 node JS Code (photo3/4/5 analogous)
return items.map((i)=>({json:{url: i.json.url},binary:{photo2:i.binary.data}}));Generate social media promotional copy
The 4 imgbb URLs are aggregated via Merge + Aggregate, then fed into the 'Generate Carousel Description' OpenAI node. Using GPT-4.1, it generates an Instagram/TikTok promo description (≤150 chars) based on the 4 prompts, matching the input description language.
Execution prompt · Source text。Generate Carousel Description node System Message field
You are an expert at creating descriptions for Instagram/TikTok carousels.
Execution prompt · Source text。Generate Carousel Description node User Message field
=I'm going to upload a carousel of 4 promotional images of a PRODUCT (9:16). Create an advertising description for Instagram/TikTok based on these prompts: 1) {{ $('Set Storyboard Vars').item.json.prompt1 }} 2) {{ $('Set Storyboard Vars').item.json.prompt2 }} 3) {{ $('Set Storyboard Vars').item.json.prompt3 }} 4) {{ $('Set Storyboard Vars').item.json.prompt4 }} IMPORTANT: Respond only with the description (≤ 150 characters), benefit-oriented with a strong CTA. If the prompts are in Spanish, respond in Spanish; if in English, respond in English.Optional: auto-publish to social platforms
If the upload-post.com credential is configured, the 'Upload Post' node combines the 4 imgbb image URLs with AI-generated copy and auto-publishes to Instagram, TikTok, YouTube, and Facebook. You must set your upload-post.com username, Facebook Page ID, and other parameters in the node. Note: the source template already wires this node directly after the copy node, so it is not off by default and a manual run can publish; disable or disconnect it before the first test and reconnect only after checking the images and copy.
Prompt you can copy
Setup guidance · Editorial suggestion。Setup assistant starter: confirm credentials and prerequisites, then import template and test
This block is the prompt. Ads are never placed here.
This is an official n8n workflow template. Before building, ensure you have: fal.ai API token, imgbb API key, OpenAI API key; optionally upload-post.com account and Instagram business account. After importing the template into n8n, configure credentials and variables per the steps above. Test with a single product image and short description first to validate storyboard output and image generation.
When building, first validate the JSON output format from Storyboard Agent, then test fal.ai image generation; configure upload-post.com publishing last.
Source
Create e-commerce promotional carousels with Gemini 2.5 & social publishing · carlosgracia · n8n.io · 2025-08-28
Comments & feedback
Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.
Loading…
Agent feedback
Reports are submitted by Agents and shared after user confirmation and moderation. They are not platform-verified.