Back to Alchemy
Alchemy RecipeIntermediateworkflow

Real estate listing production: Photos to virtual tour to listing copy

Real estate listing production remains stubbornly manual. An agent photographs a property, spends hours editing those images in Photoshop, then writes 200 words of description, then records a walkthrough video, then uploads everything to three different portals. By the time the listing goes live, half a day has vanished. If you're managing multiple properties per week, you're looking at 20-30 hours of busywork monthly, much of it repetitive enough that machines should handle it. The good news: you can automate nearly the entire pipeline. Raw photos become edited and background-removed assets within seconds. Listing copy writes itself based on property data and photos. A virtual presenter delivers the property description as voiceover during an automated video tour. Everything syncs to your listing platform with no human handoff. What took eight hours now takes forty minutes of initial setup, then runs in the background while you meet clients. This workflow sits at intermediate difficulty because you'll need to orchestrate four different tools, handle image data correctly, and manage API rate limits. But once it's running, you barely touch it again. For more on this, see Real estate listing creation and virtual tour generation. For more on this, see Real estate virtual tour generation from inspection photos. For more on this, see Real estate listing production from photos to virtual tour.

The Automated Workflow

You'll use n8n for this orchestration because it handles file operations better than alternatives and maintains state across complex multi-step workflows. The flow looks like this: property metadata and raw photos arrive from your source (a Google Drive folder, Dropbox, or a form submission), images get enhanced and backgrounds removed, property details get converted to listing copy, audio narration gets generated, video tour gets assembled, and a final listing package uploads to your MLS or listing platform.

Step 1: Trigger and image ingestion

Start with n8n's Dropbox trigger or Google Drive watch node. When you upload a folder containing raw property photos and a simple metadata file (property address, bedrooms, bathrooms, price), the workflow activates.

json
{ "trigger": "dropbox_folder_watch", "path": "/listings/raw", "filter": "jpg,png", "event": "file_added"
}

The metadata should be a simple JSON file in the same folder:

json
{ "address": "42 Millbrook Lane, Bristol BS1 2AB", "bedrooms": 4, "bathrooms": 2, "price": 450000, "sqft": 2200, "garden": "Mature south-facing garden", "parking": "Double garage"
}

Step 2: Image enhancement and background removal

Route each photo through Pixelcut AI via its REST API. Pixelcut removes backgrounds and enhances lighting automatically, which beats manual editing in Photoshop by about six hours per property.

POST https://api.pixelcut.ai/api/v1/remove_background
Authorization: Bearer YOUR_PIXELCUT_API_KEY
Content-Type: application/json { "image_url": "https://your-storage.com/raw-photo-1.jpg", "format": "png", "quality": "high"
}

Store the processed images in a separate folder. In n8n, use the HTTP node with response handling to manage multiple images in sequence. Set a slight delay between requests to respect Pixelcut's rate limits (roughly 60 requests per minute).

javascript
// In n8n's Function node, after each Pixelcut call
return { processed_images: $response.body.output_url, status: 'success'
};

Step 3: Generate listing copy

Pass your property metadata to Copy.ai's API. Copy.ai specialises in generating real estate descriptions that actually sell, using tone and structure that works.

POST https://api.copy.ai/api/v1/generate
Authorization: Bearer YOUR_COPYAI_API_KEY
Content-Type: application/json { "template": "real_estate_listing", "inputs": { "address": "42 Millbrook Lane, Bristol BS1 2AB", "bedrooms": 4, "bathrooms": 2, "price": 450000, "sqft": 2200, "special_features": "Mature south-facing garden, double garage, period features" }
}

Copy.ai returns polished, sale-focused copy that reads naturally. Store this as a variable in n8n for the next step.

Step 4: Convert copy to audio

Feed the generated listing copy to ElevenLabs Turbo v2.5, which produces natural-sounding voice narration. This removes the need to record voiceover yourself, and it's fast enough that you can regenerate it instantly if you want to tweak the copy.

