
Lark Workflow Crm
- 7 installs
- 60 repo stars
- Updated April 13, 2026
- liangdabiao/lark-workflow-feishu-cli
Helps with automation & workflows tasks.
About
lark-workflow-crm is a Claude Code skill for automation & workflows. It helps solo builders move faster with AI-assisted development.
- lark-workflow-crm
- Automation & Workflows
- AI-coding skill
Lark Workflow Crm by the numbers
- 7 all-time installs (skills.sh)
- Ranked #1,587 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/liangdabiao/lark-workflow-feishu-cli --skill lark-workflow-crmAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 7 |
|---|---|
| repo stars | ★ 60 |
| Last updated | April 13, 2026 |
| Repository | liangdabiao/lark-workflow-feishu-cli ↗ |
What it does
Helps with automation & workflows tasks.
Files
微型团队 CRM 工作流
CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),其中包含认证、权限处理
适用场景
- "帮我创建一个CRM系统" / "搭建销售管理" / "新建CRM"
- "新增客户:北京星辰科技,对接人王总" / "客户建档"
- "给北京星辰创建商机:ERP采购,50万" / "商机跟进"
- "跟进记录:今天电话联系了王总,约下周三面访"
- "看看销售漏斗" / "本月赢单了多少" / "业绩排行"
- "生成今天的销售日报" / "本周跟进汇总"
- "创建客户登记表单" / "咨询表单"
- "创建销售看板" / "销售仪表盘"
- "跟进提醒" / "超时预警" / "赢单报喜" / "每周销售简报"
前置条件
仅支持 user 身份。执行前确保已授权:
lark-cli auth login --domain base,im,contact系统架构
微型团队 CRM (lark-workflow-crm)
│
├── 数据层:飞书多维表格 (Bitable)
│ ├── 客户信息主表 (customers) — 客户档案
│ ├── 商机管理表 (opportunities) — 销售漏斗
│ └── 跟进记录表 (follow_ups) — 沟通记录
│
├── 计算层
│ ├── 赢单概率建议 (formula) — 根据商机阶段自动建议概率
│ ├── 商机天数 (formula) — 距商机创建的天数
│ ├── 客户商机数量 (formula) — 关联商机计数
│ ├── 客户累计赢单金额 (formula) — 关联赢单金额汇总
│ └── 商机跟进次数 (formula) — 关联跟进计数
│
├── 关联关系(双向)
│ ├── customers ↔ opportunities — 一个客户多个商机
│ ├── customers ↔ follow_ups — 跟进记录关联客户
│ └── opportunities ↔ follow_ups — 跟进记录关联商机
│
├── 视图层
│ ├── 商机阶段看板 (Kanban) — 按阶段分列拖拽
│ ├── 我的商机 — 当前用户负责的商机
│ ├── 跟进时间线 — 按时间倒序的跟进记录
│ └── 本月赢单 — 当月赢单列表
│
├── 仪表盘
│ ├── 销售漏斗 (funnel) — 各阶段商机数量
│ ├── 本月赢单金额 (statistics) — SUM WHERE 阶段=赢单
│ ├── 商机总金额 (statistics) — 在途商机金额
│ ├── 客户数量 (statistics) — 总客户数
│ ├── 阶段分布 (pie) — 各阶段占比
│ ├── 负责人业绩排行 (column) — 赢单金额排行
│ └── 本周跟进 (table) — 本周跟进记录
│
├── 表单
│ └── 客户咨询登记表 — 客户自助提交咨询
│
├── 交互层:用户自然语言指令
│ ├── 系统初始化 → 创建 Base + 表 + 字段 + 关联 + 视图 + 仪表盘 + 表单
│ ├── 日常操作 → 客户建档 / 商机管理 / 跟进记录
│ └── 数据分析 → 漏斗查询 / 业绩统计 / 销售日报
│
└── 通知层:飞书消息
├── 每日跟进提醒
├── 超时未跟进预警
├── 赢单报喜通知
└── 每周销售简报---
Agent 核心规则
1. 只使用 `lark-cli base +...` 原子命令 — 不走 lark-cli api 直接调用 2. 建表必须先建空表再逐个加字段 — +table-create 不带 --fields 参数,先建空表再用 +field-create 逐个加字段,每次间隔 1.5 秒 3. 关联字段必须使用双向关联 — bidirectional: true,否则无法在公式中做跨表聚合 4. 跨表计算优先使用 formula 字段 — 公式字段是 lookup 的超集,能用 formula 就不用 lookup 5. 公式字段创建前先读 guide — 读取 `../lark-base/references/formula-field-guide.md` 6. `+data-query` 的 table-id 放在 DSL 中 — 不支持 --table-id 参数,需放在 --dsl 的 datasource.table.tableId 中 7. `+data-query` 只支持存储字段 — 不支持公式字段、lookup 字段、关联字段做聚合 8. 写记录前先拿字段结构 — +field-list 确认字段名和类型 9. 表名/字段名精确匹配 — 禁止凭自然语言猜测,必须来自 +table-list / +field-list 返回值 10. `+xxx-list` 禁止并发 — 所有 list 命令串行执行 11. 写入串行 + 间隔 — +record-upsert 串行,间隔 0.5-1 秒 12. 分页拉取 — +record-list --limit 200,用 offset 分页 13. 跟进记录中提及阶段变更时同步更新商机 — 用户说"推进到方案报价"时,更新对应商机的商机阶段字段 14. 创建仪表盘前先读 guide — 读取 `../lark-base/references/dashboard-block-data-config.md` 15. 创建表单前先读 guide — 读取 `../lark-base/references/lark-base-form-create.md`
---
Phase 1:系统初始化
Step 1.1: 创建 Base
lark-cli base +base-create --name "微型团队CRM" --as user记录返回的 base_token(后续所有命令需要)。
Step 1.2: 创建数据表(先建空表,间隔 2 秒)
IMPORTANT:不要使用 --fields 参数一次性创建多字段,容易触发限流。# 表 1:客户信息主表
lark-cli base +table-create --base-token "<base_token>" --name "客户信息" --as user
sleep 2
# 表 2:商机管理表
lark-cli base +table-create --base-token "<base_token>" --name "商机管理" --as user
sleep 2
# 表 3:跟进记录表
lark-cli base +table-create --base-token "<base_token>" --name "跟进记录" --as userStep 1.3: 获取各表 table_id
lark-cli base +table-list --base-token "<base_token>" --as user记录各表的 table_id。
Step 1.4: 逐个添加存储字段(每创建一个间隔 1.5 秒)
客户信息表字段
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" --json '{"type":"text","name":"客户名称"}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" --json '{"type":"select","name":"客户类型","multiple":false,"options":[{"name":"个人客户"},{"name":"企业客户"}]}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" --json '{"type":"text","name":"联系人"}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" --json '{"type":"text","name":"手机号","style":{"type":"phone"}}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" --json '{"type":"text","name":"邮箱","style":{"type":"email"}}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" --json '{"type":"select","name":"行业","multiple":false,"options":[{"name":"互联网"},{"name":"金融"},{"name":"教育"},{"name":"制造业"},{"name":"零售"},{"name":"其他"}]}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" --json '{"type":"select","name":"公司规模","multiple":false,"options":[{"name":"1-10人"},{"name":"11-50人"},{"name":"51-200人"},{"name":"200人以上"}]}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" --json '{"type":"select","name":"来源渠道","multiple":false,"options":[{"name":"主动咨询"},{"name":"转介绍"},{"name":"展会"},{"name":"线上广告"},{"name":"社群"},{"name":"其他"}]}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" --json '{"type":"text","name":"地址"}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" --json '{"type":"user","name":"负责人","multiple":false}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" --json '{"type":"select","name":"重要程度","multiple":false,"options":[{"name":"高"},{"name":"中"},{"name":"低"}]}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" --json '{"type":"select","name":"客户状态","multiple":false,"options":[{"name":"活跃"},{"name":"沉睡"},{"name":"流失"}]}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" --json '{"type":"text","name":"备注"}' --as user
sleep 2商机管理表字段
lark-cli base +field-create --base-token "<base_token>" --table-id "<opportunities_table_id>" --json '{"type":"text","name":"商机名称"}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<opportunities_table_id>" --json '{"type":"number","name":"商机金额","style":{"type":"currency","precision":2,"currency_code":"CNY"}}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<opportunities_table_id>" --json '{"type":"select","name":"商机阶段","multiple":false,"options":[{"name":"待接触"},{"name":"需求确认"},{"name":"方案报价"},{"name":"商务谈判"},{"name":"赢单"},{"name":"丢单"}]}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<opportunities_table_id>" --json '{"type":"user","name":"负责人","multiple":false}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<opportunities_table_id>" --json '{"type":"datetime","name":"预计成交日期","style":{"format":"yyyy-MM-dd"}}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<opportunities_table_id>" --json '{"type":"text","name":"竞争对手"}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<opportunities_table_id>" --json '{"type":"select","name":"丢单原因","multiple":false,"options":[{"name":"价格"},{"name":"功能"},{"name":"竞品"},{"name":"无预算"},{"name":"项目取消"},{"name":"其他"}]}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<opportunities_table_id>" --json '{"type":"select","name":"商机来源","multiple":false,"options":[{"name":"新开发"},{"name":"老客户增购"},{"name":"转介绍"}]}' --as user
sleep 2
# 添加系统字段:创建时间(公式字段"商机天数"依赖此字段)
lark-cli base +field-create --base-token "<base_token>" --table-id "<opportunities_table_id>" --json '{"type":"created_at","name":"创建时间","style":{"format":"yyyy-MM-dd HH:mm"}}' --as user跟进记录表字段
lark-cli base +field-create --base-token "<base_token>" --table-id "<follow_ups_table_id>" --json '{"type":"select","name":"跟进方式","multiple":false,"options":[{"name":"电话"},{"name":"微信"},{"name":"面访"},{"name":"邮件"},{"name":"视频会议"},{"name":"其他"}]}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<follow_ups_table_id>" --json '{"type":"text","name":"跟进摘要"}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<follow_ups_table_id>" --json '{"type":"text","name":"客户反馈"}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<follow_ups_table_id>" --json '{"type":"text","name":"下一步计划"}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<follow_ups_table_id>" --json '{"type":"datetime","name":"下次跟进时间","style":{"format":"yyyy-MM-dd HH:mm"}}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<follow_ups_table_id>" --json '{"type":"user","name":"跟进人","multiple":false}' --as user
sleep 1.5
lark-cli base +field-create --base-token "<base_token>" --table-id "<follow_ups_table_id>" --json '{"type":"select","name":"商机阶段变更","multiple":false,"options":[{"name":"无变更"},{"name":"推进到下一阶段"},{"name":"退回上一阶段"},{"name":"赢单"},{"name":"丢单"}]}' --as user
sleep 1.5
# 添加系统字段:创建时间(公式字段"最后跟进时间"依赖此字段)
lark-cli base +field-create --base-token "<base_token>" --table-id "<follow_ups_table_id>" --json '{"type":"created_at","name":"创建时间","style":{"format":"yyyy-MM-dd HH:mm"}}' --as userStep 1.5: 创建双向关联字段(每创建一个间隔 2 秒)
CRITICAL:关联字段必须使用 bidirectional: true,否则无法在公式/lookup 中做跨表聚合。# 商机管理表 → 客户信息表
lark-cli base +field-create --base-token "<base_token>" --table-id "<opportunities_table_id>" \
--json '{"type":"link","name":"关联客户","link_table":"客户信息","bidirectional":true,"bidirectional_link_field_name":"关联商机"}' \
--as user
sleep 2
# 跟进记录表 → 客户信息表
lark-cli base +field-create --base-token "<base_token>" --table-id "<follow_ups_table_id>" \
--json '{"type":"link","name":"关联客户","link_table":"客户信息","bidirectional":true,"bidirectional_link_field_name":"跟进记录"}' \
--as user
sleep 2
# 跟进记录表 → 商机管理表
lark-cli base +field-create --base-token "<base_token>" --table-id "<follow_ups_table_id>" \
--json '{"type":"link","name":"关联商机","link_table":"商机管理","bidirectional":true,"bidirectional_link_field_name":"跟进记录"}' \
--as user
sleep 2Step 1.6: 创建公式字段
IMPORTANT:创建公式字段前 MUST 先读取 `../lark-base/references/formula-field-guide.md`,创建后追加 --i-have-read-guide商机管理表:赢单概率建议
根据商机阶段自动建议赢单概率。
lark-cli base +field-create --base-token "<base_token>" --table-id "<opportunities_table_id>" \
--json '{"type":"formula","name":"赢单概率建议","expression":"SWITCH([商机阶段], \"待接触\", 10, \"需求确认\", 30, \"方案报价\", 50, \"商务谈判\", 75, \"赢单\", 100, 0)"}' \
--i-have-read-guide \
--as user
sleep 2商机管理表:商机天数
距商机创建的天数。
lark-cli base +field-create --base-token "<base_token>" --table-id "<opportunities_table_id>" \
--json '{"type":"formula","name":"商机天数","expression":"DAYS(NOW(), [创建时间])"}' \
--i-have-read-guide \
--as user
sleep 2客户信息表:客户商机数量
通过关联字段跨表计数。
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" \
--json '{"type":"formula","name":"商机数量","expression":"COUNTA([关联商机])"}' \
--i-have-read-guide \
--as user
sleep 2客户信息表:客户累计赢单金额
通过公式跨表条件聚合。
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" \
--json '{"type":"formula","name":"累计赢单金额","expression":"SUM([关联商机].[商机金额].FILTER([关联商机].[商机阶段] = \"赢单\"))"}' \
--i-have-read-guide \
--as user
sleep 2客户信息表:最后跟进时间
取跟进记录中最近一次跟进时间。
lark-cli base +field-create --base-token "<base_token>" --table-id "<customers_table_id>" \
--json '{"type":"formula","name":"最后跟进时间","expression":"MAX([跟进记录].[创建时间])"}' \
--i-have-read-guide \
--as user
sleep 2注意:跟进记录表的创建时间是created_at系统字段,公式中通过双向关联字段[跟进记录]引用。确保跟进记录表已创建created_at系统字段(Step 1.4 中已添加)。
商机管理表:跟进次数
通过关联字段跨表计数。
lark-cli base +field-create --base-token "<base_token>" --table-id "<opportunities_table_id>" \
--json '{"type":"formula","name":"跟进次数","expression":"COUNTA([跟进记录])"}' \
--i-have-read-guide \
--as user如果公式中使用created_at系统字段,需要用+table-get获取实际系统字段名(可能叫"创建时间"),确保公式中的字段名与+field-list返回值一致。
Step 1.7: 创建视图
视图 1:商机阶段看板(Kanban)
lark-cli base +view-create --base-token "<base_token>" --table-id "<opportunities_table_id>" \
--json '{"name":"商机阶段看板","type":"kanban"}' \
--as user
sleep 2
# 设置看板分组:按商机阶段分组
lark-cli base +view-set-group --base-token "<base_token>" --table-id "<opportunities_table_id>" --view-id "<kanban_view_id>" \
--json '[{"field":"商机阶段"}]' \
--as user视图 2:跟进时间线
lark-cli base +view-create --base-token "<base_token>" --table-id "<follow_ups_table_id>" \
--json '{"name":"跟进时间线","type":"grid"}' \
--as user
sleep 2
# 设置排序:按创建时间倒序
lark-cli base +view-set-sort --base-token "<base_token>" --table-id "<follow_ups_table_id>" --view-id "<timeline_view_id>" \
--json '[{"field_name":"创建时间","desc":true}]' \
--as user视图 3:本月赢单
lark-cli base +view-create --base-token "<base_token>" --table-id "<opportunities_table_id>" \
--json '{"name":"本月赢单","type":"grid"}' \
--as user
sleep 2
# 设置筛选:商机阶段 = 赢单
lark-cli base +view-set-filter --base-token "<base_token>" --table-id "<opportunities_table_id>" --view-id "<won_view_id>" \
--json '{"conjunction":"and","conditions":[{"field_name":"商机阶段","operator":"is","value":["赢单"]}]}' \
--as userStep 1.8: 创建仪表盘
IMPORTANT:创建仪表盘 Block 前先读取 `../lark-base/references/dashboard-block-data-config.md`
# 创建仪表盘
lark-cli base +dashboard-create --base-token "<base_token>" --name "销售看板" --as user记录返回的 dashboard_id。
Block 1:销售漏斗
lark-cli base +dashboard-block-create --base-token "<base_token>" --dashboard-id "<dashboard_id>" \
--name "销售漏斗" --type funnel \
--data-config '{"table_name":"商机管理","count_all":true,"group_by":[{"field_name":"商机阶段","mode":"integrated"}]}' \
--as user
sleep 1.5Block 2:本月赢单金额
lark-cli base +dashboard-block-create --base-token "<base_token>" --dashboard-id "<dashboard_id>" \
--name "本月赢单金额" --type statistics \
--data-config '{"table_name":"商机管理","series":[{"field_name":"商机金额","rollup":"SUM"}],"filter":{"conjunction":"and","conditions":[{"field_name":"商机阶段","operator":"is","value":"赢单"}]}}' \
--as user
sleep 1.5Block 3:商机总金额(在途)
lark-cli base +dashboard-block-create --base-token "<base_token>" --dashboard-id "<dashboard_id>" \
--name "商机总金额" --type statistics \
--data-config '{"table_name":"商机管理","series":[{"field_name":"商机金额","rollup":"SUM"}],"filter":{"conjunction":"and","conditions":[{"field_name":"商机阶段","operator":"isNot","value":"赢单"},{"field_name":"商机阶段","operator":"isNot","value":"丢单"}]}}' \
--as user
sleep 1.5Block 4:客户数量
lark-cli base +dashboard-block-create --base-token "<base_token>" --dashboard-id "<dashboard_id>" \
--name "客户总数" --type statistics \
--data-config '{"table_name":"客户信息","count_all":true}' \
--as user
sleep 1.5Block 5:阶段分布
lark-cli base +dashboard-block-create --base-token "<base_token>" --dashboard-id "<dashboard_id>" \
--name "阶段分布" --type pie \
--data-config '{"table_name":"商机管理","count_all":true,"group_by":[{"field_name":"商机阶段","mode":"integrated"}]}' \
--as user
sleep 1.5Block 6:负责人业绩排行
lark-cli base +dashboard-block-create --base-token "<base_token>" --dashboard-id "<dashboard_id>" \
--name "负责人业绩排行" --type column \
--data-config '{"table_name":"商机管理","series":[{"field_name":"商机金额","rollup":"SUM"}],"group_by":[{"field_name":"负责人","mode":"integrated"}],"filter":{"conjunction":"and","conditions":[{"field_name":"商机阶段","operator":"is","value":"赢单"}]}}' \
--as user
sleep 1.5Step 1.9: 创建表单
在客户信息表上创建客户咨询登记表单,方便客户自助提交信息。
lark-cli base +form-create --base-token "<base_token>" --table-id "<customers_table_id>" \
--name "客户咨询登记" \
--description "欢迎填写咨询信息,我们会尽快与您联系" \
--as user表单创建后,可使用 +form-questions-list 查看已有问题,再用 +form-questions-create 添加或调整问题。
---
Phase 2:客户管理
2.1 新增客户
lark-cli base +record-upsert --base-token "<base_token>" --table-id "<customers_table_id>" \
--json '{"客户名称":"北京星辰科技有限公司","客户类型":"企业客户","联系人":"王总","手机号":"138xxxx","邮箱":"wang@xx.com","行业":"互联网","公司规模":"51-200人","来源渠道":"展会","负责人":[{"id":"ou_xxx"}],"重要程度":"高","备注":""}' \
--as userAgent 处理逻辑: 1. 解析用户输入:提取客户名称、客户类型、联系人、手机、邮箱、行业、规模、来源、负责人、重要程度、备注 2. 未提供的字段留空 3. 行业/公司规模/来源渠道需匹配已有选项,不在选项中的需提醒用户 4. 人员字段需要 user_id,可通过 contact +search-user 查找
新增客户回复格式:
客户创建成功!
客户名称:北京星辰科技有限公司
客户类型:企业客户
联系人:王总
手机号:138xxxx
行业:互联网
负责人:当前用户2.2 修改客户信息
# 先查询获取 record_id
lark-cli base +record-list --base-token "<base_token>" --table-id "<customers_table_id>" --as user
# 更新客户信息(Delta 更新,只更新用户指定的字段)
lark-cli base +record-upsert --base-token "<base_token>" --table-id "<customers_table_id>" \
--record-id "<record_id>" \
--json '{"重要程度":"高","备注":"重点客户"}' \
--as user2.3 查询客户列表
lark-cli base +record-list --base-token "<base_token>" --table-id "<customers_table_id>" \
--limit 200 --as userAgent 处理:
- 按用户指定的条件筛选(行业、负责人、重要程度等)
- 整理成易读表格格式
2.4 删除客户
lark-cli base +record-delete --base-token "<base_token>" --table-id "<customers_table_id>" \
--record-id "<record_id>" --yes --as user---
Phase 3:商机管理
3.1 创建商机
lark-cli base +record-upsert --base-token "<base_token>" --table-id "<opportunities_table_id>" \
--json '{"商机名称":"企业IM系统采购","关联客户":[{"id":"<customer_record_id>"}],"商机金额":500000,"商机阶段":"待接触","负责人":[{"id":"ou_xxx"}],"预计成交日期":"2026-06-30","竞争对手":"","商机来源":"新开发"}' \
--as user关联字段值格式:关联字段的值为 [{id: "recXXXX"}] 对象数组格式。日期格式:使用 YYYY-MM-DD HH:mm:ss 字符串格式。Agent 处理逻辑: 1. 解析用户输入:提取商机名称、关联客户、金额、阶段、负责人、预计成交日期等 2. 如果用户提供了客户名称,先在客户表中查找对应的 record_id 3. 客户不存在时,询问是否要同时创建客户记录 4. 默认阶段为"待接触",默认商机来源为"新开发"
创建商机回复格式:
商机创建成功!
商机名称:企业IM系统采购
关联客户:北京星辰科技
商机金额:¥500,000.00
商机阶段:待接触
负责人:当前用户
预计成交日期:2026-06-303.2 推进商机阶段
当用户在跟进记录中提及阶段变更,或直接要求推进商机时:
# 更新商机阶段
lark-cli base +record-upsert --base-token "<base_token>" --table-id "<opportunities_table_id>" \
--record-id "<opportunity_record_id>" \
--json '{"商机阶段":"方案报价"}' \
--as userAgent 处理逻辑: 1. 用户说"推进到方案报价"→ 更新商机阶段为"方案报价" 2. 用户说"赢单了"→ 更新商机阶段为"赢单" 3. 用户说"丢单了"→ 更新商机阶段为"丢单",并询问丢单原因 4. 阶段变更后自动更新赢单概率建议(formula 字段自动计算)
阶段顺序:待接触 → 需求确认 → 方案报价 → 商务谈判 → 赢单/丢单
3.3 查询商机列表
lark-cli base +record-list --base-token "<base_token>" --table-id "<opportunities_table_id>" \
--limit 200 --as userAgent 处理:
- 按阶段、负责人、客户等条件筛选
- 按商机金额排序
3.4 销售漏斗查询
lark-cli base +data-query --base-token "<base_token>" \
--dsl '{
"datasource": {"type": "table", "table": {"tableId": "<opportunities_table_id>"}},
"dimensions": [{"field_name":"商机阶段","alias":"stage"}],
"measures": [
{"field_name":"商机金额","aggregation":"sum","alias":"total_amount"},
{"field_name":"商机名称","aggregation":"count","alias":"count"}
]
}' \
--as user回复格式:
销售漏斗
| 阶段 | 数量 | 金额 |
|------|------|------|
| 待接触 | 12 | ¥1,200,000 |
| 需求确认 | 8 | ¥800,000 |
| 方案报价 | 5 | ¥500,000 |
| 商务谈判 | 3 | ¥450,000 |
| 赢单 | 2 | ¥200,000 |
| 丢单 | 1 | ¥100,000 |---
Phase 4:跟进记录
4.1 添加跟进记录
lark-cli base +record-upsert --base-token "<base_token>" --table-id "<follow_ups_table_id>" \
--json '{"关联客户":[{"id":"<customer_record_id>"}],"关联商机":[{"id":"<opportunity_record_id>"}],"跟进方式":"电话","跟进摘要":"电话联系了王总,对方对方案比较满意","客户反馈":"认可方案,但价格偏高","下一步计划":"下周三面访确认细节","下次跟进时间":"2026-04-16 14:00","跟进人":[{"id":"ou_xxx"}],"商机阶段变更":"无变更"}' \
--as userAgent 处理逻辑: 1. 解析用户输入:提取跟进方式、摘要、客户反馈、下一步计划、下次跟进时间、阶段变更 2. 查找关联客户和商机的 record_id 3. 关键:如果用户提到阶段变更(如"对方同意推进到方案报价"),同步更新对应商机的商机阶段 4. 日期默认当天
跟进记录回复格式:
跟进记录已保存!
客户:北京星辰科技
商机:企业IM系统采购
跟进方式:电话
跟进摘要:电话联系了王总,对方对方案比较满意
下一步计划:下周三面访确认细节
下次跟进时间:2026-04-16 14:004.2 查询跟进记录
lark-cli base +record-list --base-token "<base_token>" --table-id "<follow_ups_table_id>" \
--limit 200 --as user4.3 销售日报
Agent 处理逻辑:
1. 查询今天所有跟进记录(按创建时间筛选当天)
2. 查询今天新增的客户(按创建时间筛选当天)
3. 查询今天新增的商机
4. 查询今天发生阶段变更的商机
5. 生成结构化日报日报格式:
销售日报 — 2026-04-13
一、今日跟进(3 条)
| 客户 | 商机 | 方式 | 摘要 | 阶段变更 |
|------|------|------|------|---------|
| 北京星辰 | IM采购 | 电话 | 方案满意 | → 方案报价 |
| 上海悦达 | 数据服务 | 微信 | 初步接触 | 无 |
二、新增客户(1 家)
- 深圳华创科技,互联网行业,来自线上广告
三、新增商机(2 个)
- 深圳华创科技:云服务采购 ¥300,000(待接触)
- 北京星辰科技:IM系统采购 ¥500,000(待接触)
四、阶段变更(1 个)
- 北京星辰 IM采购:待接触 → 方案报价
五、今日提醒
- 1 个商机超 7 天未跟进
- 2 个客户待跟进---
Phase 5:数据分析
5.1 业绩排行
lark-cli base +data-query --base-token "<base_token>" \
--dsl '{
"datasource": {"type": "table", "table": {"tableId": "<opportunities_table_id>"}},
"dimensions": [{"field_name":"负责人","alias":"owner"}],
"measures": [
{"field_name":"商机金额","aggregation":"sum","alias":"total_amount"},
{"field_name":"商机名称","aggregation":"count","alias":"count"}
],
"filters": {"type": 1, "conjunction": "and", "conditions": [{"field_name":"商机阶段","operator":"is","value": ["赢单"]}]}
}' \
--as user5.2 本月赢单统计
lark-cli base +data-query --base-token "<base_token>" \
--dsl '{
"datasource": {"type": "table", "table": {"tableId": "<opportunities_table_id>"}},
"measures": [
{"field_name":"商机金额","aggregation":"sum","alias":"total_amount"},
{"field_name":"商机名称","aggregation":"count","alias":"count"}
],
"filters": {"type": 1, "conjunction": "and", "conditions": [{"field_name":"商机阶段","operator":"is","value": ["赢单"]}]}
}' \
--as user5.3 商机转化率
# 先获取各阶段数量
lark-cli base +data-query --base-token "<base_token>" \
--dsl '{
"datasource": {"type": "table", "table": {"tableId": "<opportunities_table_id>"}},
"dimensions": [{"field_name":"商机阶段","alias":"stage"}],
"measures": [{"field_name":"商机名称","aggregation":"count","alias":"count"}]
}' \
--as userAgent 计算各阶段转化率:
商机转化分析
| 阶段 | 数量 | 转化率 |
|------|------|--------|
| 待接触 | 12 | 100%(入口) |
| 需求确认 | 8 | 67% |
| 方案报价 | 5 | 42% |
| 商务谈判 | 3 | 25% |
| 赢单 | 2 | 17% |
整体赢单率:17%(2/12)---
Phase 6:自动化提醒
6.1 每日跟进提醒
查询今天需要跟进的内容:
# 查询下次跟进时间 = 今天的跟进记录
lark-cli base +record-list --base-token "<base_token>" --table-id "<follow_ups_table_id>" \
--limit 200 --as user
# AI 筛选:下次跟进时间 = 今天
# 查询预计成交日期 = 今天且未关单的商机
lark-cli base +record-list --base-token "<base_token>" --table-id "<opportunities_table_id>" \
--limit 200 --as user
# AI 筛选:预计成交日期 = 今天 AND 商机阶段 NOT IN (赢单, 丢单)发送飞书消息:
lark-cli im +messages-send --chat-id "<chat_id>" \
--msg-type "interactive" \
--content '{
"config": {"wide_screen_mode": true},
"header": {"title": {"tag": "plain_text", "content": "今日跟进提醒"}, "template": "blue"},
"elements": [
{"tag": "div", "text": {"tag": "lark_md", "content": "**跟进提醒**\n- 客户A:下次跟进时间到,计划:XXX\n\n**商机提醒**\n- 商机B:预计今天成交,金额:XXX"}}
]
}' \
--as user重要:发送消息前需先读取 `../lark-im/SKILL.md` 了解消息发送规则。
6.2 超时未跟进预警
# 查询超过 7 天未跟进的商机
lark-cli base +record-list --base-token "<base_token>" --table-id "<opportunities_table_id>" \
--limit 200 --as user
# AI 筛选:商机阶段 NOT IN (赢单, 丢单) AND 跟进次数 > 0 AND 最后跟进时间 > 7 天前消息格式:
超时未跟进预警
以下商机已超过 7 天未跟进:
| 商机 | 客户 | 阶段 | 未跟进天数 |
|------|------|------|-----------|
| 商机A | 客户A | 方案报价 | 8 天 |
| 商机B | 客户B | 需求确认 | 12 天 |6.3 赢单报喜
当商机阶段变更为「赢单」时,发送飞书群消息通知:
lark-cli im +messages-send --chat-id "<chat_id>" \
--msg-type "interactive" \
--content '{
"config": {"wide_screen_mode": true},
"header": {"title": {"tag": "plain_text", "content": "赢单喜报!"}, "template": "green"},
"elements": [
{"tag": "div", "text": {"tag": "lark_md", "content": "商机:XX公司 ERP 采购\n金额:¥100,000\n负责人:@用户\n商机周期:XX天"}}
]
}' \
--as user6.4 每周销售简报
Agent 处理逻辑:
1. 汇总上周新增客户数(按创建时间筛选)
2. 汇总上周新增商机数和金额
3. 汇总上周赢单数和金额
4. 汇总当前漏斗各阶段数量和金额
5. 生成结构化简报并发送简报格式:
周销售简报(上周 2026-04-07 ~ 2026-04-13)
一、关键指标
- 新增客户:5 家
- 新增商机:8 个,总金额 ¥500,000
- 赢单:3 个,金额 ¥200,000
- 丢单:1 个,金额 ¥50,000
二、当前漏斗
| 阶段 | 数量 | 金额 |
|------|------|------|
| 待接触 | 12 | ¥1,200,000 |
| 需求确认 | 8 | ¥800,000 |
| 方案报价 | 5 | ¥500,000 |
| 商务谈判 | 3 | ¥450,000 |
三、需关注
- 3 个商机超 7 天未跟进
- 2 个商机预计本周成交---
Phase 7:表单管理
7.1 创建客户咨询登记表单
lark-cli base +form-create --base-token "<base_token>" --table-id "<customers_table_id>" \
--name "客户咨询登记" \
--description "欢迎填写咨询信息,我们会尽快与您联系" \
--as user7.2 查看和配置表单问题
# 查看已有问题
lark-cli base +form-questions-list --base-token "<base_token>" --table-id "<customers_table_id>" --form-id "<form_id>" --as user
# 添加/修改问题
lark-cli base +form-questions-create --base-token "<base_token>" --table-id "<customers_table_id>" --form-id "<form_id>" \
--json '[{"name":"客户名称","type":"input"},{"name":"联系电话","type":"input"},{"name":"咨询内容","type":"textarea"}]' \
--as user---
意图 → 命令索引
| 意图 | 推荐命令 | 备注 |
|---|---|---|
| 创建CRM系统 | +base-create → 3 × +table-create → 逐个 +field-create → 双向关联 → formula → 视图 → 仪表盘 → 表单 | 按 Step 1 顺序执行 |
| 新增客户 | +record-upsert → customers 表 | |
| 修改客户 | +record-list → +record-upsert → customers 表 | 先查 record_id |
| 删除客户 | +record-delete → customers 表 | 带 --yes |
| 查询客户 | +record-list → customers 表 | AI 过滤 |
| 创建商机 | +record-list(查客户)→ +record-upsert → opportunities 表 | 关联客户 |
| 推进商机 | +record-upsert → opportunities 表 | 更新商机阶段 |
| 查看商机 | +record-list → opportunities 表 | |
| 销售漏斗 | +data-query → opportunities 表 | 按阶段聚合 |
| 添加跟进 | +record-upsert → follow_ups 表 | 如有阶段变更同步更新商机 |
| 销售日报 | +record-list → follow_ups + customers + opportunities 表 | AI 汇总 |
| 业绩排行 | +data-query → opportunities 表 | 赢单金额按负责人聚合 |
| 跟进提醒 | +record-list → follow_ups + opportunities → im +messages-send | |
| 超时预警 | +record-list → opportunities → im +messages-send | |
| 赢单报喜 | im +messages-send | |
| 每周简报 | +record-list + +data-query → im +messages-send | |
| 创建表单 | +form-create → +form-questions-create | |
| 创建看板 | +dashboard-create → +dashboard-block-create | 先读 dashboard guide |
---
常见错误速查
| 错误场景 | 原因 | 解决方案 |
|---|---|---|
+table-create --fields 限流 800004135 | 一次性创建多字段触发限流 | 先建空表,再用 +field-create 逐个加字段,间隔 1.5 秒 |
| 公式字段跨表查询返回全表结果 | 关联字段非双向 | 关联字段必须 bidirectional: true |
| 单向关联不能改为双向 | API 限制 unsafe_operation_blocked | 删除旧关联字段,重新创建双向关联 |
+data-query unknown flag --table-id | 该命令不支持 --table-id | 把 table-id 放在 --dsl 的 datasource.table.tableId 中 |
+data-query 不支持某字段聚合 | 公式/lookup/关联字段不在白名单 | 只对存储字段做聚合 |
+data-query 聚合 counta 不支持 | +data-query 仅支持 count 不支持 counta | 改用 "aggregation":"count" |
| 关联字段值写入失败 | 格式错误 | 关联字段值必须是 [{id: "recXXX"}] 对象数组 |
| 日期字段写入失败 | 格式错误 | 使用 YYYY-MM-DD HH:mm:ss 字符串格式 |
| 人员字段写入失败 | 格式错误 | 使用 [{id: "ou_xxx"}] 对象数组 |
| 公式字段创建失败 | 未读 guide 或表达式有误 | 先读 formula-field-guide.md |
| 表名/字段名不匹配 | 凭自然语言猜测 | 用 +table-list / +field-list 获取真实名称 |
| 并发报错 1254291 | list 命令并发 | 所有 +xxx-list 串行执行 |
| 仪表盘 Block 创建失败 | 使用 --json 而非独立参数 | 改用 --name + --type + --data-config 独立参数 |
+view-create 不支持 --name | 需用 --json 传参 | 改用 --json '{"name":"xxx","type":"grid"}' |
+view-set-group 字段名 key 错误 | JSON key 是 field 不是 field_name | 改用 [{"field":"字段名"}] |
| 公式引用「创建时间」返回 null | 表没有 created_at 系统字段 | 初始化时用 +field-create 手动添加 type:"created_at" 字段 |
| Base 自带默认"数据表" | 创建 Base 时自动生成 | 忽略该表,只操作客户信息/商机管理/跟进记录三张表 |
| 消息发送失败 | chat_id 无效 | 用 im +chat-list 确认 chat_id |
| 权限不足 | scope 未开通 | 参考 lark-shared 处理权限问题 |
---
权限表
| 命令 | 所需 scope |
|---|---|
base +base-create | bitable:app |
base +table-create | bitable:app |
base +field-create | bitable:app |
base +field-list | bitable:app:readonly |
base +record-list | bitable:app:readonly |
base +record-upsert | bitable:app |
base +record-delete | bitable:app |
base +data-query | bitable:app:readonly |
base +view-create | bitable:app |
base +view-set-filter | bitable:app |
base +view-set-sort | bitable:app |
base +dashboard-create | bitable:app |
base +dashboard-block-create | bitable:app |
base +form-create | bitable:app |
base +form-questions-list | bitable:app:readonly |
base +form-questions-create | bitable:app |
im +messages-send | im:message:send_as_bot |
contact +search-user | contact:employee.id:readonly |
---
参考
- `../lark-shared/SKILL.md` — 认证、权限(必读)
- `../lark-base/SKILL.md` — 多维表格原子操作
- `../lark-base/references/formula-field-guide.md` — 公式字段写法(创建公式字段前必读)
- `../lark-base/references/lookup-field-guide.md` — lookup 字段配置规则
- `../lark-base/references/lark-base-shortcut-field-properties.md` — 字段属性 JSON 规范
- `../lark-base/references/lark-base-shortcut-record-value.md` — 记录值格式规范
- `../lark-base/references/lark-base-data-query.md` — 聚合分析 DSL
- `../lark-base/references/dashboard-block-data-config.md` — 仪表盘 Block 配置
- `../lark-base/references/lark-base-form-create.md` — 表单创建
- `../lark-base/references/lark-base-view-set-filter.md` — 视图筛选配置
- `../lark-im/SKILL.md` — 飞书消息发送
- `../lark-contact/SKILL.md` — 通讯录人员查询
微型团队 CRM Skill 全面规划
基于 微型crm.md 参考文档,面向小团队销售/客服场景,基于飞书多维表格 + lark-cli 的轻量 CRM 系统。---
一、Skill 基本信息
| 项目 | 内容 |
|---|---|
| 名称 | lark-workflow-crm |
| 版本 | 1.0.0 |
| 定位 | 面向小团队的微型销售 CRM(客户管理 + 商机漏斗 + 跟进记录 + 自动化提醒) |
| 触发词 | "CRM"、"客户管理"、"商机跟进"、"销售漏斗"、"客户建档"、"赢单丢单"、"跟进提醒"、"销售日报" |
| 身份要求 | --as user(个人操作)或 --as bot(自动提醒),初始化用 user |
| 依赖 | lark-cli,domain: base,im,contact |
与现有 personal-crm 的区别
| 维度 | personal-crm(已有) | crm(本 skill,新建) |
|---|---|---|
| 定位 | 个人关系管理 | 团队销售管理 |
| 核心对象 | 联系人 + 互动记录 | 客户 + 商机 + 跟进记录 |
| 核心流程 | 导入联系人→算热度→提醒 | 建档→商机→跟进→阶段流转→赢单/丢单 |
| 数据来源 | 邮箱/日历自动扫描 | 手动录入 + AI 辅助 |
| 看板 | 无 | 商机阶段看板(Kanban) |
| 仪表盘 | 无 | 销售漏斗 + 转化率 + 阶段分布 |
| 自动化 | 冷联系人提醒 | 阶段变更通知 + 超时跟进 + 赢单报喜 |
---
二、数据模型(3 张表)
表 1:客户信息主表 (customers)
客户的基础档案,所有商机的入口。
| 字段名 | 类型 | 说明 |
|---|---|---|
| 客户名称 | 文本 | 个人客户填姓名,企业客户填公司名 |
| 客户类型 | 单选 | 个人客户 / 企业客户 |
| 联系人 | 文本 | 对接人姓名 |
| 手机号 | 文本 | 联系电话 |
| 邮箱 | 文本 | 邮箱地址 |
| 行业 | 单选 | 互联网/金融/教育/制造业/零售/其他 |
| 公司规模 | 单选 | 1-10人/11-50人/51-200人/200人以上 |
| 来源渠道 | 单选 | 主动咨询/转介绍/展会/线上广告/社群/其他 |
| 地址 | 文本 | 所在城市/地区 |
| 负责人 | 人员 | 销售/对接人(Feishu user) |
| 重要程度 | 单选 | 高/中/低 |
| 客户状态 | 单选 | 活跃/沉睡/流失 |
| 备注 | 文本 | 自由备注 |
| 创建时间 | 日期 | 首次建档时间(系统字段或手动) |
| 最后跟进时间 | 日期 | 最近一次跟进的时间(公式或手动更新) |
表 2:商机管理表 (opportunities)
核心漏斗表,每个客户可以有多个商机。
| 字段名 | 类型 | 说明 |
|---|---|---|
| 商机名称 | 文本 | 如"XX公司 ERP 系统采购" |
| 关联客户 | 关联 | 双向关联到「客户信息主表」 |
| 商机金额 | 数字 | 预计成交金额(元) |
| 商机阶段 | 单选 | 待接触 / 需求确认 / 方案报价 / 商务谈判 / 赢单 / 丢单 |
| 负责人 | 人员 | 商机跟进负责人 |
| 预计成交日期 | 日期 | 预计关单时间 |
| 竞争对手 | 文本 | 主要竞品或对手 |
| 赢单概率 | 数字 | 0-100%,按阶段自动建议:待接触10%/需求确认30%/方案报价50%/商务谈判75%/赢单100%/丢单0% |
| 丢单原因 | 单选 | 价格/功能/竞品/无预算/项目取消/其他 |
| 商机来源 | 单选 | 新开发/老客户增购/转介绍 |
| 创建时间 | 日期 | 商机创建时间 |
| 关单时间 | 日期 | 赢单或丢单的时间(公式:当阶段=赢单或丢单时自动记录) |
表 3:跟进记录表 (follow_ups)
每次客户沟通的详细记录,替代微信群/Excel日报。
| 字段名 | 类型 | 说明 |
|---|---|---|
| 关联客户 | 关联 | 双向关联到「客户信息主表」 |
| 关联商机 | 关联 | 双向关联到「商机管理表」(可选) |
| 跟进方式 | 单选 | 电话/微信/面访/邮件/视频会议/其他 |
| 跟进摘要 | 文本 | 沟通内容摘要 |
| 客户反馈 | 文本 | 客户的态度和反馈 |
| 下一步计划 | 文本 | 下次跟进的动作 |
| 下次跟进时间 | 日期 | 约定的下次联系时间 |
| 跟进人 | 人员 | 执行跟进的人 |
| 商机阶段变更 | 单选 | 无变更/推进到下一阶段/退回上一阶段/赢单/丢单 |
| 跟进时间 | 日期 | 跟进发生时间 |
表 4:团队目标表 (team_targets)(可选增强)
用于销售目标管理和绩效统计。
| 字段名 | 类型 | 说明 |
|---|---|---|
| 负责人 | 人员 | 销售/团队成员 |
| 月份 | 单选 | 2026-01 ~ 2026-12 |
| 目标金额 | 数字 | 当月销售目标(元) |
| 实际金额 | 公式 | 通过 Lookup 从商机表汇总(阶段=赢单 AND 关单时间在本月) |
---
三、表间关联设计
customers ◄──────► opportunities(双向关联)
│ │
│ │
└──────── follow_ups ───┘(两个独立关联字段)- customers ↔ opportunities:双向关联,一个客户可对应多个商机
- customers ↔ follow_ups:双向关联,跟进记录关联到客户
- opportunities ↔ follow_ups:双向关联,跟进记录可选关联到商机
---
四、视图设计
视图 1:商机阶段看板(Kanban)— 关联到商机表
待接触 │ 需求确认 │ 方案报价 │ 商务谈判 │ 赢单 │ 丢单
─────────┼────────────┼────────────┼────────────┼─────────┼────────
商机A │ 商机C │ 商机E │ 商机G │ 商机I │ 商机K
商机B │ 商机D │ 商机F │ 商机H │ │
│ │ │ │ │- 按字段「商机阶段」分组
- 支持卡片显示:商机名称、客户、金额、负责人
- 支持拖拽切换阶段
视图 2:我的商机 — 关联到商机表
- 筛选条件:负责人 = 当前用户
- 排序:按商机阶段自定义排序 + 预计成交日期 ASC
- 用途:销售个人看自己的漏斗
视图 3:跟进时间线 — 关联到跟进记录表
- 按跟进时间倒序排列
- 筛选条件:跟进人 = 当前用户(可选)
- 用途:查看最近的跟进历史
视图 4:本月赢单 — 关联到商机表
- 筛选条件:商机阶段 = 赢单 AND 关单时间在本月
- 排序:关单时间倒序
- 用途:月度业绩看板
---
五、仪表盘设计
通过 +dashboard-create + +dashboard-block-create 自动配置:
| 组件 | 类型 | 说明 |
|---|---|---|
| 销售漏斗 | 漏斗图 | 按商机阶段统计数量,展示各阶段转化 |
| 本月赢单金额 | 数值卡片 | SUM(商机金额) WHERE 阶段=赢单 AND 本月 |
| 商机总金额 | 数值卡片 | SUM(商机金额) WHERE 阶段 ≠ 赢单/丢单 |
| 客户数量 | 数值卡片 | COUNT(customers) |
| 阶段分布 | 饼图 | 按商机阶段分组的数量占比 |
| 负责人业绩排行 | 柱状图 | 按负责人分组的赢单金额排行 |
| 月度趋势 | 折线图 | 按月赢单金额趋势 |
| 本周跟进 | 表格 | 本周所有跟进记录列表 |
| 预计本月成交 | 表格 | 预计成交日在本月的商机列表 |
---
六、自动化提醒设计
通过 lark-cli 的定时任务或 Cron 实现以下自动化:
自动化 1:每日跟进提醒(每日 9:00)
触发:每天早上 9 点
动作:
1. 查询「下次跟进时间 = 今天」的跟进记录
2. 查询「商机阶段 ≠ 赢单/丢单」且「预计成交日期 = 今天」的商机
3. 通过 im +messages-send 发送飞书消息给对应负责人
消息格式:
📋 今日跟进提醒
- 【客户A】下次跟进时间到,计划:XXX
- 【商机B】预计今天成交,金额:XXX自动化 2:超时未跟进预警(每日 10:00)
触发:每天早上 10 点
动作:
1. 查询商机表中「最后跟进时间距今 > 7天」且「阶段 ≠ 赢单/丢单」的商机
2. 发送提醒给负责人
消息格式:
⚠️ 商机超时提醒
- 【商机A】已 8 天未跟进,阶段:方案报价
- 【商机B】已 12 天未跟进,阶段:需求确认自动化 3:赢单报喜(实时/定时检查)
触发:阶段变更为「赢单」时
动作:
1. 发送飞书群消息通知全团队
消息格式:
🎉 赢单喜报!
- 商机:XX公司 ERP 采购
- 金额:¥100,000
- 负责人:张三
- 商机周期:XX天自动化 4:每周销售简报(每周一 9:00)
触发:每周一早上 9 点
动作:
1. 汇总上周新增客户数、新增商机数、赢单数、赢单金额
2. 汇总当前漏斗各阶段商机数量和金额
3. 发送给指定群或负责人
消息格式:
📊 周销售简报(上周)
- 新增客户:5 家
- 新增商机:8 个,总金额 ¥500,000
- 赢单:3 个,金额 ¥200,000
- 当前漏斗:待接触 12 → 需求确认 8 → 方案报价 5 → 商务谈判 3---
七、核心操作模式
模式一:系统初始化
首次使用时,一键创建完整 CRM 系统:
步骤 1: 创建 Base(base +base-create)
步骤 2: 创建 3 张空表(customers / opportunities / follow_ups)
- 注意:先建空表,不加字段(避免限流)
- 每张表创建间隔 2 秒
步骤 3: 逐个添加字段(+field-create)
- 每个字段间隔 1.5 秒
- 先加存储字段,再加关联字段
- 最后加公式/Lookup 字段
步骤 4: 创建双向关联字段
步骤 5: 创建公式字段(赢单概率建议、客户最后跟进时间等)
步骤 6: 创建 Lookup 字段(累计商机数、累计赢单金额等)
步骤 7: 创建视图(看板、我的商机、跟进时间线等)
步骤 8: 创建仪表盘及各组件
步骤 9: 保存 base_token 和各 table_id 到配置模式二:客户建档
通过自然语言录入客户信息:
用户输入:"帮我建一个客户:北京星辰科技有限公司,对接人王总,手机138xxxx,互联网行业,100人左右,来自展会,我负责,重要程度高"
AI 处理:
1. 解析提取各字段值
2. 调用 base +record-upsert 写入 customers 表
3. 返回确认信息模式三:商机创建与跟进
用户输入:"给北京星辰科技创建一个商机:企业IM系统采购,预计金额50万,阶段待接触"
AI 处理:
1. 查找或创建客户记录
2. 调用 base +record-upsert 写入 opportunities 表
3. 关联客户用户输入:"跟进记录:今天电话联系了王总,对方对方案比较满意,约下周三面访确认细节"
AI 处理:
1. 创建跟进记录到 follow_ups 表
2. 关联客户和商机
3. 更新商机的最后跟进时间(如有需要)
4. 如果用户提到阶段推进,同步更新商机阶段模式四:商机漏斗查询
用户输入:"看看当前的销售漏斗"
AI 处理:
1. 调用 base +data-query 按商机阶段聚合
2. 生成漏斗图文本展示
用户输入:"本月赢单了多少?"
AI 处理:
1. 筛选本月赢单商机
2. 汇总金额和数量模式五:销售日报
用户输入:"生成今天的销售日报"
AI 处理:
1. 查询今天所有跟进记录
2. 查询今天新增的客户和商机
3. 查询今天阶段变更的商机
4. 生成结构化日报,可选发送到飞书群模式六:数据统计与分析
用户输入:"这个月各负责人的业绩排行"
AI 处理:
1. 调用 base +data-query 按负责人分组聚合赢单金额
2. 返回排行榜
用户输入:"商机转化率怎么样?"
AI 处理:
1. 按阶段统计商机数量
2. 计算各阶段转化率---
八、公式字段设计
公式 1:赢单概率建议(商机表)
IF(商机阶段="待接触", 10,
IF(商机阶段="需求确认", 30,
IF(商机阶段="方案报价", 50,
IF(商机阶段="商务谈判", 75,
IF(商机阶段="赢单", 100, 0)))))公式 2:商机天数(商机表)
DATETIME_DIFF(NOW(), 创建时间, "DAY")公式 3:客户最后跟进时间(客户表)
通过 Lookup 从 follow_ups 表取 MAX(跟进时间)---
九、Lookup 字段设计
Lookup 1:客户商机数量(客户表)
来源表:opportunities
关联字段:关联客户
聚合方式:COUNTLookup 2:客户累计赢单金额(客户表)
来源表:opportunities
关联字段:关联客户
筛选条件:商机阶段 = "赢单"
聚合方式:SUM(商机金额)Lookup 3:商机跟进次数(商机表)
来源表:follow_ups
关联字段:关联商机
聚合方式:COUNT---
十、限流与错误处理
| 场景 | 策略 |
|---|---|
| +table-create 限流 | 不带 --fields 参数,先建空表 |
| +field-create 限流 | 每个字段间隔 1.5-2 秒 |
| +view-create 限流 | 每个视图间隔 2 秒 |
| +dashboard-block-create 限流 | 每个组件间隔 1.5 秒 |
| +record-upsert 批量写入 | 每批最多 500 条 |
| +data-query 不支持计算字段 | 只用存储字段做筛选和聚合 |
| 字段创建部分失败 | 捕获错误,用 +field-list 检查已有字段,补创建缺失字段 |
---
十一、权限 Scope 清单
| 命令 | 所需 scope |
|---|---|
base +base-create | bitable:app |
base +table-create | bitable:app |
base +field-create | bitable:app |
base +record-upsert | bitable:app:write |
base +record-list | bitable:app:read |
base +data-query | bitable:app:read |
base +view-create | bitable:app |
base +dashboard-create | bitable:app |
base +dashboard-block-create | bitable:app |
im +messages-send | im:message:send_as_bot |
contact +search-user | contact:employee.id:readonly |
---
十二、Skill 文件结构
.claude/skills/lark-workflow-crm/
└── SKILL.md # 单一完整文件,包含所有内容遵循 ERP skill 的模式:一个综合 SKILL.md 文件,包含: 1. 系统架构图 2. Agent 核心规则 3. 初始化流程(含限流策略) 4. 日常操作模式(6 个模式) 5. 意图→命令索引 6. 错误排查指南 7. 权限 Scope 表 8. 参考文档链接
---
十三、与现有 Skill 的关系
| 依赖 Skill | 用途 |
|---|---|
lark-shared | 认证、权限处理(必读) |
lark-base | 多维表格全部操作 |
lark-im | 飞书消息发送 |
lark-contact | 通讯录人员查询(补充负责人信息) |
lark-personal-crm | 互补关系:个人 CRM 管关系,团队 CRM 管销售 |
---
十四、已确认决策
1. ~~是否需要「团队目标表」?~~ → 不需要(已确认) 2. ~~商机阶段是否可自定义?~~ → 固定 6 阶段:待接触→需求确认→方案报价→商务谈判→赢单/丢单(已确认) 3. ~~丢单原因字段~~ → 放在商机表(一个商机只丢单一次) 4. ~~仪表盘是否在初始化时创建?~~ → 初始化时一并创建(已确认) 5. ~~是否需要表单收集功能?~~ → 需要,创建客户咨询登记表单(已确认) 6. 自动化提醒 → 支持 Cron 定时 + 手动触发两种方式
微型团队 CRM
基于飞书多维表格 + lark-cli 构建的轻量团队销售 CRM 系统。适合小团队管理客户档案、商机漏斗、跟进记录,配自动提醒和销售仪表盘。
快速开始
1. 确保已授权
lark-cli auth login --domain base,im,contact2. 一句话初始化
直接用自然语言告诉 AI:
帮我创建一个CRM系统AI 会自动完成以下步骤:
- 创建多维表格 Base
- 创建 3 张数据表(客户信息、商机管理、跟进记录)
- 添加所有字段(客户名称、商机阶段、跟进方式等)
- 配置 3 组双向关联(客户↔商机、客户↔跟进、商机↔跟进)
- 创建 6 个公式字段(赢单概率、商机天数、商机数量等)
- 创建视图(商机阶段看板、跟进时间线、本月赢单)
- 创建仪表盘(销售漏斗、赢单金额、阶段分布等 6 个组件)
- 创建客户咨询登记表单
初始化大约需要 3-4 分钟(因限流保护,每个字段间隔 1.5 秒)。
3. 开始使用
帮我建一个客户:北京星辰科技,对接人王总,手机138xxxx---
使用场景与示例
场景一:客户建档
新增企业客户
你:帮我建一个客户:北京星辰科技有限公司,企业客户,对接人王总,
手机13800138000,邮箱wang@xx.com,互联网行业,51-200人,
来自展会,重要程度高
AI:客户创建成功!
客户名称:北京星辰科技有限公司
客户类型:企业客户
联系人:王总
手机号:138****8000
邮箱:wang@xx.com
行业:互联网
公司规模:51-200人
来源渠道:展会
重要程度:高简化建档
你:新增客户:李小姐,个人客户,来自转介绍,重要程度中
AI:客户创建成功!
客户名称:李小姐
客户类型:个人客户
来源渠道:转介绍
重要程度:中
提示:建议补充联系方式和行业信息。批量建档
你:帮我添加这几个客户:
1. 上海悦达数据科技有限公司,对接人赵经理,金融行业,200人以上
2. 深圳华创网络,对接人刘总,互联网行业,11-50人
3. 广州文教传媒,对接人陈老师,教育行业,51-200人
AI:正在逐个创建...
✓ 客户 1/3:上海悦达数据科技有限公司 — 成功
✓ 客户 2/3:深圳华创网络 — 成功
✓ 客户 3/3:广州文教传媒 — 成功
全部完成!已添加 3 家客户。修改客户信息
你:把北京星辰科技的重要程度改为高,备注加一句"Q2重点跟进"
AI:✓ 已更新北京星辰科技有限公司:
- 重要程度:高
- 备注:Q2重点跟进查看客户列表
你:看看所有客户
AI:客户列表(共 5 家)
| 客户名称 | 联系人 | 行业 | 规模 | 来源 | 重要程度 | 状态 |
|---------|--------|------|------|------|---------|------|
| 北京星辰科技 | 王总 | 互联网 | 51-200人 | 展会 | 高 | 活跃 |
| 上海悦达数据 | 赵经理 | 金融 | 200人以上 | 主动咨询 | 高 | 活跃 |
| 深圳华创网络 | 刘总 | 互联网 | 11-50人 | 线上广告 | 中 | 活跃 |
| 广州文教传媒 | 陈老师 | 教育 | 51-200人 | 转介绍 | 中 | 活跃 |
| 李小姐 | - | - | - | 转介绍 | 中 | 活跃 |---
场景二:商机管理
创建商机
你:给北京星辰科技创建一个商机:企业IM系统采购,预计金额50万,
阶段待接触,预计6月底成交
AI:商机创建成功!
商机名称:企业IM系统采购
关联客户:北京星辰科技有限公司
商机金额:¥500,000.00
商机阶段:待接触
赢单概率建议:10%
负责人:当前用户
预计成交日期:2026-06-30
商机来源:新开发同步创建客户 + 商机
你:新客户杭州云端科技要做数据中台项目,预算80万,帮我建客户和商机
AI:客户不存在,我先创建客户记录...
✓ 客户已创建:杭州云端科技有限公司
✓ 商机已创建:数据中台建设项目,金额 ¥800,000
商机阶段:待接触
赢单概率建议:10%推进商机阶段
你:北京星辰科技的IM采购项目,对方已经明确了需求,推进到需求确认
AI:✓ 已更新商机阶段:
商机:企业IM系统采购(北京星辰科技)
阶段:待接触 → 需求确认
赢单概率建议:10% → 30%赢单
你:好消息,上海悦达的数据服务项目签了!金额35万
AI:🎉 赢单!
商机名称:数据服务项目
关联客户:上海悦达数据科技有限公司
赢单金额:¥350,000.00
商机周期:25 天
已更新商机阶段为「赢单」,赢单概率 100%。
是否发送赢单喜报到团队群?丢单
你:深圳华创的云服务项目丢了,原因是价格太高
AI:已记录丢单:
商机名称:云服务项目
关联客户:深圳华创网络
丢单金额:¥200,000.00
丢单原因:价格查看商机列表
你:我负责的有哪些商机?
AI:我的商机(共 4 个)
| 商机名称 | 客户 | 金额 | 阶段 | 概率 | 预计成交 |
|---------|------|------|------|------|---------|
| 企业IM系统采购 | 星辰科技 | ¥500,000 | 需求确认 | 30% | 06-30 |
| 数据中台建设 | 杭州云端 | ¥800,000 | 方案报价 | 50% | 07-15 |
| ERP系统采购 | 星辰科技 | ¥300,000 | 商务谈判 | 75% | 05-20 |
| 在途合计 | | **¥1,600,000** | | | |
已赢单 2 个,已丢单 1 个---
场景三:跟进记录
添加跟进记录
你:跟进记录:今天电话联系了北京星辰的王总,对方对IM方案比较满意,
认可功能但觉得价格偏高,约下周三下午面访确认细节,推进到方案报价
AI:跟进记录已保存!
客户:北京星辰科技有限公司
商机:企业IM系统采购
跟进方式:电话
跟进摘要:对方对IM方案比较满意
客户反馈:认可功能但觉得价格偏高
下一步计划:下周三下午面访确认细节
下次跟进时间:2026-04-16 14:00
✓ 已同步推进商机阶段:需求确认 → 方案报价
✓ 赢单概率建议:30% → 50%快速记录跟进
你:刚和刘总微信聊了,深圳华创说暂时没有预算,下半年再看
AI:跟进记录已保存!
客户:深圳华创网络
跟进方式:微信
跟进摘要:客户表示暂时没有预算
客户反馈:下半年再考虑查看跟进记录
你:看看最近的跟进记录
AI:最近跟进记录(最新 5 条)
| 时间 | 客户 | 方式 | 摘要 | 跟进人 |
|------|------|------|------|--------|
| 04-13 10:30 | 北京星辰 | 电话 | 方案满意,约面访 | 张三 |
| 04-12 15:00 | 深圳华创 | 微信 | 暂无预算 | 张三 |
| 04-11 09:00 | 上海悦达 | 邮件 | 发送报价方案 | 李四 |
| 04-10 14:00 | 杭州云端 | 视频会议 | 需求调研 | 张三 |
| 04-09 11:00 | 广州文教 | 面访 | 现场演示产品 | 李四 |---
场景四:销售漏斗查询
查看销售漏斗
你:看看当前的销售漏斗
AI:## 销售漏斗
待接触 (3) ──→ 需求确认 (2) ──→ 方案报价 (2) ──→ 商务谈判 (1) ──→ 赢单 (2)
| 阶段 | 数量 | 金额 | 转化率 |
|------|------|------|--------|
| 待接触 | 3 | ¥1,100,000 | 100%(入口) |
| 需求确认 | 2 | ¥800,000 | 67% |
| 方案报价 | 2 | ¥650,000 | 44% |
| 商务谈判 | 1 | ¥300,000 | 22% |
| 赢单 | 2 | ¥650,000 | 22% |
在途商机金额:¥2,850,000
已赢单金额:¥650,000
整体赢单率:22%本月赢单统计
你:本月赢单了多少?
AI:## 本月赢单(2026年4月)
| 商机 | 客户 | 金额 | 负责人 | 成交日期 |
|------|------|------|--------|---------|
| 数据服务项目 | 上海悦达数据 | ¥350,000 | 李四 | 04-10 |
| 办公用品采购 | 广州文教传媒 | ¥50,000 | 李四 | 04-05 |
合计:2 单,赢单金额 ¥400,000业绩排行
你:这个月各负责人的业绩怎么样?
AI:## 负责人业绩排行(本月赢单)
| 排名 | 负责人 | 赢单数量 | 赢单金额 |
|------|--------|---------|---------|
| 1 | 李四 | 2 单 | ¥400,000 |
| 2 | 张三 | 0 单 | ¥0 |
张三加油!当前有 3 个在途商机,合计 ¥1,600,000---
场景五:销售日报
你:生成今天的销售日报
AI:## 销售日报 — 2026-04-13(星期一)
### 一、今日跟进(2 条)
| 客户 | 商机 | 方式 | 摘要 | 阶段变更 |
|------|------|------|------|---------|
| 北京星辰 | IM采购 | 电话 | 方案满意,约面访 | → 方案报价 |
| 深圳华创 | 云服务 | 微信 | 暂无预算 | 无变更 |
### 二、新增客户(0 家)
### 三、新增商机(0 个)
### 四、阶段变更(1 个)
- 北京星辰 IM采购:需求确认 → 方案报价(+¥500,000 在途)
### 五、今日提醒
- ⚠️ 杭州云端「数据中台建设」已 3 天未跟进,阶段:方案报价
- 📅 明日待跟进:北京星辰(面访,14:00)发送日报到群
你:把今天的销售日报发到销售群
AI:✓ 已发送销售日报到「销售群」---
场景六:自动化提醒
每日跟进提醒
你:今天有什么需要跟进的吗?
AI:## 今日跟进提醒
### 待跟进客户(2 个)
| 客户 | 计划 | 跟进方式 |
|------|------|---------|
| 北京星辰科技 | 面访确认细节 | 面访 |
| 杭州云端科技 | 发送数据中台方案 | 邮件 |
### 关注商机(1 个)
| 商机 | 客户 | 预计成交 | 金额 |
|------|------|---------|------|
| ERP系统采购 | 北京星辰 | 今天 | ¥300,000 |
⚠️ 北京星辰的 ERP 采购预计今天成交,请关注!超时未跟进预警
你:检查一下有没有超时未跟进的商机
AI:## 超时未跟进预警
以下商机已超过 7 天未跟进:
| 商机 | 客户 | 阶段 | 未跟进天数 |
|------|------|------|-----------|
| 数据中台建设 | 杭州云端 | 方案报价 | 5 天 |
| 云服务项目 | 深圳华创 | 待接触 | 15 天 |
建议:杭州云端已在方案报价阶段,建议尽快跟进避免流失。赢单报喜
你:上海悦达签了!发个赢单喜报到群里
AI:✓ 已发送赢单喜报到「团队群」:
🎉 赢单喜报!
商机:数据服务项目
客户:上海悦达数据科技有限公司
金额:¥350,000
负责人:李四
商机周期:25 天每周销售简报
你:生成本周的销售简报
AI:## 周销售简报(2026-04-07 ~ 2026-04-13)
### 一、关键指标
- 新增客户:2 家
- 新增商机:1 个,总金额 ¥300,000
- 赢单:2 个,金额 ¥400,000
- 丢单:1 个,金额 ¥200,000
### 二、当前漏斗
| 阶段 | 数量 | 金额 |
|------|------|------|
| 待接触 | 3 | ¥1,100,000 |
| 需求确认 | 2 | ¥800,000 |
| 方案报价 | 2 | ¥650,000 |
| 商务谈判 | 1 | ¥300,000 |
### 三、需关注
- ⚠️ 1 个商机超 7 天未跟进(杭州云端)
- 📅 1 个商机预计本周成交(北京星辰 ERP采购 ¥300,000)
要发送到销售群吗?---
场景七:客户咨询登记表单
创建表单
你:帮我创建一个客户咨询登记表单
AI:✓ 表单已创建:客户咨询登记
表单链接:https://xxx.feishu.cn/base/BASExxx/form/FORMxxx
可以将此链接分享给客户,客户填写后数据会自动进入客户信息表。查看和配置表单
你:看看咨询表单有哪些问题,帮我加上"公司规模"
AI:当前表单问题:
1. 客户名称(必填)
2. 联系人(必填)
3. 联系电话
4. 咨询内容
✓ 已添加问题:公司规模(单选:1-10人/11-50人/51-200人/200人以上)---
场景八:创建销售看板
你:帮我创建一个销售看板
AI:正在创建仪表盘...
✓ 已创建仪表盘「销售看板」
包含以下组件:
- 销售漏斗(各阶段商机数量)
- 本月赢单金额
- 商机总金额(在途)
- 客户总数
- 阶段分布(饼图)
- 负责人业绩排行(柱状图)---
定时自动化
可以在 Claude Code 中配置定时任务自动执行 CRM 相关操作:
每日跟进提醒(工作日 9:00)
CronCreate: cron="0 9 * * 1-5", prompt="检查今日需要跟进的客户和商机,发送提醒给对应负责人", recurring=true超时未跟进预警(工作日 10:00)
CronCreate: cron="0 10 * * 1-5", prompt="检查超过7天未跟进的商机,发送预警提醒", recurring=true每周销售简报(每周一 9:00)
CronCreate: cron="0 9 * * 1", prompt="生成上周销售简报,汇总新增客户、赢单情况、漏斗数据,发送到销售群", recurring=true每日销售日报(工作日 18:00)
CronCreate: cron="0 18 * * 1-5", prompt="生成今天的销售日报,发送到销售群", recurring=true---
常用自然语言指令速查
| 你可以说 | AI 会做什么 |
|---|---|
| 创建CRM系统 | 初始化 Base + 3张表 + 字段 + 关联 + 公式 + 视图 + 仪表盘 + 表单 |
| 建一个客户:XXX | 创建客户记录 |
| 修改XXX的客户信息 | 更新客户字段 |
| 查看客户列表 | 查询并展示客户表格 |
| 给XXX创建商机:XXX | 创建商机并关联客户 |
| 推进到方案报价 | 更新商机阶段 |
| 赢单了 / 丢单了 | 更新商机阶段为赢单/丢单 |
| 看看销售漏斗 | 按阶段聚合统计商机 |
| 本月赢单了多少 | 筛选赢单商机汇总金额 |
| 业绩排行 | 按负责人汇总赢单金额 |
| 跟进记录:XXX | 创建跟进记录,如有阶段变更同步更新商机 |
| 生成销售日报 | 汇总今日跟进、新增、阶段变更 |
| 今天有什么需要跟进的 | 检查今日待跟进和待成交商机 |
| 检查超时未跟进 | 检测 7 天以上未跟进的商机 |
| 赢单喜报发到群里 | 发送赢单庆祝消息 |
| 生成本周销售简报 | 汇总上周数据并发送 |
| 创建咨询表单 | 创建客户登记表单 |
| 创建销售看板 | 创建仪表盘和组件 |
---
商机阶段说明
| 阶段 | 含义 | 建议概率 |
|---|---|---|
| 待接触 | 新线索,尚未与客户建立联系 | 10% |
| 需求确认 | 已接触,正在了解和确认需求 | 30% |
| 方案报价 | 需求明确,已提供方案和报价 | 50% |
| 商务谈判 | 方案认可,进入价格/合同谈判 | 75% |
| 赢单 | 成交 | 100% |
| 丢单 | 流失 | 0% |
---
与个人 CRM 的区别
| 维度 | 个人 CRM(personal-crm) | 团队 CRM(本 Skill) |
|---|---|---|
| 定位 | 个人关系管理 | 团队销售管理 |
| 核心对象 | 联系人 + 互动记录 | 客户 + 商机 + 跟进记录 |
| 核心流程 | 导入联系人→算热度→提醒 | 建档→商机→跟进→阶段流转→赢单/丢单 |
| 数据来源 | 邮箱/日历自动扫描 | 手动录入 + AI 辅助 |
| 看板 | 无 | 商机阶段看板(Kanban) |
| 仪表盘 | 无 | 销售漏斗 + 转化率 + 阶段分布 |
| 自动化 | 冷联系人提醒 | 阶段变更通知 + 超时跟进 + 赢单报喜 |
两个 Skill 可以同时使用,互不影响。
---
与其他 Skill 的关系
- 数据层:依赖
lark-base(多维表格操作) - 通知层:依赖
lark-im(飞书消息发送) - 人员层:依赖
lark-contact(通讯录人员查询,用于查找负责人) - 独立使用:不依赖其他工作流 Skill,可单独使用