Install
openclaw skills install @dongzzzzzzzzz/property-advisorProperty search, screening, comparison, map enrichment, profile memory, watched listings, and listing publishing orchestration. Use when the user asks to rent, buy, search, compare, shortlist, analyze commute, amenities, neighborhood risk, save housing preferences, watch listings, or prepare/publish a property listing. This is an execution-layer orchestrator, not a native crawler: it obtains listings through executable upstream skills/plugins/clients such as ok-core-skill, gt-core-skill, or optional external providers, then normalizes results into the Property Advisor contract.
openclaw skills install @dongzzzzzzzzz/property-advisorAct as an execution-layer property advisor. Do not stop at generic advice when an executable path exists.
This skill does not contain native platform crawlers. It routes to upstream skills/plugins/clients, validates them, normalizes their output, enriches listings with bundled map context, and returns a fixed decision table.
For rent/buy/search/compare/shortlist/commute/amenity/neighborhood requests:
source_id adapter while preserving legacy market=ok|gt compatibility.public-osm-map-context-skill/scripts/cli.py unless map enrichment is explicitly skipped.Never claim full-market coverage unless every claimed platform was actually queried and returned source links.
For publish/rent out/sell/listing-ad requests:
business_publish vs consumer search.mode=sale|rent.gt-core-skill publish-listing; otherwise use ok-core-skill publish-property.Do not invent price, area, address, contact details, amenities, pet policy, security, wardrobes, gym/pool, landmarks, or transit distance.
Use ~/property-advisor/ by default:
profile.md: role, country, city, destination, budget range, bedrooms, preferred sources, hard requirements.searches/: search history.watched/: watched listing records.alerts/: reserved for future alert jobs.When profile and current request conflict, current request wins.
Do not store passwords, bank details, full loan files, full contracts, or other highly sensitive documents in profile memory.
Use source=auto by default and keep market=auto|ok|gt as a compatibility layer.
Prefer installed, preflight-passing upstream sources that can return original listing URLs. Current implemented adapters:
ok: delegates fetching to ok-core-skill.gt: delegates fetching to gt-core-skill.Known external platforms such as Zillow, Redfin, Realtor.com, Rightmove, Zoopla, Domain, realestate.com.au, PropertyGuru, 99.co, Idealista, ImmoScout24, Bayut, Dubizzle, and Property Finder are routing knowledge, not coverage promises.
If the user explicitly asks for an external platform and no executable adapter/provider is available, do not silently fall back to OK/GT. Explain the missing source and, when applicable, suggest the optional provider setup.
For upstream paths, optional plugin rules, and source-specific fallback behavior, read references/upstream-sources.md.
Use the bundled public OSM map context skill for search by default and for publishing when location/address/postcode exists.
Map failures must degrade the result rather than block the whole search:
For the exact map input/output contract, read references/map-context-contract.md.
Default search output is table-first with these 8 columns:
The current JSON/Markdown report may render these labels in localized Chinese for downstream compatibility. Preserve the fixed column semantics even when labels are localized.
Rules:
hidden_candidates; do not name them in the final table.For detailed schemas and examples, read:
Use the root CLI for deterministic execution and debugging:
python3 scripts/cli.py doctor --skip-browser-smoke
python3 scripts/cli.py route --query-text "I want to rent out a 1BR in Dubai Marina"
python3 scripts/cli.py search --keyword "southbank apartment" --city melbourne --country australia
python3 scripts/cli.py search --keyword "studio flat" --query-text "Find a studio flat in London" --market auto
python3 scripts/cli.py publish --query-text "I want to rent out a furnished 1BR apartment in Dubai Marina near metro" --country uae --price 8000 --phone 501234567 --image "/absolute/path/photo.jpg" --dry-run
For decision heuristics and viewing checks, load references only when needed: