Refresh property assessor and web automation docs
This commit is contained in:
@@ -20,9 +20,10 @@ This repository contains practical OpenClaw skills and companion integrations. I
|
||||
| `gitea-api` | Interact with Gitea via REST API (repos, issues, PRs, releases, branches, user info). | `skills/gitea-api` |
|
||||
| `nordvpn-client` | Install, log in to, connect, disconnect, and verify NordVPN sessions across Linux CLI and macOS NordLynx/WireGuard backends. | `skills/nordvpn-client` |
|
||||
| `portainer` | Manage Portainer stacks via API (list, start/stop/restart, update, prune images). | `skills/portainer` |
|
||||
| `property-assessor` | Assess a residential property from an address or listing URL with comps, carry costs, risks, and required photo review using Zillow first and HAR fallback. | `skills/property-assessor` |
|
||||
| `searxng` | Search through a local or self-hosted SearXNG instance for web, news, images, and more. | `skills/searxng` |
|
||||
| `us-cpa` | Federal individual 1040 workflow for tax questions, case intake, preparation, review, and draft e-file-ready export. | `skills/us-cpa` |
|
||||
| `web-automation` | One-shot extraction plus broader browsing/scraping with Playwright-compatible CloakBrowser (auth flows, extraction, bot-protected sites). | `skills/web-automation` |
|
||||
| `web-automation` | One-shot extraction plus broader browsing/scraping with Playwright-compatible CloakBrowser, including dedicated Zillow and HAR photo extractors. | `skills/web-automation` |
|
||||
|
||||
## Integrations
|
||||
|
||||
|
||||
@@ -8,9 +8,10 @@ This folder contains detailed docs for each skill in this repository.
|
||||
- [`gitea-api`](gitea-api.md) — REST-based Gitea automation (no `tea` CLI required)
|
||||
- [`nordvpn-client`](nordvpn-client.md) — Cross-platform NordVPN install, login, connect, disconnect, and verification with Linux CLI and macOS NordLynx/WireGuard support
|
||||
- [`portainer`](portainer.md) — Portainer stack management (list, lifecycle, updates, image pruning)
|
||||
- [`property-assessor`](property-assessor.md) — Residential property assessment with underwriting, risks, and required Zillow/HAR photo review workflow
|
||||
- [`searxng`](searxng.md) — Privacy-respecting metasearch via a local or self-hosted SearXNG instance
|
||||
- [`us-cpa`](us-cpa.md) — Federal individual 1040 workflow for tax questions, case intake, preparation, review, and draft e-file-ready export
|
||||
- [`web-automation`](web-automation.md) — One-shot extraction plus Playwright-compatible CloakBrowser browser automation and scraping
|
||||
- [`web-automation`](web-automation.md) — One-shot extraction plus Playwright-compatible CloakBrowser browser automation, scraping, and dedicated Zillow/HAR photo extraction
|
||||
|
||||
## Integrations
|
||||
|
||||
|
||||
84
docs/property-assessor.md
Normal file
84
docs/property-assessor.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# property-assessor
|
||||
|
||||
Decision-grade residential property assessment with required photo review, comp checks, carry-cost underwriting, and explicit buy/pass guidance.
|
||||
|
||||
## What this skill is for
|
||||
|
||||
- Assessing a property from an address, Zillow URL, HAR URL, or other listing source
|
||||
- Reconciling baseline facts across multiple listing/public sources
|
||||
- Reviewing listing photos before making condition claims
|
||||
- Producing a practical verdict such as `buy`, `pass`, or `only below X`
|
||||
|
||||
## Core workflow
|
||||
|
||||
1. Normalize the address and property type.
|
||||
2. Build a baseline fact set from the best available listing or record source.
|
||||
3. Cross-check facts on other sources.
|
||||
4. Review photos before making condition claims.
|
||||
5. Pull comps.
|
||||
6. Underwrite carry costs and risk factors.
|
||||
7. End with a clear verdict and fair-value guidance.
|
||||
|
||||
## Required photo-review workflow
|
||||
|
||||
Photo review is mandatory when a listing source exposes photos.
|
||||
|
||||
Preferred source order:
|
||||
1. Zillow
|
||||
2. HAR
|
||||
3. Realtor.com
|
||||
4. Brokerage mirror or other accessible listing mirror
|
||||
|
||||
Rules:
|
||||
- Do not claim condition from structured text alone when listing photos are available.
|
||||
- Prefer accessible all-photos views, photo grids, or scrollable photo pages over fragile next-arrow traversal.
|
||||
- If the primary source fails but a fallback source exposes the photos, continue with the fallback.
|
||||
- If photo review is incomplete, say so explicitly and lower confidence.
|
||||
|
||||
## Zillow and HAR integration
|
||||
|
||||
This skill now expects the dedicated `web-automation` extractors first.
|
||||
|
||||
### Zillow
|
||||
|
||||
```bash
|
||||
cd ~/.openclaw/workspace/skills/web-automation/scripts
|
||||
node zillow-photos.js "<zillow-listing-url>"
|
||||
```
|
||||
|
||||
Success means:
|
||||
- the Zillow all-photos page opened, or
|
||||
- Zillow's rendered listing shell already exposed the full direct image set and the extracted count matches the announced count
|
||||
|
||||
The returned `imageUrls` are the photo-review set. Review those images before making condition claims.
|
||||
|
||||
### HAR fallback
|
||||
|
||||
```bash
|
||||
cd ~/.openclaw/workspace/skills/web-automation/scripts
|
||||
node har-photos.js "<har-listing-url>"
|
||||
```
|
||||
|
||||
Use HAR when Zillow does not expose a reliable photo set. The returned `imageUrls` are the review set for the fallback path.
|
||||
|
||||
## Approval-safe command shape
|
||||
|
||||
For chat-driven runs, prefer file-based commands under `~/.openclaw/workspace/skills/web-automation/scripts`.
|
||||
|
||||
Good:
|
||||
- `node check-install.js`
|
||||
- `node zillow-photos.js "<url>"`
|
||||
- `node har-photos.js "<url>"`
|
||||
|
||||
Avoid when possible:
|
||||
- `node -e "..."`
|
||||
- `node --input-type=module -e "..."`
|
||||
|
||||
## Output requirements
|
||||
|
||||
The final assessment should explicitly include:
|
||||
- `Photo source attempts: ...`
|
||||
- `Photo review: completed via <source>` or `Photo review: not completed`
|
||||
|
||||
If photo review was completed, briefly summarize the condition read from the photos.
|
||||
If not, mark condition confidence as limited and explain why.
|
||||
@@ -15,6 +15,7 @@ Automated web browsing and scraping using Playwright-compatible CloakBrowser, wi
|
||||
- Use `node skills/web-automation/scripts/extract.js "<URL>"` for one-shot extraction from a single URL
|
||||
- Use `npx tsx scrape.ts ...` for markdown scraping modes
|
||||
- Use `npx tsx browse.ts ...`, `auth.ts`, or `flow.ts` for interactive or authenticated flows
|
||||
- Use `node skills/web-automation/scripts/zillow-photos.js "<listing-url>"` or `har-photos.js` for real-estate photo extraction before attempting generic gallery automation
|
||||
|
||||
## Requirements
|
||||
|
||||
@@ -59,6 +60,17 @@ pnpm rebuild better-sqlite3 esbuild
|
||||
|
||||
Without this, helper scripts may fail before launch because the native bindings are missing.
|
||||
|
||||
## Prerequisite check
|
||||
|
||||
Before running automation, verify the local install and CloakBrowser wiring:
|
||||
|
||||
```bash
|
||||
cd ~/.openclaw/workspace/skills/web-automation/scripts
|
||||
node check-install.js
|
||||
```
|
||||
|
||||
If this fails, stop and fix setup before troubleshooting site automation.
|
||||
|
||||
## Exec approvals allowlist
|
||||
|
||||
If OpenClaw keeps prompting for approval when running this skill, add a local allowlist for the main agent:
|
||||
@@ -80,13 +92,24 @@ Notes:
|
||||
- If `node` lives somewhere else, replace `/opt/homebrew/bin/node` with the output of `which node`.
|
||||
- If matching is inconsistent, replace `~/.openclaw/...` with the full absolute path for the machine.
|
||||
- Keep the allowlist scoped to the main agent unless there is a clear reason to widen it.
|
||||
- Prefer file-based commands like `node check-install.js`, `node zillow-photos.js ...`, and `node har-photos.js ...` over inline `node -e ...`. Inline interpreter eval is more likely to trigger approval friction.
|
||||
|
||||
## Common commands
|
||||
|
||||
```bash
|
||||
# Install / wiring check
|
||||
cd ~/.openclaw/workspace/skills/web-automation/scripts
|
||||
node check-install.js
|
||||
|
||||
# One-shot JSON extraction
|
||||
node skills/web-automation/scripts/extract.js "https://example.com"
|
||||
|
||||
# Zillow photo extraction
|
||||
node skills/web-automation/scripts/zillow-photos.js "https://www.zillow.com/homedetails/..."
|
||||
|
||||
# HAR photo extraction
|
||||
node skills/web-automation/scripts/har-photos.js "https://www.har.com/homedetail/..."
|
||||
|
||||
# Browse a page with persistent profile
|
||||
npx tsx browse.ts --url "https://example.com"
|
||||
|
||||
@@ -100,6 +123,58 @@ npx tsx auth.ts --url "https://example.com/login"
|
||||
npx tsx flow.ts --instruction 'go to https://search.fiorinis.com then type "pippo" then press enter then wait 2s'
|
||||
```
|
||||
|
||||
## Real-estate photo extraction
|
||||
|
||||
Use the dedicated Zillow and HAR extractors before trying a free-form gallery flow.
|
||||
|
||||
### Zillow
|
||||
|
||||
```bash
|
||||
cd ~/.openclaw/workspace/skills/web-automation/scripts
|
||||
node zillow-photos.js "https://www.zillow.com/homedetails/4141-Whiteley-Dr-Corpus-Christi-TX-78418/2103723704_zpid/"
|
||||
```
|
||||
|
||||
What it does:
|
||||
- opens the listing page with CloakBrowser
|
||||
- tries the `See all photos` / `See all X photos` entry point
|
||||
- if Zillow keeps the click path flaky, falls back to the listing's embedded `__NEXT_DATA__` payload
|
||||
- returns direct `photos.zillowstatic.com` image URLs as JSON
|
||||
|
||||
Expected success shape:
|
||||
- `complete: true`
|
||||
- `expectedPhotoCount` matches `photoCount`
|
||||
- `imageUrls` contains the listing photo set
|
||||
|
||||
### HAR
|
||||
|
||||
```bash
|
||||
cd ~/.openclaw/workspace/skills/web-automation/scripts
|
||||
node har-photos.js "https://www.har.com/homedetail/4141-whiteley-dr-corpus-christi-tx-78418/14069438"
|
||||
```
|
||||
|
||||
What it does:
|
||||
- opens the HAR listing page
|
||||
- clicks `Show all photos` / `View all photos`
|
||||
- extracts the direct `pics.harstatic.com` image URLs from the all-photos page
|
||||
|
||||
Expected success shape:
|
||||
- `complete: true`
|
||||
- `expectedPhotoCount` matches `photoCount`
|
||||
- `imageUrls` contains the listing photo set
|
||||
|
||||
### Test commands
|
||||
|
||||
From `skills/web-automation/scripts`:
|
||||
|
||||
```bash
|
||||
node check-install.js
|
||||
npm run test:photos
|
||||
node zillow-photos.js "<zillow-listing-url>"
|
||||
node har-photos.js "<har-listing-url>"
|
||||
```
|
||||
|
||||
Use the live Zillow and HAR URLs above for a known-good regression check.
|
||||
|
||||
## One-shot extraction (`extract.js`)
|
||||
|
||||
Use `extract.js` when the task is just: open one URL, render it, and return structured content.
|
||||
|
||||
Reference in New Issue
Block a user