Скилл получает данные карточек товаров Wildberries (одной или батчем до 50 артикулов) через
браузер пользователя.
-
Вызовите MCP tool browser_job:
{ "job_type": "product_card", "articles": [791050753, 913357757] }
До 50 артикулов, дубликаты схлопываются. Ответ: trigger_url, job_ids (один родительский
jobId), expires_at (~5 минут — открывайте сразу, не откладывайте).
-
Выполните общий workflow из ../../shared/browser-job/README.md: submit → опрос
progress → чтение. Читайте результат сводкой (agent_summary.js либо mailbox-команда
summary): на каждый артикул придёт готовый объект ProductSummary — без разбора WB-JSON.
-
Поля сводки: nmId, name, brand, supplier/supplierId, subject/rootSubject,
vendorCode, rating, feedbacks, pics, priceRub (basic/product/logistics/
return/cashback), quantity (total, byWarehouse — уже с именами складов, bySize),
colors (склейка), options (характеристики), description. Поля best-effort — чего-то
может не быть.
-
Сырые тела нужны только для полей, которых нет в сводке, — agent_read.js (readAll для
1-2 артикулов, конкретные unit ids порциями для батчей) по той же джобе, без нового
browser_job. Юниты: <jobId>__nm<nm>__detail (ответ cards/v4/detail: цена, рейтинг,
остатки sizes[].stocks[]), <jobId>__nm<nm>__card (контент card.json: склейка
colors, описание, характеристики), <jobId>__local (данные расширения: storesData,
productCardDetail; появляется последним).
-
Джоба — снимок: чтобы добрать поля по уже полученным артикулам, перечитывайте тот же
jobId (сводкой или read). Новый browser_job — только за актуальными ценой/остатками,
для новых артикулов или после истечения хранения (~1 сутки).
-
Не оставляйте сырые имена полей WB в ответе — переводите их на русский; булевы
значения показывайте как «да/нет». Минимальный глоссарий:
| Поле WB | В ответе |
|---|
imt_id | Склейка (ID склейки) |
subjectId | ID предмета |
vendorCode / Vendor code | Артикул поставщика |
need_kiz | Обязательная маркировка (да/нет) |
time1, time2 (в stocks) | Время доставки — одно число time1 + time2, не сырые поля |
-
Отвечайте из полей сводки без дополнительных вычислений: цена — priceRub.product
(базовая — priceRub.basic), рейтинг — rating/feedbacks, таблица «по складам» —
quantity.byWarehouse (имя склада уже в поле warehouse; если его нет — покажите
wh <id>), таблица «по размерам» — quantity.bySize, всего — quantity.total,
склейка — colors, характеристики — options, описание — description.
-
Глоссарий выше нужен при работе с сырыми телами (agent_read.js); время доставки
(time1 + time2) есть только в сырых stocks юнита __detail.
-
Юнит со status: 'done', но data.ok === false / data.status === 0 — сетевая ошибка WB:
сообщите об этом по конкретному артикулу и предложите повторить.
-
Указывайте, что остатки — моментальный снимок на момент запроса.