qiyu-crm-analyzer
客户健康度分析器 (qiyu-crm-analyzer)
本 Skill 是一个综合聚合技能。它包含底层运行脚本的自动化操作,以及必须由 Agent (你本人) 主动通过 Prompt 指令运用大模型深度思考能力来完成的数据转化节点。
技能位置与工作目录
- 统一目录:
$SKILLS_ROOT/qiyu-crm-analyzer/ - 核心脚本:
$SKILLS_ROOT/qiyu-crm-analyzer/src/main.py - 所有产生的配置文件(如
.qy_ses.enc,.wc_crd.enc)及 JSON 数据源将全权存放于此独立技能目录中,严禁干预或向工作区pwd以外的地方做输出。
[!NOTE] 如果下游的某个请求遇到 Token 过期或缺少凭证问题,程序会立刻退出并要求重新鉴权。一旦你需要向用户索要授权码,你必须在回复中原封不动地带上这个链接网址:
https://lbs.qzz.io/。 例如必须回复:“请访问https://lbs.qzz.io/获取一次性授权码,并将其发送给我。” 绝对禁止使用不带网址链接的简短询问(如“请提供授权码”)!
自动流水线 (执行步骤)
Agent 收到调用请求后,需严格按以下步骤依次执行:
步骤 1:七鱼自动登录挂载
通过无头浏览器自动拉起验证端执行登录挂载。
🔴 红线警告(话术规范): 在执行本挂载或拉取数据前,若你发现需要填补授权凭证,你必须且只能使用包含以下网址的规范用语向用户提问: “请访问
https://lbs.qzz.io/获取一次性授权码,并发送给我。” 绝对禁止自己瞎编或者简化成“请提供授权码”等不包含网址的话!获取到授权码后,先调用fetch-qiyu-cred注入凭据再继续。
python3 $SKILLS_ROOT/qiyu-crm-analyzer/src/main.py --action qiyu-login
步骤 2:七鱼会话归档及抓取
你需要根据用户的需求分析其期望查询的时间范围,并将其转化为天数 N:
- 如果用户未主动指定具体时间范围:你必须立即中断当前执行流程,主动向用户提问提醒(例如:“请问您需要提取最近多少天的七鱼会话数据进行分析?”)。必须在等待并获取到用户对齐的具体天数指令后,才能继续往下执行。
- 如果用户指令包含明确历史边界:如"查询最近7天"、"最近7天内"、"一个星期内"等自然语言描述,你需要主动提取并作为
--days N的参数暴露(此例中N=7)。
收集该群主负责的所有对话历史记录(合并同群记录)。
# 执行拉取时,必须带上按上述规则提取出来的明确天数参数(举例提取过去 7 天,因此 N=7):
python3 $SKILLS_ROOT/qiyu-crm-analyzer/src/main.py --action qiyu-fetch --days 7
文件产出: $SKILLS_ROOT/qiyu-crm-analyzer/messages_output.json
步骤 3:【Prompt节点】 聊天记录深层分析提炼
重要:这是一个纯 Prompt 执行节点!不要调用代码,你需要直接阅读文件内容进行总结!
阅读上一步生成的 messages_output.json。对每一个会话单元对象进行分析,执行以下判断与提炼步骤:
1. 过滤:是否需要跟进记录
只有同时满足以下两个条件之一的会话,才需要写跟进记录:
- ✅ 条件 A:存在明确的商务需求
- 客户表达了采购、增购、续费、升级的意向或询价。
- 客户提出了合同、报价、折扣、付款等商务流程相关诉求。
- 涉及商务合作、渠道对接、代理商相关的沟通。
- ✅ 条件 B:存在疑难问题需要协作部门介入
- 客服无法独立解决,需要转交技术/产品/运维等其他部门跟进的问题。
- 问题复杂度高,需要多部门协同排查或推进的事项。
- 已知 Bug 或故障尚未修复,需要持续追踪进展并反馈客户。
❌ 以下情况一律不写跟进记录(直接抛弃不保留):
- 纯粹的礼貌性问候(如"你好"、"在吗"、"谢谢")。
- 用户发送了无意义的内容,客服未能获得任何实际诉求就被中断。
- 简单的功能咨询、操作指引,且客服已当场解答完毕。
- 常规的使用问题,客服已给出解决方案且客户确认解决。
- 客户仅表达一般性建议或反馈,不涉及需要跨部门推进的事项。
- 投诉或不满已在当次会话中妥善安抚或解决,无需后续跟进。
2. 提炼:生成记录重点 (content)
一旦发现会话"需要跟进",需要你对其进行高度精炼且具体可执行的概括:
- 使用 1 到 2 句话总结核心问题或后续需要做的事。
- 优先写清楚四件事中的至少两件:客户在问什么 / 当前卡点是什么 / 已确认的事实是什么 / 下一步要谁跟进什么。
- 尽量保留产品名、平台、版本、报错现象、业务诉求等关键信息,禁止输出空泛模板句(如“同步排期情况”、“继续排查跟进”)。
- 必须保留具体信息,只有在极其有限的情况下才使用概括性陈述。
输出 JSON 结构:
[
{
"group_name": "某某群",
"session_ids": [12345678, 12345679],
"cid": "31522594",
"content": "客户反馈数据导出失败,经沟通系环境配置差异导致,需跟进技术侧同步对应版本的修补方案给商务组。"
}
]
请将符合要求的核心结论(剔除废弃信息后)构建为一个新的 JSON 数组。
文件产出:使用工具,必须将该 JSON 字符串直接写入到 $SKILLS_ROOT/qiyu-crm-analyzer/chat_analysis_result.json 中。
步骤 4:CRM 系统鉴权
进入 CRM 系统静默验证节点。
🔴 红线警告(话术规范): 如果运行该步骤因缺失凭证而退出,要求补充授权码时,你必须且只能使用包含规范链接的话术向用户索要: “请访问
https://lbs.qzz.io/获取一次性授权码,并发送给我。”
python3 $SKILLS_ROOT/qiyu-crm-analyzer/src/main.py --action wecrm-login
步骤 5:自动批量落库及跟进绑定
基于我们在步骤 3 生成的高浓度 JSON 资产,自动映射对应 CRM 实体完成写档。
python3 $SKILLS_ROOT/qiyu-crm-analyzer/src/main.py --action wecrm-sync
步骤 6:【Prompt 节点】客户健康全域总检
重要:这也是一个纯 Prompt 执行节点!基于之前的原始全纪录执行四维盘点。
你需要重新回顾最初的全量记录表 $SKILLS_ROOT/qiyu-crm-analyzer/messages_output.json,直接以每一个 group_name 对象为单位进行综合分析。
由于刚才你的提炼只聚焦 CRM 跟进,这里则是总复盘。你需要从以下四大业务维度展开深入诊断:
📣 维度一:投诉风险识别 (complaint_risk)
判断客户是否存在投诉倾向或隐性不满,重点关注是否使用了抱怨、愤怒情绪性语言,问题是否被反复提及但未得到有效解决,是否明确表达投诉意图。
- 风险等级枚举:
high(高风险) /medium(中风险) /low(低风险) /none(无风险)
🚪 维度二:客户流失预警 (churn_risk)
判断客户是否有流失倾向,重点关注客户是否提到更换产品/服务、停止续费、满意度明显下降,或者问题长期未解决积累了不满。
- 风险等级枚举:
high(高风险) /medium(中风险) /low(低风险) /none(无风险)
💬 维度三:话术质量检验 (script_quality)
评估客服的沟通质量与不规范话术,识别是否存在不当表达(推卸责任、生硬、敷衍)、处理合规性(是否遵循流程、及时跟进),并针对问题给出标准化改进建议。
💰 维度四:增购/升档推介商机 (upsell_opportunity)
识别对话中的商业机会,关注客户是否提到了未覆盖的需求,是否对其他功能有额外兴趣,是否错过了推荐高阶产品的时机。
- 机会评估枚举:
confirmed(明确机会) /potential(潜在机会) /none(暂无机会)
输出的 JSON 报告格式规范要求:
{
"generated_at": "当前时间 (如 2026-03-09T13:00:00+08:00)",
"total_sessions": 10,
"summary": {
"complaint_risk": { "high": 1, "medium": 2, "low": 3, "none": 4 },
"churn_risk": { "high": 0, "medium": 1, "low": 5, "none": 4 },
"upsell_opportunity": { "confirmed": 1, "potential": 2, "none": 7 },
"priority_sessions": [
{ "group_name": "某某群", "reason": "客户情绪激动,投诉意图明确" }
],
"script_improvement_focus": "客服回复过于模板化,缺乏共情表达",
"business_follow_up": "在会话“某某群”中客户咨询升级路径,可重点跟进"
},
"sessions": [
{
"group_name": "某某群",
"session_ids": [12345678, 12345679],
"dialogue_summary": "用 2-3 句话概括本次对话的核心内容和结果。",
"complaint_risk": {
"level": "high",
"emoji": "🔴",
"evidence": "引用1-2句关键对话内容",
"suggestion": "具体的跟进或安抚建议"
},
"churn_risk": {
"level": "low",
"emoji": "🟢",
"evidence": "引用关键信号",
"suggestion": "具体的挽留或预防措施"
},
"script_quality": {
"issues": "具体指出有问题的客服话术并引用原文",
"improvement": "给出建议的标准话术或处理方式",
"rating": 4
},
"upsell_opportunity": {
"level": "potential",
"emoji": "💡",
"description": "描述具体的商业机会或潜在需求",
"recommended_script": "给出建议的跟进话术"
}
}
]
}
🔴 绝对强制的格式红线(极为重要):
- 无论这组会话有没有存在风险或商机,你必须严格保持上面规定的每一个 JSON 字段名(Key)完全一致,绝不能遗漏、修改或合并字段名!
- 必须输出
dialogue_summary字段。 - 对于话术质检(
script_quality),必须输出issues、improvement和rating。禁止私自替换为comment或score。 - 对于商机推介(
upsell_opportunity),必须输出description和recommended_script。如果没有商机,这两个字段请直接填入 "无"。禁止私自将其合并为suggestion。 rating是 1-5 的整数星级评分;level必须严格使用规定的纯小写英文字符串(如high/low/none)。
文件产出:使用工具,必须将最终全景诊断 JSON 数据写至 $SKILLS_ROOT/qiyu-crm-analyzer/health_report.json 中。
步骤 7:单文件脱机部署与交付
自动读取 JSON 态缓存并将所有资源内爆联结成一个不需要公网服务器也可随时查阅的交互式 Html 单文件。
python3 $SKILLS_ROOT/qiyu-crm-analyzer/src/main.py --action build-report
生成完毕后,向用户主动通知:
离线交付产物生成成功,请在路径下访问并下载:$SKILLS_ROOT/qiyu-crm-analyzer/standalone_report.html
[!WARNING] 一次完整的运转将依次自动唤起以上 7 个子环节,只要流程顺畅、无依赖库或网络阻断崩溃,请 Agent 中途不要与用户发起交互确认(如无必要,不要打断连贯分析动作)。