home / skills / openclaw / skills / willhaben

This skill creates and manages Willhaben.at listings by generating titles, descriptions, prices, and handling photo uploads through browser automation.

npx playbooks add skill openclaw/skills --skill willhaben

Review the files below or copy the command above to add this skill to your agents.

Files (5)
SKILL.md
7.1 KB
---
name: willhaben
description: Create and manage listings on Willhaben.at (Austrian marketplace). Use when the user wants to sell something, create a listing, or mentions Willhaben. Handles photo uploads, generates titles/descriptions/prices, and posts via browser automation.
---

# Willhaben Listing Creator

Create listings on Willhaben.at via browser automation.

## First-Time Setup

Check if `config/user-preferences.json` exists in the skill folder.
- If missing → run setup flow (see `references/SETUP.md`)
- If exists → read preferences and apply to all listings

User preferences include: location, shipping, description style, pricing strategy, disclaimers.

## Workflow

### 1. Receive Item Details
- User sends photos (via WhatsApp/chat)
- Optional: user provides details (condition, category, price range)

### 2. Market Research
Before suggesting a price, search Willhaben for similar/identical items:
- Search willhaben.at for the item
- Note price range of comparable listings
- Check sold prices if available
- Report findings to user:
  - **Neupreis** (new price)
  - **Marktpreis** (what similar items are listed for)
  - **Empfohlener Preis** (recommended selling price)

### 3. Generate Listing
- Analyze photos to understand the item
- Generate:
  - **Title**: Concise, searchable (German)
  - **Description**: SHORT and casual - real people don't write essays. 2-3 sentences max. Mention key facts only.
  - **Price**: Based on market research, suggest realistic price
  - **Package size**: Estimate weight category for shipping (3kg / 10kg / 31.5kg)
- Ask user:
  - Location (Bezirk) - if not in preferences
  - Any damage/issues to mention
  - If they want a more detailed description (default: no)
- Present draft for confirmation **including package size estimate**

### Listing Summary Template
Show the user something like:
```
📝 Listing Draft

Title: [title]
Description: [description]
Price: €XX VB
Location: [location]
Pickup: ✅ / Shipping: ✅

📦 Package: ~Xkg (selecting [size] package)
   → If wrong, let me know!

Photos: X attached

Ready to post?
```

If package weight is unclear (e.g., unusual item), **ask the user** rather than guessing wrong.

### 4. Post to Willhaben
See detailed browser automation steps below.

## Description Style

**Default: Casual & short**
```
Blue Yeti USB Mikrofon, schwarz. Funktioniert einwandfrei, inkl. Kabel und Standfuß. Privatverkauf, keine Garantie/Rücknahme.
```

**NOT like this (too AI/formal):**
```
Zum Verkauf steht ein hochwertiges Blue Yeti USB Kondensatormikrofon in der eleganten Blackout Edition. Dieses professionelle Mikrofon eignet sich perfekt für Podcasting, Streaming, Gaming oder Home-Office...
```

Only add detail if user explicitly asks for it.

## Language

All listings in **German** (Austrian market). Keep it natural, like a real person wrote it.

---

# Browser Automation Guide

Use `clawd` browser profile with saved Willhaben login.

## Step 1: Start Listing

1. Navigate to: `https://www.willhaben.at/iad/anzeigenaufgabe`
2. Click **"Kostenlose Anzeige aufgeben"** (link to Marktplatz free listing)

## Step 2: Fill Details Page

The form has these fields:

### Images
- **Upload method**: Use browser `upload` action with `inputRef` pointing to the "Bild auswählen" button
- Example: `browser upload inputRef=e12 paths=[...]` where e12 is the button ref
- Can upload multiple images at once via paths array
- After upload, verify images appear as thumbnails before proceeding

### Price (Verkaufspreis)
- Textbox, just enter the number (no € symbol needed)

### Title (Titel)
- Textbox with placeholder "z.B. Levi's 501 Jeans, schwarz, Größe 32"
- Keep concise and searchable

### Category (Kategorie)
- **Auto-suggests based on title** - a radio option appears
- **IMPORTANT**: Must click the category option to select it (even if it looks selected)
- If wrong category suggested, click "Andere Kategorie wählen"

### Condition (Zustand)
- Appears AFTER category is selected
- Options: Neu / Neuwertig / Gebraucht / Defekt
- Usually select "Gebraucht" for used items

### Description (Beschreibung)
- Rich text editor (contenteditable paragraph)
- Click on the paragraph area first, then type
- Keep it short!

### Contact & Location
- Pre-filled from account settings
- Shows name, email, address

## Step 3: Click "Weiter"

Proceeds to shipping options.

## Step 4: Shipping Page (Übergabe & Versand)

### Delivery Options
- **Selbstabholung**: Pickup (usually keep checked)
- **Versand**: Shipping (check if offering shipping)

### PayLivery (willhaben's shipping service)
If Versand is checked:

