This workflow corresponds to n8n.io template #10008 — we link there as the canonical source.
This workflow follows the Airtable → Chainllm 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "d93982bc-9446-4bef-9a68-660a5df9b398",
"name": "start",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-3856,
2912
],
"parameters": {},
"typeVersion": 1
},
{
"id": "d735219d-c2ca-4ed3-9d95-54e0edcf7118",
"name": "do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
-3568,
2912
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e397c1fb-f707-4e12-9ce6-b34906a83b10",
"name": "store_id",
"type": "n8n-nodes-base.set",
"position": [
-3792,
3424
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "68233ea1-2741-4c61-8f80-3b484e96ff55",
"name": "store_id",
"type": "string",
"value": "1qzkpy-1s"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1a60742b-efb1-42fd-9240-df477c61c295",
"name": "get_raw_image_table_data",
"type": "n8n-nodes-base.airtable",
"position": [
-3792,
3136
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appYnPOyDUwImADqj",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj",
"cachedResultName": "shopify_digital_product"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbl1s3jAxiwbfaQQO",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj/tbl1s3jAxiwbfaQQO",
"cachedResultName": "raw_data"
},
"options": {},
"operation": "search"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "fb027d2f-72b6-41df-b372-93c85ac22638",
"name": "filter_raw_row",
"type": "n8n-nodes-base.switch",
"position": [
-3568,
3136
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Unused",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "d40b20b3-42c3-4999-b4ac-f99a766d0be7",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "=Unused"
}
]
},
"renameOutput": true
},
{
"outputKey": "Used",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "1bf7a6a8-dbe3-433e-aace-a914f9883623",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "=Used"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.3
},
{
"id": "eb39feb9-0052-467d-bc29-13aeb2592a9e",
"name": "loop_image_analyzation",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-3264,
3120
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "99f1edc0-d2d4-47a0-b240-1248b4a927a6",
"name": "get_collection_data",
"type": "n8n-nodes-base.httpRequest",
"position": [
-3568,
3424
],
"parameters": {
"url": "=https://{{ $json.store_id }}.myshopify.com/admin/api/2025-10/custom_collections.json?limit=50",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "shopifyAccessTokenApi"
},
"credentials": {
"shopifyAccessTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "53365348-0ce1-4cb4-b81f-782ac4d4488c",
"name": "refine_collection_output",
"type": "n8n-nodes-base.code",
"position": [
-3344,
3424
],
"parameters": {
"jsCode": "// Input data assumed to be in items[0].json.custom_collections\nconst collections = items[0].json.custom_collections;\n\n// Map only id and title to a new array of objects\nconst simplifiedCollections = collections.map(collection => {\n return {\n json: {\n id: collection.id,\n title: collection.title\n }\n };\n});\n\nreturn simplifiedCollections;\n"
},
"typeVersion": 2
},
{
"id": "1bff9b59-7e1a-49a0-9b8d-2b6be9788872",
"name": "limit_1",
"type": "n8n-nodes-base.limit",
"position": [
-3040,
3136
],
"parameters": {},
"typeVersion": 1
},
{
"id": "2bab1d58-92eb-430a-8605-44e3b65c47e6",
"name": "download_image",
"type": "n8n-nodes-base.googleDrive",
"position": [
-2816,
3136
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.drive_file_id }}"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "252be6f6-0b62-4cd3-bafb-29e1a76190af",
"name": "analyze_image",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-2592,
3136
],
"parameters": {
"text": "=# Role:\nYou are an expert AI image analyst specialized in digital posters and artwork content.\n\n# Instruction:\nAnalyze the digital poster and provide all relevant details about the characters, series, style, text, and visual mood in structured JSON format. Focus only on the artwork content.\n\n\n# Restriction:\n## Ignore all background elements, shadows, frames, walls, furniture, or any photography/mockup context.\n- Do not make assumptions beyond what is visible in the poster.\n- If a specific detail is missing or unclear, use null.\n- Avoid hallucinations or adding fictional content. Focus only on observable details.\n\n# Output Structure:\n## Output must be valid JSON with the following keys:\n\n## Example Output:\n{\n \"character_name\": \"Monkey D. Luffy\",\n \"series_name\": \"One Piece\",\n \"category\": \"anime\",\n \"poster_text\": \"Friendship is the most precious treasure, and chasing dreams is the meaning of life\",\n \"poster_type\": \"motivational\"\n}\n\n# Hallucination Avoidance Rule:\n- Only include elements that are visibly present in the poster.\n- Do not infer names, series, or text if not clearly visible.\n- Do not describe the environment, room, frame, or mockup context.\n- If unsure, return null rather than guessing.",
"modelId": {
"__rl": true,
"mode": "list",
"value": "chatgpt-4o-latest",
"cachedResultName": "CHATGPT-4O-LATEST"
},
"options": {},
"resource": "image",
"simplify": false,
"inputType": "base64",
"operation": "analyze"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "5a4a23a4-d805-44f2-94e4-b12d4ce592d2",
"name": "update_image_data",
"type": "n8n-nodes-base.airtable",
"position": [
-2368,
3136
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appYnPOyDUwImADqj",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj",
"cachedResultName": "shopify_digital_product"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbl1s3jAxiwbfaQQO",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj/tbl1s3jAxiwbfaQQO",
"cachedResultName": "raw_data"
},
"columns": {
"value": {
"status": "Used",
"image_data": "={{ $json.choices[0].message.content }}",
"drive_file_id": "={{ $('download_image').item.json.drive_file_id }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "drive_file_id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "drive_file_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "file_name",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "file_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "file_type",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "file_type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "drive_url",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "drive_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "uploaded_date",
"type": "dateTime",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "uploaded_date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "options",
"display": true,
"options": [
{
"name": "Unused",
"value": "Unused"
},
{
"name": "Used",
"value": "Used"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "image_data",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "image_data",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"drive_file_id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "7271487c-0d69-4c2c-b062-97105d136a93",
"name": "Basic LLM Chain",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
-2448,
3440
],
"parameters": {
"text": "=## Input\nAnalyzed image data : {{ $json.image_data }}\n\n## Available Categories/Collections:\nCategory Title : {{ $('refine_collection_output').item.json.title }}\nCategory id : {{ $('refine_collection_output').item.json.id }}",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=You are a Shopify product content generator AI. \nYour task is to take structured analyzed image data (JSON format) and generate **Shopify product details**.\n\n### Input Data Example:\n{\n \"character_name\": \"Naruto\",\n \"series_name\": \"Naruto\",\n \"category\": \"anime\",\n \"poster_text\": \"I never go back on my word! That's my nind\u014d: my ninja way.\",\n \"poster_type\": \"motivational\"\n}\n\n### Available Categories/Collections:\nCategory Title : {{ $('refine_collection_output').item.json.title }}\nCategory id : {{ $('refine_collection_output').item.json.id }}\n\n### Output Rules:\n- Always respond in **valid JSON format only**. \n- Use the `series_name` and `character_name` in `product_title` if available. \n- If no character/series, create a general title using poster_type and poster_text keywords. \n- `product_description` must be 4\u20136 sentences, engaging, and SEO-friendly. \n- Select the most relevant `product_category` from the available categories. \n- Add `\"matched_category_id\"` to match `product_category`. \n- `SEL_page_title` must be catchy within 70 characters. \n- `SEL_meta_description` must be engaging within 160 characters. \n- `SEL_url_handle` must be SEO-friendly (lowercase + hyphens). \n\n### Output JSON Structure:\n{\n \"product_title\": \"\",\n \"matched_category\": \"\",\n \"matched_category_id\": \"\",\n \"product_description\": \"\",\n \"product_category\": \"\",\n \"SEL_page_title\": \"\",\n \"SEL_meta_description\": \"\",\n \"SEL_url_handle\": \"\"\n}"
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "124951f1-6d2b-4ffc-8bb6-63f9568ab0d9",
"name": "Auto-fixing Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
"position": [
-2384,
3680
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "79b254f4-ceb9-4685-ba62-5fab927b8009",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-2608,
3696
],
"parameters": {
"jsonSchemaExample": "{\n \"product_title\": \"Naruto Motivational Anime Poster - Ninja Way\",\n \"matched_category\": \"Anime\",\n \"matched_category_id\": \"320625541282\",\n \"product_description\": \"Bring home the spirit of Naruto Uzumaki with this motivational anime poster. Featuring his iconic quote about never giving up, it\u2019s the perfect wall art for fans and dreamers.\",\n \"product_category\": \"Anime Posters\",\n \"SEL_page_title\": \"Naruto Motivational Anime Poster - Ninja Way\",\n \"SEL_meta_description\": \"Shop this Naruto motivational anime poster featuring his nind\u014d quote. Perfect wall decor for anime fans and dreamers.\",\n \"SEL_url_handle\": \"naruto-motivational-anime-poster-ninja-way\"\n}\n"
},
"typeVersion": 1.3
},
{
"id": "d5625b75-2a40-48ea-bfc3-b6d36bbb1741",
"name": "limit_",
"type": "n8n-nodes-base.limit",
"position": [
-2672,
3440
],
"parameters": {},
"typeVersion": 1
},
{
"id": "64838bc3-8aac-4903-8c66-52e4c60c237b",
"name": "update_product_details",
"type": "n8n-nodes-base.airtable",
"position": [
-2864,
3680
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appYnPOyDUwImADqj",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj",
"cachedResultName": "shopify_digital_product"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblalx8WQPAgA6VVY",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj/tblalx8WQPAgA6VVY",
"cachedResultName": "product_details"
},
"columns": {
"value": {
"product_id": "={{Date.now().toString(36) + Math.random().toString(36).slice(2,8)}}",
"drive_file_id": "={{ $('limit_').item.json.drive_file_id }}",
"product_title": "={{ $json.output.product_title }}",
"SEL_page_title": "={{ $json.output.SEL_page_title }}",
"SEL_url_handle": "={{ $json.output.SEL_url_handle }}",
"product_status": "generated",
"product_category": "={{ $json.output.matched_category }}",
"product_description": "={{ $json.output.product_description }}",
"SEL_meta_description": "={{ $json.output.SEL_meta_description }}"
},
"schema": [
{
"id": "drive_file_id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "drive_file_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "product_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_title",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "product_title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_description",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "product_description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_category",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "product_category",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_price",
"type": "number",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "product_price",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "SEL_page_title",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "SEL_page_title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "SEL_meta_description",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "SEL_meta_description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "SEL_url_handle",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "SEL_url_handle",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_status",
"type": "options",
"display": true,
"options": [
{
"name": "generated",
"value": "generated"
},
{
"name": "posted",
"value": "posted"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "product_status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"drive_file_id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "35bbe721-47d2-4173-b7f5-87dd6060c428",
"name": "update_drive_file_id",
"type": "n8n-nodes-base.airtable",
"position": [
-2592,
2912
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appYnPOyDUwImADqj",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj",
"cachedResultName": "shopify_digital_product"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblalx8WQPAgA6VVY",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj/tblalx8WQPAgA6VVY",
"cachedResultName": "product_details"
},
"columns": {
"value": {
"drive_file_id": "={{ $json.drive_file_id }}"
},
"schema": [
{
"id": "drive_file_id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "drive_file_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_id",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "product_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_title",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "product_title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_description",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "product_description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_category",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "product_category",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_price",
"type": "number",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "product_price",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "SEL_page_title",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "SEL_page_title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "SEL_meta_description",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "SEL_meta_description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "SEL_url_handle",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "SEL_url_handle",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_status",
"type": "options",
"display": true,
"options": [
{
"name": "generated",
"value": "generated"
},
{
"name": "posted",
"value": "posted"
}
],
"removed": true,
"readOnly": false,
"required": false,
"displayName": "product_status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "3ba9b580-69d6-4b31-89a0-21dec6f49ef3",
"name": "get_analyzed_row",
"type": "n8n-nodes-base.airtable",
"position": [
-2896,
3440
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appYnPOyDUwImADqj",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj",
"cachedResultName": "shopify_digital_product"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbl1s3jAxiwbfaQQO",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj/tbl1s3jAxiwbfaQQO",
"cachedResultName": "raw_data"
},
"options": {},
"operation": "search",
"filterByFormula": "{status} = 'Used'"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"executeOnce": true,
"typeVersion": 2.1
},
{
"id": "99d2c7d8-efe2-4e25-84b6-a50b9798fb69",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
-2816,
2896
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8b3e6db0-8236-4eec-926e-68df625ebcc7",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.drive_file_id }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "3ff30e4c-1797-4546-9597-f99204fc60b3",
"name": "do nothing1",
"type": "n8n-nodes-base.noOp",
"position": [
-2288,
2880
],
"parameters": {},
"typeVersion": 1
},
{
"id": "160dc1d3-0181-4c4b-a678-1711b5974be9",
"name": "get_product_table",
"type": "n8n-nodes-base.airtable",
"position": [
-3040,
2896
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appYnPOyDUwImADqj",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj",
"cachedResultName": "shopify_digital_product"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblalx8WQPAgA6VVY",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj/tblalx8WQPAgA6VVY",
"cachedResultName": "product_details"
},
"options": {},
"operation": "search"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"executeOnce": false,
"typeVersion": 2.1
},
{
"id": "cf6a3a2b-af2a-46db-afe9-6a04e950a9d0",
"name": "product_info_creation",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-3120,
3424
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "b3733423-3cd6-4cfe-97c8-3b8ae35f0bcd",
"name": "limit_2",
"type": "n8n-nodes-base.limit",
"position": [
-3328,
2896
],
"parameters": {},
"typeVersion": 1
},
{
"id": "0b5f1b3a-d6cf-4f23-ab48-dba15410d309",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"position": [
-4016,
3424
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "eaa6025b-a015-4525-9bd0-578878301a9b",
"name": "Gimini Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-2496,
3696
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "5abd0b24-2b29-4d69-9b4d-5a0564e4eb6d",
"name": "get_analyzed_row2",
"type": "n8n-nodes-base.airtable",
"position": [
-3008,
3968
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appYnPOyDUwImADqj",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj",
"cachedResultName": "shopify_digital_product"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblalx8WQPAgA6VVY",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj/tblalx8WQPAgA6VVY",
"cachedResultName": "product_details"
},
"options": {},
"operation": "search",
"filterByFormula": "{product_status} = 'generated'"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"executeOnce": true,
"typeVersion": 2.1
},
{
"id": "64b9d2e6-2b74-4505-9ce2-45d4f4559332",
"name": "Create a product",
"type": "n8n-nodes-base.shopify",
"position": [
-2784,
3968
],
"parameters": {
"title": "={{ $('get_analyzed_row2').item.json.product_title }}",
"resource": "product",
"authentication": "accessToken",
"additionalFields": {
"handle": "={{ $('get_analyzed_row2').item.json.SEL_url_handle }}",
"images": [],
"body_html": "={{ $('get_analyzed_row2').item.json.product_description }}",
"product_type": "={{ $('get_analyzed_row2').item.json.SEL_page_title }}"
}
},
"credentials": {
"shopifyAccessTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "bd81c5a1-291a-48b6-a78a-d22db70fc27a",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-5120,
2608
],
"parameters": {
"color": 3,
"width": 944,
"height": 1568,
"content": "# Digital Art to Shopify Automation\n\n## Overview :\nThis template automates the process of turning digital art files into fully structured Shopify products using n8n, OpenAI, Airtable, Google Drive, and Shopify. The workflow fetches raw digital artwork, analyzes it for categories and descriptions using AI, generates SEO-optimized product content, and posts it to Shopify.\n\n## Ideal for : \nDigital artists, print-on-demand sellers, e-commerce store managers, and anyone looking to automate Shopify product creation for digital art.\n\n## SEO Keywords : \nDigital art automation, Shopify product creation, n8n workflow template, AI image analysis, Airtable to Shopify integration, OpenAI product description generator, automated e-commerce workflow.\n\n\n\n# User Guide\nThis workflow automates image analysis, product detail generation, and Shopify product posting.\n\n---\n## Step 1: Upload Images\n- Upload your digital artwork or poster images to **Google Drive**. \n- In **Airtable Raw Image Table**, add new entries with:\n - `drive_file_id` \u2192 Google Drive file ID \n - `status` \u2192 set as `Unused` \n\n---\n## Step 2: Image Analysis (Subworkflow 1)\n- Fetch `Unused` images from Airtable. \n- Download images from Google Drive. \n- AI analyzes images to extract:\n - Characters\n - Series\n - Poster text\n - Style\n - Category\n - Visual mood \n- Updates analyzed data back to Airtable. \n- Marks the image `Used` after processing. \n\n---\n## Step 3: Product Generation (Subworkflow 2)\n- Fetch analyzed image data from Airtable. \n- Retrieve available Shopify collections for your store. \n- AI generates Shopify-ready product details:\n - `product_title`\n - `product_description` (SEO-friendly, 4\u20136 sentences)\n - `product_category` and matched collection ID\n - SEO fields: `SEL_page_title`, `SEL_meta_description`, `SEL_url_handle` \n- Updates generated product details in Airtable and marks as `generated`. \n\n---\n## Step 4: Posting Products to Shopify\n- Fetch `generated` product details from Airtable. \n- Automatically create products in Shopify using the API. \n- Update Airtable product status to `posted` once successfully added. \n\n---\n## Step 5: Batch Processing & Automation\n- Workflow processes images and products in **batches** for efficiency. \n- Can be triggered automatically via schedule or webhook. \n"
},
"typeVersion": 1
},
{
"id": "fcb13329-e49e-4831-8a91-8fb6d1feccd1",
"name": "update_product_update_status",
"type": "n8n-nodes-base.airtable",
"position": [
-2544,
3968
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appYnPOyDUwImADqj",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj",
"cachedResultName": "shopify_digital_product"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblalx8WQPAgA6VVY",
"cachedResultUrl": "https://airtable.com/appYnPOyDUwImADqj/tblalx8WQPAgA6VVY",
"cachedResultName": "product_details"
},
"columns": {
"value": {
"product_id": "={{ $('get_analyzed_row2').item.json.product_id }}",
"product_status": "posted"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "drive_file_id",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "drive_file_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "product_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_title",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "product_title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_description",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "product_description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_category",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "product_category",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_price",
"type": "number",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "product_price",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "SEL_page_title",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "SEL_page_title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "SEL_meta_description",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "SEL_meta_description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "SEL_url_handle",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "SEL_url_handle",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_status",
"type": "options",
"display": true,
"options": [
{
"name": "generated",
"value": "generated"
},
{
"name": "posted",
"value": "posted"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "product_status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"product_id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "92d6bbc1-5b29-42fb-af8f-a2dd3394fa4f",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-4128,
2608
],
"parameters": {
"width": 2096,
"height": 752,
"content": "# Digital Image Analysis\n\n## Purpose:\nAutomatically fetch raw digital images, analyze their content using AI, and update the results in Airtable for further processing.\n\n## How It Works:\nThis workflow retrieves all unused images from Airtable, downloads them from Google Drive, and uses an AI model to analyze key details \nlike characters, series, category, poster text, and type. After analysis, the results are updated back into Airtable, and images are \nmarked as processed, creating a seamless loop for continuous image handling."
},
"typeVersion": 1
},
{
"id": "8609bce8-b6ce-42dc-9b60-9032a024c89b",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-4128,
3408
],
"parameters": {
"width": 2096,
"height": 768,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n# Shopify Product Creation\n\n## Purpose:\nConvert AI-analyzed image data into structured Shopify product details and post them automatically to your Shopify store.\n\n## How It Works:\nHere we will fetch analyzed image data from Airtable.\nIt retrieves available Shopify collections to match products with the most relevant category.\n\n## AI (LLM) generates structured product details including:\n- Product title\n- Description (SEO-friendly and engaging)\n- Product category and matched collection ID\n- SEO metadata (page title, meta description, URL handle)\nGenerated product details are updated back into Airtable.\n\n## The workflow then posts the product to Shopify automatically.\nFinally, the workflow updates the product status in Airtable to indicate it has been posted.\n"
},
"typeVersion": 1
},
{
"id": "095edb67-2ee2-4c32-921a-fe5f5fa06c32",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-5648,
2608
],
"parameters": {
"color": 6,
"width": 464,
"height": 912,
"content": "# Author Details\n\n## Manish Kumar\n### Expert Designer & Automation Engineer for Custom Shopify Apps\n\nI specialize in designing seamless customer experiences and automating workflows for Shopify, web, and business platforms. From custom apps integration to process optimization, my solutions empower teams to work smarter and scale faster.\n\n## Contact:\n### \ud83d\udce7 [manipritraj@gmail.com](mailto:manipritraj@gmail.com)\n### \ud83d\udcde +91-9334888899\n\n"
},
"typeVersion": 1
}
],
"connections": {
"If": {
"main": [
[
{
"node": "do nothing1",
"type": "main",
"index": 0
}
],
[
{
"node": "update_drive_file_id",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "store_id",
"type": "main",
"index": 0
}
]
]
},
"start": {
"main": [
[
{
"node": "get_raw_image_table_data",
"type": "main",
"index": 0
}
]
]
},
"limit_": {
"main": [
[
{
"node": "Basic LLM Chain",
"type": "main",
"index": 0
}
]
]
},
"limit_1": {
"main": [
[
{
"node": "download_image",
"type": "main",
"index": 0
}
]
]
},
"limit_2": {
"main": [
[
{
"node": "get_product_table",
"type": "main",
"index": 0
}
]
]
},
"store_id": {
"main": [
[
{
"node": "get_collection_data",
"type": "main",
"index": 0
}
]
]
},
"Gimini Model": {
"ai_languageModel": [
[
{
"node": "Basic LLM Chain",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Auto-fixing Output Parser",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"analyze_image": {
"main": [
[
{
"node": "update_image_data",
"type": "main",
"index": 0
}
]
]
},
"download_image": {
"main": [
[
{
"node": "analyze_image",
"type": "main",
"index": 0
}
]
]
},
"filter_raw_row": {
"main": [
[
{
"node": "loop_image_analyzation",
"type": "main",
"index": 0
}
],
[
{
"node": "do nothing",
"type": "main",
"index": 0
}
]
]
},
"Basic LLM Chain": {
"main": [
[
{
"node": "update_product_details",
"type": "main",
"index": 0
}
]
]
},
"Create a product": {
"main": [
[
{
"node": "update_product_update_status",
"type": "main",
"index": 0
}
]
]
},
"get_analyzed_row": {
"main": [
[
{
"node": "limit_",
"type": "main",
"index": 0
}
]
]
},
"get_analyzed_row2": {
"main": [
[
{
"node": "Create a product",
"type": "main",
"index": 0
}
]
]
},
"get_product_table": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"update_image_data": {
"main": [
[
{
"node": "loop_image_analyzation",
"type": "main",
"index": 0
}
]
]
},
"get_collection_data": {
"main": [
[
{
"node": "refine_collection_output",
"type": "main",
"index": 0
}
]
]
},
"update_drive_file_id": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"product_info_creation": {
"main": [
[
{
"node": "get_analyzed_row2",
"type": "main",
"index": 0
}
],
[
{
"node": "get_analyzed_row",
"type": "main",
"index": 0
}
]
]
},
"loop_image_analyzation": {
"main": [
[
{
"node": "limit_2",
"type": "main",
"index": 0
}
],
[
{
"node": "limit_1",
"type": "main",
"index": 0
}
]
]
},
"update_product_details": {
"main": [
[
{
"node": "product_info_creation",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"get_raw_image_table_data": {
"main": [
[
{
"node": "filter_raw_row",
"type": "main",
"index": 0
}
]
]
},
"refine_collection_output": {
"main": [
[
{
"node": "product_info_creation",
"type": "main",
"index": 0
}
]
]
},
"Auto-fixing Output Parser": {
"ai_outputParser": [
[
{
"node": "Basic LLM Chain",
"type": "ai_outputParser",
"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.
airtableTokenApigoogleDriveOAuth2ApigooglePalmApiopenAiApishopifyAccessTokenApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
(from just and image to complete Shopify product page.)
Source: https://n8n.io/workflows/10008/ — 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.
Recruiting agencies, executive search firms, and in-house talent teams that want to automate candidate sourcing and prequalification. Instead of spending hours searching, scoring, and writing outreach
Use cases are many: This tool is perfect for YouTube and Shorts creators who want to publish daily content without showing their face, TikTok and Reels marketers automating voice-over-driven videos, a
This n8n template demonstrates how to automatically generate authentic User-Generated Content (UGC) style marketing videos for eCommerce products using AI. Simply upload a product image, and the workf
The Recap AI - eCommerce UGC Video Generator. Uses formTrigger, openAi, chainLlm, outputParserStructured. Event-driven trigger; 24 nodes.
Content - Newsletter Agent. Uses formTrigger, chainLlm, outputParserStructured, httpRequest. Event-driven trigger; 87 nodes.