An estate agent receives a stack of property photos from a photographer on Monday morning. By Friday, if they're efficient, those photos might become a full listing. The photographer's shots need cropping, colour correction, and enhancement. Someone writes a description. Someone else creates a virtual tour. A third person adapts the copy for Instagram, LinkedIn and the agency website. At £50 per hour, that's easily £400 of labour per property, and most agents handle dozens monthly. What if that entire workflow ran automatically from a single folder of raw images? The gap between receiving photos and publishing a listing exists because each step has traditionally required human judgment and manual tool-switching. But modern AI can handle most of it. Image enhancement, description writing, video generation, and social media adaptation are all tasks where AI produces consistent, acceptable output with minimal oversight. The question is not whether AI can do these things; it is whether you can connect the tools so that photos flow through the system without anyone touching them in between. This workflow takes photos from a cloud folder, enhances them, generates a written description, creates a short video tour with a virtual presenter, and publishes social media posts. It runs on a schedule or triggers when new files arrive. One agent uploads photos; everything else happens without further input.
The Automated Workflow
We will build this on n8n, a self-hosted or cloud-based orchestration platform that integrates well with image tools, text generation and social publishing. (Zapier and Make both work too, though n8n gives you more control over complex branching and cost.) The flow moves like this: Google Drive or AWS S3 watches a folder; n8n picks up new images; Pixelcut AI enhances them; Claude Opus 4.6 writes a property description from the images; Hour One generates a video walkthrough; Postwise posts to social; a final step updates a spreadsheet with all links.
Step 1: Monitor the source folder
Set up an n8n Google Drive trigger or S3 trigger. You decide whether to run every hour or whenever a new file lands.
Google Drive Trigger:
- Watch folder: /properties/raw-photos
- File type: jpg, png
- Run: every 60 minutes or on file upload
Or, for S3:
S3 Trigger:
- Bucket: real-estate-photos
- Prefix: uploads/
- Event: ObjectCreated
Step 2: Enhance images with Pixelcut AI
For each image, call Pixelcut's API to upscale and correct colour. Pixelcut's upscale feature often recovers detail from compressed photos; the colour correction is particularly useful if you have mixed lighting from different rooms.
POST /api/v1/enhance
Host: api.pixelcut.ai
Authorization: Bearer YOUR_PIXELCUT_API_KEY
Content-Type: application/json { "image_url": "https://drive.google.com/uc?export=download&id=FILE_ID", "enhance_type": "upscale", "upscale_factor": 2, "auto_colour_correct": true
}
Pixelcut returns a URL to the enhanced image. Store this in a variable for later use. In n8n, set up a loop if you have multiple images per property; the workflow processes each one and collects the URLs.
Step 3: Generate a property description
Use Claude Opus 4.6 to write a compelling listing description. You can either pass the image URLs directly to Claude (it processes images natively) or, if you prefer, use OCR or manual metadata to give Claude structured input about the property (bedrooms, bathrooms, location, etc.). The simplest approach: pass the enhanced image URLs and ask Claude to write the description.
POST /messages
Host: api.anthropic.com
Authorization: x-api-key YOUR_ANTHROPIC_KEY
Content-Type: application/json { "model": "claude-opus-4.6", "max_tokens": 500, "messages": [ { "role": "user", "content": [ { "type": "text", "text": "You are an estate agent copywriter. Write a compelling property description (200-250 words) suitable for a UK residential listing. Focus on unique features, condition, and appeal. Use friendly, professional language." }, { "type": "image", "source": { "type": "url", "url": "URL_OF_ENHANCED_IMAGE_1" } }, { "type": "image", "source": { "type": "url", "url": "URL_OF_ENHANCED_IMAGE_2" } } ] } ]
}
Claude returns the description as plain text. Store it in a variable.
Step 4: Create a video tour with Hour One
Hour One takes a script and a choice of virtual presenter and produces a video. Pass Claude's description as the script, or create a shorter script from key details.
POST /api/videos
Host: api.hourone.com
Authorization: Bearer YOUR_HOUR_ONE_API_KEY
Content-Type: application/json { "script": "Welcome to this beautiful three-bedroom property in the heart of Bristol. Let me show you around. The living room features original cornicing and a bay window overlooking the garden. The kitchen is spacious and modern, with plenty of storage. Upstairs, you'll find three generous bedrooms and a recently refurbished bathroom.", "presenter": "presenter-001", "language": "en-GB", "style": "professional"
}
Hour One returns a video URL. The video typically renders in 2 to 5 minutes. In n8n, use a wait step or polling to check when the video is ready before moving to the next step.
Step 5: Post to social media with Postwise
Postwise specialises in Twitter/X posting, but you can extend this with separate steps for LinkedIn and Instagram. For each social platform, adapt the copy slightly (Twitter is shorter and more punchy; LinkedIn is more formal).
POST /api/posts
Host: api.postwise.com
Authorization: Bearer YOUR_POSTWISE_API_KEY
Content-Type: application/json { "content": "New listing: Beautiful 3-bed home in Bristol. Period features, modern kitchen, stunning garden views. £350,000. Link: https://your-agency-site.com/property/12345", "platforms": ["twitter"], "schedule_time": "2026-03-15T10:00:00Z", "media": { "images": ["URL_OF_ENHANCED_IMAGE_1"], "video": "URL_OF_HOUR_ONE_VIDEO" }
}
For LinkedIn and Instagram, you may need separate API calls or a second tool. Alternatively, use Zapier's built-in social posting, which is simpler but less flexible.
Step 6: Store everything in a spreadsheet
Use n8n's Google Sheets integration to create a row for each property with links to the enhanced images, description text, video URL, and social post links. This serves as your audit trail and lets agents quickly jump to any asset.
Columns:
- Property ID
- Date Processed
- Enhanced Images (links)
- Description
- Video URL
- Twitter Post Link
- Listing Page URL
- Status (Published / Scheduled)
Putting it together in n8n
Your workflow looks like this: 1. Google Drive or S3 trigger fires.
-
Loop through each image.
-
For each image, call Pixelcut to enhance.
-
Once all images are enhanced, call Claude Opus 4.6 with the image URLs and get a description.
-
Call Hour One with a script derived from the description.
-
Wait for the video to render (use a polling node).
-
Call Postwise to post to social media.
-
Add a row to Google Sheets with all URLs and metadata.
-
(Optional) Send a Slack notification to the agent so they know the workflow finished. Most of these steps run in parallel where possible. Enhancements for all images happen simultaneously; the description is generated while video rendering begins. The entire workflow should finish in 10 to 15 minutes per property.
The Manual Alternative
If you want human review before publishing, add a pause step. After the description and video are generated, send a Slack message to the agent with a link to preview both. The agent approves or edits, then manually clicks "Publish" to trigger the social posting and spreadsheet update. This trades a little automation for peace of mind, especially useful if your brand voice needs careful control or if you worry about edge cases (an image too blurry to describe well, for example).
Pro Tips
Error handling and image quality
Pixelcut and Hour One both have rate limits.
Pixelcut allows 100 image enhancements per month on the free tier, scaling up with a paid plan. If you process dozens of properties monthly, budget for the standard plan. Hour One charges per video; queue jobs carefully to avoid surprise bills. If an image is too blurry or dark, Pixelcut may fail to enhance it. Add a retry logic in n8n: if enhancement fails, skip that image and log it. Claude can still write a description from the remaining images.
Branching for edge cases
Add a conditional step after Claude returns the description. If the description is shorter than 150 words, it means Claude struggled with the images. Trigger a Slack alert asking the agent to review. This prevents bad listings from going live.
Cost optimisation
Claude Opus 4.6 is more expensive than Claude Haiku 4.5, but Opus handles images better and writes richer copy. For this workflow, Opus is worth it; stick with Opus. Hour One's professional presenters cost more than basic ones. If budget is tight, test a basic presenter first. Most viewers won't notice the difference in a 60-second walkthrough.
Scheduling and batching
Rather than processing properties one at a time as they arrive, batch them. Set the workflow to run once per day at 9 AM. Collect all photos uploaded in the previous 24 hours and process them together. This reduces API overhead and makes costs more predictable.
Video length and script
Hour One performs best with scripts between 60 and 120 seconds. If Claude's description is too long, add a step that trims it. You could also ask Claude to write a separate, shorter script specifically for the video; descriptions and video scripts don't have to be identical.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| n8n Cloud | Pro | £25 | Self-hosted is free; cloud is easiest for small teams. |
| Pixelcut AI | Standard | £30 | Free tier allows 100 images; Standard is 1,000 images. |
| Claude API | Pay as you go | £15–40 | Depends on usage; Opus 4.6 is ~£0.015 per image description. |
| Hour One | Standard | £100 | Covers ~30 videos monthly; overage at £3–5 per video. |
| Postwise | Pro | £29 | Includes scheduling and multiple posts. |
| Google Drive / Sheets | Free or Workspace | £0–10 | Free tier sufficient; Google Workspace adds admin features. |
| Total | £200–240 | Supports 20–40 properties monthly. Add £3–5 per property above that. |