Install
openclaw skills install @yiqingqiu23187/xinfan-lead-skill新帆线索池运营技能:查看私海/公海线索列表与统计、查看线索详情, 认领/释放线索、更新跟进状态/备注/采纳优先级,并生成、定时推送私海线索日报。
openclaw skills install @yiqingqiu23187/xinfan-lead-skill新帆是公司内部的电商招商线索管理系统,本 skill 提供调用新帆线索池能力的 CLI。
通过本目录下的零依赖本地 CLI(bin/cli.js,仅用 Node 内置 fetch)调用新帆后台的线索管理接口。10 个接口一一对应 10 个独立子命令,每个子命令都自带 --schema(JSON Schema)和 --help(人类可读说明),字段/取值范围现查即可,不需要预读本文档。这份文档只写 CLI 自省拿不到的东西:认证怎么配、怎么发现命令、写操作的安全规则。
本 skill 的使用者是运营人员,不是开发。对用户说话只讲业务结论,不讲实现细节:
--confirm、--dry-run)、HTTP method/path、原始请求体 JSON——这些是 agent 调用 CLI 的内部手段,运营看不懂也不需要看懂。要做什么改动,直接用大白话说清楚("我会把这条线索的跟进状态改成'已建联',确认吗?"),不要把请求体贴出来。lead_id、hasInnerShop、accept_level),一律换成运营在系统界面上看到的名字(线索名称、站内店、采纳优先级 P0/P1/P2……)。本 skill 同时提供线索管理与私海线索日报。每次被用户实际触发时,agent 先检查当前用户是否已有名为 “新帆私海线索日报” 的定时任务:
需要我在每个工作日 10:00,把你的私海线索日报推送给你吗?日报分三部分:你的转化数据战报(客开数、动销数、B3+/B4+线索数、增量DMGV,会跟同组均值对比)、建议优先跟进的优质线索(点名线索和推荐理由),以及即将到期需要及时跟进的线索提醒。
新帆私海线索日报Asia/Shanghainode scripts/private-daily-report.js;若提示登录状态失效,先按「登录失效时的自愈规则」自己重试恢复,重试成功后再重新跑一次脚本,不要一遇到登录失效就直接跳过本次推送去通知用户——只有自愈重试后依然失效才允许跳过并通知用户。脚本正常输出后,按下面「日报占位符填充规则」把输出里的占位符填好、删掉参考事实区块后再发送;不要补充线索明细或”数据来源”。运行:
node <本 skill 目录>/scripts/private-daily-report.js
脚本分页读取当前登录运营本人的全部私海线索,在本地确定性计算后输出一份带占位符的日报骨架,分三部分:
CONVERSION_MOCK 常量),包括动销数(private-stat 有真实接口)和 B3+/B4+(能从私海线索的站外店铺 GMV 分层本地算出真实数量)——这两个本来能查到真实数据,但故意先不用,因为"真实数字配虚构的同组均值"读起来会像一句可信的业务洞察、其实只有一半是真的,容易误导运营,所以在客开数/增量DMGV/全部同组均值都还没有真实来源之前,统一先用假数值,不真假混着展示。等所有指标都接上真实来源后,把 CONVERSION_MOCK 换成真实计算结果即可,不用动渲染逻辑。这一部分只有一个 <<SUMMARY>> 占位符。extra_metric(10 个 0-100 行业百分位指标)里只要有一个 ≥80 就入选。⚠️ 这是后端刚上线的字段,底层数据表目前还没接写入管道,实际返回大概率是空的——脚本会诚实显示“暂无优质线索,建议保持现有跟进节奏”,不会为了有内容而降低口径或编数据。有命中时,每条线索一行,推荐理由 列是一个 <<REASON_n>> 占位符。脚本输出的最后还有一段 <!-- AGENT-FACTS-START -->...<!-- AGENT-FACTS-END --> 区块,是只给 agent 看的参考事实,不是日报正文,发送前必须删掉(见下)。登录状态失效时,按「登录失效时的自愈规则」处理,不展示底层错误。
拿到脚本输出后,在发送之前必须做这几件事,缺一不可:
<<SUMMARY>>、<<REASON_1>>、<<REASON_2>>……占位符,参照紧跟在它们后面的 AGENT-FACTS 区块里对应的事实,把每个占位符替换成一句连贯的自然语言。|、行数、列数、已经算好的数字,一个都不能加、不能删、不能重新排版。fans_dgmv_pct)或百分位数字本身(如“行业百分位92”)——百分位只是筛选依据,运营要看的是业务解读,不是技术分数。AGENT-FACTS 区块里给的事实,不要额外编造或引入区块之外的信息。<<SUMMARY>> 写 2<<REASON_n>> 每条一句话,控制在约 60 字以内,挑 2~3 个最有代表性的事实融合表达,不需要把命中的所有事实都塞进去。日报里能进"优质线索"的都是行业百分位 ≥80 的线索(不会有 40-80 分位的),所以 <<REASON_n>> 可以放心用"行业领先/头部"这类肯定语气,不需要像列表视图的"亮点"行那样区分层级、放低语气。<!-- AGENT-FACTS-START --> 到 <!-- AGENT-FACTS-END --> 区块,只把剩下的正文发给用户——不要在正文前后加"以下是日报""日报生成完毕"之类的引导/结束语,也不要把中途运行脚本、重试、处理登录失效等过程写进去(见上「登录失效时的自愈规则」第 5 点)。发出去的消息应该从 ## 私海线索日报 开始,到「即将到期」表格结束。无需 npm install,零第三方依赖,Node >= 18 即可直接运行(会话通道用到全局 WebSocket,需 Node >= 22;DIBP/OpenClaw 环境已满足):
node <本 skill 目录>/bin/cli.js <子命令> ...
以下示例统一用 xinfan-lead-cli 代指这行命令。
运行前提:agent 环境里有一个已登录新帆的浏览器页面(见下「建立会话通道」)。首次使用前 agent 需先建立这个通道。
CLI 的每次请求,都通过「当前登录用户本人已登录新帆的浏览器页面」发出,用的永远是运营本人的身份和权限。agent 按下面步骤建立一次即可,之后会话有效期内无需重复:
https://newark.devops.xiaohongshu.com/seller/investCluexinfan-lead-cli auth status 看是否「会话通道: 就绪 ✓」。随时自检通道状态:xinfan-lead-cli auth status
CLI 返回退出码 2、或私海日报脚本提示"登录状态失效",都不是终态,不能一遇到就直接告诉用户"去重新登录"然后放弃这次操作。无论是用户正在对话中触发,还是定时任务无人值守触发,agent 都必须先自己走一遍:
https://newark.devops.xiaohongshu.com/seller/investClue,等 3~5 秒。多数 DIBP 环境此时会自动带出用户本人的登录态而无需任何人操作。xinfan-lead-cli auth status 确认是否已恢复「会话通道: 就绪 ✓」;恢复后立刻重新执行刚才失败的那一步(CLI 命令或日报脚本),不要把这次失败暴露给用户。这条规则适用于本文档所有提到"登录失效""鉴权失效"的地方,包括定时任务的执行内容——组装定时任务 prompt 时必须完整带上第 1~3 步的自愈重试逻辑,不能只写"提示用户重新登录"就把这一步省略掉;第 5 步的静默要求同样要带上。
XINFAN_LEAD_CDP_URL:浏览器调试端点,默认 http://127.0.0.1:18800。XINFAN_LEAD_DOMAIN:新帆域名,默认已指向生产域名 hawkeye.devops.xiaohongshu.com;如需临时指向其他环境用环境变量覆盖。auth set-token <token>:兜底路径,非主流程。仅当未来某环境确实签发了可手动注入的 cookie、或调试需要时才用;正常情况下不需要。xinfan-lead-cli commands # 1. 看有哪些子命令(path/method/mutating/verified/summary)
xinfan-lead-cli <子命令> --help # 2. 看这个命令怎么传参、有什么业务警示(人类可读)
xinfan-lead-cli <子命令> --schema # 2'. 同上,机器可读版(标准 JSON Schema,响应含嵌套 $defs)
xinfan-lead-cli <子命令> [--flag value ...] # 3. 调用:flag 由 schema 的 snake_case 字段名转 kebab-case
list-private-leads --industries 美妆 --industries 3C--plain-phone),不传视为 false/默认值enum 范围内,CLI 会在本地直接报错(退出码 1),不会真的发请求--dry-run:只打印会发出的 method/url/body(token 脱敏),不真正发请求--confirm:调用 5 个"写"命令(claim-lead/release-lead/update-follow-status/update-remark/update-accept-level)必须加,否则拒绝执行5 个写命令会真实修改线索状态;其中 claim-lead 认领后可以用 release-lead 释放回公海撤销,其余接口没有对应的撤销接口。执行前必须用业务语言把要做的改动讲清楚(改哪条线索、改成什么),拿到用户明确同意后才能真正执行——确认内容只说"要做什么",不要把 CLI 参数名(--confirm)或原始请求体 JSON 呈现给用户(那是讲给 agent 自己听的实现细节,见上「面向运营」一节)。生产环境公海线索 2 万+ 条,均为真实业务数据,应保持谨慎,不因为部分操作可撤销而降低确认标准。
| 退出码 | 含义 | agent 应对方式 |
|---|---|---|
| 0 | 成功 | 正常处理返回的 JSON |
| 1 | 用法错误(子命令/flag 不对、必填参数缺失、枚举值不合法、写命令缺 --confirm) | 修正参数后重试,不需要找用户 |
| 2 | 鉴权失效(会话通道未就绪或会话已过期) | 按「登录失效时的自愈规则」处理:先自己重新打开页面重试恢复,只有重试后仍需人工扫码才升级给用户,不要不重试就直接把失败甩给用户 |
| 3 | 上游业务错误(非鉴权类的 4xx/5xx 或业务报错) | 把报错翻译成业务语言告诉用户(比如"这条线索已经被别人认领了"),而不是原样贴报错文本;再判断是参数问题还是业务本身拒绝 |
| 4 | 网络错误(DNS/连接失败/超时) | 提示用户确认域名(XINFAN_LEAD_DOMAIN)是否有效、网络是否可达 |
已实测过的鉴权失效响应样本:HTTP 401 {"code":-100,"success":false,"msg":"无登录信息","data":{}}。
调用 CLI 拿到 JSON 后,不要把原始 JSON 贴给用户,也不要逐字段平铺。按下面的格式组织 Markdown 输出。目标是:运营在手机 Hi 上扫一眼就能抓住重点。
0,不要把 0 当作缺失值。YYYY/MM/DD HH:MM。列表数据的核心是让运营快速对比线索质量。每条线索一个紧凑表格,不要用一个超宽大表。默认每页查询并展示不超过 10 条。
私海列表格式:
---
**S2** 奢姿大码女装 | 已开店可客保 | 女装
- **亮点**:站内粉丝购买力和内容互动均处于行业领先水平,且供应链稳定性已通过站外近1年GMV验证
- **跟进**:采纳 无 | 跟进状态 待建联 | 备注 无
- **到期**:预计释放时间 2026/08/20 21:17(还剩约 6 天)
公海列表格式相同,但不展示“跟进”“到期”两行(公海线索未被认领,没有这两个概念):
---
**S0** source with u | 已开店可客保 | 女装
- **亮点**:站内粉丝规模和内容互动均处于行业领先水平
规则:
--- 分隔。- **标签**: 起头,行内多个字段用全角 | 分隔。get-lead-detail 查详情,那里才展示逐账号/逐店铺的完整数据表。quality_highlight 字段(CLI 本地算出来的,不是后端字段)决定要不要写、怎么写:
tier === "none"(facts 为空)时不展示这一行,不编“暂无亮点”这种话——没有亮点不需要额外强调。tier === "outstanding":可以用“行业领先/头部”一类肯定表述。tier === "fallback":语气要克制,用“处于同行业中等偏上水平”一类措辞,不要用“领先/头部”这种夸大词——40-80 分位不等于突出。facts 里给的事实,挑 1~3 个融合成一句自然语言,跟私海日报的“推荐理由”一样:禁止用“|”分隔罗列字段,禁止出现字段英文名(如 fans_dgmv_pct)或百分位数字本身。YYYY/MM/DD HH:MM;剩余天数按私海线索日报同样的口径算(Math.floor,已到期显示“已到期,可能随时被释放”,不到 1 天显示“不到1天”)。公海列表不展示这一行。当用户说类似“给我推荐些线索”“帮我推荐一下”“挑几条合适的线索给我”这样的话(不是明确要看某个筛选条件下的全部列表)时,查询公海列表要额外触发智能推荐排序:
详情按「线索概览 → 跟进 → 站内账号 → 站外店铺」展示,恢复紧凑横向基本信息布局:
**线索详情:奢姿大码女装**
分级 **S2** | 行业 女装 | 状态 已开店可客保 | 线索ID dfc41d7c...
**亮点**:站内粉丝购买力和内容互动均处于行业领先水平,且供应链稳定性已通过站外近1年GMV验证
**跟进**
采纳 无 | 跟进状态 待建联 | 备注 无
---
### 小红书账号:奢姿大码女装
**基本信息**
所在地 广东东莞 | 用户资产分 8568 | 专业号 已开通 | 站内店 已开通 | 广告账户 已开通
**内容能力**
| 指标 | 值 |
|---|---:|
| 粉丝数 | 2.48万 |
| 笔记数 | 0 |
| 笔记CES | 0 |
| 站内粉丝DGMV | 671.76万 |
| 交易粉丝人均DGMV | 686 |
| 近30天下单用户数 | 9792 |
| R4+粉丝占比 | 24.9% |
**粉丝画像**
性别:女性 98.3%,男性 1.7%
年龄:按接口返回的年龄层级或明确年龄段展示
R等级:R1 26.1%、R2 29.3%、R3 19.8%、R4 11.5%、R5 9.8%、R6 3.6%
**热门笔记**(有数据时展示,最多 5 条)
| 标题 | 点赞 | 收藏 | 评论 |
|---|---:|---:|---:|
| 笔记标题 | 1.2万 | 3000 | 500 |
---
### 淘天店铺:奢姿大码女装
**基本信息**
主营类目 女装/女士精品 | GMV分层 B6 | 店铺类型 企业店 | 所在地 广东东莞
店铺主体 东莞市优盛服饰有限公司 | 平台状态 未注册
**经营数据**
| 指标 | 值 |
|---|---:|
| 近一个月GMV | 850.11万 |
| 近一年GMV | 3160.38万 |
| 客单价 | ¥256.21 |
**热销商品**(最多 5 条)
| 商品 | 价格 | 月销 |
|---|---:|---:|
| 清新优雅提花收腰连衣裙 | ¥312 | 1174件 |
详情规则:
data.lead.quality_highlight(CLI 本地算出来的,不是后端字段),tier === "none" 时不展示这一行;outstanding 可以用“行业领先/头部”一类肯定表述,fallback 语气要克制(如“处于同行业中等偏上水平”);只用 facts 里的事实挑 1~3 个融合成一句话,禁止逐字段罗列、禁止出现字段英文名或百分位数字本身。跟列表视图不同,详情视图下面的表格照常展示完整数据,“亮点”只是加在概览区的一句快速摘要,不替代下面的表格。统计数据使用原来的紧凑布局:
**私海概览**
共 56 条线索 | 跟进中 12 | 已客保 8 | 已入驻 3
转化累计 GMV 1280.50万 | 公海可领 2100 条
执行写操作前,用自然语言确认,例如:
确认把「奢姿大码女装」的跟进状态改为「沟通中」?
不要展示请求参数、原始 JSON 或接口路径。执行后只说明业务结果。