AutomationFlowsAI & RAG › Create Real Estate Listing Video Ads with Openai and Videotok

Create Real Estate Listing Video Ads with Openai and Videotok

ByBorja Soler @borjasoler on n8n.io

This workflow takes a real estate listing, uses OpenAI to generate ad copy and a video generation prompt, then sends it to the Videotok API to create a 9:16 vertical listing video ad with a caption and compliance notes. Starts manually to test the workflow with a sample property…

Event trigger★★★★☆ complexity8 nodesHTTP Request
AI & RAG Trigger: Event Nodes: 8 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #16854 — we link there as the canonical source.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "Create real estate listing video ads with Videotok",
  "tags": [
    "videotok",
    "openai",
    "real estate",
    "listing ads"
  ],
  "nodes": [
    {
      "id": "685cad66-c13e-4a5b-8085-77612c238183",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1232,
        0
      ],
      "parameters": {
        "width": 480,
        "height": 624,
        "content": "## Create real estate listing video ads with Videotok\n\n### How it works\n\n1. The workflow is manually triggered to start.\n2. Real estate listing details are set up in the workflow.\n3. An ad text is generated using OpenAI's API.\n4. A payload for Videotok is built from the gathered data.\n5. The payload is sent to create a video ad via the Videotok API.\n\n### Setup steps\n\n- [ ] Ensure OpenAI API credentials are configured for the 'Post to OpenAI for Ad Text' node.\n- [ ] Ensure Videotok API credentials are configured for the 'Post to Videotok API' node.\n\n### Customization\n\nModify the 'Set Real Estate Listing Details' node to input your own listing details."
      },
      "typeVersion": 1
    },
    {
      "id": "06e73f6a-40bb-4cea-9021-0f6c642f7efa",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -672,
        0
      ],
      "parameters": {
        "color": 7,
        "width": 464,
        "height": 304,
        "content": "## Workflow trigger and setup\n\nStarts the workflow and sets the real estate listing details"
      },
      "typeVersion": 1
    },
    {
      "id": "bc89c529-e4a6-40a9-87ea-c77ba4651380",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        16
      ],
      "parameters": {
        "color": 7,
        "width": 816,
        "height": 272,
        "content": "## Generate ad text\n\nUses OpenAI to generate ad copy for the listing"
      },
      "typeVersion": 1
    },
    {
      "id": "manual",
      "name": "Manually Initiate Workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -624,
        128
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "listing-source",
      "name": "Set Listing Details",
      "type": "n8n-nodes-base.set",
      "position": [
        -352,
        128
      ],
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "address",
              "name": "address",
              "type": "string",
              "value": "Via Torino 21, Milan"
            },
            {
              "id": "details",
              "name": "listing_details",
              "type": "string",
              "value": "Bright two-bedroom apartment, renovated kitchen, balcony, close to metro and parks."
            },
            {
              "id": "images",
              "name": "listing_image_urls",
              "type": "array",
              "value": [
                "https://example.com/living-room.jpg",
                "https://example.com/kitchen.jpg"
              ]
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "openai-real-estate",
      "name": "Generate Ad Text with OpenAI",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -80,
        128
      ],
      "parameters": {
        "url": "https://api.openai.com/v1/responses",
        "method": "POST",
        "jsonBody": "={\"model\":\"gpt-4.1-mini\",\"input\":\"Create real-estate video ad JSON. Include title, hook, script, generation_prompt, caption, compliance_notes. Avoid unsupported claims. Input: \" + JSON.stringify($json)}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{$vars.OPENAI_API_KEY}}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "prepare-listing",
      "name": "Prepare Videotok Data",
      "type": "n8n-nodes-base.code",
      "position": [
        224,
        128
      ],
      "parameters": {
        "jsCode": "const listing = $('Set Listing Details').first().json;\nconst raw = $input.first().json.output_text || '{}';\nlet brief;\ntry { brief = JSON.parse(raw); } catch { brief = { title: listing.address, generation_prompt: raw, caption: raw }; }\nreturn [{ json: { type: 'video_ad', template_slug: 'viral-video-ads', prompt: brief.generation_prompt, aspect_ratio: '9:16', duration: 8, quality_tier: 'high', reference_image_urls: listing.listing_image_urls || [], brand_kit_id: $vars.VIDEOTOK_BRAND_KIT_ID, idempotency_key: `real-estate-listing-${$execution.id}`, caption: brief.caption, compliance_notes: brief.compliance_notes } }];"
      },
      "typeVersion": 2
    },
    {
      "id": "create-listing-ad",
      "name": "Create Video Ad in Videotok",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        544,
        128
      ],
      "parameters": {
        "url": "https://videotok.app/api/v1/generations",
        "method": "POST",
        "jsonBody": "={{$json}}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{$vars.VIDEOTOK_API_KEY}}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Idempotency-Key",
              "value": "={{$json.idempotency_key}}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "videotok-real-estate-listing-video-ads-1",
  "connections": {
    "Set Listing Details": {
      "main": [
        [
          {
            "node": "Generate Ad Text with OpenAI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Videotok Data": {
      "main": [
        [
          {
            "node": "Create Video Ad in Videotok",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manually Initiate Workflow": {
      "main": [
        [
          {
            "node": "Set Listing Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Ad Text with OpenAI": {
      "main": [
        [
          {
            "node": "Prepare Videotok Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow takes a real estate listing, uses OpenAI to generate ad copy and a video generation prompt, then sends it to the Videotok API to create a 9:16 vertical listing video ad with a caption and compliance notes. Starts manually to test the workflow with a sample property…

Source: https://n8n.io/workflows/16854/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

legal_rag_telegram_api_current_github_ready. Uses telegramTrigger, httpRequest. Event-driven trigger; 56 nodes.

Telegram Trigger, HTTP Request
AI & RAG

This workflow discovers trending topics from YouTube Most Popular and Google Trends, uses OpenAI to rank and draft Shorts-ready angles, stores items for review in Airtable, then sends approved records

HTTP Request, RSS Feed Read
AI & RAG

This n8n workflow automatically generates presentation-style "screen recording" videos with AI-generated slides and a talking head avatar overlay. You provide a topic and intention, and the workflow h

HTTP Request, N8N Nodes Veed, Google Drive +1
AI & RAG

Monitor Google Drive folder, parsing PDF, DOCX and image file into a destination folder, ready for further processing (e.g. RAG ingestion, translation, etc.) Keep processing log in Google Sheet and se

Google Drive Trigger, Google Drive, HTTP Request +2
AI & RAG

This workflow is designed for individuals and businesses looking to streamline the creation of engaging promotional videos. Whether you're marketing a product or developing a personal brand, this AI-d

HTTP Request, Google Cloud Storage, Google Sheets