下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-fxke3vsg--xianyu-service-publish-v2.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-fxke3vsg/xianyu-service-publish-v2。闲鱼全栈运营技能。v3.0 升级:新增易店助手(ed.weeeg.com)后台管理自动化,通过 Python+CDP 驱动 Edge 管理商品列表/开关(自动发货/售罄上架/2人小刀)、鱼店配置(自动发货/自动回复/免拼发货/卡卷单发/异常通知/自动求花)、智能回复、商品采集、卡券系统、订单统计。保留 v2.x 的 goofish.com 网页版直发服务类商品能力(单商品/批量/万能提示词),合规红线(境外AI工具名/模型部署/无人机考证永久禁发)。
触发场景:用户说"在闲鱼发布XX服务"、"批量发布"、"帮我挂闲鱼"、"易店商品管理"、"开启自动发货"、"配置智能回复"、"小刀商品"、"商品采集"、"卡券管理"。
阅读全文 (展开查看完整说明)
概述
闲鱼服务类商品发布
用浏览器自动化在闲鱼网页版发布服务类商品(上门安装、远程服务、培训教学、私教陪练等非实物商品),并通过易店助手后台(ed.weeeg.com)做店铺全栈管理。用户负责扫码登录,AI 负责文案、图片、填表、发布、管理。
双通道架构:
- 通道一(v2.x 保留)goofish.com 直发:发布服务类商品的三种模式
- 模式 A 单商品发布:用户指定一个服务 → 按流程发布
- 模式 B 批量发布:从内置文案库(33项)或自定义数据文件,逐个自动发布
- 模式 C 万能提示词:生成一份可直接粘贴给朋友(QClaw/WorkBuddy)的完整发布提示词
- 通道二(v3.0 新增)易店助手管理:用 CDP 驱动后台做店铺运营
- 模式 E 商品管理:商品列表读取/筛选/批量操作/开关管理(自动发货/售罄上架/2人小刀)
- 模式 F 鱼店配置:自动发货/自动回复/免拼发货/卡卷单发/异常通知/自动求花开关管理
- 模式 G 智能回复:关键词/首次/系统回复规则配置(P1 阶段)✅ 自动化脚本就绪
- 模式 H 商品采集:从官方/竞品店铺批量采集 ✅ P2 自动化脚本就绪
- 模式 I 卡券系统:卡卷列表/卡种管理/批量导入 ✅ P2 自动化脚本就绪
- 模式 J 订单统计:订单查看/评价/销售统计 ✅ P3 自动化脚本就绪
🚫 合规红线(最高优先级,违反会被下架/封号)
2026-08 实测:用户 49 个在售宝贝因违禁被平台全部下架,处罚 7 天。以下红线永久生效:
- 境外AI工具名一个字都不能出现:ChatGPT、Claude、Codex、Midjourney 等(标题/描述/主图任何位置都不行,触发「未备案生成式AI服务」违禁)
- 🚫 模型部署/模型服务类永久禁发:任何「模型部署」「模型服务」「AI本地部署」「AI服务器」「AI助手部署」——描述里一个字的「模型/部署/服务」都不要写(风控把国产大模型部署也归入违禁)
- 🚫 无人机培训/考证类永久禁发:「培训」「考证」「CAAC」「AOPA」「包过」「保过」涉及职业资质不当宣传。无人机只保留:维修、航拍、编队表演、定制DIY(文案不得提考证/证照/持证)
- 「持证飞行」「持CAAC执照」等字样有风险:即使服务本身合法(如景区航拍),描述里也不要写持证,用「专业飞手」「多年飞行经验」替代
- 描述不能含 emoji(✅等触发校验报错),用【】和 – 替代
- 发布前每个商品自查一遍以上红线
每类商品发布注意:分类优先「其他闲置」;系统识别出更合适且支持网页发布的分类(如「DeepSeek服务」「AI数字人」)可用;图片上传后等约6秒再展开分类下拉才能看到「其他闲置」完整分类树。
易店助手通道补充红线(v3.0):
- 卡密类商品需确认合法来源(卡券系统的卡号/卡密需有合法授权,禁售盗版资源)
- 采集他人商品需确认不侵犯知识产权(商品采集模块使用时注意)
- 自动回复内容不得含违禁词(智能回复配置时自查,同第1-3条红线)
- 不暴露易店助手账号密码(脚本不硬编码,用配置文件)
- 批量操作防风控:连续改开关每行间隔 ≥1.5秒;批量上下架分小批执行
模式 A:单商品发布
第 1 步:收集商品信息并确认
- 服务名称(标题用,≤20字)、价格方案(主推价/引流价/利润价,闲鱼只显示一个价)、服务内容要点、图片素材
- 标题技巧:城市+服务名+核心卖点,如「宜昌电商产品拍摄 专业布光 精修包满意」
第 2 步:制作商品主图(无实体图时)
服务类用代码绘制服务卡片图(AI 生图中文字乱码,禁用):
powershell -ExecutionPolicy Bypass -File "<skill_dir>scriptsmake-service-card.ps1" -OutPath "C:...card.png" -Title "电商产品拍摄" -SubTitle "主图/详情页/短视频" -Badge "PRODUCT PHOTO" -Tag1 "专业布光" -Tag2 "精修包满意" -Tag3 "48小时交付" -Price1 "68" -Price1Label "精修套餐" -Price2 "128" -Price2Label "含视频" -Price3 "" -Price3Label "" -Desc "一对一服务 · 不满意免费重拍" -Note "拍前请先私聊沟通需求" -Region "宜昌上门拍摄 / 全国远程"全部参数可自定义:-Badge 顶部徽标、-Tag1/2/3 标签、-Desc 特点、-Note 提示、-Region 服务范围。脚本必须 UTF-8 BOM 编码保存(否则 PS5.1 中文乱码)。
第 3 步:浏览器初始化与登录
所有浏览器操作通过 xb CLI(C:UsersAdministrator.qclawskillsxbrowserscriptsxb.cjs),禁止直接调用底层 agent-browser:
cd C:UsersAdministrator.qclawskillsxbrowser
node scripts/xb.cjs init # 每次任务第一步
node scripts/xb.cjs run --browser cft open "https://www.goofish.com/publish"
node scripts/xb.cjs run --browser cft wait --load networkidle
node scripts/xb.cjs run --browser cft snapshot -i # 获取元素ref- 每条命令单独执行、逐条检查 JSON;禁止
&&/;链接 --browser cft登录态可复用;未登录时截图给用户扫码
第 4 步:填表与发布(关键操作序列)
① 上传主图(隐藏 file input)
# 1. eval 显示隐藏 input
node scripts/xb.cjs run --browser cft eval "(()=>{const i=document.querySelector('input[type=file]');i.style.cssText='display:block;position:fixed;top:10px;left:10px;zIndex:99999;opacity:0.01;width:100px;height:30px';i.id='xianyu-upload';i.setAttribute('aria-label','xianyu-upload-input');return 'OK'})()"
# 2. snapshot 拿 ref(e31 通常不变,但每次页面重开需重新 snapshot)
node scripts/xb.cjs run --browser cft snapshot -i
# 3. upload(ref 不带 @)
node scripts/xb.cjs run --browser cft upload e31 "C:...card.png"
# 4. ⚠️ 等约6秒让图片识别完成(关键!否则分类下拉没有「其他闲置」)② 选分类(等6秒后展开,选「其他闲置」)
node scripts/xb.cjs run --browser cft eval "(()=>{const sel=document.querySelector('.ant-select');if(!sel)return 'NO_SELECT';const r=sel.getBoundingClientRect();const x=r.left+r.width/2,y=r.top+r.height/2;const el=document.elementFromPoint(x,y);if(!el)return 'NO_EL';const o={bubbles:true,cancelable:true,view:window,clientX:x,clientY:y,button:0};['pointerdown','mousedown','pointerup','mouseup','click'].forEach(t=>{try{el.dispatchEvent(new MouseEvent(t,o))}catch(e){}});return 'OPENED'})()"
node scripts/xb.cjs run --browser cft eval "(()=>{const o=[...document.querySelectorAll('.ant-select-item-option')];const t=o.find(x=>x.textContent.trim()==='其他闲置');if(!t)return 'NOT_FOUND';t.click();return 'PICKED'})()"- 下拉无「其他闲置」→ 点 body 关闭 → 等2秒 → 重开,最多3次
- 下拉选项检查:
eval "(()=>[...document.querySelectorAll('.ant-select-item-option')].map(x=>x.textContent.trim()).join('|'))()" - 识别出更精准分类(DeepSeek服务/AI数字人等)且无「暂不支持」横幅时可直接用
③ 填描述(contenteditable + base64 防乱码)
node scripts/xb.cjs run --browser cft eval "(()=>{const ed=document.querySelector('div[contenteditable=true]');if(!ed)return 'NO_EDITOR';ed.focus();const r=document.createRange();r.selectNodeContents(ed);const s=window.getSelection();s.removeAllRanges();s.addRange(r);document.execCommand('insertText',false,decodeURIComponent(escape(atob('<BASE64描述>'))));return 'LEN:'+ed.textContent.length})()"- 描述第一行即标题(闲鱼无独立标题字段)
- 含中文的 eval 一律用 base64 传输(ConvertTo-Json/直接内嵌会报 SyntaxError)
④ 填价格(React 受控组件用原生 setter)
node scripts/xb.cjs run --browser cft eval "(()=>{const ins=[...document.querySelectorAll('input')].filter(i=>i.placeholder==='0.00');if(!ins.length)return 'NO_PRICE';const set=(el,v)=>{Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value').set.call(el,String(v));el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}))};set(ins[0],'50');if(ins.length>1)set(ins[1],'200');return 'OK:'+ins.map(i=>i.value).join(',')})()"- 单价的商品只填第1个框(如定做歌曲¥99、无人机维修¥100)
⑤ 点发布 + 处理地址弹窗
node scripts/xb.cjs run --browser cft eval "(()=>{const b=[...document.querySelectorAll('button')].find(b=>b.textContent.trim()==='发布');if(!b)return 'NO_BTN';b.click();return 'CLICKED'})()"
# 等3秒,检查地址弹窗
node scripts/xb.cjs run --browser cft eval "(()=>{const d=document.querySelector('[role=dialog]');if(!d||d.style.display==='none')return 'NO_DIALOG';const items=[...d.querySelectorAll('[class*=addressItem]')];const t=items.find(i=>i.textContent.includes('民欣家园B区'));if(t){t.click();return 'CLICKED_ADDR'}return 'ADDR_ITEMS:'+items.map(i=>i.textContent.trim().substring(0,20)).join('|')})()"
# 有弹窗则再次点发布⑥ 成功判定
node scripts/xb.cjs run --browser cft get url- URL 变为
https://www.goofish.com/item?id=<新id>&categoryId=&spm=...= 发布成功 - 仍在 publish 页 → 查
eval "(()=>{const e=document.querySelector('.ant-form-item-explain-error');return e?('ERR:'+e.textContent.trim()):'NO_ERR'})()"定位错误
模式 B:批量发布
数据文件格式(data.md)
名称|主图文件名|价格1|价格2|价格3|
标题+描述(第一行即标题,可多行,空行分隔各商品块)参考内置文案库 references/service-library.md(33项现成服务,含主图参数+价格+完整描述)。
驱动脚本
scripts/publish-batch-node.js(Node.js,require xb.cjs 绕开 PowerShell 5.1 参数拆分 bug):
node publish-batch-node.js <数据文件> <主图目录> [起始序号] [只跑N个]为什么用 Node 驱动:PowerShell 5.1 对含空格的数组元素会拆成多参数(node @argList 也会拆),且以 ( 开头的参数被重新解析报错("此时不应有 (atob(…")。Node 直接 execFileSync('node',[XB,...args]) 数组传递彻底规避。
已验证的经验(22个商品零失败跑通)
- 每个商品约 50 秒;批量间隔 2 秒
- 日志追加到同目录
publish-batch-log.txt - 支持断点续跑:传入起始序号跳过已发布的
- 发布前分批防风控:34个分 2-3 批、每批 10-15 个、批间间隔 1-2 小时
模式 C:万能发布提示词(给朋友用)
用户想把服务清单交给朋友在朋友自己的闲鱼账号发布时,生成一份完整提示词:
- 读取
assets/universal-prompt.md模板 - 把【宜昌】批量替换成朋友所在城市
- 交付方式:创建腾讯文档(create_smartcanvas_by_mdx)+ 设置「任何人可编辑」(manage.set_privilege policy=3),把链接给用户转发
提示词结构(复制【开始】到【结束】粘贴给 AI 即可):
- 第零步:环境检查(浏览器自动化能力/闲鱼登录/主图文件夹)
- 第一步:红线规则(禁止词清单)
- 第二步:主图生成(内嵌 make-service-card.ps1 完整脚本)
- 第三步:发布流程(10步详细操作)
- 第四步:商品清单(每项含主图参数+完整文案)
- 第五步:发布后验证
模式 E:易店助手商品管理(v3.0 新增)
通过 CDP 驱动易店助手后台管理已发布的商品(goofish 直发和易店发布的商品都在这里统一管理)。
前置条件
- Edge 以 CDP 模式启动并登录易店助手:
Start-Process "C:Program Files (x86)MicrosoftEdgeApplicationmsedge.exe" -ArgumentList "--remote-debugging-port=9222","--remote-allow-origins=*","--user-data-dir=C:UsersAdministratorWorkBuddyedge-cdp-profile","https://ed.weeeg.com/ekadmin/index"- 用户扫码登录易店助手后台
运行脚本
cd C:UsersAdministrator.workbuddyskillsxianyu-service-publishscripts
C:UsersAdministrator.workbuddybinariespythonenvsdefaultScriptspython.exe ed_product.py常用操作
from ed_product import EDProduct
p = EDProduct()
p.connect()
# 1. 读取出售中商品列表(含开关状态)
products = p.list_products(status="出售中", max_rows=50)
# 返回 [{idx,id,shop,title,price,exposure,views,wants,auto_ship,resell,bargain,published,updated}]
# 2. 按状态筛选:出售中/已下架/已售罄/已配置发货/未配置发货/定时上架
p.list_products(status="已下架")
# 3. 按关键词搜索
p.search_product("拍摄")
# 4. 开关总览统计
overview = p.view_switch_overview() # 统计自动发货/售罄上架/小刀的开启数
# 5. 设置某行开关(⚠️ 会真实改动,需用户确认)
p.set_row_switch(0, "auto_ship", True) # 开第0行自动发货
p.set_row_switch(1, "resell", True) # 开第1行售罄自动上架
p.set_row_switch(2, "bargain", True) # 开第2行2人小刀
# 6. 批量设置开关(⚠️ 会真实改动,需用户确认)
p.batch_set_switches(rows=[0,1,2], auto_ship=True, resell=True, bargain=True)
# 7. 行内「更多」菜单(真实鼠标 hover 触发 el-dropdown)
menu_items = p.row_more(0) # 返回菜单:配置发货 | 编辑商品 | 复制商品 | 下架宝贝 | 删除商品
p.row_more(0, "配置发货") # 点击配置发货菜单项(打开配置弹窗)
# 8. 打开某行的「配置发货」弹窗(通过行内自动发货开关点击)
p.open_config_ship_dialog(0) # 弹窗 LABELS:发货类型|商品规格|发货方式|网盘内容|消息模板|自动发货状态
# 9. 批量操作(⚠️ dry_run=True 只勾选预览,安全)
p.batch_action(rows=[0,1,2], action="上下架", dry_run=True)开关列说明(行内 3 个开关)
| 索引 | 名称 | 作用 |
|---|---|---|
| 0 | 自动发货 | 买家付款后自动发发货内容(需先配置发货模板) |
| 1 | 售罄自动上架 | 商品售罄后自动重新上架 |
| 2 | 2人小刀 | 两人以上砍价自动同意 |
模式 J:订单管理与统计(v3.0 P3 新增)
查看订单、评价管理、销售统计。
运行脚本
cd C:UsersAdministrator.workbuddyskillsxianyu-service-publishscripts
C:UsersAdministrator.workbuddybinariespythonenvsdefaultScriptspython.exe ed_order.py常用操作
from ed_order import EDOrder
o = EDOrder()
o.connect()
# 1. 读取订单列表
orders = o.list_orders(status="全部")
# status: 全部/待付款/待发货/待收货/退款中/交易完成/交易关闭/黑名单/待评价
# 返回 [{idx, shop, order_id, product, user, amount, qty, status, pay_time, remark}]
# 2. 切换订单状态
o.switch_order_status("待发货")
# 3. 订单状态概览(各待处理订单数)
summary = o.get_order_summary()
# 4. 销售统计
stats = o.get_sales_stats() # 销售订单/金额/退款/购买用户 + 今日/昨日/环比
# 5. 去评价管理
o.goto_evaluation()
# 6. 商品统计 tab
o.open_stat_page(tab="商品统计")
o.close()统计卡片说明
| 指标 | 内容 |
|---|---|
| 销售订单(笔) | 今日/昨日/日环比/成交订单总量 |
| 销售金额(元) | 今日/昨日/日环比/销售总额 |
| 退款金额(元) | 今日/昨日/日环比/本月退款 |
| 购买用户 | 今日/昨日/日环比/总用户数 |
| 状态角标 | 待付款/待发货/待收货/退款中 |
| 图表 | 营业趋势/订单来源分析/订单类型分析 |
模式 H:商品采集(v3.0 P2 新增)
从其他闲鱼店铺或官方采集商品到自己店铺(适合扩规模)。
运行脚本
cd C:UsersAdministrator.workbuddyskillsxianyu-service-publishscripts
C:UsersAdministrator.workbuddybinariespythonenvsdefaultScriptspython.exe ed_collect.py常用操作
from ed_collect import EDCollect
c = EDCollect()
c.connect()
# 1. 按关键词搜索商品
results = c.search(keyword="拍摄", qtype="店铺商品")
# 返回 [{idx, shop, product_id, title, price, published}]
# 2. 批量按ID采集(核心功能:从总商品.txt 里读 ID 列表)
ids = ["1077487223816", "1079912988993"]
c.collect_by_ids(ids, publish_mode="存草稿", dry_run=True)
# publish_mode: 立即发布 / 存草稿
# 3. 单行添加到采集列表
c.add_single_to_list(row_idx=0)
# 4. 批量添加到采集列表(需先勾选多行)
c.select_result_row(0, checked=True)
c.batch_add_to_list()
# 5. 去采集日志查看进度
c.goto_log()
# 6. 去商品草稿查看已采集待发布
c.goto_draft()
c.close()批量采集配置项
- 商品ID列表:textarea(支持逗号/空格/换行分隔)
- 采集平台:闲鱼
- 同步发货:checkbox(勾选则新发布商品自动配置发货)
- 鱼小铺:checkbox
- 自定义配置:使用默认配置 / 使用自定义配置(可改分类/城市/库存/价格/成本)
- 发布店铺:select
- 发布方式:立即发布 / 存草稿
⚠️ 经验
- dry_run=True 只填表不点「开始采集」,安全预览
- 真实采集前需选「发布店铺」
- 易店只能从闲鱼采集(不能从淘宝/其他平台)
- 商品ID必须是闲鱼商品ID(不是淘宝/拼多多ID)
模式 I:卡券系统(v3.0 P2 新增)
管理卡卷(虚拟商品/网盘资源用的卡号卡密)。
运行脚本
cd C:UsersAdministrator.workbuddyskillsxianyu-service-publishscripts
C:UsersAdministrator.workbuddybinariespythonenvsdefaultScriptspython.exe ed_card.py常用操作
from ed_card import EDCard
card = EDCard()
card.connect()
# 1. 读取卡卷列表
cards = card.list_cards(status="全部")
# status: 全部/未使用/已使用/使用中
# 返回 [{idx, id, name, kind, no, secret(脱敏), status, order_id, used_by, used_at, created_at}]
# 2. 打开添加卡卷弹窗(自动跳过绑定邮箱)
dlg = card.open_add_card()
# 3. 填卡种名称(第一步)
card.fill_card_kind_name("试用资料包", dry_run=True)
card.close_add_card_dialog()
# 4. 切换到卡种管理
card.switch_to_kind_manage()
card.close()添加卡卷两步流程
- 第一步:输入卡种名称(自动判断新建或已有)
- 第二步:选填报方式(文本导入/文件导入/系统生成)
- 文本导入:粘贴卡号+卡密(每行一个,空格/tab分隔)
- 文件导入:上传 CSV/Excel
- 系统生成:自动生成卡号卡密
- 点「确定」完成
⚠️ 经验
- 写操作前会自动遇到「绑定邮箱」弹窗,脚本会跳过
- 卡卷列表 11 个字段:ID/名称/卡类/卡号/卡密/状态/购买订单ID/使用人/使用时间/创建时间/操作
- 状态机:全部→未使用→已使用→使用中
模式 G:智能回复配置(v3.0 P1 新增)
通过 CDP 驱动易店助手管理智能回复规则,降低客服成本。
运行脚本
cd C:UsersAdministrator.workbuddyskillsxianyu-service-publishscripts
C:UsersAdministrator.workbuddybinariespythonenvsdefaultScriptspython.exe ed_reply.py常用操作
from ed_reply import EDReply
r = EDReply()
r.connect()
# 1. 读取所有智能回复规则
rules = r.list_rules()
# 返回 [{idx, id, keyword, type, content_type, match_rule, products, shops, exclude, content, enabled}]
# 2. 添加关键词回复(dry_run=True 只填表不点确定,dry_run=False 实际添加)
r.add_rule({
"trigger_type": 0, # 0关键词回复 1首次回复 2系统消息
"match_type": 1, # 0无匹配 1包含 2等于
"keywords": ["价格", "多少钱"],
"content_type": 1, # 1文本消息 2图片消息 3文本+图片
"reply_text": "您好,本店服务定价请看主页详情",
"scope": 0, # 0全部通用 1指定店铺/商品
"enabled": True
}, dry_run=True)
# 3. 切换某行规则开关
r.toggle_rule(row_idx=0, enabled=False)
# 4. 列出智能回复子菜单(自动回复/AI智能回复/回复配置/模板管理/黑名单/图片管理)
r.list_reply_submenu()
r.close()添加回复弹窗字段
| 字段 | 类型 | 取值 |
|---|---|---|
| 触发方式 | radio-button | 0关键词回复 / 1首次回复 / 2系统消息 |
| 触发规则 | radio-button | 0无匹配 / 1包含 / 2等于 |
| 关键词 | tag-input | 输入后回车添加,最多20个 |
| 内容类型 | radio-button | 1文本消息 / 2图片消息 / 3文本+图片 |
| 回复文本 | textarea | 25/500 字 |
| 适用范围 | radio-button | 0全部通用 / 1指定店铺/商品 |
| 排除商品 | 按钮 | 点「+ 添加排除商品」 |
| 开启状态 | switch | 默认开 |
⚠️ 经验
- 添加回复弹窗所有控件都是 el-radio-button(按钮式单选),用真实鼠标点击切换
- 关键词用真实键盘 Input.dispatchKeyEvent 逐字符输入 + 回车
- 回复文本用 execCommand('insertText', false, text) 注入(支持中文)
- 免费版可能限制智能回复功能(自动回复开关被后端拒)
模式 F:鱼店配置管理(v3.0 新增)
管理易店助手的全局开关(自动发货/自动回复/免拼发货等)。
运行脚本
cd C:UsersAdministrator.workbuddyskillsxianyu-service-publishscripts
C:UsersAdministrator.workbuddybinariespythonenvsdefaultScriptspython.exe ed_config.py常用操作
from ed_config import EDConfig
cfg = EDConfig()
cfg.connect()
# 1. 读取全部配置(三个标签页:基础设置/消息设置/高级功能)
all_cfg = cfg.read_all()
# 2. 单项开关设置(⚠️ 会真实改动,需用户确认)
cfg.set_auto_ship(True) # 自动发货:启用
cfg.set_auto_reply(True) # 自动回复:启用
cfg.set_mianpin(True) # 免拼发货:启用
cfg.set_card_send(True) # 卡卷单发:启用
cfg.set_error_notify(True) # 异常通知:启用
cfg.set_auto_flower(False) # 自动求花:关闭
cfg.save() # 必须点保存才生效!
# 3. 批量配置(一次性保存)
plan = {
"基础设置": {"自动发货": True, "自动回复": True, "免拼发货": True},
"消息设置": {"订单发货后发给买家": True},
}
changes = cfg.batch_configure(plan)配置项说明
| 标签页 | 配置项 | 说明 |
|---|---|---|
| 基础设置 | 自动发货 | 买家付款后自动发货(核心,需商品已配置发货内容) |
| 基础设置 | 自动回复 | 开启后买家消息自动回复(需配合模式 G 配置回复规则) |
| 基础设置 | 免拼发货 | 拼单自动免拼发货(免费版不更新拼单状态直接发货) |
| 基础设置 | 卡卷单发 | 卡券发给买家后再单独发一次 |
| 基础设置 | 异常通知 | 不发货/状态异常时邮件通知 |
| 基础设置 | 自动评价 | 跳转评价配置 |
| 基础设置 | 自动求花 | 发货后自动向买家求小红花 |
| 消息设置 | 订单发货/收货/退款中 | 各状态通知买家开关 |
| 高级功能 | 发货声明 | 发货附加声明 |
⚠️ 关键经验(2026-08 实测)
- 开关是 el-radio-group(启用=value 1 / 关闭=value 0),不是 el-switch
- 修改后必须点「保存」按钮才生效
- 保存后自动发货等开关可能被重置为关闭,需二次读取确认
- 配置完不要刷新页面(刷新会重置开关状态)
描述文案模板(服务类通用)
{服务名},{地域说明}。{核心价值一句话}。
【我是谁】{背景一句话,让人信任}
【服务内容】
1. {服务项1}
2. {服务项2}
3. {服务项3}
【价格】
- {档位1}:{价}元({说明})
- {档位2}:{价}元({说明})
- {档位3}:面议({说明})
【服务方式】{上门/远程/线上},{范围}
【承诺】{不满意退款/包教包会/XX小时交付}已踩坑位清单(务必遵守)
- 「其他服务」分类网页版发不了 → 弹扫码APP提示,必须选「其他闲置」
- AI生图中文乱码 → 服务卡片图必须 PowerShell 代码绘制
- PowerShell 脚本含中文必须 UTF-8 BOM → 否则 GBK 乱码闪退
- file input 是隐藏的 → 先 eval 改 display 再 snapshot 拿 ref 才能 upload;页面重开后 ref 失效需重新 snapshot
- type 多行文本会被 shell 转义吃掉 → 用 execCommand insertText 注入 contenteditable
- radio 普通 click 不生效 → 用 JS 点 label 元素
- antd 下拉普通 click 不生效 → elementFromPoint + 派发 pointerdown/mousedown/pointerup/mouseup/click 完整事件序列
- upload/click 的 ref 不带 @ 前缀;upload 支持 CSS 选择器(先 eval 设 data-testid)
- 闲鱼一口价只能一个价 → 主价填引流价,多档价写描述+主图
- 每条 xb 命令单独执行,禁止 && / ; 链接;–browser 必须指定
- 发布时可能弹「宝贝所在地」选择窗 → 点常用地址(如民欣家园B区),选完自动关闭
- 商品描述不能包含 emoji → 校验报错,去掉后重填
- 价格 input 用原生 setter 填值(React 受控组件)→ setter + dispatch input/change
- 境外AI工具名是违禁词(ChatGPT/Claude/Codex/Midjourney)→ 触发「未备案生成式AI服务」下架
- skillhub 发布页 Radix UI Popover 分类选择 → JS click 不生效,需 focus + 完整事件序列,选项是 checkbox
- 🚫 模型部署/模型服务类永久禁发(2026-08-05 用户亲口强调)→ 描述里一个字的模型/部署/服务都不要写
- 🚫 无人机培训/考证类永久禁发(2026-08-05 用户亲口强调)→ 培训/考证/CAAC/AOPA 一律不上
- 图片上传后分类树两态 → 前5秒推荐分类(无其他闲置),约6秒后完整分类树;下拉打开状态下识别完成不会刷新,需关闭重开
- 批量发布用 Node.js 驱动 → PowerShell 5.1 参数解析 bug(数组拆参/左括号报错),Node 数组传参彻底规避
- 页面必须在前台 — Edge 后台标签页会丢弃 CDP 模拟鼠标事件,所有操作前
bringToFront() - 加载遮罩拦截 — el-loading-mask 残留时 elementFromPoint 命中 mask,挡住所有点击;
clear_loading_masks()移除 - el-radio 必须点圆点 — 点 label 文字不一定生效,点
.el-radio__inner圆点最稳 - 保存前需 removeClass — 表单数据已变但未保存,刷新会重置。沛神建议:保存后立即验证,必要时重新点
- 免费版功能限制 — 鱼店配置开关会被后端拒绝并提示「免费版不支持XXX,请升级权益」;捕获 el-message 检查拒绝原因
- 行内 el-switch 点击后弹配置对话框 — 不是直接切换,是触发「设置2人小刀」「批量设置发货」等弹窗(待进一步调试)
- 真实鼠标 hover 触发 el-dropdown —
el-dropdown必须用 CDPInput.dispatchMouseEvent真实鼠标事件才能展开,DOMmouseenter无效 - 行内开关=配置发货入口 — 点击行内「自动发货/售罄上架/2人小刀」开关会打开该商品的「配置发货」弹窗(LABELS:发货类型|商品规格|发货方式|网盘内容|消息模板|自动发货状态),不是直接 toggle
- API 端点 — 配置发货弹窗由
PUT /adminapi/product/product/set_show/<id>/<0|1>触发;商品详情由GET /adminapi/product/product/<id>?...获取
参考文件
references/xb-commands.md— xb CLI 完整命令参考references/service-library.md— 33项服务完整文案库(拍摄剪辑8/无人机5/AI类9/生活类7/节点类3/老照片修复,每项含主图参数+价格+完整描述)scripts/make-service-card.ps1— 服务卡片主图生成脚本(参数化,UTF-8 BOM)scripts/publish-batch-node.js— 批量发布驱动(Node.js,require xb.cjs)assets/universal-prompt.md— 万能发布提示词模板(给朋友用)scripts/cdp_tools.py— 易店助手 CDP 通用工具库(连接/eval/导航/表格/开关操作)scripts/ed_product.py— 模式E 商品管理自动化(列表/筛选/搜索/开关/批量操作)scripts/ed_config.py— 模式F 鱼店配置自动化(自动发货/自动回复/免拼发货等开关)scripts/ed_reply.py— 模式G 智能回复配置(添加/读取/切换规则)scripts/ed_collect.py— 模式H 商品采集自动化(搜索/批量ID/发布或存草稿)scripts/ed_card.py— 模式I 卡券系统自动化(卡卷列表/添加卡密/卡种管理)scripts/ed_order.py— 模式J 订单统计自动化(订单列表/状态/销售统计)
双通道运行环境速查
goofish 直发(模式A/B/C)
- 依赖:xb CLI(
C:UsersAdministrator.qclawskillsxbrowserscriptsxb.cjs) - Edge CDP 端口 9222,
--browser cft登录态复用 - Node.js 驱动批量发布
易店助手管理(模式E/F/G/H/I/J)
- 依赖:Python venv(
C:UsersAdministrator.workbuddybinariespythonenvsdefaultScriptspython.exe) - Edge CDP 启动:
--remote-debugging-port=9222 --remote-allow-origins=* --user-data-dir=C:UsersAdministratorWorkBuddyedge-cdp-profile - 脚本目录:
C:UsersAdministrator.workbuddyskillsxianyu-service-publishscripts - 模块 URL:
- 商品管理:
ed.weeeg.com/ekadmin/product/product_list - 鱼店配置:
ed.weeeg.com/ekadmin/configuration/yudian_config/2/113 - 智能回复:
ed.weeeg.com/ekadmin/configuration/storereply - 商品采集:
ed.weeeg.com/ekadmin/product/productcollect - 卡卷管理:
ed.weeeg.com/ekadmin/card/card_cdk - 订单管理:
ed.weeeg.com/ekadmin/order/list
- 商品管理: