
Generate Shopify Product Listings from Images with Gemini AI and Airtable
描述
分类
🤖 AI & Machine Learning
使用的节点
n8n-nodes-base.ifn8n-nodes-base.setn8n-nodes-base.coden8n-nodes-base.noOpn8n-nodes-base.noOpn8n-nodes-base.waitn8n-nodes-base.limitn8n-nodes-base.limitn8n-nodes-base.limitn8n-nodes-base.switch
价格免费
浏览量2
最后更新7/7/2026
workflow.json
{
"meta": {
"instanceId": "818217039c98483edc5f2e50a5e7ea3ae47b57a621c9a4429b9c0454fe5f315c",
"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": {
"id": "9vQPBWEQTviLi4pr",
"name": "[email protected]_shopify_raw_digital_product_"
}
},
"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": {
"id": "cWbUpQhRGFUOo8GG",
"name": "admin_flow_forge_art"
}
},
"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": {
"id": "f01nZ9QGzYgioVNy",
"name": "[email protected]"
}
},
"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": {
"id": "2HxBb6WtylA8XF3I",
"name": "OpenAI_Paid"
}
},
"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": {
"id": "9vQPBWEQTviLi4pr",
"name": "[email protected]_shopify_raw_digital_product_"
}
},
"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ō: 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–6 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’s 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ō 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": {
"id": "9vQPBWEQTviLi4pr",
"name": "[email protected]_shopify_raw_digital_product_"
}
},
"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": {
"id": "9vQPBWEQTviLi4pr",
"name": "[email protected]_shopify_raw_digital_product_"
}
},
"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": {
"id": "9vQPBWEQTviLi4pr",
"name": "[email protected]_shopify_raw_digital_product_"
}
},
"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": {
"id": "9vQPBWEQTviLi4pr",
"name": "[email protected]_shopify_raw_digital_product_"
}
},
"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
],
"webhookId": "e35aea41-7574-48e1-8b9c-8a548a1ddf14",
"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": {
"id": "rJcvhJlIc3a5dpyu",
"name": "gimini_myFirstProject_manipritraj"
}
},
"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": {
"id": "9vQPBWEQTviLi4pr",
"name": "[email protected]_shopify_raw_digital_product_"
}
},
"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": {
"id": "cWbUpQhRGFUOo8GG",
"name": "admin_flow_forge_art"
}
},
"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` → Google Drive file ID \n - `status` → 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–6 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": {
"id": "9vQPBWEQTviLi4pr",
"name": "[email protected]_shopify_raw_digital_product_"
}
},
"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### 📧 [[email protected]](mailto:[email protected])\n### 📞 +91-9334888899\n\n"
},
"typeVersion": 1
}
],
"pinData": {
"get_analyzed_row2": [
{
"id": "recdAJ3GIepvodx2f",
"product_id": "mgc6pd12riar5y",
"createdTime": "2025-10-03T23:29:54.000Z",
"drive_file_id": "1FtIvbMF7TKO0F1KXK0IRsLavZvW869Pn",
"product_title": "Motivational Poster: Perseverance is the Key to Strength",
"SEL_page_title": "Perseverance is Key | Motivational Strength Poster",
"SEL_url_handle": "motivational-perseverance-strength-poster",
"product_status": "generated",
"product_category": "Best Sellers",
"product_description": "Unlock your potential with this powerful motivational poster featuring the timeless message: \"Perseverance is the key to strength.\" This inspiring piece serves as a daily reminder that true power comes from unwavering dedication and never giving up on your goals. Perfect for any aspiring individual, whether you're a student, professional, or simply seeking daily encouragement. Let its profound wisdom fuel your resolve and inspire you to overcome any challenge. Elevate your workspace, bedroom, or living area with this high-quality, thought-provoking design.\n",
"SEL_meta_description": "Inspire your journey with our 'Perseverance is the Key to Strength' motivational poster. A powerful reminder to stay strong and achieve your goals. Perfect for any space!"
}
]
},
"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
}
]
]
}
}
}