en un clic
aliexpress-store-ops
速卖通店铺运营自动化 — 每日巡检/每周策略/商品上架/数据分析全流程。填入你的店铺名即可使用。
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Menu
速卖通店铺运营自动化 — 每日巡检/每周策略/商品上架/数据分析全流程。填入你的店铺名即可使用。
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Basé sur la classification professionnelle SOC
店小秘速卖通编辑页——属性信息模块:产品属性批量填(ant-select CDP填充)+ 自定义属性删除
店小秘速卖通编辑页——基本信息模块:标题改英文 + 产品分类选择
速卖通上架——1688采集模块:从1688搜索产品 → 采集到店小秘采集箱 → 提取产品参数(价格/库存/重量/材质等)
店小秘速卖通编辑页——店小秘信息模块:来源URL(只读,记录用)
店小秘速卖通上品完整工作流——从采集箱到发布的所有模块编排、调用顺序、区域调价、保存发布
店小秘速卖通编辑页——其他信息模块:半托管/关税/责任人/制造商/资质 + 区域调价 + 保存并移入待发布
| name | aliexpress-store-ops |
| description | 速卖通店铺运营自动化 — 每日巡检/每周策略/商品上架/数据分析全流程。填入你的店铺名即可使用。 |
| domain | ecommerce |
| version | 1.0.0 |
| modelVersion | 1.0.0 |
| lastUpdated | 2026-07-19 |
| compatibility | Hermes Agent ≥ v1.0 | Claude Code ≥ v2.0 | Codex ≥ v1.0 |
| authors | ["Rigi AI Commons (小红书 @瑞吉AI人民公社)"] |
| license | MIT |
| lifecycle | active |
| triggers | ["用户说\"帮我看看店铺\"、\"分析数据\"、\"上品\"、\"发新品\"、\"做策略\"","用户需要定时查看店铺运营状态","用户需要数据驱动的产品营销策略","用户说\"帮我在店小秘上架\"、\"采集1688\"、\"参考产品上架\"","用户打开1688页面和店小秘编辑页,需要帮忙填写产品信息","用户说\"先学习这个再填那个\"、\"照这个产品填\"(参考产品法)","用户打开多个浏览器标签页需要Agent在标签页间操作学习"] |
这是最高优先级规则,违反会导致数据全丢,必须重新操作。
进入编辑页(smt/edit?id=...)后,在全部操作完成(保存并移入待发布)之前:
browser_navigate 刷新页面page.goto() 重载编辑页唯一允许刷新的场景: 页面死机/卡住/完全无法操作。
正确的数据查看方式: 用 page.evaluate() 在页面内读取 DOM 值,不要刷新页面。
正确的数据保存方式: 全部填完后一次性点「保存并移入待发布」。不要依赖「保存」按钮存草稿。
如果必须查其他页面的数据(如 1688 参数):
ctx.new_page() 或浏览器新标签)Windows Chrome (--remote-debugging-port=9222)
↕ Relay2.exe (0.0.0.0:9255 → 127.0.0.1:9222)
↕ 开机 VBS 自启 (Startup/hermes-chrome-relay.vbs)
Windows IP (172.24.48.x:9255)
↕ WSL chrome_relay.py (localhost:19223 → GW:9255)
详见 references/cdp-recovery.md
致命错误: gateway重启/断连后,直接调用 browser_navigate 会创建新标签页,而不是连回已有的填好数据的标签页。这会导致之前所有未保存的填写工作"消失"(实际在另一个标签页中)。
正确恢复步骤:
1. browser_cdp → Target.getTargets # 列出所有标签页
2. 从返回的 targetInfos 中找到店小秘编辑页(title="店小秘--编辑速卖通产品")
3. 对每个编辑页 target: Runtime.evaluate 读取页面状态(标题、hash、bodyText片段)
4. 确认哪个标签页有已填数据(英文标题、已选属性值等)
5. 关闭空白/重复标签页: Target.closeTarget
6. 激活正确的标签页: Target.activateTarget
7. 此时 browser_snapshot 应该显示已填数据
禁止操作:
dxm-basic-info | ✅ | 07-19 |\n| 2. 店小秘信息 | 只读,跳过 | — | — |\n| 3. 属性信息 | dxm-attributes | ✅ | 07-19 |\n| 4. 产品图片 | dxm-product-images | ✅ | 07-19 |\n| 5. SKU定价 | dxm-sku-pricing | ✅ | 07-19 |\n| 6. PC端描述 | dxm-pc-description | ✅ | 07-19 |\n| 7. 包装 | dxm-packaging | ✅ | 07-19 |\n| 8. 模板 | dxm-templates | ✅ | 07-19 |\n| 9. 其他信息 | dxm-other-info | ✅ | 07-19 |\n| 总调度 | dxm-listing-workflow | ✅ 完整 | 07-19 |\n\n> 2026-07-19 全流程验证: 产品"折叠喝水神器"从 Step 0 到 Step 9 全部走通。所有星号必填项已填。剩余已知问题:3个非星号下拉(电源/电压/动力)对所有automation免疫 → 跳过不纠缠(已记录 pitfall #14)。"\n\n## 上架流水线 — 分步操作流程Step 0 → 进入采集箱
Step 1 → 点「编辑」进编辑页
Step 2 → 标题改为英文
Step 3 → 选分类(弹窗树)
Step 4 → 开1688查参数(新标签页)
Step 5 → 填产品属性(红色星号必填)
Step 6 → 删除自定义属性
Step 7 → 产品图片选图
Step 7.5 → 批量改尺寸800×800
Step 7.6 → 图片翻译中文→英文
Step 7.7 → 营销图片一键生成
Step 7.8 → 颜色SKU:改英文名+图改尺寸+图翻译
Step 8 → SKU定价栏
Step 8.5 → PC端描述(引用模板 + 批量改图片尺寸)
Step 9 → 保存并移入待发布
详细操作指南(含代码片段、坐标、验证方法、已知坑点)全部放入以下参考文件:
| 文件 | 内容 | 来源步骤 |
|---|---|---|
references/cdp-recovery.md | CDP 中继重启/故障恢复 | 架构 |
references/sku-table-fields.md | SKU表HTML结构、select索引、颜色配置、字段映射 | Step 8 |
references/sku-variant-config.md | VXE Table 结构、批量行vs单行、颜色配置 | Step 8 |
references/step-by-step-mode.md | 步进模式、三击全选、交互规则 | 通用 |
references/batch-listing-workflow.md | 30品/天上架流水线作业手册 | 通用 |
references/publishing-checklist.md | 发布前检查清单 | Step 9 |
references/pc-description-template.md | PC端描述所有操作:引用模板 + 批量改图片尺寸 + 图片翻译 | Step 8.5 |
scripts/detect-chinese-text.py | OCR检测图片中是否含中文文案,配合图片翻译使用 | Step 8.5 |
references/attribute-fill-cdp.md | 属性批量填写:CDP坐标两步法 + 狗携带用品属性值速查 | Step 5 |
references/playwright-coordinate-click.md | Playwright mouse.click(x,y) 坐标法填 ant-select(比CDP更可靠触发Vue3) | Step 5 |
references/1688-json-extraction.md | 1688嵌入JSON正则提取法 | Step 4 |
references/cdp-direct-operation.md | browser_cdp 直连模式:弹窗拦截绕过 + 鼠标事件 + 截图 | 通用 |
references/sku-code-patterns.md | SKU配置代码模式速查 | Step 8 |
https://www.dianxiaomi.com/web/smt/edit?id={product_id}nativeInputValueSetter 操作ctx.new_page() 在新标签页打开 1688 URLreferences/1688-json-extraction.md⚠️ 2026-07-19 方法更新:JS强制显示dropdown+点击(替代CDP坐标法)
详见 dxm-attributes skill(以该skill为准,它是属性的权威模块)。
核心方法:
// 找含目标选项的dropdown → 强制显示 → 点击
dd.classList.remove('ant-select-dropdown-hidden');
dd.style.display = ''; dd.style.opacity = '1'; dd.style.pointerEvents = 'auto';
item.click(); item.dispatchEvent(new MouseEvent('mousedown', {bubbles: true}));
检测带星号字段: 使用 span.attr-label.required(不是 .ant-form-item-required)。
🚨 auto-complete 型字段填充方法(2026-07-19 攻克): ant-select-auto-complete 型字段(如最大出餐量、材质)可用 Playwright keyboard.type() + 点空白处blur(不提Enter) 填充。详见 dxm-attributes skill pitfall #9。值存储在 input.value 而非 .ant-select-selection-item,验证时需分别检查。
验证规则: 只有所有带星号字段都填完才算通过。7/9 ≠ 完成,8/9 ≠ 完成。必须9/9。验证时注意 ant-select-auto-complete 型字段值在 input.value 中(不在 .ant-select-selection-item),需分别检查。
详见 references/sku-table-fields.md 图片处理章节
术语定义: SKU定价栏 = 零售价 + 货值 + 库存 + 长/宽/高 + 包装尺寸 + 是否原箱 + 物流属性 + 商品编码
字段规则:
| 字段 | 规则 |
|---|---|
| 零售价(CNY) | = 货值。不等于1688成本价! 按定价公式计算 |
| 货值(CNY) | = 零售价(两列填同一个数) |
| 库存 | 1688库存>2000封顶写2000,≤2000如实写 |
| 重量(kg) | 从1688提取 |
| 包装尺寸(cm) | 有数据则填,无跳过 |
| 是否原箱 | 原生select,设为「是」(value=1) |
| 物流属性 | 无电→普货;有电→内电 |
| 商品编码 | 一键生成,1688有货号填前缀 |
定价公式:
零售价 = 货值 = (1688成本价 + 国内运费¥5) × 1.02 ÷ [0.70 × (1 - 21% - 净利率)]
= (成本 + 5) × 1.02 ÷ 0.413 (净利率20%时)
操作序列:
select_option('1') 设为「是」详见 references/pc-description-template.md
cke_combo)点击后打开空面板——不要点这个! 真正的按钮在展开图片栏后的 images-options 区域(类 ant-dropdown-trigger).cke_button__imagepaneltoggle)使其可见。CKEditor 按钮用 element.dispatchEvent(new MouseEvent('mousedown',{bubbles:true})) + .dispatchEvent(new MouseEvent('mouseup',{...})) + .dispatchEvent(new MouseEvent('click',{...})) 触发.images-options 按钮滚到视口 y≈400-700 的位置(window.scrollBy(0, r.top - 400))Input.dispatchMouseEvent(mousePressed → mouseReleased) 在按钮坐标上触发——JS .click() 对 antd 无效.ant-dropdown-menu-item textContent 匹配Input.dispatchMouseEvent 点击 .ant-select-selector 坐标,然后在打开的 .ant-select-dropdown 中点 .ant-select-item(textContent === '自定义比例调整')——默认是等比例,不切换则没有完整宽高输入input[name=valueW] 填 800(用 nativeValueSetter + dispatchEvent).ant-checkbox-wrapper 中 textContent 包含「选择全部」的 labelreferences/pc-description-template.md「PC端描述—图片翻译操作流程」top: 5136-5612px),当页面滚动到下方时菜单渲染在视口外。解决方案: 点按钮前先 scroll 使按钮在视口 y≈400-700(预留下拉空间),然后 mousePressed+mouseReleased 点击。验证:dropdown 的 display!=='none' 但 getBoundingClientRect 全零 → 还在视口外 → 重新 scroll 并重试所有字段填写完成后,点击页面顶部右侧的「保存并移入待发布」按钮。
两种入口路径:
详见 references/step-by-step-mode.md
用户2026-07-18明确纠正:「为什么你突然去看谷歌趋势了?我们的上架流程还没有操作完。你错乱了,需要先完成上架工作流」
规则:
用户2026-07-18明确纠正:「我不想再看到你问我任何问题。因为你总结的skill里面已经全部都有了。」
规则:
用户2026-07-18明确纠正:「我确定我没有说过让你去做另外一件事情。你以后不许跟我撒谎,因为我会查看我们的聊天记录。」
发现: 代理任务(delegate_task)调用 browser_navigate 或 browser.new_page() 时,会在用户 Chrome 的同一个 CDP 上下文中创建新页面。如果 CDP 浏览器原本只有 2-3 个标签页(1688 + 店小秘编辑页),新页面可能覆盖编辑页标签,导致编辑页丢失,全部未保存数据丢失。
规避规则:
delegate_task 执行任何涉及浏览器操作的任务delegate_task 时,确保任务只使用 web_search / terminal / curl,不碰浏览器web_search + curl 或 execute_code 而非 delegate_task场景: 编辑页因意外关闭/标签页被覆盖/delegate_task干扰导致丢失,所有未保存数据可能丢失。
恢复步骤:
Target.getTargets 找 title="店小秘--编辑速卖通产品" 的 target)Runtime.evaluate 评估页面状态,可能页面还在只是 Playwright 连接断开https://www.dianxiaomi.com/web/smt/smtProductList/drafthttps://www.dianxiaomi.com/web/smtChoice/draft<a>编辑</a>)smt/edit?id={product_id})div.anchor-menu-item(不是 .ant-tabs-tab),点击文本匹配的锚菜单项跳转page.evaluate 读取各输入框的值判断哪些字段需要重填⚠️ 重要: 编辑页关闭后会丢失的数据:
用户铁律:「你自己想办法」= 自己搞定。能填的全填上,最后汇报时可以说「这些字段CDP搞不定,你手动点一下」但不能问「你要不要自己操作」
同一操作3次不成功 → 立即停手汇报。不要换第4、第5种方法继续试。
涉及新工作流时:先做流程图 → 用户审核 → 确认后再执行。
核心问题: Playwright 通过 CDP 操作店小秘时,DOM 修改可能不被 Vue 3 的响应式系统捕获,导致用户页面看不到变化——即使代码执行成功。
用户明确要求:「你以后都要显示出来,不然的话我不知道你进行到哪一步了」
用户明确要求:「你要按照我的步骤来,不可以猜」——每步做完汇报,等用户指示下一步。不要一次性操作多步。
解决方式(按优先级):
🥇 最高优先级: 每次操作后必须让用户看到页面变化。不要在后台默默执行多步操作。用户说看不到立即停手,换真实交互方式重做,而不是换 JS 方式继续试。
🥈 CDP Input.dispatchMouseEvent(antd 组件首选): 对 ant-design 组件(.ant-dropdown-trigger, .ant-select-selector 等),JS programmatic .click() 无效。必须在浏览器_cdp 工具中用 Input.dispatchMouseEvent(type='mousePressed', x, y) + Input.dispatchMouseEvent(type='mouseReleased', x, y) 在按钮实际坐标上触发真实鼠标事件。
window.scrollBy(0, r.top - 400) 将按钮定位到视口上部🥉 Playwright page.mouse.click() + page.keyboard.type(): 用真实鼠标点击 + 键盘输入代替 JS setter/dispatchEvent。page.mouse.click() + page.keyboard.type() 能触发最完整的浏览器事件链。
❌ 避免的写法(已被证明对 Vue 3 + antd 无效):
element.click() (JS programmatic)Runtime.evaluate 里的 .dispatchEvent(new Event(...))nativeInputValueSetter + dispatchEvent('input')DOM.setFileInputFiles(Vue 重渲染清除文件)验证方法: 每次 click 后检查弹出的 ant-dropdown/ant-select-dropdown 的 getBoundingClientRect()。如果 display 为 block 但 rect 为空数组(全零),说明 dropdown 被渲染到视口外——scroll 重试。
零售价 = 货值 = (1688成本价 + 国内运费¥5) × 1.02 ÷ [0.70 × (1 - 21% - 净利率)]
| 产品类型 | 物流属性 |
|---|---|
| 无电(硅胶碗、普通日用品) | 普货 |
| USB充电(风扇、净化器) | 内电→非纽扣锂离子电池 |
| 纽扣电池(LED灯) | 内电→纽扣式锂电池 |
| 干电池(遥控器) | 内电→干电池 |
| 充电宝/电池盒 | 内电→非纽扣锂离子电池 |
btn.innerText.trim() === '确 定' 匹配,不要 trim 后等于 '确定'(匹配失败)<select>,不用 ant-select,JS 改 value 可能不被 Vue 捕获 → 用 Playwright select_option().ant-checkbox-wrapper 精确匹配cke_combo(CKEditor原生combo,打开空面板)和 images-options 内的 ant-dropdown-trigger(真正的菜单)。必须在展开图片栏后,点击 images-options 区的按钮。误点cke_combo则用Esc关闭空面板style: top: 5612px 绝对定位,可能落在视口外。正确做法: 用 getBoundingClientRect() 找到按钮坐标,window.scrollBy(0, r.top - 400) 将按钮移到视口中部(y≈400-700),然后用 Input.dispatchMouseEvent(type='mousePressed', x, y) + (type='mouseReleased', x, y) 在按钮坐标处触发真实鼠标事件。验证:dropdown display!=='none' 但 rect 全零 → 仍在视口外 → 重新scroll。ant-select-selector(弹窗内下拉)同理需要坐标级 mousePressed+mouseReleased。page.evaluate() 改DOM或JS dispatchEvent可能不被Vue捕获。必须用真实鼠标交互。已验证有效的CDP click序列: ①获取按钮 getBoundingClientRect 坐标 ②window.scrollBy(0, r.top - 400) 将按钮移到视口中部 ③Input.dispatchMouseEvent(type='mousePressed', x, y) ④Input.dispatchMouseEvent(type='mouseReleased', x, y)。此方法对 ant-dropdown-trigger(images-options)和 ant-select-selector(弹窗内下拉)均有效。做完一步必须让用户确认看到变化再继续下一步。不许猜下一步,用户说一步你做一步。Input.dispatchKeyEvent(type='keyDown', key='Escape') + (type='keyUp', key='Escape') 在select操作之间清场。缺少这一步会导致后续所有select都打在上一个下拉的遮罩上。.ant-btn-primary,文本「一键翻译」)。错误操作: 点了「快速翻译」checkbox 然后等翻译 → 没用,因为这只是个模式开关。正确操作: 确认「快速翻译」已勾选(不用动它),然后点**「一键翻译」**按钮。Input.dispatchMouseEvent 坐标点击 ✅ 能打开 dropdown ❌ 选中后值不持久化;Playwright mouse.click() 同上;Playwright locator.click() 同上;keyboard ArrowDown+Enter 同上;JS element.click() 同上。疑似 Vue 3 select 组件的内部状态不响应外部事件。策略:优先填星号字段,非星号字段跳过不纠缠。超过3次尝试不成功立即停手,汇报给用户手动选。browser_snapshot 截断在约1500行,无法覆盖编辑页下半部分(SKU表、描述、包装、模板等)。替代方案: 用 execute_code + Python websockets 库直连 ws://127.0.0.1:19223/devtools/page/{targetId},发送 Runtime.evaluate CDP命令执行 JS 表达式扫描页面全部数据(document.querySelectorAll、document.body.innerText 等),返回结构化 JSON。此法可一次性扫描所有带星号字段、请选择数量、body文本长度等,不受视口截断限制。详见 references/cdp-websocket-qa-scan.md。ant-modal-wrap notice-list-modal),会拦截所有 Playwright locator.click() 操作(元素可见但 pointer events 被弹窗拦截,30秒超时)。但 JS evaluate 操作不受影响。解决方案: 每次开始编辑前,先执行 JS 强制清除所有弹窗:document.querySelectorAll('.ant-modal-wrap, .notice-list-modal, .bullet-layer').forEach(m => m.remove())。如果清除不彻底(弹窗按钮的click不触发Vue),关掉后再用 locator.click({force: true})。selector.dispatchEvent(new MouseEvent('mousedown', {bubbles: true})); selector.dispatchEvent(new MouseEvent('mouseup', {bubbles: true})); selector.click() 打开 dropdown,然后 item.click() 选选项。但此方法在共享下拉池场景下不可靠(可能点到错误的dropdown)。如遇连续失败,不要死磕属性字段,先填其他模块,最后汇报给用户手动修正。Auto-launch failed: CDP WebSocket connect failed: HTTP error: 404 Not Found 时,browser.engine: cdp 也无法解决。回退到纯 browser_cdp 工具操作(Target.getTargets, Page.navigate, Runtime.evaluate, Target.createTarget, Page.captureScreenshot 等)。完整操作指南见 references/cdp-direct-operation.md。Input.dispatchMouseEvent、Playwright mouse.click()、JS element.click()、dispatchEvent、keyboard Enter 等任何已知方法。疑似Vue 3 + ant-modal-wrap双重拦截。「保存」按钮可用(Playwright mouse.click有效)。流程改为:自动化填完所有字段 → 点「保存」→ 通知用户手动点「保存并移入待发布」。connect_over_cdp('http://127.0.0.1:19223') 连接Chrome的CDP端点后,browser.contexts[0].pages 返回所有打开的标签页。不需要通过Target.getTargets + activateTarget来切换——直接用 for pg in browser.contexts[0].pages 找到目标页并操作。但每个page对象已绑定固定target,操作前务必确认 pg.url 匹配。Auto-launch failed: CDP WebSocket connect failed: HTTP error: 404 Not Found 时,browser.engine: cdp 也无法解决。回退到纯 browser_cdp 工具操作(Target.getTargets, Page.navigate, Runtime.evaluate, Target.createTarget, Page.captureScreenshot 等)。完整操作指南见 references/cdp-direct-operation.md。作者: Rigi AI Commons | 小红书 @瑞吉AI人民公社 | AI自动化专家工作流