Write MLS-optimized property listings that convert. Use the AIDA framework, convert features into benefits, produce 3 A/B variants per listing, and optimize for all major platforms (MLS, Zillow, Redfin, Realtor.com, social media).
When to Use
Writing a new listing description for the MLS
Refreshing a stale listing that's been on market 30+ days
Creating versioned copy for different platforms (MLS vs. social)
Coaching a client on how their listing will be marketed
Building a listing copy template library for your team
The AIDA Framework
Every listing should follow the AIDA structure:
Stage
Purpose
Example Headline
Attention
Hook in 3-8 words
"Rooftop Views + Chef's Kitchen"
Interest
Build desire with benefits
"Wake up to sweeping skyline views from your private terrace"
Desire
Paint the lifestyle picture
"Imagine hosting dinner parties in this renovated open-concept space"
Action
Clear next step
"Schedule your private showing today — this one won't last"
Workflow
1. Gather Property Details
Collect from the user or MLS:
Address:
Property Type: [Single Family / Condo / Townhouse / Multi-Family]
Bedrooms:
Bathrooms:
Square Footage:
Lot Size:
Year Built:
List Price:
HOA Dues:
Garage/Parking:
Key Features (list 5-10):
Recent Upgrades (list 3-5):
Unique Selling Points (3):
School District:
Neighborhood/Subdivision:
Nearby Amenities:
2. Feature → Benefit Translation
Convert every feature into a buyer benefit:
Feature
→ Benefit
"Quartz countertops"
"Elegant, low-maintenance quartz countertops — no sealing required"
"New HVAC (2023)"
"Year-round comfort with a brand-new HVAC system — lower utility bills"
"Walk-in closet"
"His-and-hers walk-in closets with custom organizers"
"Hardwood floors"
"Gleaming hardwood floors throughout — no carpet to clean"
"Open floor plan"
"Seamless flow from kitchen to living — perfect for entertaining"
"Smart home features"
"Control lighting, thermostat, and security from your phone"
"Morning-ready dual vanity — no more fighting for counter space"
"Updated kitchen"
"Turn-key chef's kitchen with stainless steel appliances"
"Pool"
"Resort-style pool — your weekend escape without leaving home"
"Mountain views"
"Breathtaking mountain panoramas from every window"
"Walking distance to transit"
"5-min walk to the metro — skip the traffic"
"Corner lot"
"Extra privacy and landscaping on a coveted corner lot"
"New roof"
"Peace of mind with a new roof and 30-year transferable warranty"
3. Generate 3 A/B Variants
Create three distinct tones for A/B testing:
def generate_listing_variants(property_info):
"""
Generate 3 tone variants for a property listing.
property_info: dict with beds, baths, sqft, price, features, etc.
"""
addr = property_info.get('address', '')
beds = property_info.get('beds', 3)
baths = property_info.get('baths', 2)
sqft = property_info.get('sqft', 1500)
price = property_info.get('price', 500000)
features = property_info.get('features', [])
usp = property_info.get('usp', [])
agent = property_info.get('agent_name', 'Your Agent')
agency = property_info.get('agency', 'Realty Co.')
phone = property_info.get('phone', '555-0100')
variants = {}
# Variant A: Luxury / aspirational
headline_a = f"Sophisticated Living in the Heart of {property_info.get('neighborhood', 'Town')}"
body_a = f"""
Price: ${price:,}
{headline_a}
Step into a world of refined elegance at {addr}. This {beds}-bedroom, {baths}-bathroom residence spans {sqft:,} sq ft of meticulously designed living space.
{usp[0] if len(usp) > 0 else 'Every detail has been thoughtfully curated to elevate your daily life.'}
FEATURES YOU'LL LOVE:
"""
for f in features[:5]:
body_a += f"\n• {f}"
body_a += f"""
DON'T MISS THIS OPPORTUNITY
Schedule your private tour today. Homes of this caliber don't stay on the market long.
{agent} | {agency} | {phone}
"""
variants['luxury'] = {'headline': headline_a, 'body': body_a.strip()}
# Variant B: Warm / lifestyle
headline_b = f"Welcome Home — {beds} Beds, {baths} Baths, Endless Charm"
body_b = f"""
Price: ${price:,}
{headline_b}
{addr} isn't just a house — it's where memories are made. Picture yourself sipping morning coffee on the sunlit deck, hosting friends in the open-concept living room, and tucking the kids into cozy bedrooms upstairs.
This inviting {beds}-bed, {baths}-bath home offers {sqft:,} sq ft of comfortable living space, including:
"""
for f in features[:5]:
body_b += f"\n• {f}"
body_b += f"""
Come see for yourself why {property_info.get('neighborhood', 'this neighborhood')} is one of the most sought-after communities in the area.
Schedule your showing today — your new home is waiting.
{agent} | {agency} | {phone}
"""
variants['warm'] = {'headline': headline_b, 'body': body_b.strip()}
# Variant C: Short / data-driven (Zillow-optimized)
headline_c = f"{beds}BR/{baths}BA | {sqft:,} sq ft | ${price:,} | {property_info.get('neighborhood', 'Prime Location')}"
body_c = f"""
{headline_c}
The Numbers:
• {beds} Bedrooms | {baths} Bathrooms | {sqft:,} Sq Ft
• Built: {property_info.get('year_built', 'N/A')} | Lot: {property_info.get('lot_size', 'N/A')}
• HOA: ${property_info.get('hoa', 'N/A')}/mo
• Price/Sq Ft: ${price // sqft:,}
Key Facts:
"""
for f in features[:5]:
body_c += f"\n• {f}"
body_c += f"""
{usp[0] if len(usp) > 0 else ''}
Available for showings starting immediately. Ask about our preferred lender incentives.
{agent} | {agency} | {phone}
"""
variants['data'] = {'headline': headline_c, 'body': body_c.strip()}
return variants
# Example usage
property_info = {
'address': '123 Main St, Austin, TX 78701',
'beds': 4,
'baths': 3,
'sqft': 2400,
'price': 675000,
'year_built': 2019,
'lot_size': '0.25 acres',
'hoa': 150,
'neighborhood': 'Zilker',
'features': [
'Chef's kitchen with quartz counters and Thermador appliances',
'Engineered hardwood floors throughout main level',
'Primary suite with spa-like ensuite and walk-in closet',
'Covered patio with built-in grill — perfect for entertaining',
'Smart home system: Nest thermostat, Ring doorbell, Lutron lighting',
'EV charger in two-car garage',
'Walking distance to Barton Springs, Zilker Park, and South Congress',
],
'usp': [
'Rarely available end-unit with extra windows and private yard',
'Top-rated Austin ISD schools — Zilker Elementary',
'Low-maintenance living with HOA-covered lawn care',
],
'agent_name': 'Sarah Johnson',
'agency': 'Austin Realty Collective',
'phone': '512-555-0142',
}
variants = generate_listing_variants(property_info)
for tone, content in variants.items():
print(f"\n{'='*70}")
print(f"VARIANT: {tone.upper()}")
print(f"{'='*70}")
print(content['headline'])
print(content['body'])
4. Platform-Specific Optimization
Platform
Character Limit
Style
Key Rules
MLS
Usually unlimited, but first 250-500 chars shown
Professional, complete sentences
Include all room names, school district, property condition
Zillow
500 chars for description
Benefit-forward, scannable
Lead with best feature, bullet points help
Redfin
500 chars
Conversational, warm
Write like a local — mention nearby coffee shops, parks
Realtor.com
500 chars
Balanced
Blend MLS professionalism with lifestyle language
Instagram
2,200 chars caption
Emotional, visual-first
Start with the view/photo description, emojis OK
Facebook
5,000 chars
Storytelling
Longer format, ask questions, encourage comments
TikTok/Reels
Caption: ~150 chars
Punchy, hashtag-heavy
Hook in first 3 words, 5-10 relevant hashtags
5. SEO Keyword Strategy
Include these high-value keywords naturally in your copy:
Location: neighborhood, zip code, school district, nearby landmarks
Mobile-friendly formatting (short paragraphs, bullets, line breaks)
Platform-specific optimization applied (MLS vs Zillow vs social)
SEO keywords included naturally (location, type, amenities)
No hyperbole, clichés, or industry jargon for consumers
Call to action is explicit and time-sensitive
Photo captions written for each key space (living, kitchen, primary, outdoor)
Spelling and grammar checked (use a tool — no exceptions)
For stale listings: headline changed, photos updated, incentive added
1---2name: real-estate-listing-copywriting3description: MLS listing copy. AIDA, feature-to-benefit, A/B variants.4license: MIT5---67# Real Estate Listing Copywriting89Write MLS-optimized property listings that convert. Use the AIDA framework, convert features into benefits, produce 3 A/B variants per listing, and optimize for all major platforms (MLS, Zillow, Redfin, Realtor.com, social media).1011## When to Use1213- Writing a new listing description for the MLS14- Refreshing a stale listing that's been on market 30+ days15- Creating versioned copy for different platforms (MLS vs. social)16- Coaching a client on how their listing will be marketed17- Building a listing copy template library for your team1819## The AIDA Framework2021Every listing should follow the **AIDA** structure:2223| Stage | Purpose | Example Headline |24|---|---|---|25| **A**ttention | Hook in 3-8 words | "Rooftop Views + Chef's Kitchen" |26| **I**nterest | Build desire with benefits | "Wake up to sweeping skyline views from your private terrace" |27| **D**esire | Paint the lifestyle picture | "Imagine hosting dinner parties in this renovated open-concept space" |28| **A**ction | Clear next step | "Schedule your private showing today — this one won't last" |2930## Workflow3132### 1. Gather Property Details3334Collect from the user or MLS:3536```37Address:38Property Type: [Single Family / Condo / Townhouse / Multi-Family]39Bedrooms:40Bathrooms:41Square Footage:42Lot Size:43Year Built:44List Price:45HOA Dues:46Garage/Parking:47Key Features (list 5-10):48Recent Upgrades (list 3-5):49Unique Selling Points (3):50School District:51Neighborhood/Subdivision:52Nearby Amenities:53```5455### 2. Feature → Benefit Translation5657Convert every feature into a buyer benefit:5859| Feature | → Benefit |60|---|---|61| "Quartz countertops" | "Elegant, low-maintenance quartz countertops — no sealing required" |62| "New HVAC (2023)" | "Year-round comfort with a brand-new HVAC system — lower utility bills" |63| "Walk-in closet" | "His-and-hers walk-in closets with custom organizers" |64| "Hardwood floors" | "Gleaming hardwood floors throughout — no carpet to clean" |65| "Open floor plan" | "Seamless flow from kitchen to living — perfect for entertaining" |66| "Smart home features" | "Control lighting, thermostat, and security from your phone" |67| "South-facing backyard" | "Sun-drenched south-facing yard — all-day natural light" |68| "Dual vanity" | "Morning-ready dual vanity — no more fighting for counter space" |69| "Updated kitchen" | "Turn-key chef's kitchen with stainless steel appliances" |70| "Pool" | "Resort-style pool — your weekend escape without leaving home" |71| "Mountain views" | "Breathtaking mountain panoramas from every window" |72| "Walking distance to transit" | "5-min walk to the metro — skip the traffic" |73| "Corner lot" | "Extra privacy and landscaping on a coveted corner lot" |74| "New roof" | "Peace of mind with a new roof and 30-year transferable warranty" |7576### 3. Generate 3 A/B Variants7778Create three distinct tones for A/B testing:7980```python81def generate_listing_variants(property_info):82 """83 Generate 3 tone variants for a property listing.84 property_info: dict with beds, baths, sqft, price, features, etc.85 """86 addr = property_info.get('address', '')87 beds = property_info.get('beds', 3)88 baths = property_info.get('baths', 2)89 sqft = property_info.get('sqft', 1500)90 price = property_info.get('price', 500000)91 features = property_info.get('features', [])92 usp = property_info.get('usp', [])93 agent = property_info.get('agent_name', 'Your Agent')94 agency = property_info.get('agency', 'Realty Co.')95 phone = property_info.get('phone', '555-0100')9697 variants = {}9899 # Variant A: Luxury / aspirational100 headline_a = f"Sophisticated Living in the Heart of {property_info.get('neighborhood', 'Town')}"101 body_a = f"""102Price: ${price:,}103104{headline_a}105106Step into a world of refined elegance at {addr}. This {beds}-bedroom, {baths}-bathroom residence spans {sqft:,} sq ft of meticulously designed living space.107108{usp[0] if len(usp) > 0 else 'Every detail has been thoughtfully curated to elevate your daily life.'}109110FEATURES YOU'LL LOVE:111"""112 for f in features[:5]:113 body_a += f"\n• {f}"114115 body_a += f"""116117DON'T MISS THIS OPPORTUNITY118119Schedule your private tour today. Homes of this caliber don't stay on the market long.120121{agent} | {agency} | {phone}122"""123 variants['luxury'] = {'headline': headline_a, 'body': body_a.strip()}124125 # Variant B: Warm / lifestyle126 headline_b = f"Welcome Home — {beds} Beds, {baths} Baths, Endless Charm"127 body_b = f"""128Price: ${price:,}129130{headline_b}131132{addr} isn't just a house — it's where memories are made. Picture yourself sipping morning coffee on the sunlit deck, hosting friends in the open-concept living room, and tucking the kids into cozy bedrooms upstairs.133134This inviting {beds}-bed, {baths}-bath home offers {sqft:,} sq ft of comfortable living space, including:135"""136 for f in features[:5]:137 body_b += f"\n• {f}"138 body_b += f"""139140Come see for yourself why {property_info.get('neighborhood', 'this neighborhood')} is one of the most sought-after communities in the area.141142Schedule your showing today — your new home is waiting.143144{agent} | {agency} | {phone}145"""146 variants['warm'] = {'headline': headline_b, 'body': body_b.strip()}147148 # Variant C: Short / data-driven (Zillow-optimized)149 headline_c = f"{beds}BR/{baths}BA | {sqft:,} sq ft | ${price:,} | {property_info.get('neighborhood', 'Prime Location')}"150 body_c = f"""151{headline_c}152153The Numbers:154• {beds} Bedrooms | {baths} Bathrooms | {sqft:,} Sq Ft155• Built: {property_info.get('year_built', 'N/A')} | Lot: {property_info.get('lot_size', 'N/A')}156• HOA: ${property_info.get('hoa', 'N/A')}/mo157• Price/Sq Ft: ${price // sqft:,}158159Key Facts:160"""161 for f in features[:5]:162 body_c += f"\n• {f}"163 body_c += f"""164{usp[0] if len(usp) > 0 else ''}165166Available for showings starting immediately. Ask about our preferred lender incentives.167168{agent} | {agency} | {phone}169"""170 variants['data'] = {'headline': headline_c, 'body': body_c.strip()}171172 return variants173174# Example usage175property_info = {176 'address': '123 Main St, Austin, TX 78701',177 'beds': 4,178 'baths': 3,179 'sqft': 2400,180 'price': 675000,181 'year_built': 2019,182 'lot_size': '0.25 acres',183 'hoa': 150,184 'neighborhood': 'Zilker',185 'features': [186 'Chef's kitchen with quartz counters and Thermador appliances',187 'Engineered hardwood floors throughout main level',188 'Primary suite with spa-like ensuite and walk-in closet',189 'Covered patio with built-in grill — perfect for entertaining',190 'Smart home system: Nest thermostat, Ring doorbell, Lutron lighting',191 'EV charger in two-car garage',192 'Walking distance to Barton Springs, Zilker Park, and South Congress',193 ],194 'usp': [195 'Rarely available end-unit with extra windows and private yard',196 'Top-rated Austin ISD schools — Zilker Elementary',197 'Low-maintenance living with HOA-covered lawn care',198 ],199 'agent_name': 'Sarah Johnson',200 'agency': 'Austin Realty Collective',201 'phone': '512-555-0142',202}203204variants = generate_listing_variants(property_info)205for tone, content in variants.items():206 print(f"\n{'='*70}")207 print(f"VARIANT: {tone.upper()}")208 print(f"{'='*70}")209 print(content['headline'])210 print(content['body'])211```212213### 4. Platform-Specific Optimization214215| Platform | Character Limit | Style | Key Rules |216|---|---|---|---|217| **MLS** | Usually unlimited, but first 250-500 chars shown | Professional, complete sentences | Include all room names, school district, property condition |218| **Zillow** | 500 chars for description | Benefit-forward, scannable | Lead with best feature, bullet points help |219| **Redfin** | 500 chars | Conversational, warm | Write like a local — mention nearby coffee shops, parks |220| **Realtor.com** | 500 chars | Balanced | Blend MLS professionalism with lifestyle language |221| **Instagram** | 2,200 chars caption | Emotional, visual-first | Start with the view/photo description, emojis OK |222| **Facebook** | 5,000 chars | Storytelling | Longer format, ask questions, encourage comments |223| **TikTok/Reels** | Caption: ~150 chars | Punchy, hashtag-heavy | Hook in first 3 words, 5-10 relevant hashtags |224225### 5. SEO Keyword Strategy226227Include these high-value keywords naturally in your copy:228229- **Location**: neighborhood, zip code, school district, nearby landmarks230- **Property type**: single-family, condo, townhouse, loft, ranch, colonial231- **Lifestyle**: "starter home," "move-in ready," "turnkey," "income property"232- **Condition**: "newly renovated," "updated kitchen," "fresh paint"233- **Amenities**: "hardwood floors," "open floor plan," "granite counters"234- **Market cues**: "priced to sell," "rare opportunity," "motivated seller"235236### 6. MLS Bullet Optimization237238Keep MLS bullets punchy and benefit-driven:239240```241❌ BAD: "New kitchen with quartz countertops"242✅ GOOD: "Gorgeous chef's kitchen w/ quartz counters & stainless appliances"243244❌ BAD: "Large backyard"245✅ GOOD: "Expansive private backyard — perfect for summer BBQs and play"246247❌ BAD: "Close to shopping"248✅ GOOD: "Walk to Trader Joe's, Starbucks, and the farmers market"249250❌ BAD: "3 bedrooms"251✅ GOOD: "3 generously sized bedrooms with ceiling fans and walk-in closets"252```253254### 7. Listing Refresh Strategy255256For stale listings (30+ days on market):2572581. **Change the headline** completely — new angle, new hook2592. **Update 3+ photos** — different angles, different lighting, different season2603. **Add a price improvement note** if applicable: "New Price! Originally $525k — now $499k"2614. **Emphasize different features** — if you led with kitchen, now lead with location2625. **Change the tone** — switch from luxury to warm, or from data to lifestyle2636. **Add a seller incentive**: "Closing cost credit offered," "Rate buydown available"264265### 8. Listing Photo Caption Templates266267**Living Room:** "Sun-drenched living room with 10-ft ceilings and gas fireplace — the heart of the home"268269**Kitchen:** "Chef-worthy kitchen with waterfall island, Bosch appliances, and walk-in pantry"270271**Primary Bedroom:** "Primary retreat with spa ensuite, dual vanities, and custom walk-in closet"272273**Backyard:** "Resort-inspired backyard with saltwater pool, pergola, and outdoor kitchen"274275**View:** "Unobstructed sunset views from the rooftop terrace — every evening is a show"276277**Entryway:** "A grand welcome: marble foyer sets the tone for this meticulously maintained home"278279## Common Pitfalls280281- **Writing for agents, not buyers**: Avoid jargon like "3/2 SFD w/ 2CG" — write for humans, not the MLS grid.282- **Feature dumps with no benefits**: A list of features without "what this means for you" doesn't motivate a showing.283- **Hyperbole that triggers skepticism**: "Best house ever" and "one of a kind" are trust-killers. Be specific instead.284- **Ignoring the listing photos**: Copy that contradicts photos (mentions "city views" when no windows face the skyline) creates cognitive dissonance.285- **Overwriting the first 250 characters**: MLS and Zillow truncate. Put the strongest selling point in the first sentence.286- **Forgetting the call to action**: Every listing needs an explicit next step — "Schedule your showing" not "Contact us for more info."287- **Neglecting mobile formatting**: Buyers read on phones. Short paragraphs, bullet points, and frequent line breaks.288- **Missing key MLS compliance**: Every market has required disclaimers (brokerage name, fair housing, EHO). Check your local MLS rules.289- **Using stale templates**: Buyers have seen every real estate cliché. Fresh, authentic copy stands out.290- **Not localizing**: Generic copy that could describe any house in any city doesn't sell. Name the coffee shop, the park, the farmers market.291292## Verification Checklist293294- [ ] AIDA framework present (Attention hook in headline, Interest/Desire in body, Action in closing)295- [ ] Every feature translated to a buyer benefit (no naked feature lists)296- [ ] 3 A/B variants generated (luxury/aspirational, warm/lifestyle, data-driven)297- [ ] Strongest selling point in the first 250 characters298- [ ] Active voice throughout (not passive: "You'll love" not "It is loved by")299- [ ] MLS compliance checked (Fair Housing disclaimer, broker info, required disclosures)300- [ ] Mobile-friendly formatting (short paragraphs, bullets, line breaks)301- [ ] Platform-specific optimization applied (MLS vs Zillow vs social)302- [ ] SEO keywords included naturally (location, type, amenities)303- [ ] No hyperbole, clichés, or industry jargon for consumers304- [ ] Call to action is explicit and time-sensitive305- [ ] Photo captions written for each key space (living, kitchen, primary, outdoor)306- [ ] Spelling and grammar checked (use a tool — no exceptions)307- [ ] For stale listings: headline changed, photos updated, incentive added
Run npx skillmds@latest add loopyluci/real-estate-listing-copywriting in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
MLS listing copy. AIDA, feature-to-benefit, A/B variants. It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. Independent scanners report: SkillSpector: PASS, Skill Scanner: PASS. Capability flags: docs only. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free. This skill is licensed under MIT.
LoopyLuci (@loopyluci) published this skill. Their other Agent Skills are listed on their SkillMD profile.