Gemini AI를 사용하여 감정 이야기를 만들기: 이미지와 Veo3 JSON 트리거 생성
고급
이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 35개의 노드를 포함합니다.주로 If, Set, Code, Wait, Limit 등의 노드를 사용하며. Gemini AI를 사용하여 감정적인 이야기를 생성하세요: 이미지와 Veo3 JSON 트리거
사전 요구사항
- •Google Drive API 인증 정보
- •Google Sheets API 인증 정보
- •Google Gemini API Key
사용된 노드 (35)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "aa8f1cf0c4d8087e25a2eea962da249799481d2fb992314793977a97a5e71d77"
},
"nodes": [
{
"id": "8f6d83d3-4eb2-4331-b1d7-54b083c91221",
"name": "스티커 노트7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-928,
-80
],
"parameters": {
"color": 5,
"width": 528,
"height": 640,
"content": "## Muhammad Farooq Iqbal - Automation Expert & n8n Creator\n\nI am a passionate automation expert and recognized n8n Creator specializing in intelligent workflow automation. With extensive experience in n8n, AI automation, Zapier, and Make.com, I have created innovative workflow templates with 500+ downloads across the global automation community\n\n### Expertise\n- **Workflow Automation**: n8n, Zapier, Make.com, AI automation\n- **AI Integration**: Gemini AI, API integration, data processing\n- **Platform Mastery**: Google Sheets, Google Drive, custom scripts\n\n## Need Help with This Workflow?\n\nIf you face any issues with this workflow or need customization support, feel free to reach out:\n\n**📧 Email**: mfarooqiqbal143@gmail.com \n**📱 Phone**: +923036991118 \n**💼 LinkedIn**: [Connect with me](https://linkedin.com/in/muhammadfarooqiqbal) \n**🌐 Portfolio**: [View my work](https://mfarooqone.github.io/n8n/)\n\n*I'm always excited to help with automation challenges and workflow optimization!*\n"
},
"typeVersion": 1
},
{
"id": "d57e5004-7c16-4159-ba6f-8144da450e6c",
"name": "'워크플로 실행' 클릭 시",
"type": "n8n-nodes-base.manualTrigger",
"position": [
208,
32
],
"parameters": {},
"typeVersion": 1
},
{
"id": "c266998e-0003-4ca7-af61-f081d109ecef",
"name": "If3",
"type": "n8n-nodes-base.if",
"position": [
384,
912
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "bc74b0c2-aa46-4bcd-91f3-1eb6b0720167",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Status }}",
"rightValue": "pending"
}
]
}
},
"retryOnFail": true,
"typeVersion": 2.2
},
{
"id": "ee5e4ada-04e7-409d-8e83-a816b7aafea2",
"name": "폴더 생성",
"type": "n8n-nodes-base.googleDrive",
"position": [
816,
32
],
"parameters": {
"name": "={{ $json.output.folder_name }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1GND1exvlAXTzESNvWmFs6FFMx90KLzlC",
"cachedResultUrl": "https://drive.google.com/drive/folders/1GND1exvlAXTzESNvWmFs6FFMx90KLzlC",
"cachedResultName": "prompt"
},
"resource": "folder"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "1Bnhm02w1dxE4FO6",
"name": "Farooq Google Drive account"
}
},
"retryOnFail": true,
"typeVersion": 3
},
{
"id": "c4a016f9-cbe2-4d5a-8b69-1af4fd66da8d",
"name": "Json parser1",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
624,
160
],
"parameters": {
"jsonSchemaExample": "{\n \"folder_name\": \"folder name\"\n}"
},
"typeVersion": 1.3
},
{
"id": "871f8261-49ff-4174-836c-9e4331b59c30",
"name": "폴더 이름",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
480,
-16
],
"parameters": {
"text": "=",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=Act as a folder name suggistions \nSuggest a folder name for a emotional story\nalways give rendom name with time stamp"
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"retryOnFail": true,
"typeVersion": 1.7
},
{
"id": "6031fed3-e65b-489c-8cfa-efa85a9df4bb",
"name": "시트에서 행 업데이트",
"type": "n8n-nodes-base.googleSheets",
"position": [
1808,
912
],
"parameters": {
"columns": {
"value": {
"Status": "created",
"Image Url": "={{ $json.id }}",
"row_number": "={{ $('Rows in sheet').item.json.row_number }}",
"Updated Prompt": "={{ $('Prompt converter1').item.json.output }}"
},
"schema": [
{
"id": "Scene",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Scene",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Character Prompt",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Character Prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Action Prompt",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Action Prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Voice Line (Roman Urdu)",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Voice Line (Roman Urdu)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Updated Prompt",
"type": "string",
"display": true,
"required": false,
"displayName": "Updated Prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Image Url",
"type": "string",
"display": true,
"required": false,
"displayName": "Image Url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create sheet').item.json.sheetId }}"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1k_0n-hFW8WRvNSW4izC5UdTA8KtO0VAOvuwlWkRsdPo",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1k_0n-hFW8WRvNSW4izC5UdTA8KtO0VAOvuwlWkRsdPo/edit?usp=drivesdk",
"cachedResultName": "Scenes Yusra"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "bAnK8T185A3Wr7Kj",
"name": "Google Sheets account"
}
},
"retryOnFail": true,
"typeVersion": 4.7
},
{
"id": "9f210c25-961b-4a46-9c47-1c02f6c8d716",
"name": "이미지 생성",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
1328,
912
],
"parameters": {
"prompt": "={{ $json.output.prompt }} {{ $json.output.negative_prompt }} {{ $json.output.aspect_ratio }} {{ $json.output.camera_movement }} {{ $json.output.style }} {{ $json.output.quality }} {{ $json.output.seed }} {{ $json.output.fps }} {{ $json.output.resolution }} {{ $json.output.lighting }} {{ $json.output.mood }} {{ $json.output.mood }} {{ $json.output.color_palette }} {{ $json.output.subject_focus }} {{ $json.output.background }} {{ $json.output.effects }} ",
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.0-flash-exp-image-generation",
"cachedResultName": "models/gemini-2.0-flash-exp-image-generation"
},
"options": {},
"resource": "image"
},
"credentials": {
"googlePalmApi": {
"id": "qzXOJEaYeexWZRUf",
"name": "new key"
}
},
"retryOnFail": true,
"typeVersion": 1
},
{
"id": "4fc42e92-5ab7-4ddc-a263-8242137dc50f",
"name": "파일 업로드",
"type": "n8n-nodes-base.googleDrive",
"position": [
1536,
912
],
"parameters": {
"name": "=s_{{ $('Rows in sheet').item.json.Scene }}.{{ $json.fileExtension || 'png' }}\n\n",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive",
"cachedResultUrl": "https://drive.google.com/drive/my-drive",
"cachedResultName": "My Drive"
},
"options": {
"simplifyOutput": true
},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1GND1exvlAXTzESNvWmFs6FFMx90KLzlC",
"cachedResultUrl": "https://drive.google.com/drive/folders/1GND1exvlAXTzESNvWmFs6FFMx90KLzlC",
"cachedResultName": "prompt"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "1Bnhm02w1dxE4FO6",
"name": "Farooq Google Drive account"
}
},
"retryOnFail": true,
"typeVersion": 3
},
{
"id": "1a8ed5d0-1d5f-4010-9377-7ff890ddaf77",
"name": "제한",
"type": "n8n-nodes-base.limit",
"position": [
608,
896
],
"parameters": {},
"retryOnFail": true,
"typeVersion": 1
},
{
"id": "b755de9c-57aa-441c-b1c3-a13b52596677",
"name": "Json parser2",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1168,
976
],
"parameters": {
"jsonSchemaExample": "{\n \"prompt\": \"detailed scene description\",\n \"negative_prompt\": \"elements to avoid\",\n \"aspect_ratio\": \"width:height ratio\",\n \"camera_movement\": \"camera motion type\",\n \"style\": \"visual style/genre\",\n \"quality\": \"output quality setting\",\n \"motion_intensity\": \"low/medium/high\",\n \"seed\": \"random seed for reproducibility\",\n \"fps\": \"frames per second\",\n \"resolution\": \"video resolution\",\n \"lighting\": \"lighting conditions\",\n \"mood\": \"overall mood/atmosphere\",\n \"color_palette\": \"dominant colors\",\n \"subject_focus\": \"main subject details\",\n \"background\": \"background description\",\n \"effects\": \"special effects to include\"\n}"
},
"typeVersion": 1.3
},
{
"id": "4e5d22f1-f548-4731-bc4a-9241806096b6",
"name": "프롬프트 변환기1",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
1024,
816
],
"parameters": {
"text": "={{ $json[\"Character Prompt\"] }} - {{ $json[\"Action Prompt\"] }}",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=# Veo 3 Video Generation JSON Converter System Prompt\n\nYou are a specialized AI assistant that converts natural language descriptions into structured JSON format optimized for Veo 3 video generation. Your primary function is to transform user input into a comprehensive JSON prompt that maximizes the quality and accuracy of generated videos.\n\n## Core Instructions\n\n1. **Always respond in valid JSON format only**\n2. **Never include explanatory text outside the JSON structure**\n3. **Extract and structure all relevant video generation parameters from user input**\n4. **Fill in reasonable defaults for missing parameters**\n5. **Ensure all JSON keys and values follow Veo 3 specifications**\n\n## JSON Structure Template\n\n```json\n{\n \"prompt\": \"detailed scene description\",\n \"negative_prompt\": \"elements to avoid\",\n \"aspect_ratio\": \"width:height ratio\",\n \"camera_movement\": \"camera motion type\",\n \"style\": \"visual style/genre\",\n \"quality\": \"output quality setting\",\n \"motion_intensity\": \"low/medium/high\",\n \"seed\": \"random seed for reproducibility\",\n \"fps\": \"frames per second\",\n \"resolution\": \"video resolution\",\n \"lighting\": \"lighting conditions\",\n \"mood\": \"overall mood/atmosphere\",\n \"color_palette\": \"dominant colors\",\n \"subject_focus\": \"main subject details\",\n \"background\": \"background description\",\n \"effects\": \"special effects to include\"\n}\n```\n\n## Parameter Guidelines\n\n### Prompt Construction\n- Create detailed, cinematic descriptions\n- Include specific visual elements, actions, and compositions\n- Use descriptive adjectives for style and mood\n- Specify camera angles and movements when relevant\n- Include temporal elements (time of day, season, etc.)\n\n### Default Values\n- **duration**: \"5\" (seconds)\n- **aspect_ratio**: \"16:9\"\n- **quality**: \"high\"\n- **fps**: \"24\"\n- **resolution**: \"1080p\"\n- **motion_intensity**: \"medium\"\n\n### Camera Movements\n- static, pan_left, pan_right, tilt_up, tilt_down, zoom_in, zoom_out, dolly_forward, dolly_backward, orbit, handheld, smooth_tracking\n\n### Style Options\n- cinematic, documentary, animation, vintage, modern, artistic, realistic, stylized, noir, vibrant, minimalist\n\n### Aspect Ratios\n- 16:9 (landscape), 9:16 (portrait), 1:1 (square), 21:9 (ultra-wide), 4:3 (classic)\n\n## Processing Rules\n\n1. **Analyze Input**: Extract key elements like subjects, actions, settings, mood, style preferences\n2. **Enhance Description**: Expand brief descriptions into detailed, cinematic prompts\n3. **Set Parameters**: Choose appropriate technical settings based on content type\n4. **Optimize for Veo 3**: Structure prompt for maximum model comprehension\n5. **Include Negatives**: Add relevant negative prompts to avoid unwanted elements\n\n## Example Transformations\n\n**User Input**: \"A cat playing in the garden\"\n**Output**:\n```json\n{\n \"prompt\": \"A playful orange tabby cat chasing a butterfly in a sunlit garden, lush green grass, colorful flowers blooming, warm golden hour lighting, shallow depth of field, natural movement\",\n \"negative_prompt\": \"blurry, low quality, distorted, unnatural movement\",\n \"aspect_ratio\": \"16:9\",\n \"camera_movement\": \"smooth_tracking\",\n \"style\": \"cinematic\",\n \"quality\": \"high\",\n \"motion_intensity\": \"medium\",\n \"fps\": \"24\",\n \"resolution\": \"1080p\",\n \"lighting\": \"golden_hour\",\n \"mood\": \"cheerful\",\n \"color_palette\": \"warm_natural_tones\"\n}\n```\n\n## Important Notes\n\n- Always output valid JSON only\n- Never explain your reasoning outside the JSON\n- If input is unclear, make reasonable assumptions\n- Prioritize visual storytelling in prompt construction\n- Consider technical limitations of video generation\n- Optimize for realistic and achievable results\n\n## Quality Checklist\n\nBefore outputting JSON, ensure:\n- [ ] Prompt is detailed and descriptive\n- [ ] All technical parameters are appropriate\n- [ ] Negative prompt prevents common issues\n- [ ] JSON syntax is valid\n- [ ] All required fields are present\n- [ ] Values match expected formats"
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"retryOnFail": true,
"typeVersion": 1.7
},
{
"id": "d9094fa4-f4aa-4f9a-9948-a8cea2213f21",
"name": "파일 이동",
"type": "n8n-nodes-base.googleDrive",
"position": [
640,
1328
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json['Image Url'] }}"
},
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive",
"cachedResultUrl": "https://drive.google.com/drive/my-drive",
"cachedResultName": "My Drive"
},
"folderId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create folder').item.json.id }}"
},
"operation": "move"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "1Bnhm02w1dxE4FO6",
"name": "Farooq Google Drive account"
}
},
"retryOnFail": true,
"typeVersion": 3
},
{
"id": "eb8dc23f-757a-4edc-83f8-e68d3cb0b010",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
400,
1344
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "bc74b0c2-aa46-4bcd-91f3-1eb6b0720167",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Status }}",
"rightValue": "created"
}
]
}
},
"retryOnFail": true,
"typeVersion": 2.2
},
{
"id": "4eed5ff1-d6f7-48fb-9a97-5dd38204deab",
"name": "이동 완료 업데이트",
"type": "n8n-nodes-base.googleSheets",
"position": [
816,
1328
],
"parameters": {
"columns": {
"value": {
"Status": "moved",
"row_number": "={{ $('Rows in sheet').item.json.row_number }}"
},
"schema": [
{
"id": "Scene",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Scene",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Character Prompt",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Character Prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Action Prompt",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Action Prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Voice Line (Roman Urdu)",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Voice Line (Roman Urdu)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Updated Prompt",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Updated Prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Image Url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Image Url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create sheet').item.json.sheetId }}"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1k_0n-hFW8WRvNSW4izC5UdTA8KtO0VAOvuwlWkRsdPo",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1k_0n-hFW8WRvNSW4izC5UdTA8KtO0VAOvuwlWkRsdPo/edit?usp=drivesdk",
"cachedResultName": "Scenes Yusra"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "bAnK8T185A3Wr7Kj",
"name": "Google Sheets account"
}
},
"retryOnFail": true,
"typeVersion": 4.7
},
{
"id": "239f6485-6e0f-43bf-bc93-b1e9bf660b33",
"name": "스토리 생성기",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
384,
432
],
"parameters": {
"text": "=",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=You act like a emotional story creator \nstory contains 5 scenes \nand a character which should be a pakistani girl age between 20 to 25 years old, in desi dress, named Yusra"
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"retryOnFail": false,
"typeVersion": 1.7
},
{
"id": "d3aca0c9-b547-4489-a28a-4489c370b022",
"name": "Json parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
608,
608
],
"parameters": {
"jsonSchemaExample": " [\n {\n \"character_prompt\": \"character according to scene 1\",\n \"action_prompt\": \"Scene 1\"\n },\n {\n \"character_prompt\": \"character according to scene 2\",\n \"action_prompt\": \"Scene 2\"\n },\n {\n \"character_prompt\": \"character according to scene 3\",\n \"action_prompt\": \"Scene 3\"\n },\n {\n \"character_prompt\": \"character according to scene 4\",\n \"action_prompt\": \"Scene 4\"\n },\n {\n \"character_prompt\": \"character according to scene 5\",\n \"action_prompt\": \"5\"\n }\n ]\n\n"
},
"typeVersion": 1.3
},
{
"id": "f41101ea-1774-4560-96a4-9033b10292ae",
"name": "시트에 행 추가",
"type": "n8n-nodes-base.googleSheets",
"position": [
1232,
480
],
"parameters": {
"columns": {
"value": {
"Scene": "Scene",
"Status": "pending",
"Action Prompt": "={{ $json.scene.action_prompt }}",
"Character Prompt": "={{ $json.scene.character_prompt }}"
},
"schema": [
{
"id": "Scene",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Scene",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Character Prompt",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Character Prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Action Prompt",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Action Prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Updated Prompt",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Updated Prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Image Url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Image Url",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create sheet').item.json.sheetId }}"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1k_0n-hFW8WRvNSW4izC5UdTA8KtO0VAOvuwlWkRsdPo",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1k_0n-hFW8WRvNSW4izC5UdTA8KtO0VAOvuwlWkRsdPo/edit?usp=drivesdk",
"cachedResultName": "Story Scenes"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "bAnK8T185A3Wr7Kj",
"name": "Google Sheets account"
}
},
"typeVersion": 4.7
},
{
"id": "a3fc83b6-2f54-4b74-be25-3193762b5f4b",
"name": "항목 순환",
"type": "n8n-nodes-base.splitInBatches",
"position": [
960,
464
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "59ab47dd-f8a6-47f1-80d5-a9d2ab00c98b",
"name": "코드",
"type": "n8n-nodes-base.code",
"position": [
720,
480
],
"parameters": {
"jsCode": "// Take the first input (your wrapper object) and explode its `output` array\nconst outputs = $input.first().json.output;\n\nconst out = [];\n\nfor (const o of outputs) {\n const { character_prompt, action_prompt } = o ?? {};\n out.push({\n json: {\n scene: {\n character_prompt,\n action_prompt,\n },\n },\n });\n}\n\nreturn out;\n"
},
"typeVersion": 2
},
{
"id": "f94b9f0a-f1e0-4c78-b7d2-7d240ed85180",
"name": "시트 생성",
"type": "n8n-nodes-base.googleSheets",
"position": [
944,
32
],
"parameters": {
"title": "={{ $json.name }}",
"options": {},
"operation": "create",
"documentId": {
"__rl": true,
"mode": "list",
"value": "1k_0n-hFW8WRvNSW4izC5UdTA8KtO0VAOvuwlWkRsdPo",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1k_0n-hFW8WRvNSW4izC5UdTA8KtO0VAOvuwlWkRsdPo/edit?usp=drivesdk",
"cachedResultName": "Story Scenes"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "bAnK8T185A3Wr7Kj",
"name": "Google Sheets account"
}
},
"typeVersion": 4.7
},
{
"id": "e796adb0-b3c1-4491-a857-eca58fc379e6",
"name": "필드 편집",
"type": "n8n-nodes-base.set",
"position": [
1072,
32
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "eda852cb-fc59-4745-94aa-b2a44e8c3b08",
"name": "Scene",
"type": "string",
"value": ""
},
{
"id": "4235efbd-ca02-451e-b6e3-69998b11ebf1",
"name": "Character Prompt",
"type": "string",
"value": ""
},
{
"id": "8d10881e-1b97-498a-9d8a-4f4e6cd6103f",
"name": "Action Prompt",
"type": "string",
"value": ""
},
{
"id": "f983fcb1-6792-410a-8092-8af6e6a84b36",
"name": "Status",
"type": "string",
"value": ""
},
{
"id": "745d40e4-ea48-4395-9741-785eed9a9d23",
"name": "Updated Prompt",
"type": "string",
"value": ""
},
{
"id": "b06bef27-9fc1-4d36-a2e5-7516c37c2f52",
"name": "Image Url",
"type": "string",
"value": ""
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1b43c3fd-a60b-4b77-87e2-6f1f77a29127",
"name": "시트에 행 추가1",
"type": "n8n-nodes-base.googleSheets",
"position": [
1200,
32
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "Scene",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Scene",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Character Prompt",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Character Prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Action Prompt",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Action Prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Updated Prompt",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Updated Prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Image Url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Image Url",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create sheet').item.json.sheetId }}"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create sheet').item.json.spreadsheetId }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "bAnK8T185A3Wr7Kj",
"name": "Google Sheets account"
}
},
"typeVersion": 4.5
},
{
"id": "8bb2862d-c044-486e-96c3-202047d693a1",
"name": "시트 내 행",
"type": "n8n-nodes-base.googleSheets",
"position": [
192,
912
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create sheet').item.json.sheetId }}"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1k_0n-hFW8WRvNSW4izC5UdTA8KtO0VAOvuwlWkRsdPo",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1k_0n-hFW8WRvNSW4izC5UdTA8KtO0VAOvuwlWkRsdPo/edit?usp=drivesdk",
"cachedResultName": "Story Scenes"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "bAnK8T185A3Wr7Kj",
"name": "Google Sheets account"
}
},
"retryOnFail": true,
"typeVersion": 4.7,
"alwaysOutputData": false
},
{
"id": "ac3f2d1c-0f98-4d62-a240-300ef84a6eda",
"name": "작업 없음",
"type": "n8n-nodes-base.noOp",
"position": [
1040,
1360
],
"parameters": {},
"typeVersion": 1
},
{
"id": "a4caeac4-c544-427b-a28d-fe38f8c0232f",
"name": "업데이트된 행 가져오기",
"type": "n8n-nodes-base.googleSheets",
"position": [
176,
1344
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create sheet').item.json.sheetId }}"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1k_0n-hFW8WRvNSW4izC5UdTA8KtO0VAOvuwlWkRsdPo",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1k_0n-hFW8WRvNSW4izC5UdTA8KtO0VAOvuwlWkRsdPo/edit?usp=drivesdk",
"cachedResultName": "Story Scenes"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "bAnK8T185A3Wr7Kj",
"name": "Google Sheets account"
}
},
"retryOnFail": true,
"typeVersion": 4.7,
"alwaysOutputData": false
},
{
"id": "92af9dca-7ded-429d-a304-3271dcbdc594",
"name": "대기",
"type": "n8n-nodes-base.wait",
"position": [
784,
912
],
"webhookId": "e3ecb3b3-9796-4d58-bc3a-1ac354564218",
"parameters": {
"unit": "minutes",
"amount": 1
},
"typeVersion": 1.1
},
{
"id": "c6a29597-4209-44fa-a75a-279ebf0cf139",
"name": "스티커 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
96,
-80
],
"parameters": {
"color": 4,
"width": 1344,
"height": 384,
"content": "## Create Folder and File\n"
},
"typeVersion": 1
},
{
"id": "b9c0393a-7471-4c8a-b70b-7709b54a4e82",
"name": "스티커 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
96,
352
],
"parameters": {
"color": 4,
"width": 1344,
"height": 384,
"content": "## Create Story & Add in Sheet\n"
},
"typeVersion": 1
},
{
"id": "41461520-f15d-46d0-be9d-703bd047883d",
"name": "채팅 모델",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
480,
160
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.5-flash-lite"
},
"credentials": {
"googlePalmApi": {
"id": "qzXOJEaYeexWZRUf",
"name": "new key"
}
},
"typeVersion": 1
},
{
"id": "b099634a-f8cc-4382-97ff-dc8774b92253",
"name": "채팅 모델1",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
448,
608
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.5-flash-lite"
},
"credentials": {
"googlePalmApi": {
"id": "qzXOJEaYeexWZRUf",
"name": "new key"
}
},
"typeVersion": 1
},
{
"id": "5e5787f3-dcc8-4139-933b-9ec16ebf9857",
"name": "스티커 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
96,
784
],
"parameters": {
"color": 4,
"width": 1936,
"height": 384,
"content": "## Create Veo 3 Json Prompts & Images via Gemini"
},
"typeVersion": 1
},
{
"id": "33f5fe5a-4afa-40ef-be95-6180bed4d1d0",
"name": "스티커 노트5",
"type": "n8n-nodes-base.stickyNote",
"position": [
96,
1216
],
"parameters": {
"color": 4,
"width": 1152,
"height": 384,
"content": "## Move Files"
},
"typeVersion": 1
},
{
"id": "b25d1540-5ba4-4685-9931-22a25dd1fbda",
"name": "채팅 모델2",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1024,
976
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.5-flash-lite"
},
"credentials": {
"googlePalmApi": {
"id": "qzXOJEaYeexWZRUf",
"name": "new key"
}
},
"typeVersion": 1
},
{
"id": "b7ed1ac2-dcf3-4a47-b54b-98c31a90fe01",
"name": "스티커 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-384,
-80
],
"parameters": {
"color": 5,
"width": 448,
"height": 512,
"content": "Here's a short setup description for your n8n template:\n\n**Setup Instructions:**\n\n1. **Import the workflow** into your n8n instance\n2. **Configure credentials:**\n - Google Drive OAuth2 (for file uploads)\n - Google Sheets OAuth2 (for tracking)\n - Google Gemini API key (for AI generation)\n3. **Update the Google Sheets document ID** in the workflow nodes\n4. **Set your Google Drive folder ID** for file organization\n5. **Test with manual trigger** to verify all connections work\n6. **Customize the story prompts** if needed (character, scenes, etc.)\n\n**Requirements:**\n- Gemini API access\n- Google Workspace account\n- n8n instance with required nodes\n\n**Ready to use!** Just click \"Execute workflow\" to start generating AI stories with images and Veo 3 prompts."
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"eb8dc23f-757a-4edc-83f8-e68d3cb0b010": {
"main": [
[
{
"node": "d9094fa4-f4aa-4f9a-9948-a8cea2213f21",
"type": "main",
"index": 0
}
],
[
{
"node": "ac3f2d1c-0f98-4d62-a240-300ef84a6eda",
"type": "main",
"index": 0
}
]
]
},
"c266998e-0003-4ca7-af61-f081d109ecef": {
"main": [
[
{
"node": "1a8ed5d0-1d5f-4010-9377-7ff890ddaf77",
"type": "main",
"index": 0
}
],
[
{
"node": "a4caeac4-c544-427b-a28d-fe38f8c0232f",
"type": "main",
"index": 0
}
]
]
},
"59ab47dd-f8a6-47f1-80d5-a9d2ab00c98b": {
"main": [
[
{
"node": "a3fc83b6-2f54-4b74-be25-3193762b5f4b",
"type": "main",
"index": 0
}
]
]
},
"92af9dca-7ded-429d-a304-3271dcbdc594": {
"main": [
[
{
"node": "4e5d22f1-f548-4731-bc4a-9241806096b6",
"type": "main",
"index": 0
}
]
]
},
"1a8ed5d0-1d5f-4010-9377-7ff890ddaf77": {
"main": [
[
{
"node": "92af9dca-7ded-429d-a304-3271dcbdc594",
"type": "main",
"index": 0
}
]
]
},
"d9094fa4-f4aa-4f9a-9948-a8cea2213f21": {
"main": [
[
{
"node": "4eed5ff1-d6f7-48fb-9a97-5dd38204deab",
"type": "main",
"index": 0
}
]
]
},
"41461520-f15d-46d0-be9d-703bd047883d": {
"ai_languageModel": [
[
{
"node": "871f8261-49ff-4174-836c-9e4331b59c30",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"e796adb0-b3c1-4491-a857-eca58fc379e6": {
"main": [
[
{
"node": "1b43c3fd-a60b-4b77-87e2-6f1f77a29127",
"type": "main",
"index": 0
}
]
]
},
"871f8261-49ff-4174-836c-9e4331b59c30": {
"main": [
[
{
"node": "ee5e4ada-04e7-409d-8e83-a816b7aafea2",
"type": "main",
"index": 0
}
]
]
},
"d3aca0c9-b547-4489-a28a-4489c370b022": {
"ai_outputParser": [
[
{
"node": "239f6485-6e0f-43bf-bc93-b1e9bf660b33",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"4fc42e92-5ab7-4ddc-a263-8242137dc50f": {
"main": [
[
{
"node": "6031fed3-e65b-489c-8cfa-efa85a9df4bb",
"type": "main",
"index": 0
}
]
]
},
"b099634a-f8cc-4382-97ff-dc8774b92253": {
"ai_languageModel": [
[
{
"node": "239f6485-6e0f-43bf-bc93-b1e9bf660b33",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"b25d1540-5ba4-4685-9931-22a25dd1fbda": {
"ai_languageModel": [
[
{
"node": "4e5d22f1-f548-4731-bc4a-9241806096b6",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"f94b9f0a-f1e0-4c78-b7d2-7d240ed85180": {
"main": [
[
{
"node": "e796adb0-b3c1-4491-a857-eca58fc379e6",
"type": "main",
"index": 0
}
]
]
},
"c4a016f9-cbe2-4d5a-8b69-1af4fd66da8d": {
"ai_outputParser": [
[
{
"node": "871f8261-49ff-4174-836c-9e4331b59c30",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"b755de9c-57aa-441c-b1c3-a13b52596677": {
"ai_outputParser": [
[
{
"node": "4e5d22f1-f548-4731-bc4a-9241806096b6",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"4eed5ff1-d6f7-48fb-9a97-5dd38204deab": {
"main": [
[
{
"node": "a4caeac4-c544-427b-a28d-fe38f8c0232f",
"type": "main",
"index": 0
}
]
]
},
"ee5e4ada-04e7-409d-8e83-a816b7aafea2": {
"main": [
[
{
"node": "f94b9f0a-f1e0-4c78-b7d2-7d240ed85180",
"type": "main",
"index": 0
}
]
]
},
"8bb2862d-c044-486e-96c3-202047d693a1": {
"main": [
[
{
"node": "c266998e-0003-4ca7-af61-f081d109ecef",
"type": "main",
"index": 0
}
]
]
},
"239f6485-6e0f-43bf-bc93-b1e9bf660b33": {
"main": [
[
{
"node": "59ab47dd-f8a6-47f1-80d5-a9d2ab00c98b",
"type": "main",
"index": 0
}
]
]
},
"a3fc83b6-2f54-4b74-be25-3193762b5f4b": {
"main": [
[],
[
{
"node": "f41101ea-1774-4560-96a4-9033b10292ae",
"type": "main",
"index": 0
}
]
]
},
"a4caeac4-c544-427b-a28d-fe38f8c0232f": {
"main": [
[
{
"node": "eb8dc23f-757a-4edc-83f8-e68d3cb0b010",
"type": "main",
"index": 0
}
]
]
},
"9f210c25-961b-4a46-9c47-1c02f6c8d716": {
"main": [
[
{
"node": "4fc42e92-5ab7-4ddc-a263-8242137dc50f",
"type": "main",
"index": 0
}
]
]
},
"4e5d22f1-f548-4731-bc4a-9241806096b6": {
"main": [
[
{
"node": "9f210c25-961b-4a46-9c47-1c02f6c8d716",
"type": "main",
"index": 0
}
]
]
},
"f41101ea-1774-4560-96a4-9033b10292ae": {
"main": [
[
{
"node": "a3fc83b6-2f54-4b74-be25-3193762b5f4b",
"type": "main",
"index": 0
},
{
"node": "8bb2862d-c044-486e-96c3-202047d693a1",
"type": "main",
"index": 0
}
]
]
},
"6031fed3-e65b-489c-8cfa-efa85a9df4bb": {
"main": [
[
{
"node": "8bb2862d-c044-486e-96c3-202047d693a1",
"type": "main",
"index": 0
}
]
]
},
"1b43c3fd-a60b-4b77-87e2-6f1f77a29127": {
"main": [
[
{
"node": "239f6485-6e0f-43bf-bc93-b1e9bf660b33",
"type": "main",
"index": 0
}
]
]
},
"d57e5004-7c16-4159-ba6f-8144da450e6c": {
"main": [
[
{
"node": "871f8261-49ff-4174-836c-9e4331b59c30",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 콘텐츠 제작, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Gemini AI와 Airtable을 사용하여 이미지에서 Shopify 제품 목록 생성
사용Gemini AI와Airtable로 이미지에서 Shopify 제품 목록 생성
If
Set
Code
+
If
Set
Code
33 노드MANISH KUMAR
콘텐츠 제작
OpenAI, RunwayML, ElevenLabs를 사용한 무면식 숏폼 비디오 자동화
OpenAI, RunwayML, ElevenLabs를 사용한 무면쇼트 비디오 자동화: 스크립트부터 소셜 미디어까지
Set
Code
Wait
+
Set
Code
Wait
56 노드LeeWei
콘텐츠 제작
WordPress 블로그 자동화 프로페셔널 에디션(심층 연구) v2.1 마켓
GPT-4o, Perplexity AI 및 다국어 지원을 사용한 SEO 최적화 블로그 생성 자동화
If
Set
Xml
+
If
Set
Xml
125 노드Daniel Ng
콘텐츠 제작
LinkedIn 및 X 바이럴 콘텐츠 자동 엔진
사용AI생성및게시자동생성LinkedIn및X의病毒콘텐츠
If
Set
Wait
+
If
Set
Wait
156 노드Diptamoy Barman
콘텐츠 제작
creativeathive/lemaar-doorhandle-newset - 다른 생성기
Gemini 2.0, Google Sheets, Drive를 사용하여 텍스트 힌트에서 AI 이미지 생성
If
Code
Limit
+
If
Code
Limit
12 노드Muhammad Farooq Iqbal
콘텐츠 제작
Apollo 데이터 스크래핑 및 리치 프로세스 1 ✅
Apollo, AI 파싱 및 예정 이메일 후속 조치를 사용한 잠재 고객 자동 생성
If
Code
Wait
+
If
Code
Wait
39 노드Deniz
콘텐츠 제작