| name | post-to-yad2 |
| description | Post a product listing to Yad2 using the browser. Reads listing data from the product's LISTING.md, navigates to Yad2, and fills in the listing form. |
| user_invocable | true |
| argument | (optional) product name (subfolder name under marketplace/) |
Post to Yad2
{% if argument %}
You are posting the listing for {{ argument }} to Yad2 using the browser MCP tools.
Use {{ argument }} as the PRODUCT_NAME throughout the steps below.
{% else %}
Step 0 โ Select a Product
No product was specified. You need to find a product that hasn't been posted to Yad2 yet.
- Use
Glob to find all LISTING.md files under the project directory.
- For each
LISTING.md, read it and check if it contains a ืคืืกื ืื2 row in the ืคืจืื ืืืฆืจ table.
- Collect all products that do NOT have a ืคืืกื ืื2 entry (i.e., no Yad2 post URL yet).
- If all products already have a Yad2 post, tell the user "All listings already have a Yad2 post URL" and stop.
- If there are multiple products without a Yad2 post, pick the first one alphabetically and tell the user which product you selected.
- Use the selected product's subfolder name as the PRODUCT_NAME throughout the steps below.
{% endif %}
In all steps below, replace PRODUCT_NAME with the resolved product name (either from the argument or from Step 0).
Task Tracking
At the start of this skill, create a task list using TaskCreate to track progress. Create one task per step:
- "Read listing data from LISTING.md"
- "Navigate to Yad2 publish page"
- "Fill in listing form"
- "Review before publishing"
- "Publish listing"
- "Update index.html dashboard"
As you begin each step, update its task to in_progress. When a step completes, update it to completed. If a step is blocked or fails, update it to blocked or note the issue.
Step 1 โ Read Listing Data
- Read
PRODUCT_NAME/LISTING.md
- Extract all listing fields:
- Title: from ืืืชืจืช ืืคืืกื section
- Description: from ืชืืืืจ ืืคืืกื section
- Price: ืืืืจ ืืืืงืฉ from ืืืืจื ืฉืืง table
- Category: ืงืืืืจืื from ืคืจืื ืืืฆืจ table
- Photos: all image files (*.jpeg, *.jpg, *.png, *.webp) in the
PRODUCT_NAME/ directory
- If the title, description, or price is empty, STOP and tell the user to run
/research-product PRODUCT_NAME first.
- Check if there is an
archive/ subdirectory in the product folder. If there is NO archive/ directory, the photos haven't been processed yet โ automatically run the /process-photos PRODUCT_NAME skill to process them before continuing. After processing completes, re-scan the directory for the updated photo list.
Step 2 โ Navigate to Yad2
- First, create a new browser tab using
browser_tab_create to avoid conflicting with other browser sessions.
- Use
browser_navigate to go to: https://www.yad2.co.il/publish-ad-products/create
- Take a snapshot to see the current page state
- If not logged in, take a screenshot and ask the user to log in manually, then wait and retry
Step 3 โ Fill in the Listing Form
Yad2's product listing form has fields that need to be filled. Fill them in order, taking a snapshot after each major action to verify state.
Photos
- Look for the photo upload area
- Photo upload requires file paths โ tell the user the absolute paths of the processed photos (from Step 1) they need to upload manually:
- List each processed photo with its full path
- Wait for the user to confirm photos are uploaded before continuing
Title / ืืืชืจืช
- Find the title/ืืืชืจืช input field
- Type the value from ืืืชืจืช ืืคืืกื
Category / ืงืืืืจืื
- Find the category field
- Click it and search for or select the appropriate category based on ืงืืืืจืื
- Use snapshot to find matching options and click the best match
Description / ืชืืืืจ
- Find the description/ืชืืืืจ text area
- Type the full description from ืชืืืืจ ืืคืืกื
- Note: newlines should be typed as-is
Price / ืืืืจ
- Find the price/ืืืืจ input field
- Type the ืืืืจ ืืืืงืฉ value โ numbers only, no currency symbol
Condition / ืืฆื ืืืืฆืจ
- If a condition field is present, select "ืืฉืืืฉ" or "ืื ืฉื ืืื" (used)
Location / ืืืงืื
- If a location field is present and empty, type "ืชื ืืืื" or "Tel Aviv"
- Select the first suggestion from the dropdown
Contact / ืคืจืื ืืชืงืฉืจืืช
- If contact details are required, take a snapshot and ask the user to fill them in manually
- Wait for user confirmation before continuing
Step 4 โ Review Before Publishing
- Take a screenshot of the completed form
- Show the screenshot to the user
- Present a summary of what was filled in:
- Title
- Price
- Category
- Description (first 2 lines)
- Number of photos
- Ask the user for explicit confirmation before clicking "Publish" / "ืคืจืกื"
- Do NOT click publish without user approval
Step 5 โ Publish (only after user confirms)
- Once the user approves, click through all remaining steps ("ืืื" / "ืคืจืกื" / "ืืืฉืืจ") without asking for additional confirmations. Just click Next, then Publish, navigating through any review/confirmation pages automatically.
- Take a snapshot/screenshot to verify the listing was posted successfully.
- Once published, copy the URL of the new listing from the browser.
- Add a ืคืืกื ืื2 row to the ืคืจืื ืืืฆืจ table in
PRODUCT_NAME/LISTING.md with the listing URL.
Step 6 โ Update index.html
- Open
index.html in the project root.
- In the dashboard summary table, find the row for PRODUCT_NAME and:
- If there is a Facebook post link, add the Yad2 listing URL next to it.
- If the status is
ืืืชืื, change it to ืคืืจืกื (with class status-listed).
- Add the Yad2 listing URL in the ืืื ืง ืืคืืกื column.
- In the product card for PRODUCT_NAME, add a Yad2 post link button (class
yad2-post-link) with the listing URL, if one doesn't already exist. Place it after the badge (and after the Facebook link if present), before the price tag, matching the format of other link buttons.
Important Notes
- Always snapshot before interacting โ Yad2's UI changes frequently; never assume element refs from a previous snapshot are still valid.
- Never guess refs โ always take a fresh snapshot to get current element references.
- If something fails, take a screenshot, show it to the user, and ask how to proceed.
- RTL text: Hebrew text may render RTL. When typing Hebrew, type it as-is โ the browser handles directionality.
- Photos cannot be uploaded programmatically via browser_click on file inputs in most cases. Provide the user with the file paths and ask them to drag-and-drop or use the file picker manually.
- Yad2 may show popups or modals (login, cookie consent, etc.) โ dismiss them before proceeding with the form.