**Package Size (Versandgröße)** - Choose based on actual item weight!
- **Paket bis 3 kg** - Small items
- **Paket bis 10 kg** - Medium items (electronics, small appliances)
- **Paket bis 31,5 kg** - Heavy items (appliances with compressors, etc.)

Example weights:
- Ice cream maker with compressor: ~9kg → select 10kg
- Keyboard/mouse: ~1kg → select 3kg
- Monitor: ~5kg → select 10kg
- Books/games: ~0.5kg → select 3kg
- Laptop: ~2-3kg → select 3kg
- Kitchen appliance (mixer, blender): ~3-5kg → select 10kg

**⚠️ If weight is unclear**: This should have been confirmed with user in the listing summary step. If you reach this point unsure, go back and ask!

**Carrier**: Post or DPD (Post is default, fine for most)

**Sperrgut**: Check if item is oversized (>100×60×60cm) or non-rectangular

Buyer pays shipping (shown at bottom).

## Step 5: Click "Weiter"

Proceeds to upsells page.

## Step 6: Upsells Page (Zusatzprodukte)

Shows paid promotion options:
- Anzeige vorreihen (€14.99)
- Farblich hervorheben (€7.99)
- TOP Anzeige options (€21.99 - €89.99)

**Skip all** - just click **"Veröffentlichen"** to publish for free.

Shows "Gewählt: € 0" at bottom confirming no paid options.

## Step 7: Success!

Confirmation page shows:
- ✅ "Anzeige erfolgreich aufgegeben"
- Listing preview with image
- **willhaben-Code**: The listing ID (e.g., 1832624977)
- Note: "Die Veröffentlichung kann bis zu 24h dauern" (review period)

**Listing URL**: `https://www.willhaben.at/iad/object?adId={willhaben-code}`

---

# Troubleshooting

### Category not selecting
Even if the category appears, you must click on the radio/option area to actually select it. The validation error "Kategorie muss gewählt werden" means it wasn't clicked.

### Images not uploading
Use `inputRef` with the "Bild auswählen" button reference (e.g., `inputRef=e12`). Do NOT use `selector: input[type="file"]` - it doesn't work reliably on this site.

### Element refs going stale
Always take a fresh snapshot before interacting. Refs change after page updates.

### Login required
If not logged in, the profile should have saved credentials. If needed, navigate to login page or ask user to log in manually in the browser.

---

# Quick Reference

| Step | URL/Action |
|------|------------|
| Start | `https://www.willhaben.at/iad/anzeigenaufgabe` |
| Free listing | Click "Kostenlose Anzeige aufgeben" |
| Upload images | `upload` with `inputRef` pointing to "Bild auswählen" button |
| Next | "Weiter" button |
| Publish | "Veröffentlichen" button |
| View listing | `https://www.willhaben.at/iad/object?adId={ID}` |

Overview

This skill automates creating and managing listings on Willhaben.at using browser automation. It handles photo uploads, market research, title/description/price generation, package-size estimates, and posting via a saved browser profile. The workflow is optimized for quick, natural-sounding listings and respects user preferences for location, shipping, and pricing strategy.

How this skill works

The skill inspects supplied photos and any user details, searches Willhaben for comparable listings to derive market and recommended prices, and drafts a concise German title and description. It walks the user through confirmation steps (location, damage, package weight) and then fills the Willhaben web form using a clawd browser profile, uploading images via the site’s upload inputRef and completing shipping and publish steps. It skips paid upsells and returns the willhaben listing ID and URL after publishing.

When to use it

  • You want to sell an item on Willhaben.at and need a ready-to-post listing.
  • You have photos and want a quick market-based price suggestion.
  • You want automated, repeatable posting using a saved Willhaben account.
  • You need package-size recommendations for PayLivery shipping options.
  • You want concise, natural German descriptions without writing them yourself.

Best practices

  • Provide clear photos and basic item details (condition, model, visible damage) for accurate analysis.
  • Confirm or supply your preferred district (Bezirk) if not set in preferences.
  • Respond to package weight prompts—don’t let the skill guess for unusual items.
  • Keep description preference at default (short/casual) unless you ask for a longer text.
  • Review the draft summary before publishing to catch category or weight mistakes.

Example use cases

  • User sends 4 phone photos and asks for a listing: skill suggests price based on similar phones and drafts a short German listing.
  • Seller has an old espresso machine: skill estimates ~10kg package size, recommends price from market research, uploads images and posts.
  • Power user batches multiple items using saved preferences (location, shipping settings) to speed up listings.
  • User unsure about weight: skill asks clarifying questions before selecting PayLivery package size to avoid errors.

FAQ

What language are the listings in?

Listings are generated in natural, casual German suitable for the Austrian market.

Can the skill post without my intervention?

The skill prepares a draft and asks for confirmation on location, damage, and weight before posting; it uses a saved clawd browser profile for publishing.

How are shipping package sizes chosen?

Package size is estimated from the item type and photos, with common examples; if uncertain the skill will ask you to confirm the correct size.