Gemini AI와 Airtable을 사용하여 이미지에서 Shopify 제품 목록 생성
이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 33개의 노드를 포함합니다.주로 If, Set, Code, Wait, Limit 등의 노드를 사용하며. 사용Gemini AI와Airtable로 이미지에서 Shopify 제품 목록 생성
- •Shopify Admin API 인증 정보
- •Airtable API Key
- •Google Drive API 인증 정보
- •대상 API의 인증 정보가 필요할 수 있음
- •OpenAI API Key
- •Google Gemini API Key
사용된 노드 (33)
{
"meta": {
"instanceId": "818217039c98483edc5f2e50a5e7ea3ae47b57a621c9a4429b9c0454fe5f315c",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "d93982bc-9446-4bef-9a68-660a5df9b398",
"name": "시작",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-3856,
2912
],
"parameters": {},
"typeVersion": 1
},
{
"id": "d735219d-c2ca-4ed3-9d95-54e0edcf7118",
"name": "아무 작업 안 함",
"type": "n8n-nodes-base.noOp",
"position": [
-3568,
2912
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e397c1fb-f707-4e12-9ce6-b34906a83b10",
"name": "스토어 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": "원시 이미지 테이블 데이터 가져오기",
"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": "n8n.verified@gmail.com_shopify_raw_digital_product_"
}
},
"typeVersion": 2.1
},
{
"id": "fb027d2f-72b6-41df-b372-93c85ac22638",
"name": "원시 행 필터링",
"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": "이미지 분석 루프",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-3264,
3120
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "99f1edc0-d2d4-47a0-b240-1248b4a927a6",
"name": "컬렉션 데이터 가져오기",
"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": "컬렉션 출력 정제",
"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": "1개 제한",
"type": "n8n-nodes-base.limit",
"position": [
-3040,
3136
],
"parameters": {},
"typeVersion": 1
},
{
"id": "2bab1d58-92eb-430a-8605-44e3b65c47e6",
"name": "이미지 다운로드",
"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": "n8n.verified@gmail.com"
}
},
"typeVersion": 3
},
{
"id": "252be6f6-0b62-4cd3-bafb-29e1a76190af",
"name": "이미지 분석",
"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": "이미지 데이터 업데이트",
"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": "n8n.verified@gmail.com_shopify_raw_digital_product_"
}
},
"typeVersion": 2.1
},
{
"id": "7271487c-0d69-4c2c-b062-97105d136a93",
"name": "기본 LLM 체인",
"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": "자동 수정 출력 파서",
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
"position": [
-2384,
3680
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "79b254f4-ceb9-4685-ba62-5fab927b8009",
"name": "구조화된 출력 파서",
"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": "제한",
"type": "n8n-nodes-base.limit",
"position": [
-2672,
3440
],
"parameters": {},
"typeVersion": 1
},
{
"id": "64838bc3-8aac-4903-8c66-52e4c60c237b",
"name": "제품 세부 정보 업데이트",
"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": "n8n.verified@gmail.com_shopify_raw_digital_product_"
}
},
"typeVersion": 2.1
},
{
"id": "35bbe721-47d2-4173-b7f5-87dd6060c428",
"name": "드라이브 파일 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": "n8n.verified@gmail.com_shopify_raw_digital_product_"
}
},
"typeVersion": 2.1
},
{
"id": "3ba9b580-69d6-4b31-89a0-21dec6f49ef3",
"name": "분석된 행 가져오기",
"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": "n8n.verified@gmail.com_shopify_raw_digital_product_"
}
},
"executeOnce": true,
"typeVersion": 2.1
},
{
"id": "99d2c7d8-efe2-4e25-84b6-a50b9798fb69",
"name": "조건문",
"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": "아무 작업 안 함1",
"type": "n8n-nodes-base.noOp",
"position": [
-2288,
2880
],
"parameters": {},
"typeVersion": 1
},
{
"id": "160dc1d3-0181-4c4b-a678-1711b5974be9",
"name": "제품 테이블 가져오기",
"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": "n8n.verified@gmail.com_shopify_raw_digital_product_"
}
},
"executeOnce": false,
"typeVersion": 2.1
},
{
"id": "cf6a3a2b-af2a-46db-afe9-6a04e950a9d0",
"name": "제품 정보 생성",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-3120,
3424
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "b3733423-3cd6-4cfe-97c8-3b8ae35f0bcd",
"name": "2개 제한",
"type": "n8n-nodes-base.limit",
"position": [
-3328,
2896
],
"parameters": {},
"typeVersion": 1
},
{
"id": "0b5f1b3a-d6cf-4f23-ab48-dba15410d309",
"name": "대기",
"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 모델",
"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": "분석된 행 가져오기2",
"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": "n8n.verified@gmail.com_shopify_raw_digital_product_"
}
},
"executeOnce": true,
"typeVersion": 2.1
},
{
"id": "64b9d2e6-2b74-4505-9ce2-45d4f4559332",
"name": "제품 생성",
"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": "스티커 노트",
"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": "제품 업데이트 상태 업데이트",
"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": "n8n.verified@gmail.com_shopify_raw_digital_product_"
}
},
"typeVersion": 2.1
},
{
"id": "92d6bbc1-5b29-42fb-af8f-a2dd3394fa4f",
"name": "스티커 노트1",
"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": "스티커 노트2",
"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": "스티커 노트4",
"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### 📧 [manipritraj@gmail.com](mailto:manipritraj@gmail.com)\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": {
"99d2c7d8-efe2-4e25-84b6-a50b9798fb69": {
"main": [
[
{
"node": "3ff30e4c-1797-4546-9597-f99204fc60b3",
"type": "main",
"index": 0
}
],
[
{
"node": "35bbe721-47d2-4173-b7f5-87dd6060c428",
"type": "main",
"index": 0
}
]
]
},
"0b5f1b3a-d6cf-4f23-ab48-dba15410d309": {
"main": [
[
{
"node": "e397c1fb-f707-4e12-9ce6-b34906a83b10",
"type": "main",
"index": 0
}
]
]
},
"d93982bc-9446-4bef-9a68-660a5df9b398": {
"main": [
[
{
"node": "1a60742b-efb1-42fd-9240-df477c61c295",
"type": "main",
"index": 0
}
]
]
},
"d5625b75-2a40-48ea-bfc3-b6d36bbb1741": {
"main": [
[
{
"node": "7271487c-0d69-4c2c-b062-97105d136a93",
"type": "main",
"index": 0
}
]
]
},
"1bff9b59-7e1a-49a0-9b8d-2b6be9788872": {
"main": [
[
{
"node": "2bab1d58-92eb-430a-8605-44e3b65c47e6",
"type": "main",
"index": 0
}
]
]
},
"b3733423-3cd6-4cfe-97c8-3b8ae35f0bcd": {
"main": [
[
{
"node": "160dc1d3-0181-4c4b-a678-1711b5974be9",
"type": "main",
"index": 0
}
]
]
},
"e397c1fb-f707-4e12-9ce6-b34906a83b10": {
"main": [
[
{
"node": "99f1edc0-d2d4-47a0-b240-1248b4a927a6",
"type": "main",
"index": 0
}
]
]
},
"eaa6025b-a015-4525-9bd0-578878301a9b": {
"ai_languageModel": [
[
{
"node": "7271487c-0d69-4c2c-b062-97105d136a93",
"type": "ai_languageModel",
"index": 0
},
{
"node": "124951f1-6d2b-4ffc-8bb6-63f9568ab0d9",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"252be6f6-0b62-4cd3-bafb-29e1a76190af": {
"main": [
[
{
"node": "5a4a23a4-d805-44f2-94e4-b12d4ce592d2",
"type": "main",
"index": 0
}
]
]
},
"2bab1d58-92eb-430a-8605-44e3b65c47e6": {
"main": [
[
{
"node": "252be6f6-0b62-4cd3-bafb-29e1a76190af",
"type": "main",
"index": 0
}
]
]
},
"fb027d2f-72b6-41df-b372-93c85ac22638": {
"main": [
[
{
"node": "eb39feb9-0052-467d-bc29-13aeb2592a9e",
"type": "main",
"index": 0
}
],
[
{
"node": "d735219d-c2ca-4ed3-9d95-54e0edcf7118",
"type": "main",
"index": 0
}
]
]
},
"7271487c-0d69-4c2c-b062-97105d136a93": {
"main": [
[
{
"node": "64838bc3-8aac-4903-8c66-52e4c60c237b",
"type": "main",
"index": 0
}
]
]
},
"64b9d2e6-2b74-4505-9ce2-45d4f4559332": {
"main": [
[
{
"node": "fcb13329-e49e-4831-8a91-8fb6d1feccd1",
"type": "main",
"index": 0
}
]
]
},
"3ba9b580-69d6-4b31-89a0-21dec6f49ef3": {
"main": [
[
{
"node": "d5625b75-2a40-48ea-bfc3-b6d36bbb1741",
"type": "main",
"index": 0
}
]
]
},
"5abd0b24-2b29-4d69-9b4d-5a0564e4eb6d": {
"main": [
[
{
"node": "64b9d2e6-2b74-4505-9ce2-45d4f4559332",
"type": "main",
"index": 0
}
]
]
},
"160dc1d3-0181-4c4b-a678-1711b5974be9": {
"main": [
[
{
"node": "99d2c7d8-efe2-4e25-84b6-a50b9798fb69",
"type": "main",
"index": 0
}
]
]
},
"5a4a23a4-d805-44f2-94e4-b12d4ce592d2": {
"main": [
[
{
"node": "eb39feb9-0052-467d-bc29-13aeb2592a9e",
"type": "main",
"index": 0
}
]
]
},
"99f1edc0-d2d4-47a0-b240-1248b4a927a6": {
"main": [
[
{
"node": "53365348-0ce1-4cb4-b81f-782ac4d4488c",
"type": "main",
"index": 0
}
]
]
},
"35bbe721-47d2-4173-b7f5-87dd6060c428": {
"main": [
[
{
"node": "0b5f1b3a-d6cf-4f23-ab48-dba15410d309",
"type": "main",
"index": 0
}
]
]
},
"cf6a3a2b-af2a-46db-afe9-6a04e950a9d0": {
"main": [
[
{
"node": "5abd0b24-2b29-4d69-9b4d-5a0564e4eb6d",
"type": "main",
"index": 0
}
],
[
{
"node": "3ba9b580-69d6-4b31-89a0-21dec6f49ef3",
"type": "main",
"index": 0
}
]
]
},
"eb39feb9-0052-467d-bc29-13aeb2592a9e": {
"main": [
[
{
"node": "b3733423-3cd6-4cfe-97c8-3b8ae35f0bcd",
"type": "main",
"index": 0
}
],
[
{
"node": "1bff9b59-7e1a-49a0-9b8d-2b6be9788872",
"type": "main",
"index": 0
}
]
]
},
"64838bc3-8aac-4903-8c66-52e4c60c237b": {
"main": [
[
{
"node": "cf6a3a2b-af2a-46db-afe9-6a04e950a9d0",
"type": "main",
"index": 0
}
]
]
},
"79b254f4-ceb9-4685-ba62-5fab927b8009": {
"ai_outputParser": [
[
{
"node": "124951f1-6d2b-4ffc-8bb6-63f9568ab0d9",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"1a60742b-efb1-42fd-9240-df477c61c295": {
"main": [
[
{
"node": "fb027d2f-72b6-41df-b372-93c85ac22638",
"type": "main",
"index": 0
}
]
]
},
"53365348-0ce1-4cb4-b81f-782ac4d4488c": {
"main": [
[
{
"node": "cf6a3a2b-af2a-46db-afe9-6a04e950a9d0",
"type": "main",
"index": 0
}
]
]
},
"124951f1-6d2b-4ffc-8bb6-63f9568ab0d9": {
"ai_outputParser": [
[
{
"node": "7271487c-0d69-4c2c-b062-97105d136a93",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 콘텐츠 제작, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
MANISH KUMAR
@manipritrajAutomation Architect | n8n Expert I turn repetition into magic! Building workflows for: - Content creation (YouTube/social media) - Business ops (CRM/data pipelines) - Personal productivity (AI/smart home) Superpowers: API integrations • Debugging • Scalable solutions Featured: YouTube Shorts Automator • AI Report Generator • Custom ChatGPT+n8n "Automation should adapt to humans" 📧 manipritraj@gmail.com Fun fact: Automated my coffee+news+cat feeder! ☕🐈
이 워크플로우 공유