Ebay post listing
Skill glebmish/lifeops-skills/plugins/ebay-listing/skills/ebay-post-listing
Post a prepared eBay listing using the browser — fills the eBay form from listing.json, stops before final publish. Use when the user says "post this listing", "publish to eBay", "put it on eBay", or wants to push a prepared listing live.From its SKILL.md
npx -y skills add glebmish/lifeops-skills --skill ebay-post-listingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.3 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it
Post eBay Listing
Open eBay in the browser, fill the listing form from listing.json, stop at preview.
Input
User specifies which listing to post (directory name under listings/, may be passed as $ARGUMENTS). If not specified, list available directories and ask.
A listing is ready to post if it has listing.json but no published.json.
A listing has pending updates if listing.json differs from published.json.
Prerequisites
Chrome extension conflicts: The Claude in Chrome extension uses Chrome's debugger API for screenshots and clicks. Other extensions (especially Grammarly, LastPass, MetaMask, AdBlock, NordVPN, React DevTools) can block this and cause "Cannot access a chrome-extension:// URL" errors. If you hit these errors, tell the user to disable conflicting extensions or open a clean Chrome window with google-chrome --disable-extensions.
New Listing Flow
-
Read
listing.jsonfrom the specified listing directory. Alsolsthephotos/directory. -
Open the eBay prelist page in a new tab. Default to
https://www.ebay.co.uk/sl/prelist; use the seller's local eBay domain instead (.com,.de,.com.au, etc.) if they specified one, or if you can tell fromlisting.json's currency / language that another locale is intended. The prelist page has a search box — type the item title (or keywords) and click Search. -
eBay prelist flow (3 steps before reaching the full form):
- Search results page: eBay suggests a category. Click "Continue without match" at the bottom (unless a catalogue match is exact).
- Condition dialog: A modal appears asking for condition. Select the closest match (New / New other / Used / For parts). There is no "Like New" option — select "Used" and add condition notes later in the form.
- Full form loads: Title is pre-filled from the search. eBay auto-fills some item specifics (Brand, Colour, Clamp Diameter, etc.) based on the search terms.
-
Fill the full form in this order:
a) Title — Update if needed to match
listing.jsonexactly (useform_inputon the title textbox).b) Condition notes — If
condition.notesexists inlisting.json, find the condition description/notes text field in the Required section (near the Condition dropdown). Click the Condition dropdown, and look for a text area to enter condition notes. Type the notes fromlisting.json.c) Item specifics — The form has Required, Recommended, and Additional sections.
- Recommended section has dropdowns and "Frequently selected" quick-pick links (e.g., "Drop Bar", "42 cm"). Click these when they match.
- Click "More recommended" to expand hidden fields (Handlebar Type, Colour, Clamp Diameter, Number of Items, Item Length, Item Width, Model, etc.).
- For dropdown fields, click to open, then search or select. Use "Add custom value" for values not in the list.
- The Model field and MPN are free-text inputs.
- Map
listing.jsonspecs to eBay fields: e.g., "6061-T6 Alloy" → "Aluminium", "Road Drop Bar" → "Drop Bar", Width → Item Length. - For multi-value fields (e.g., Compatible Bike Type), check if multiple values apply and select all relevant ones.
- Skip fields that don't map cleanly rather than guessing.
d) Photos — Click "Upload from computer". This opens a native OS file dialog that cannot be automated. Tell the user to navigate to the
photos/directory and select the files. Provide the full path. Wait for user confirmation.e) Description — Click in the rich text editor area and type the description from
listing.json.f) Pricing — The form defaults to eBay's recommended price. Click "Change" next to Pricing to expand the full pricing editor.
- Triple-click the price field to select all, then type the new price.
- Tab out to trigger recalculation.
- For
fixed_with_offersstrategy: ensure Buy It Now is on and "Allow offers" is enabled. Click "More options" under pricing to find the Allow Offers toggle. - For
auctionstrategy: toggle Auction on and set the starting bid.
g) Returns — Always set to "No returns accepted". Scroll to the Delivery section and find the returns/listing preferences area. If returns are set to anything else, change them.
h) Shipping, location — Use eBay's defaults (Simple Delivery, buyer pays). Dismiss any info popups ("Got it").
-
Click "Preview" at the bottom of the form. NEVER click "List it for free" / "List item" / "Publish".
-
Report back to the user what was filled and what was skipped.
-
Wait for user confirmation. The user reviews in Chrome and publishes manually. When they confirm, ask them to paste the eBay listing URL.
-
Scrape the live listing and create
published.json:a) Navigate to the eBay listing URL the user provided.
b) Scrape the listing page to capture what actually went live:
- Condition as shown on eBay
- Price and offer status
- Item specifics table (all key-value pairs as displayed)
- Postage: service name, cost, who pays
- Collection: enabled/disabled, cost
- Returns policy
- Location
- Delivery estimate
c) Build
published.json— start with a copy oflisting.json, then add:{ "ebay_url": "https://www.ebay.co.uk/itm/...", "ebay_item_id": "394754829351", "ebay_details": { "condition_ebay": "Used", "returns": "No returns accepted", "postage": "Standard Tracked Delivery, buyer pays £2.94", "collection": "Click & Collect, £2.26", "location": "London, United Kingdom", "duration": "Good 'Til Cancelled", "listed_date": "2026-03-22", "item_specifics_submitted": { "Brand": "Bontrager", "Material": "Aluminium", "...": "..." } } }d) Also update
listing.jsonwithebay_urlandebay_item_id(but NOTebay_details— that's only inpublished.json).
Update Flow
When published.json exists and differs from listing.json:
-
Read both files and identify what changed.
-
Open the existing listing using
ebay_urlfrompublished.json. Click "Revise listing" or similar edit action. -
Update only the changed fields. If photos changed, handle the photo manager.
-
STOP at preview. Do NOT click publish.
-
Report changes made. On user confirmation, re-scrape the live listing and update
published.json(same scrape process as step 8 above).
Error Handling
- Not logged into eBay: Tell the user to log in, wait for them to confirm, then retry.
- Can't fill a field: Skip it, report what was missed so the user can complete manually.
- CAPTCHA or unexpected form state: Report clearly and let the user handle it.
Rules
- Don't click the final publish/list button. Publishing is irreversible — that's always a manual user action.
- Fill exactly what's in
listing.json. Don't improvise or add fields not in the data. The seller reviewed and approved this content.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.