Seven verbs.
Draft and outfit are read-only, gui gives you a local review-and-publish dashboard, and post places the eBay listing once you've reviewed the draft. This static GitHub Pages site is documentation only; it never handles credentials or connects to your local GUI.
| Verb | What it does | Principal flags |
|---|---|---|
| draft | Photographs to attributes, comparables, price, and listings. Writes draft.json and a paste sheet. Read-only. | --photos --notes --platforms --clean --out |
| outfit | Detects every sellable piece in one photograph, crops each, and drafts them separately: one paste sheet per piece plus a detection overlay. Read-only. | --photos --notes --out |
| gui | Starts the loopback dashboard so you can review, edit, recover, and publish a stored draft from one screen. It prints a tokenless local URL; API/photo requests are token-protected. Uncheck eBay for Poshmark/Depop copy-paste mode. | --port GUI_HOST + GUI_ALLOW_REMOTE=1 (opt-in) |
| index | Embeds your reference photos (refs/) into brand-index.json for the visual brand match. | --dir --out |
| post | Places the eBay listing from a draft. | --draft --images --location --fulfillment --payment --return |
| auth-url | Prints the eBay consent URL for one-time authorisation. | None |
| auth-exchange | Exchanges the returned code for a refresh token. | <code> |
What every command looks like when it runs
The same yellow dress and courtyard photograph as elsewhere on the site; illustrative outputs, faithful to what the tool prints.
Detecting pieces in courtyard.jpg ... Detected 3 piece(s): 1. scarf-print maxi dress, 280-650 USD · Etro (verify) 2. leather sandals, 60-140 USD 3. sunglasses, 40-90 USD Wrote outfit.svg and 3 sheet(s) (outfit-1.md ...). Review before sharing.
GUI listening on http://127.0.0.1:3000 Open this local URL, upload photos, review the draft, then publish or copy listings. Drafts and results survive refresh/restart; successful targets are skipped on retry.
The GUI accepts up to 12 raster photos (10 MiB each, 30 MiB total) in a 40 MiB request, keeps them in a private TTL directory, and requires public HTTPS image URLs for eBay. If eBay is not selected, no eBay active/sold comps or eBay credentials are needed; each card has a Copy listing button. Its collapsed Settings panel keeps credentials in process memory only. npm run desktop opens the same dashboard in a window; npm run desktop:dist builds a macOS DMG or a Windows installer on that OS. Poshmark/Depop browser flows stay off until ENABLE_BROWSER_AUTOMATION=1 plus a configured JSON flow; install Chromium with npx playwright install chromium. This local HTTP URL is not a public deployment: remote use needs a public HTTPS server and authentication.
Embedding reference photos in refs/ (first run downloads the model)... Indexed 3 photos across 3 labels -> brand-index.json. Set ENABLE_BRAND_MATCH=1 to use it.
Publishing "Valentino Embroidered Linen Midi Dress Yellow Daisy Applique" at 1650 ... Live. offerId=8724531012 listingId=1160245822
Open this URL, sign in, approve, then copy the ?code= value from the redirect: https://auth.sandbox.ebay.com/oauth2/authorize?client_id=Isabel...&redirect_uri=Isabel_Wu-...&response_type=code&scope=...
Add this to your .env:
EBAY_USER_REFRESH_TOKEN=v^1.1#i^1#p^3#r^1... (kept private, never committed)