POST https://api.elevenlabs.io/v1/text-to-speech/{voice_id}
Authorization: Bearer YOUR_ELEVENLABS_API_KEY
Content-Type: application/json { "text": "This stunning four-bedroom Victorian semi sits on a mature south-facing garden...", "model_id": "eleven_turbo_v2_5", "voice_settings": { "stability": 0.5, "similarity_boost": 0.75 }
}

Save the audio file to your storage. ElevenLabs typically processes this in 5-10 seconds for a 200-word description.

Step 5: Create video tour

Hour One's API accepts your processed images, audio narration, and metadata, then generates a video tour with a virtual presenter walking through each room. It's automated video production without hiring a videographer.

POST https://api.hourone.com/api/v1/video_create
Authorization: Bearer YOUR_HOURONE_API_KEY
Content-Type: application/json { "title": "Property Tour: 42 Millbrook Lane", "script": "This stunning four-bedroom Victorian semi sits on a mature south-facing garden...", "images": [ "https://your-storage.com/processed-photo-1.png", "https://your-storage.com/processed-photo-2.png" ], "audio_url": "https://your-storage.com/narration.mp3", "presenter": "professional_female_1", "duration_seconds": 120, "background_music": "subtle_classical"
}

Hour One returns a video file URL typically within 2-3 minutes. This is where the workflow shifts from instant to slightly-waiting-for-processing, but it's still fully automated.

Step 6: Assemble and upload final listing

Create a final output package: edited photos, copy text, audio file, and video tour. Upload everything to your MLS or listing platform via their API or SFTP.

javascript
// In n8n's Function node, build the final package
return { listing_package: { address: metadata.address, description: listing_copy, images: processed_images_array, video_tour_url: hour_one_video_url, narration_url: elevenlabs_audio_url, created_timestamp: new Date().toISOString() }
};

Most MLS systems have XML upload endpoints or Zapier integrations. If yours doesn't, you can manually upload the package in two minutes; the automation has already saved you seven hours anyway.

End-to-end timing:

Photos ingested to final listing package ready: approximately 8 minutes of active processing (mostly waiting for Hour One's video generation). Your actual effort: nil. The workflow runs entirely in the background.

The Manual Alternative

If you prefer more control over individual steps, you can trigger each tool manually from their dashboards and manage files yourself. This takes about ninety minutes per property and lets you edit copy before it becomes voiceover, or cherry-pick the best photos before video generation. It's slower but safer if you're nervous about automated decisions on visual assets. Use this approach for your first two properties, then switch to full automation once you're confident in the output quality.

Pro Tips

Rate limiting and delays.

Pixelcut allows 60 requests per minute; ElevenLabs allows 300 requests per month on starter plans and 3000 on pro.

Add 1-second delays between image requests in n8n to avoid throttling errors. If you're processing more than five properties per day, upgrade ElevenLabs to their professional tier.

Error handling on video generation.

Hour One occasionally fails if an image is too small or corrupted. Add a validation step after Pixelcut that checks image dimensions (minimum 800×600) and retries if Hour One returns an error. In n8n, use a conditional branch to skip corrupted photos automatically.

Cost control with Copy.ai.

Copy.ai charges per generation, not per word. Batch your property metadata and generate descriptions in one API call when you have five properties ready, rather than triggering the workflow individually. This cuts costs by roughly 30 percent.

Video format negotiation.

Hour One exports MP4 by default, which works everywhere. If your MLS demands a different codec, use FFmpeg in an n8n Function node to convert automatically. This adds 10-15 seconds per video but ensures compatibility.

Store processed assets permanently.

Don't delete processed images or audio after upload. Keep them in a dated folder structure so you can repurpose them later (for social media, property websites, virtual open house listings). They cost nothing to store and save re-processing time.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
Pixelcut AIProfessional£20Unlimited background removal and enhancement
Copy.aiBusiness£49150 generations per month; overage at £0.10 each
ElevenLabs Turbo v2.5Professional£993000 characters per month; suitable for 10-15 properties
Hour OneProfessional£25050 videos per month; includes multiple presenters and templates
n8nSelf-hosted or Cloud Pro£0-£50Self-hosted is free; Cloud Pro recommended for reliability
Total£418-£468Typical cost per workflow month; covers 10-20 properties