钱小店
微信小店自用中台 · 自研API + 扫码hack 双通道
首次启动时控制台会打印随机管理员口令;也可用 WXSHOP_BOOTSTRAP_PASSWORD 预设。
钱小店
—
hack 通道:读取中… dry-run:读取中… 官方客服API:检测中…
加载中…
加载中…
商品
未加载
时间窗 ≤7 天;首屏先出第一页(秒开),其余明细后台补齐;补齐/翻页都在本机分页 · 筛选(取过的不再打平台)。点行可展开这一单详情;备注(买家留言 / 商家备注)直接显示在商品名下面,关键词也能搜到(只搜已载入的明细)
结算批次每天一个批次;确认后锁定,打款必须填流水号。可出款 = 生成时快照;退款冲正后实付以池余额为准(差额会在打款时说明)
订单明细口径:买家实付(不含运费)× 12%,已扣退款

发微信通知 (经 qxiaodian 的微信发出,不经过你本机) 用法说明 ↗ 协作看板 ↗ 通知设置 ↗

同一件事只发一次,别重复点;发完下面会出回执。
售后单 · 品退(本地台账)
点左侧任一售后单,这里一屏展开判断所需的全部信息
评价数据随当前店;列表差评优先,可看评价图、判读与申诉草稿
未加载
评价列表
判读结果(点左侧任一条)
点左侧评价查看命中规则与申诉草稿
走 hack 通道(官方无此接口)。信用分与处罚单直接来自后台;申诉材料由规则引擎生成,**提交需人工**(提交接口名是运行时拼装的,未拿到)
未加载
违规与处罚
申诉材料(点左侧任一条)
点左侧处罚单生成申诉材料草稿
一站式投诉申诉:① 收集(候选池,按体验分三维度归类)→ ② 分析(订单 / 售后 / 轨迹 / 平台口径 / 责任归属)→ ③ 生成(投诉说明草稿 + 证据清单)→ ④ 人工核验后提交。默认 dry-run,真发需 DRY_RUN=0 且店铺在白名单。
⚠️ 先看下面这张矩阵再动手:26 个计分键里只有一部分有申诉通道,其余的要「找承运商」或「改操作」——写申诉稿是白写,还占当日额度。 完整清单见 docs/申诉通道清单.md;命令行查:--appealable(能)/ --none(不能)。
未加载 额度:—
处置分类 · 26 个计分键该怎么处理(按"能不能办"分桶,不按维度排)
加载中…
⚡ 待人工核验队列(点矩阵里的「⚡ 去清候选池」生成)
还没有待核验的材料 —— 点上方「⚡ 去清候选池」,机器会把能代办的那几条跑完并生成材料,停在这里等你核验
① 候选池(平台可投诉的类型都在这里)
点上方「刷新候选池」
②③④ 取证 · 分析 · 提交
点左侧任一条,自动跑取证与分析
公开佣金 =「全部带货者」计划(type 100);定向佣金 =「指定带货者」计划(type 300)。 调佣是**对外生效**的动作,默认走 dry-run 闸门;公开调佣需 owner。
未加载
佣金总表
商品
公开佣金
定向佣金
推送达人
上橱窗
合作
月销
状态
上橱窗二维码
商品详情(点上方任一行(内容在右侧卡片里,列表不再就地展开))
点一行看公开佣金与定向达人
调佣(dry-run 演练)
选中商品后在这里调佣
达人侧的 KPI 是 发出去 → 上橱窗 → 出单,不是"发了多少人"。三条口径先记住: ① 橱窗只有本店合作达人才读得到 ⇒ 上橱窗率的分母是可读人数,不是发送总数; ② 出单达人里有一部分从没被推送过(自然带货)—— 别漏算,也别算成推送的功劳; ③ 读不到橱窗 ≠ 没上橱窗,界面上一律写「读不到」。
未加载
出单达人榜 全部出单的人(含没被推送过的)—— 榜上「没发过」的那些,就是今天该补发定向的人
已上橱窗但还没出单 最该跟进的一批:货已经挂上了,只差一单
一行一个商品,行内是这条商品的完整链路:平台实况 / 本地意图 / 实际产出 三行并排, 不一致的地方直接标出来。校验结论在最上面 —— 先看「哪些要处理」,再展开看「为什么」。
未加载
点「重新读取」拉一次台账
尚未加载
「商品推广计划」是佣金率的载体,「已指定带货者」里显示的佣金是从计划继承的 ⇒ 调佣 = 改计划。 计划不是一人一条(实测 1~50 人/条)⇒ 改一条,里面的人一起变;谁要单独一个价只能拆到另一条计划。 平台没有「批量改比例」接口 ⇒ 这里分批执行并逐条读回自证(联盟没有事件回调,写完不读回就不知道成没成)。
未加载
已选 0 条
推广计划
执行结果 预演不发线上;真改会逐条读回 —— 没拿到"已生效"证据的会单独列出来
先点「预演」看会改哪些
点「启动」由中台 spawn 子进程(stdout 直接进卡片里的日志框),「停止」结束整个进程树;命令与参数在 config/jobs.json。 外部前置条件:没有了 —— 不用开微信小店助手客户端、也不用带 --remote-debugging-port; 唯一前提是登录态还有效(过期就跑 node hack/login.mjs 重扫)。
未加载
手动定向 · 视频号未预演
填视频号达人 ID(talent_appid 全串,多个用逗号/空格分隔)→ ① 预演核对清单 → ② 确认真发。 商品与佣金 = 推送配置「达人定向」渠道口径(与双端推送一致),改清单去推送配置页。
手动定向 · 抖音未预演
填抖店达人 uid(纯数字,多个用逗号分隔)→ ① 预演核对清单 → ② 确认真发。 商品与佣金 = 抖店推送清单口径。发送要开浏览器会话,约 30-60 秒,别关页面。
定向推送 未加载
✦
每张渠道卡 = 上段配参数 + 下段直接跑:
· 上段:这条线推哪些商品、多少佣金、什么口径/文案 —— 决定"给谁推什么"。
· 下段:启动 / 停止 / 看日志 + 运行状态 + 命令预览(点开看实际会执行的那条命令)。
· 下段的命令跟着上段配置走:改了商品/佣金/口径/文案,命令会自己重算(会先标"命令待刷新")。 带 ⚡ 会对外发送 的才算真发;没有这个标记的是预演/只读。
· 想一眼看全部 6 个任务:切到上面的「任务总控台」。
商品
货架 线上真实清单 · 联盟商品优先(只有联盟商品能设定向佣金)
人群范围 这个商品要推给哪些达人? 未预演
为什么需要这一步:定向接口只要达人的 ID,不需要联系方式 —— 所以「有没有取到号」不是能不能推的前提。 真正的问题是先推哪一批:库里有 191.6 万达人,单商品定向上限 1 万(2026-09-28 实测撞过上限), 达人生鲜相关的约 13.3 万,有橱窗的约 7.6 万 ⇒ 池子是上限的 3~7 倍,选谁比能选多少更重要。
和上面「达人定向」卡有什么不同:上面那张卡的「启动」是跑老脚本(按平台侧已有的池子批量下计划); 这里是你自己圈人 —— 先「预演」看圈到多少人 → 「锁定名单并发」把名单固定下来再发, 发的就是你现在看到的这批人。两者都是发定向佣金,但只有这里能保证"圈谁就发谁"。
口径 本次推送量由商品额度决定
公开佣金是定向佣金的前提:商品没设公开佣金(没加入联盟/没上架推广),后面设多少定向佣金都推不动。
两平台接口不同、门槛不同,本页按当前店铺的平台自动切换: 微信小店 已加入联盟 → 改比例(item/upd)、未加入 → 先建公开计划(item/batchadd),自动分流不用选; 抖店 需体验分 ≥72 且 商品分 ≥70,门槛没到时平台没有可投放入口 ⇒ 本页禁用发布并写清差几分。
平台 未加载
在售商品 · 准入状态 公开佣金直接在表格里改(改过的行会变色);改完点预演看结果,确认后才发布。公开佣金建议不低于 5%(低于此值达人接单意愿明显下降)。
展开
商品
公开佣金
计划 ID
准入状态
说明
未加载
改法:直接在上表的「公开佣金」格里改 → 预演 → 确认发布。不用先勾选。 未勾选(将发全部 0 个改动过的)
在上表「公开佣金」格里改好比例,再点「预演」看会改成什么(预演不真发)
⚠ 保存 ≠ 生效:这一页保存的是本地配置,不会发到平台、达人看不到任何变化 —— 真正生效要等你在「达人推送」里真的推一次。两个平台各存各的,改一个不会动另一个。
改这里会同时改变谁(这份配置不止本页在读):
· 「推送配置」页的「达人定向」那条线 → 会发哪些商品卡
· 「达人推送 / 机构推送(抖店叫团长报名)」页的商品候选与参数字段
· 三张长跑任务卡下次启动时的商品清单:达人定向 / 机构邀请 / 商务会话首触
★ 只写本地配置文件,不会发到平台;正在跑的进程要「停止 → 启动」才认新配置。
微信小店 未加载
对象类型 未改动
货架在售但还没进参数表 未读取
参数表是空的 — 先点「读取」,再从上方货架点「+ 加到参数表」(约 5~10 秒)
抖店 未加载
对象类型 未改动
货架在售但还没进参数表 未读取
参数表是空的 — 抖店走浏览器通道,点「读取」约 30~90 秒后从货架加进来
未加载
商品
状态
标价
到手价(券后)
差
券
关怀
规格 / 库存
已售
未加载
未加载
说什么在这一页,挂给谁在「商品管理」页 —— 这里只起草 / 改内容 / 设生效期,适用范围只读(点商品名跳过去改)。 话术按触发时机(发货时 / 签收后 / 出现售后时)分类,并记下为什么这么写。 本期只配置 + 预览,不发消息。
新建话术 长期有效
基本信息
标题必填
触发时机
来源
生效期默认长期有效、不设时间;只有做活动或季节性话术才需要指定起止
起始
→
截止
为什么这么写半年后靠它回想:这条是被哪次售后催生的 —— 不写,知识就退回人脑里了
正文必填
可用变量(点一下插到光标处):{{买家昵称}}{{商品名}}{{店铺名}}{{快递公司}}{{单号}}{{预计到达}}{{发货时间}}
适用范围只读:挂 / 摘 / 批量挂一律到「商品管理」页(★ 2026-10-14 收窄:关联只许一处改)
本库没有「全店通用」:一个商品都不关联 ⇒ 这条话术不会生效(宁可少发,也绝不误发给全店)。保存时下面这份关联会原样保留,不会因为这里不能勾选而被清空。
未加载
未加载
券不随商品接口(product/get)下发,是独立域 ⇒ 这里全部实时从券接口拉取(微信走 /channels/ec/coupon/* + 商家后台券接口,抖店走券中心),不读本地文件。 适用商品(挂载)由平台侧决定,本页只读不改 —— 要看某个商品能用哪些券,去「商品管理」展开那一行。 默认只显示"在用"的券(生效中 + 未开始);已作废/已结束默认收起并报出张数(不是"没有",点「只看已结束/已作废」看明细)。 参与不参与到手价只看一个判据:「计入到手价」(src/capability/coupon-live.mjs); 平台营销券(会员/收藏/回购/评价抽券)限特定人群,永远不计入。
筛选:
未加载
未加载
一张表看全两平台的推送历史:时间|平台|商品|对象|佣金|结果|平台原话。
之前回执散在几个文件里(抖店push/douyin/<店>/*.jsonl、微信kf-*.jsonl), 各写各的字段 ⇒ 没人查得到"这个人上周推过没"。现在统一记在一份台账里(只增不改)。
★ 「未发」不等于「失败」:预演和可推性预筛都记成"未发" —— 它们本来就物理上发不出去, 混进失败里会让失败率虚高、也掩盖了"扫过但没推"这批信息。
★ 抖店那 300 条预筛记录(2026-10-04 实测 300/300 不可推,原话「达人没有电商权限」)可一键导入,重复点不会导两遍。
推送回执 —
时间
平台
动作
商品
对象
佣金/服务费
结果
平台原话
未加载
第 1 页
未加载 台账 —
这页怎么用(四步 · 预演为什么是物理安全的 · 单次上限从哪来)点开看
四步走完一次达人定向:① 勾商品(自动带出②已配的达人佣金)→ ② 选人(达人库勾 / 手填 ID / 复用上次名单) → ③ 预演(看每人一条载荷 + 可推性预筛结果)→ ④ 确认发(回执自动进「推送记录」)。
★ 预演是物理安全的:它走强制只读模式,请求根本不会离开本机 —— 不是"应该不会发",是发不出去。
★ 改任何目标(商品或达人)都会立刻作废旧预演:预演是针对某一组目标的快照, 拿着旧预演去发新目标,等于没看载荷就发出去。
★ 单次上限 按剩余额度 人(该数来自平台额度:按[店铺档位 × 达人等级档],每周一 0 点重置,会随已发数量变化 —— 不是固定值):
★ 两平台能力差异如实标注:抖店有可推性预筛(平台逐人回原因);微信的批量接口只返回结果、没有只读体检通道,所以微信侧不做预筛 —— 不给不存在的按钮。
① 选商品 —
未加载
② 选人 — 达人搜索 额度读取中…
手填达人 ID(逗号 / 空格 / 换行分隔)。只收ID,不查昵称 —— 查得到昵称的一律走上面的达人库。
未加载
已选0 人
③ 预演结果 未预演
还没预演。预演不写平台任何东西,可以放心点。
未加载 台账 —
这页怎么用(四步 · 两平台对象不同 · 预演为什么不写平台)点开看
四步走完一次机构推送:① 勾商品(自动带出②已配的机构服务费与分配方式)→ ② 选对象 → ③ 预演 → ④ 确认发(回执进「推送记录」)。
★ 两平台的对象根本不同,别当成同一件事的两套皮肤: 微信 = 把商品分配给机构(要机构已合作才生效,佣金由我们定或由机构定); 抖店 = 报名团长招商活动(商品是活动给定的、不是我们挑的,只报费率)。
★ 预演不写平台任何东西。微信侧是纯拼载荷(请求不离开本机);抖店侧要读一次活动商品(只读 GET,为的是拿到活动内的 product_promotion_id 与平台给出的「活动×商品」准入判据)——读不等于写,预演永远不会改变平台上的任何状态。
★ 「没读成功」和「没有商品」必须分开看:前者是登录态/限流,重试即可;后者才是真的没得报。
★ 改任何目标(商品或对象)立刻作废旧预演;单次上限 50。
★ 「分配方式」决定达人佣金能不能填:选「机构指定」时达人佣金恒为 0(平台口径,接口也恒传 0)。 这不是我们让它归 0,是**平台这么要求** —— 在②里填了非 0 会在这里被直接拦下,不静默改。
① 选商品 —
未加载
② 选机构 —
人群范围
未加载
已选0 个
③ 预演结果 未预演
还没预演。预演不写平台任何东西,可以放心点。

手动定向

这页怎么用(四步 + 每列状态灯的含义)点开看
点名式的定向:不用等长跑任务捞名单 —— 手上有人就有人的链接、有名字就有名字,粘进来直接发。
微信小店与抖店各是一个 Tab,各自五步(通道 / 模板 / 粘对象 / 发送 / 复制给达人),互不干扰; Tab 上带状态(已发送 N / 待核对 N / 未开始)—— 切到另一边也看得见那一列还剩什么事没做完, 切回来时你粘的对象、选的模板、刚发的回执**原样都在**(切走只是把它收起来,不是清掉)。
依赖是一条链:① 定向通道(走哪条链路)决定口径与识别规则 ⇒ ② 定向商品模板(这条通道下发什么货) 依赖 ①(通道决定模板里哪个方案在用);③ 粘对象依赖 ①(通道决定认什么)。 ③ 里不再有"预演"这一步 —— 粘进去就自动认出「本次要发什么」(右栏那张清单,含每条能不能发), 点「④ 发送」就发。清单或平台状态变了会自动重核,改动后不需要你再点一次预演。
⑤ 定向内容(一键复制):发送成功后,这里生成那段可以直接粘给对方的话(一个人一份,带他自己的 ID/昵称)。 只对「定向达人」与「机构定向」有内容 —— 「定向团长」的对象是团长的招商活动(报名用), 不是能收消息的人,那一块会直接说明。
每步左上角的圆点就是它的状态:✓ 完成 · ● 现在做这个 · ○ 还没轮到。
微信 微信小店 读取中…
○① 定向通道 —
○② 定向商品模板 —
自动读取中…
已选 0 个商品
○③ 粘对象 —
粘贴后自动识别 —— 认不出的会单独列出来,不会被跳过
上面粘一段就行,每行一个对象
○④ 发送与回执 还没有可发的清单
上面粘一段对象 —— 认出「本次要发什么」之后,这里出现逐条回执。
○⑤ 给达人的定向内容 发送成功后在这里一键复制
抖店 抖店 读取中…
○① 定向通道 —
○② 定向商品模板 —
自动读取中…
已选 0 个商品
○③ 粘对象 —
粘贴后自动识别 —— 认不出的会单独列出来,不会被跳过
上面粘一段就行,每行一个对象
○④ 发送与回执 还没有可发的清单
上面粘一段对象 —— 认出「本次要发什么」之后,这里出现逐条回执。
○⑤ 给达人的定向内容 发送成功后在这里一键复制
这五条通道分别是什么?为什么要先配模板?

它们不是同一件事的五种说法 —— 平台不同、接口不同、连"发的是什么"都不一样:

通道归属对象是什么粘什么实际发生的动作
抖店 定向达人单平台精选联盟达人达人 UID(纯数字)建定向佣金策略 strategy/create,带商品 × 佣金
抖店 定向团长单平台团长发起的招商活动活动报名链接 / 活动 ID商家报名该活动(activity/apply)—— 商品与费率取自活动,不由我们挑
微信 定向达人单平台视频号带货者昵称 / 视频号ID / 带货者ID建定向佣金计划 item/batchadd(type 300)
微信 机构定向单平台服务商机构机构名按平台实时状态自动分叉:不在名单 → 发合作邀请(载荷只有机构名);status=2 已合作 → 分配商品 item/headsupplier/batchadd(带佣金与服务费)

★ 「机构定向」为什么是一条通道,而不是「邀约机构」+「定向机构」两条: 邀请和分配本来是同一件事的两个阶段 —— 邀请 → 机构同意 → 分配。 分成两条,用户就得自己判断该点哪个;而判错的代价是「对没合作的机构发分配」—— 平台**静默无效**,发完了才发现没人带货。现在由**平台实时状态**决定这一步做什么, 认人结果每行都写着「未合作 · 可发邀请」或「已合作 · 可分配商品」, 「邀请中 / 等机构批准」这些没有可发东西的阶段也会**明说**,不假装能发。

★ 机构还有第三层:商品发了 ≠ 生效。分配完成后机构还要在后台**批准**这些商品 (名下商品状态全为 1 才算生效,老项目 tools/agency-tick.mjs 的注释记着一次实测事故: 「有家机构后来批了、系统完全不知道」)。这一段**没有自动动作**,只能等机构点批准。

★ 名单读不到时一个都不发:判断不了这家有没有合作过就发,等于制造重复邀请 (平台会回 12818004 / 12818005)。老代码 hack/agency-invite-watch.mjs 的原话是 「🔴 此时最危险:名单读不到 ⇒ 排重失效 ⇒ 可能重复邀请」。

★ 为什么先配模板:定向的载荷永远是「商品 × 费率 × 对象」三件事。对象是易变的(今天这批人、明天那批), 商品与费率是稳定的 —— 把稳定的部分存成模板,变的部分每次现填。这样"这次发什么"永远说得清,且不会误改到长跑任务在用的参数。

★ 模板不跨平台:左右两列各选各的模板(商品的 id 与费率在两个平台上是两回事,混用等于发错平台)。 两列各自带自己的模板编辑器、预演回执与"最近发过",一列读完即闭环。

未加载 微信库 —
这一页就是群成员名单本身 —— 一个群里最后站着的每一个人,都在这里: 内部人员(我方同事)+ 达人 一起建群。 ★★ 内部人员必须显式配置:一个一个从微信真实名单里选出来写死在这里; 不配就不建群(规则写死:至少 1 位内部人员 + 达人,缺人不能硬建)。 ★ 同事的微信号在群里对达人可见 ⇒ 用工作号、本人知情。 改名单不会建群:建群是真动作,另有闸门。
★★ 微信号不许手填 —— 一律从微信真实通讯录里选。 手输错一个字符,建群时要么搜不到人,要么搜到同名的陌生人把 TA 拉进达人群。 下面的输入框是搜索框(输昵称/备注/微信号任意片段)⇒ 点候选 ⇒ 自动存微信的稳键。 名单每条后面有徽章:✓稳键 = 已对上真人; ⚠要修 = 认得出但存的值不是稳键; ✗查无 = 通讯录里没有(多半是还没通过好友)。
内部人员(我方同事)★ 必须显式配置 微信号一律从微信通讯录选;他们和达人一起进群
未选人
内部人员进群上限 (超过上限就不建群,而不是少拉几个人 —— 群里内部人员比达人还多,观感不对)
达人 手工预置;流程自动带入的也会写进这里
未选人 —— 还没通过好友的达人可以先留空,之后「一键修正」会自动补上稳键
群成员名单预览 选一位达人,当场看这个群里最后站着谁(内部人员 + 达人,不建群)
未加载
有的达人双平台播:把同一个人在两平台的 ID 绑成一条档案(人工维护 —— 平台间没有自动映射), 之后一键给 TA 在两个平台同时建定向:微信用「推送配置」的达人清单+佣金,抖音用下面的「抖店推送清单」+佣金。 自动群发不受影响(那两条线本来就是单平台名单,不掺这页)。 保存/改档案只动配置;「推送」是真发,有确认框。
抖店推送清单 双推时抖音侧推什么、多少佣金(与微信「推送配置」对称)
抖店店铺:—
双平台达人 同一个人在两平台的 ID;可以只填一边(那只能推单平台)
把「改完记得手动跑」的两道校验接进来:① 算数层(与 Python 基准逐行比对)② 行为层(localStorage 持久化)。 两个 HTML 共用 bc-pricing-v1 这个键做口径一致性告警。
未跑
① 算数层(只读)
还没跑
② 行为层(只读 · 需无头 Chrome)
还没跑
产物清单
当前默认参数(读自 HTML 的 CORE 块,不另存一份)
生成器(写操作:owner + 非 dry-run)
把圆通云仓报价表换算成小店的运费模板,并直接对照存量模板的缺口。 口径:带箱重量即计费重量(3斤=1.5KG / 5斤=2.5KG / 9斤=4.5KG,各占一档、均不跨 5.2KG); 三个规格只能统一加价——商品重量是 SPU 维度、不在 SKU 维度,所以加收区必须按最重的 9 斤取保本线。 写操作默认 dry-run:真要落库需显式取消演练,且店铺在 WXSHOP_LIVE_SHOPS 白名单里。
未读取
存量运费模板 点一行看它自己的数据
还没读取
模板详情
左边点一个模板 —— 这里显示它的计费口径、加收区成本对照与不发货地区
套用预设
将提交的请求体
(未预览)
★ 池共用、节奏不共用:小池是同一份(「我的达人」),但每个通道的日上限 / 条间隔 / 熔断阈值各自独立 —— 个人微信最敏感、外呼次之、平台私信最松。
中台做大脑与台账(规则库 / 三道保险判定 / 草稿队列 / 首触队列 / 审计), 不做真正的发送——发消息要客户端的登录态,仍由长跑卡片执行。红线:只答口径定死的、每条 ≤80 字、不承诺销量保底赔付金额。
意向达人(回复打标 → 一键推入加微信)
档位从会话台账现算(不落第二份状态):强意向=主动要微信/寄样/发来疑似微信号 · 咨询中=问佣金/价格/货期 · 已拒绝=不再打扰 · 闲聊。 号来源:客服会话CRM 或 达人自己在会话里发来的微信号(明文不出服务端)。
下一步怎么走:① 点「排队加微信」(一次一人)→ ② 到「触达 → 个人微信」看待加队列 → ③ 真加由 CLI 做:node bin/wechat-add.mjs run(先干跑看三件套,加 --send 才真动微信;每天上限 20 条、条间隔 60s)。 没号的人服务端会拒绝(不猜)。
规则库(命中即回;命中不了就落回"等稿",不自己编)
三道保险判定(拿一句话试试)
输入一句话看会不会被回、为什么
草稿队列(备稿,不发送)
进线(达人主动说话)
首触队列
回复审计(谁回了、回了几次)
把「样品」从达人身上的一个标签,升级成一条有成本的工单:三道闸门 + 一条回收线。 政策=混合(A 档免费 1 箱/其余自付、出单全额返)。一箱成本 ¥31.55=白掉 3.8 单利润。
三色催办队列
建单(闸门 A + 额度闸门在这一步就拦)
工单列表
工单详情(点左侧任一条)
点一行看闸门与时间线
值得再寄 / 永不再寄
★ 一个菜单两件事:平台怎么给这家店打分(体验分四维 + 42 个指标 + 物流达标)与 够不够「好店」(8 条硬条件 + 好评测算)。两页是同一份分 —— 好店第 7 条就是体验分 ≥4.5 且同行业前 10%,所以合在一页看,不用两个菜单来回对。
按商品看好评:哪个商品把店铺好评率拖得最狠,排最前面。拖累度 =(该商品好评率 − 店铺好评率)× 它占的评价比重,负数就是它在拖后腿。微信与抖店口径不同(微信 4 星算中评,不算好评),两边分开看、不要横向比。
未加载
催好评 · 已签收但还没评价的订单 未加载
两个条件同时成立才进名单:① 物流原文是「已签收/已妥投」;② 评价列表里没有这个订单号。只满足一个就催 = 要么骚扰已评过的人,要么货没到就催评。文案是模板按商品名和签收天数生成的,可以直接改;复制去后台发,或者点「演练」(只填不发)。
未加载
平台每天算一次的综合评分。点下面任意一张卡,直接看那一项现在差在哪、该怎么改。微信是 5 分制、抖店是百分制,两边权重也不同,别用同一套标准比。
未加载
原始指标明细(排查用,平时不用看)
接口 /shop-faas/statistic/cgi/search(要 biz_magic,magic 决定读哪家店);rankRatio = 超过同行比例,不是分位;指标中文名取自平台页面自己的字典(42 条,含平台口径),字典没有的显示字段名,不编名字。
诊断结论 查看全部指标
指标详情(点左侧任一条)
点一行看趋势与平台口径
指标下钻明细(商品评价 / 商品退款 / 承运商揽收) 按需拉取,约 9 秒
点右上「拉取下钻明细」——这三个接口要开浏览器(约 9 秒),所以不随页面自动加载。
能看到:每个商品的好评/差评条数与差评原因标签、退款原因标签、各承运商的及时揽收率。
物流达标(口径:从「揽收次日」起算,在【线路标准时效】当天 23:59:59 前签收才算)
线路 × 承运商达标对照
在途超时拦截清单
体验分台账(历史快照)
🩓 好店达标 —— 「服务好店」资格测算
「服务好店」8 条硬条件 + 好评测算 + 档位阶梯。和上面的体验分是同一份数据(好店第 7 条就是体验分 ≥4.5 且同行业前 10%),全部内容在本页内,不用跳转。
好店是怎么评的(点开看规则)
《微信小店"好店"标识管理规则》2026-08-26 生效版。三条路只走「服务好店」:品牌好店要求进平台「热招品牌库」+ 品牌认证(本店 brand_id 全是平台占位符 2100000000);热销好店要求近 30 天 GMV 与订单量同时进同行业前 10%。好店要的是「结算订单」(单数),不是"已支付"、更不是商品页的「已售」件数。
未加载
「服务好店」8 条要求绿色=过了 | 红色=还没到 | 黄色=要去后台查;点一行看原始数据
好评提升:从现在到目标还差多少
点「重算好评」出结果
各档位分别还差多少条好评
—
订单口径条形按状态占比,悬停看数
口径与合规提醒
自包含工具(原 wxstore-admin/web/salary.html 整体移植,公式未改): 保底 + 时薪×时长 + 超额累进提成 + 住宿调整,可导出工资条与《直播主播薪酬协议》。 参数按登录账号隔离、存本机浏览器;零服务端依赖,也支持直接打开 /salary.html 单独用。
成本核算 · 新版(成本 + 模拟定价)
旧表(含售价 / 净利 / 保本线)
自包含工具(原 _archive_20261007/素材与设计/商品成品/直采成本工作台.html 整体移植,公式未改): 多品产品库 —— 一个库管多个品,每品各有自己的原料价 / 正品率 / 物料 / 重量档 / 果径 / SKU, 算全成本拆解 / 逐 SKU 净利 / 保本线 / 敏感度,并把全部品拉平成一张横比表。 ★ 售价与净利只出现在标着「模拟」的那张表里(挂牌价/到手价是你填的假设值,不是真实成交)—— 它用来比价、试佣金、看保本线;真实到手价与真实利润看「推广 ▸ 商品 ▸ 查看 SKU 价格」右抽屉。 原料口径支持元/吨通货与元/箱代发两种(自采分拣 vs 供应商代发)。 草稿按登录账号隔离存本机,也可一键存到服务端(角色要有「改成本参数」权限)让团队共用同一份口径; 也支持直接打开 /cost.html 单独用。
旧表:2026-10-16 之前的那一版 —— 券让利 / 到手价 / 达人佣金 / 自播净利 / 保本佣金率都在里面(也能按挂牌价定价、或直接定到手价并反推挂牌价)。 成本与「新版」共用同一份草稿(原料/物料/档位/SKU 改一处两张表都变), 只有「券让利%」「达人佣金率%」是旧表自己的参数。 ★ 那一版的到手价是按你填的预估折扣推出来的、与平台真实券无关 ⇒ 净利是"按这个假设卖"的推算,不是真实利润。 旧表只存本机(团队那份由「新版」管);也支持直接打开 /cost-classic.html 单独用。
A 档电话邀约:队列 → 打电话 → 记跟进 → 跟催。数据已从 web/admin/call.html 那套收进中台 (data/callcenter/)。号码/微信默认打码;owner/lead 可看明文,operator 可对单条要明文,每次都写审计。
数据来源与历史缺口
名单与分诊
第 1 页
队列
跟进(点左侧任一条)
点一行开始跟进
谁跟进了多少(近 7 天,主管视角)
★ 大池 = 平台公海(还没联系过的人,联系过的在「我的达人」);两边池子数字不通用 —— 微信侧是本机全量池(不绑店),抖店侧是精选联盟广场的采集池。看池子不绑店,发动作才绑店(邀约额度 / 可推性 / 风控冷却跟店走)。
本地数据,不依赖店铺登录态:达人 191.6 万人(data/talent-square.jsonl)+ 机构 2.4 万家(data/agency-contacts.jsonl)。 查询走「瘦索引 + 按量随机读」,不全扫;昵称/带货号/手机号默认打码,只有 owner/lead 能点「看明文」(每次都会写审计)。
数据源与更新 加载中…
达人库
机构库
筛选
第 1 页
达人列表
详情(点左侧任一条)
点一行看画像与触达状态
全池分布(实时算自索引)
粉丝档
GMV 档
平台标记 / 类目
运营台账(他走到哪一步了)
来源 / 档位 / 渠道
筛选
第 1 页
机构列表
详情(点左侧任一条)
点一行看机构画像与邀请状态
机构库总览
口径:按当天发货结账|只结「已发货」|已取消(含售后撕单)不入账|未匹配 SKU 不猜价。 冰糖橙走平台代发单(自动对账);甘蔗由供应商登录我方账号打单,走订单侧数据,须与供应商报数人工核对。 台账 append-only:冻结后不改历史,只能追加调整。
未加载
结算单(点一行看明细)
明细
台账(append-only)
「接入」= 往注册表写一条(店铺ID + 店名),微信店自动继承已登录账号的登录态(账号级,不用逐店扫码)。 卡片点一下看详情和全部操作。非微信平台的店接进来后先只有自有/系统能力,专属能力随 P1 适配器自动出现。
未加载
点「重新发现」加载
⚠️ 别同时开两个店铺页签跑重操作 —— 切店改的是「账号级当前店」,跨请求交错防不住。
注册表文件与写入保护
服务自身的运行方式:谁在监听端口、怎么起的、有没有被 Windows 计划任务托管。 ★ 「重启服务」由独立进程执行 —— 本服务停不掉自己(那样连响应都发不回来)。
未加载
点「刷新」加载
边界在哪(做之前先说清)
· 不代杀手工起的进程:没有计划任务时「重启」会被拒绝并说明原因 —— PID 会被复用, 杀错进程比不重启危险得多(与「任务进程」停止长跑卡片同一条红线)。
· 平台差异不假装支持:计划任务只有 Windows 有;其他平台本页只做只读展示, 并提示该用 systemd / supervisor / pm2。
· 会检查任务有没有"烂掉":搬过项目、换过 Node 安装位置之后,任务会指向不存在的 exe 而启动静默失败 —— 本页直接报出来并让你一键修好。
· 所有动作都写审计:service.register / service.restart / service.remove。
抖店(cookie 通道)经营概览:店铺身份锚点(防串店)+ 体验分总览 + 售后各状态计数。数据直连 fxg 网页接口,只读。
体验分总览
售后计数(各状态)
★ 小池 = 我们联系过的人(大池在「资源池」);一行一个人 = 一个平台身份,跨平台不合并(同一个人两平台算两行)。 ★ 判据:「进过名单」不算已触达,要完成动作(打过电话 / 发过消息);"没人接 / 打错"进总线留证,但不冒充联系上。
下面这一栏是「小池」视图自己的筛选 —— 平台只是筛选维度,不改变数据来源(都是同一份接触事件快照)。
池子:未加载
全部
抖店
微信小店
个人微信
小池 —
未加载
一键加微信 · 队列 —
★ 一次一个人 —— 刻意不给批量: 批量接口一旦存在,风控参数就永远可以被绕过。真正的加好友由 CLI worker 一条一条做, 默认 dry-run(要 --send 才真加);这里只负责"排队"。
未加载
★ 精选联盟「达人广场」池 —— 与微信小店的达人库是两个独立的池,数字不通用。勾选后加入「批量邀约名单」,在「商务会话(抖店)」页启动发送。
已选 0 位 未加载
等级口径:本店邀约额度只覆盖 LV0-LV1(店铺档位「联盟开通时间30天内」)⇒ LV2 以上发不出去,列表里会标「发不了」,别选它们白占额度预期。
达人池
未加载
数据来源:精选联盟「团长服务广场」团长列表(GET /api/institution/plaza,在页面上下文里 fetch 由页面签名,绕开直连风控)。字段全部是平台原值:月出单达人数 / 月出单商品数 / 月单品平均出单量 / 月平均佣金率 / 月结算有效成交额区间 / 经营类目与类目排名 / 是否可建联。只读——中台不会替你联系团长或建合作。翻页有 10000 条上限,要采全池需按类目分区多轮采(池子去重合并)。
团长池
团长报名 · 批量报名团长招商活动
抖店**没有**"给团长发邀约"的商家接口 ⇒ 我们的"团长报名"= 报名团长的招商活动(报名后由团长组织他的达人推)。活动列表 / 报名接口 / 回读计数都实测过;promotion id 在真发时自动从活动商品里读。
佣金 % 服务费 % 投放期佣金 % 投放期服务 % 结束日期 联系电话 未加载
★ 每日报名上限(默认 50)在服务端判定:先算再发,绝不超发;每个活动报名后都会读回计数(无事件回调)。
可报名活动
载荷预览 / 执行回执
报名台账(最近 30 条)
未加载
数据来源:抖店域内的精选联盟接口(与抖店共用登录态)。定向佣金的写入接口在独立域 buyin.jinritemai.com,需精选联盟单独登录——这里先只读现状。
已投放商品(联盟推广中)
佣金上下限与自动佣金
精选联盟会话(独立登录)
抖店 · 精选联盟 闸门核对中… 未加载
✦ ↵
1
投给谁两类走的是完全不同的平台接口:先选类型,字段只显示这一类真正要用的
2
给什么条件改任一数字,台头那句复述会立刻跟着变 —— 先看复述对不对,再动手发
3
会发生什么「预览载荷」只算请求体、不发任何东西;真发在下面吸底那颗红按钮
还没预演。点右上「预览载荷」—— 它会算出真正要 POST 出去的请求体,并标出哪一跳是写。
原始 JSON(人工核对用)
预览 = 只读 · 执行 = 真发(服务端还有 dry-run / 白名单 / 权限三道闸门)
↺
该商品已推策略(回读)平台上这个商品当前挂着哪些达人、多少佣金 —— 推完拿它对账
▤
任务模板落在 data/deals/<店>.json|「载入」把参数灌回本次投放,不会直接发
⏱
执行回执(最近 20 次)每次真发都留一条:谁、什么时候、成功几条、平台原话
⇉
从达人池批量推顺序是固定的、跳不过去 —— 实测达人广场推荐流里大量回「达人没有电商权限」,先筛再发才不是白跑
未加载
  1. 挑人按粉丝 / 有无联系方式从池子里取前 N 位
  2. 只读预筛check/user —— 不创建任何东西
  3. 逐个 create只对预筛通过的人真发
  4. 落台账可回读、可对账
▤
商品来源商品与佣金取自「抖店推送清单」(双端推送页配);本页改的是本次的临时覆盖
✦
预演 / 执行回执预演会真跑一次只读预筛,所以它慢 —— 但它不会创建任何策略
还没预演。
原始 JSON(人工核对用)
≡
批量推送台账(最近 30 条)预筛被拒的也在里面 —— 它不是失败,是平台说这个人没有电商权限
未加载
批量打标签(先勾选下面的行)
加标签 去标签 已选 0 人
达人库
未加载
抖店商务会话 = 精选联盟「建联」:先查建联资格(account_check,不合格不发),再发 邀约卡(invite_card:留言文案 + 商品 + 定向佣金随卡一起带 + 联系方式)。
⚠️ 载荷抄自平台页面源码的调用点;发送那一跳的 HTTP 路径未实测 —— 本页会依次试候选路径,谁回业务码就用谁,命中路径记进 data/push/douyin/<店>/im-endpoints.json,并在台账里留痕。
发邀约卡(建联首触)
达人 uid
每行一个
商品 ID 定向佣金 % 投放期 % 联系电话
留言文案
批量邀约带货(可在本页配参数 · 后台分批 · 进度/断点)
商品 ID 定向佣金 % 投放期 % 联系电话
节奏 每批人数 批内间隔 ms 批间暂停 ms 本次上限 0=不限 择优
留言文案
加载中…
载荷 / 回执
会话台账(最近 30 条)
本机 PC 微信会话与消息(只读)。数据独立落盘在 wxchat/(与 data/ 分离), 后台每 10 秒增量同步。聊天绑微信账号、不随店铺切换。
会话
待加
— 未加载
会话
消息
左侧选一个会话
详情
选一个会话看详情
★ 一次一个人:这里只负责"排队",真发由 CLI 一条一条做(默认 dry-run,要 --send 才真加)。
★ 「已通过」只有聊天库知道:由认领器 identity-reconcile.mjs 认到后写下关联;状态链 待加 → 执行中 → 已发出 → 已通过(否则 失败 / 找不到人)。
★ 前提是有微信号或手机号(都没有就不排队,绝不猜一个 ID 去加);只有手机号时标「疑似」(同一个号可能两人共用)。
待加列表 —
排队不锁人:同一个人的第二次排队会被幂等键挡掉(不会排两条)
未加载
怎么真加(都在 CLI,页面不直发)
node bin/wechat-add.mjs list 看闸门与下一条 / node bin/wechat-add.mjs plan --id=… 先看三件套(备注/标签/验证消息)/ node bin/wechat-add.mjs run 跑一条(dry-run),确认后加 --send 真加 / node bin/identity-reconcile.mjs 把"已发出"认领成"已通过"(先 dry,再 --commit)。
资金总览(上)= 抖店 + 微信小店平台侧实时资金:可提现 / 待结算 / 冻结,全店合计。
财务台账(下)= 电商直采的借来的钱:①资方入账 / ②资方款支出 / ③徐总垫付 手工录;④每日订单利润 / ⑤资方往来总账 自动算。 ★ 两块口径不同,不能相加:上面是"店账上现在有多少",下面是"欠资方多少"。 月息 2.5%(每万元每月 250 元)、T+7、算头不算尾|平台费 0.1%|提现手续费 1%|过账手续费 6%。
资金总览 · 全部店铺  抖音 + 微信小店 · 平台接口实时值
资金总额(正在读取…)
…
微信小店 …|抖店 …
可用余额
…
正在查
待结算
…
正在查
冻结
…
正在查
覆盖店铺
…
正在查
正在读取各店资金…
财务台账 · 借来的钱与欠款线 与上方「平台资金」口径不同,不能相加
资方款可用余额
…
正在查
欠资方本息
…
正在查
徐总垫付待归还
…
正在查
本月净利
…
正在查
当前店实时余额 只这一家店;全店合计看上方「资金总览」
未加载
点「资金」加载台账…
角色:owner(全部店铺+管理)/ lead(分配店铺+财务+审核)/ operator(分配店铺+写操作)/ viewer(只读)。 角色本身可以配:下面那张表勾什么,这个角色就有哪几项能力(自定义角色也能建)。 授权 = 角色 × 店铺白名单:角色决定「能做哪些动作」,白名单决定「能碰哪些店」,两者同时成立才放行。
还可以按账号单独覆盖能力位:角色给默认,账号可逐项开通/关闭(manageUsers / manageShops 除外,它们只能由角色决定)。
一共 27 个能力位:14 个决定菜单是否出现(对应 38 个菜单),13 个是页面内动作。一个能力位可能同时放行多个菜单(例如「看总览」= 18 个菜单);共享能力位下的菜单可以单独取消显示(例如「看售后」下只留「售后品退」)——这是**菜单显示层**,接口仍按能力位授权。「新建 / 编辑 → 单独权限」里按「菜单入口 / 动作能力」分开列,每个能力位下面直接写出它对应哪些菜单,并给出登录后的侧栏预览。
未加载
角色与权限配置勾选即改;保存后立即生效(服务端每个请求都回 data/roles.json 核一遍,账号不用重新登录);每项下面标了它对应的菜单,具体账号可在「编辑 → 单独权限」里覆盖,manageUsers / manageShops 除外
菜单 → 能力位对照按侧栏实际菜单逐项列出(读的是渲染菜单的同一份 NAV);要给他某一页,就开这里写的那个能力位
账号角色直接在下拉里改;「编辑」改单独权限、店铺白名单与重置口令
⚠️ 最后一个启用中的 owner 不允许停用或降级 —— 否则再没人能管账号和店铺。这道闸在服务端,CLI 也绕不过。
每日运维 · 每天 09:00 自动跑
① 佣金配置漂移巡检(只读) ② 给今天新通过的合作中机构推商品。
下面能看上次回执、改推送商品、手动跑一次。日志:tmp\daily-ops.log
上次回执
推送参数 改完次日 09:00 生效(文件 config\daily-ops.json)
护栏:一次新增超过 家就停下报错
爆品数据 · 只读工具
这两个都只读平台、不写任何东西,运营可以放心点。
写平台的动作(清洗席位 / 发定向 / 改公开佣金)故意不放在这里 —— 那些必须走「预演 → 签字 → 真发」。
商品 采集模式
(点上面的按钮,日志会出现在这里)
日志关闭
↑↓ 选择回车 打开Esc 关闭
添加店铺 关闭
切换店铺关闭
切换 = 整页上下文全部换掉(侧栏页签 / 缓存 / 通道状态)。添加·停用·移除店铺走顶栏 ⚙。
扫码登录关闭
通道状态 关闭