{
  "id": "fmWdi1vT5gnL7MSe",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Automated-Real-Estate-Content-Generation-Workflow",
  "tags": [],
  "nodes": [
    {
      "id": "54b6990a-eb51-4cbe-9081-17849d83b61d",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        176,
        -48
      ],
      "parameters": {
        "options": {},
        "formTitle": "Ideation Prompt Board",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Employee Id",
              "requiredField": true
            },
            {
              "fieldLabel": "Employee Name",
              "requiredField": true
            },
            {
              "fieldLabel": "Initial Prompt",
              "requiredField": true
            },
            {
              "fieldType": "email",
              "fieldLabel": "Your Mail Id",
              "requiredField": true
            }
          ]
        },
        "formDescription": "Store and manage ideas for creative prompts."
      },
      "typeVersion": 2.2
    },
    {
      "id": "4c1690bc-1801-409a-987b-bc6ccbd005b4",
      "name": "Append row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        400,
        -48
      ],
      "parameters": {
        "columns": {
          "value": {
            "Mail Id": "={{ $json['Your Mail Id'] }}",
            "Employee Id": "={{ $json['Employee Id'] }}",
            "Employee Name": "={{ $json['Employee Name'] }}",
            "Initial Prompt": "={{ $json['Initial Prompt'] }}"
          },
          "schema": [
            {
              "id": "Employee Id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Employee Id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employee Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Employee Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Initial Prompt",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Initial Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Improved Prompt",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Improved Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image Generated Link",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Image Generated Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Mail Id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Mail Id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1NEtQvs2hlcqmrFfSC6e1cReC25g2FEvxTiqdXOgtnjM/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1NEtQvs2hlcqmrFfSC6e1cReC25g2FEvxTiqdXOgtnjM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1NEtQvs2hlcqmrFfSC6e1cReC25g2FEvxTiqdXOgtnjM/edit?usp=drivesdk",
          "cachedResultName": "Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "c07e5e61-00ce-44b0-8578-61a3c3950bae",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        624,
        -48
      ],
      "parameters": {
        "text": "={{ $json['Initial Prompt'] }}\n\n",
        "options": {
          "systemMessage": "You are RealEstatePromptRefiner, an AI assistant that converts simple user ideas into high-quality, photorealistic real estate image prompts optimized for DALL\u00b7E.\n\nYour goal is to always generate prompts that produce ultra-realistic property images suitable for listings, brochures, and marketing.\n\n\ud83d\udd39 Instructions:\n\nUnderstand the user input and extract:\n\nProperty type (apartment, villa, studio, office, etc.)\n\nScene type (interior/exterior + room type)\n\nStyle (modern, luxury, minimal, industrial, etc.)\n\nLighting (daylight, golden hour, artificial warm lighting)\n\nPerspective (wide-angle, eye-level, aerial, etc.)\n\nKey features (balcony, pool, fireplace, skyline view, etc.)\n\nApply smart defaults if missing:\n\nInteriors \u2192 bright natural daylight, wide-angle (24mm feel), clean staging\n\nExteriors \u2192 golden hour or soft daylight\n\nStyle \u2192 modern, minimal, premium\n\nPerspective \u2192 eye-level, professional real estate photography\n\nGenerate a single refined DALL\u00b7E prompt that:\n\nIs written in natural descriptive language (not keywords only)\n\nEmphasizes photorealism\n\nIncludes:\n\nlighting\n\nmaterials & textures\n\ncomposition\n\ncamera feel (wide-angle, depth of field)\n\nstaging details\n\nAvoids mentioning camera brands or complex parameters\n\nAvoids unsafe or copyrighted elements\n\nAlso generate:\n\nshort_caption (1-line summary)\n\nvariants (3 alternative prompts with different moods/perspectives)\n\nImportant Rules:\n\nDo NOT include technical parameters like --ar, steps, etc.\n\nDo NOT output negative prompts (DALL\u00b7E doesn\u2019t require them explicitly)\n\nAvoid people unless explicitly requested\n\nAlways prioritize realism over artistic or fantasy styles"
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "31a144e0-3b78-4892-9139-620fb1096c16",
      "name": "Append or update row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        976,
        -48
      ],
      "parameters": {
        "columns": {
          "value": {
            "Initial Prompt": "={{ $('Append row in sheet').item.json['Initial Prompt'] }}",
            "Improved Prompt": "={{ $json.output }}"
          },
          "schema": [
            {
              "id": "Employee Id",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Employee Id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employee Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Employee Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Initial Prompt",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Initial Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Improved Prompt",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Improved Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image Generated Link",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Image Generated Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Mail Id",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Mail Id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Video Initial Prompt",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Video Initial Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Improved Video Prompt",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Improved Video Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Video Generated Link",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Video Generated Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Initial Prompt"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1NEtQvs2hlcqmrFfSC6e1cReC25g2FEvxTiqdXOgtnjM/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1NEtQvs2hlcqmrFfSC6e1cReC25g2FEvxTiqdXOgtnjM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1NEtQvs2hlcqmrFfSC6e1cReC25g2FEvxTiqdXOgtnjM/edit?usp=drivesdk",
          "cachedResultName": "Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "7b5effd8-82ce-4a2b-9c23-cc29c6c6aae9",
      "name": "Upload file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1424,
        -48
      ],
      "parameters": {
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1EaqK8qDrMlHbd0qbzrVFl88FBM8LlzSl",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1EaqK8qDrMlHbd0qbzrVFl88FBM8LlzSl",
          "cachedResultName": "Ritz Media"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "8ee11e74-8a00-486a-9b61-30174b082e8d",
      "name": "Append or update row in sheet1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1648,
        -48
      ],
      "parameters": {
        "columns": {
          "value": {
            "Initial Prompt": "={{ $('Append row in sheet').item.json['Initial Prompt'] }}",
            "Image Generated Link": "={{ $json.webViewLink }}"
          },
          "schema": [
            {
              "id": "Employee Id",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Employee Id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employee Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Employee Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Initial Prompt",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Initial Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Improved Prompt",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Improved Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image Generated Link",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Image Generated Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Initial Prompt"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1NEtQvs2hlcqmrFfSC6e1cReC25g2FEvxTiqdXOgtnjM/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1NEtQvs2hlcqmrFfSC6e1cReC25g2FEvxTiqdXOgtnjM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1NEtQvs2hlcqmrFfSC6e1cReC25g2FEvxTiqdXOgtnjM/edit?usp=drivesdk",
          "cachedResultName": "Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "7efb7372-9d60-40f9-8da9-e695d14827d4",
      "name": "Send message and wait for response",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2320,
        -48
      ],
      "parameters": {
        "sendTo": "={{ $('On form submission').item.json['Your Mail Id'] }}",
        "message": "=Image prompt: {{ $('Append or update row in sheet').item.json['Improved Prompt'] }}\n\nLink: {{ $('Upload file').item.json.webViewLink }}",
        "options": {},
        "subject": "Approval for Image generated",
        "operation": "sendAndWait",
        "approvalOptions": {
          "values": {
            "approvalType": "double"
          }
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "1ea600d5-912f-4b4f-8886-cb22616c0d1f",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        2544,
        -48
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "6096f72b-34cf-4add-9e07-b2a9489dd7cf",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.data.approved }}",
                    "rightValue": "true"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "a4ab0696-4d44-486d-ba8a-3731f55ea2bb",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data.approved }}",
                    "rightValue": "false"
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "194ada00-f234-4602-803a-d1263b376508",
      "name": "Send a message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2736,
        64
      ],
      "parameters": {
        "sendTo": "={{ $('On form submission').item.json['Your Mail Id'] }}",
        "message": "Please work on prompt again and generate a new image",
        "options": {},
        "subject": "Failed the Image Test"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "8a1588a5-b5d2-48bd-83c6-0f404a896a41",
      "name": "Form",
      "type": "n8n-nodes-base.form",
      "position": [
        3008,
        -64
      ],
      "parameters": {
        "options": {},
        "formFields": {
          "values": [
            {
              "fieldLabel": "Prompt for video generation ",
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4e718778-2efd-498a-92f3-cd9b720fce27",
      "name": "AI Agent1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        3248,
        -64
      ],
      "parameters": {
        "text": "=Enhance and optimize the following prompt for clarity, engagement, and effectiveness: {{ $json['Prompt for video generation '] }} . Just provide the enhanced prompt\n\n",
        "options": {
          "systemMessage": "You are a helpful assistant"
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "9f73b0bd-c6c1-4070-a206-50e37dd5caa0",
      "name": "Append or update row in sheet2",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4672,
        -64
      ],
      "parameters": {
        "columns": {
          "value": {
            "Initial Prompt": "={{ $('Append row in sheet').item.json['Initial Prompt'] }}",
            "Video Generated Link": "={{ $('Upload file1').item.json.webContentLink }}",
            "Video Initial Prompt": "={{ $('Form').item.json['Prompt for video generation '] }}",
            "Improved Video Prompt": "={{ $('AI Agent1').item.json.output }}"
          },
          "schema": [
            {
              "id": "Employee Id",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Employee Id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employee Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Employee Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Initial Prompt",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Initial Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Improved Prompt",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Improved Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image Generated Link",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Image Generated Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Mail Id",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Mail Id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Video Initial Prompt",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Video Initial Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Improved Video Prompt",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Improved Video Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Video Generated Link",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Video Generated Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Initial Prompt"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1NEtQvs2hlcqmrFfSC6e1cReC25g2FEvxTiqdXOgtnjM/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1NEtQvs2hlcqmrFfSC6e1cReC25g2FEvxTiqdXOgtnjM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1NEtQvs2hlcqmrFfSC6e1cReC25g2FEvxTiqdXOgtnjM/edit?usp=drivesdk",
          "cachedResultName": "Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "97b558ad-393d-453e-ba98-5cbef9ea71f0",
      "name": "Share file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2096,
        -48
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Upload file').item.json.id }}"
        },
        "options": {},
        "operation": "share",
        "permissionsUi": {
          "permissionsValues": {
            "role": "writer",
            "type": "anyone",
            "allowFileDiscovery": true
          }
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "aa4bbf36-08ea-4bc0-945c-57303ed84e69",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        1872,
        -48
      ],
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "db3e263f-3e9b-4a71-aee6-79471be33dcb",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -512,
        -144
      ],
      "parameters": {
        "width": 592,
        "height": 1376,
        "content": "# \ud83c\udfe1 Automated Real-Estate Content Generation Workflow\n\nThis n8n workflow automates turning short user ideas into production-ready real-estate marketing assets (photorealistic images and optional 360\u00b0 videos). A form submission seeds a prompt board \u2192 an LLM refines prompts \u2192 the refined prompt is sent to an image/video generator \u2192 assets are uploaded to Google Drive and an approval email is sent so stakeholders can accept/reject outputs.\n\n---\n\n## \u2699\ufe0f How It Works (High Level)\n\n1. **Trigger:**  \n   User submits the ideation form (`On form submission`).\n\n2. **Record:**  \n   The raw idea is appended to Google Sheets (`Append row in sheet`).\n\n3. **Refine:**  \n   An AI agent (LangChain/OpenAI) refines the prompt into a photorealistic prompt and produces captions & variants (`AI Agent`).\n\n4. **Store Refined Prompt:**  \n   Update the sheet with the improved prompt (`Append or update row in sheet`).\n\n5. **Generate Asset:**  \n   Send improved prompt to OpenAI image/video generation nodes (`Generate an image2` / `Generate a video`).\n\n6. **Upload & Share:**  \n   Upload resulting files to Google Drive (`Upload file / Upload file1`) and set sharing permissions (`Share file / Share file1`).\n\n7. **Approval Flow:**  \n   Email the requester with the asset + improved prompt and wait for approval (`Send message and wait for response`).\n\n8. **Decision:**  \n   A `Switch` node routes approved outputs to final storage/notifications and rejected ones back for rework (or sends a failure email).\n\n9. **Video Branch:**  \n   Separate flow \u2192 refine \u2192 HTTP \u2192 video generator \u2192 upload \u2192 share \u2192 update sheet (parallel video pipeline).\n\n---\n\n## Quick Setup Guide\n\ud83d\udc49 [Demo & Setup Video](https://drive.google.com/file/d/1a1n-XZIJkKsmBDjdNsG6Vg_AKv8AJxe5/view?usp=sharing)\n\ud83d\udc49 [Sheet Template](https://docs.google.com/spreadsheets/d/1NEtQvs2hlcqmrFfSC6e1cReC25g2FEvxTiqdXOgtnjM/edit?usp=sharing)\n\ud83d\udc49 [Course](https://www.udemy.com/course/n8n-automation-mastery-build-ai-powered-enterprise-ready/?referralCode=2EAE71591D3BEB80F2CC)"
      },
      "typeVersion": 1
    },
    {
      "id": "d85ad014-baab-477a-bf26-71a1402e4486",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        672,
        160
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "responsesApiEnabled": false
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "777c5995-6b27-46a5-8197-2fedd20744a5",
      "name": "Generate an image2",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1200,
        -48
      ],
      "parameters": {
        "prompt": "={{ $json['Improved Prompt'] }}",
        "options": {
          "size": "1792x1024"
        },
        "resource": "image"
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "cdb6fc96-067d-4bbc-a1bc-29c68e5fbdce",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3248,
        112
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "responsesApiEnabled": false
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "9a60bceb-fecc-40c4-80b4-4fe49b9accd7",
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3600,
        -64
      ],
      "parameters": {
        "url": "={{ $('Upload file').item.json.webContentLink }}",
        "options": {}
      },
      "typeVersion": 4.3
    },
    {
      "id": "1fa2f30b-187d-4d94-b782-8771b6822279",
      "name": "Generate a video",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        3808,
        -64
      ],
      "parameters": {
        "size": "1792x1024",
        "prompt": "={{ $('AI Agent1').item.json.output }}",
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "sora-2-pro",
          "cachedResultName": "SORA-2-PRO"
        },
        "options": {
          "waitTime": 7200,
          "binaryPropertyNameReference": "data"
        },
        "resource": "video"
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "cf3231ed-daa7-4c9a-8388-ea75fbd38e12",
      "name": "Upload file1",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        4032,
        -64
      ],
      "parameters": {
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1EaqK8qDrMlHbd0qbzrVFl88FBM8LlzSl",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1EaqK8qDrMlHbd0qbzrVFl88FBM8LlzSl",
          "cachedResultName": "Ritz Media"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "c92537d3-644a-483e-b5f5-73fa00dd7fed",
      "name": "Share file1",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        4448,
        -64
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Upload file1').item.json.id }}"
        },
        "options": {},
        "operation": "share",
        "permissionsUi": {
          "permissionsValues": {
            "role": "writer",
            "type": "anyone",
            "allowFileDiscovery": true
          }
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "87e66d06-f843-4e65-aabe-81d99ca2a07f",
      "name": "Wait1",
      "type": "n8n-nodes-base.wait",
      "position": [
        4224,
        -64
      ],
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "a2685578-7f92-45cc-8e38-77e1d3d236ab",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        96,
        -144
      ],
      "parameters": {
        "color": 6,
        "width": 256,
        "height": 256,
        "content": "**Idea Capture**  \nCollect user idea + brief fields (style, property type, desired output).  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "1629ba46-55db-4c86-a8b0-c5d13655d960",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        352,
        -144
      ],
      "parameters": {
        "color": 6,
        "width": 256,
        "height": 256,
        "content": "**Record / Log**  \nSave raw idea + metadata (user, timestamp) to Google Sheets for audit.   \n"
      },
      "typeVersion": 1
    },
    {
      "id": "40843e75-471f-416f-8fb3-671af0ce4564",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        608,
        -144
      ],
      "parameters": {
        "color": 6,
        "width": 272,
        "height": 448,
        "content": "**Prompt Refinement (AI Agent)**  \nLLM converts raw idea \u2192 photorealistic prompt + captions + variants.  \n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8426b6f6-0981-4702-8d71-66a7deebf342",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        880,
        -144
      ],
      "parameters": {
        "color": 6,
        "width": 272,
        "height": 272,
        "content": "**Store Refined Prompt**  \nWrite back refined prompt and model metadata to the sheet. \n"
      },
      "typeVersion": 1
    },
    {
      "id": "3f142344-b014-4e4e-8090-e94c1ff97f71",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        -144
      ],
      "parameters": {
        "color": 6,
        "width": 272,
        "height": 272,
        "content": "**Asset Generation**  \nSend refined prompt to image/video generator and receive files/URLs.  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "e6c03e25-2621-486e-88fe-2d5a90f15c75",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1408,
        -144
      ],
      "parameters": {
        "color": 6,
        "width": 816,
        "height": 272,
        "content": "**Upload & Share**  \nUpload assets to Google Drive and create view-only share links for reviewers.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d0684bb2-e816-4dff-b0bc-789ada37e1ec",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2224,
        -144
      ],
      "parameters": {
        "color": 6,
        "width": 272,
        "height": 272,
        "content": "**Approval Flow**  \nEmail the requester with asset + prompt; wait for approval or rejection. "
      },
      "typeVersion": 1
    },
    {
      "id": "52d232fd-cb5d-4671-9150-9fdb66b39618",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2496,
        -144
      ],
      "parameters": {
        "color": 6,
        "width": 416,
        "height": 384,
        "content": "**Decision & Routing**  \nRoute based on approval \u2014 approved \u2192 final storage/notifications; rejected \u2192 failure email."
      },
      "typeVersion": 1
    },
    {
      "id": "b9ca1837-51ff-4684-a285-01c2ff085b08",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2912,
        -144
      ],
      "parameters": {
        "color": 6,
        "width": 1056,
        "height": 384,
        "content": "**Video Branch (Parallel)**  \nFaster or separate form flow for 360\u00b0/sora-2-pro video generation, then upload & share.  "
      },
      "typeVersion": 1
    },
    {
      "id": "272541bd-f616-47b3-bf16-b8f4168340ed",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3968,
        -144
      ],
      "parameters": {
        "color": 6,
        "width": 624,
        "height": 272,
        "content": "**Upload & Share**  \nUpload assets to Google Drive and create view-only share links for reviewers.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e34da2c8-4271-4502-bd23-c1345262eed5",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4592,
        -144
      ],
      "parameters": {
        "color": 6,
        "width": 272,
        "height": 272,
        "content": "**Store Video Data**  \n\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c755ed0d-28f4-4d1b-9214-0a191e49f7e6",
  "connections": {
    "Form": {
      "main": [
        [
          {
            "node": "AI Agent1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Share file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait1": {
      "main": [
        [
          {
            "node": "Share file1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Form",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Append or update row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent1": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Share file": {
      "main": [
        [
          {
            "node": "Send message and wait for response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Share file1": {
      "main": [
        [
          {
            "node": "Append or update row in sheet2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload file": {
      "main": [
        [
          {
            "node": "Append or update row in sheet1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "Generate a video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload file1": {
      "main": [
        [
          {
            "node": "Wait1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate a video": {
      "main": [
        [
          {
            "node": "Upload file1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Generate an image2": {
      "main": [
        [
          {
            "node": "Upload file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Append row in sheet": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append or update row in sheet": {
      "main": [
        [
          {
            "node": "Generate an image2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append or update row in sheet1": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send message and wait for response": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}