Summary
个人CRM:自动扫描飞书邮箱和日历提取联系人,多维表格维护联系人档案和关系热度分,支持自然语言查询和超期提醒。当用户需要'联系人管理'、'CRM'、'谁联系过我'、'多久没联系'、'联系人热度'、'关系管理'时使用。
liangdabiao/lark-workflow-feishu-cli
个人CRM:自动扫描飞书邮箱和日历提取联系人,多维表格维护联系人档案和?
npx skills add liangdabiao/lark-workflow-feishu-cli --skill lark-workflow-personal-crm
个人CRM:自动扫描飞书邮箱和日历提取联系人,多维表格维护联系人档案和关系热度分,支持自然语言查询和超期提醒。当用户需要'联系人管理'、'CRM'、'谁联系过我'、'多久没联系'、'联系人热度'、'关系管理'时使用。
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Helps users discover and install agent skills when they ask questions like "how do I do X", "fi…
3.3M installsBrowser automation CLI for AI agents. Use when the user needs to interact with websites, includ…
810.4K installsReview UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "chec…
617.3K installsBuild, deploy, evaluate, optimize, fine-tune, and manage Microsoft Foundry agents, models, and …
576.5K installsPrepare azd-based Azure projects for deployment: generates azure.yaml, infrastructure (Bicep/Te…
568.3K installsOther skills from liangdabiao/lark-workflow-feishu-cli · top by installs.
npx skills add liangdabiao/lark-workflow-feishu-cli
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
main
Parsed from SKILL.md frontmatter.
Files included with this skill beyond the listing page.
SKILL.md
11,573 B
SUMMARY.md
322 B
CRITICAL — 开始前 MUST 先用 Read 工具读取 [../lark-shared/SKILL.md](../lark-shared/SKILL.md),其中包含认证、权限处理
仅支持 user 身份。执行前确保已授权:
lark-cli auth login --domain mail,calendar,contact,base,im
邮件模块降级说明:如果用户未启用飞书邮箱(
- "从邮箱导入"模式不可用,跳过邮件扫描步骤
- 改用"从日历导入"和"从通讯录补充"作为主要数据来源
- 在简报中标注"邮箱未启用,联系人数据仅来自日历和通讯录"
数据导入:
├── mail +messages ───────► 扫描邮箱 → 提取联系人 + 互动记录
├── calendar +agenda ─────► 扫描日历 → 提取会议参与者 + 互动记录
└── contact +search-user ─► 补充飞书通讯录信息
数据存储:
└── base +record-upsert ──► 多维表格(联系人 + 互动记录)
数据查询:
└── base +record-list ────► 自然语言查询联系人
智能提醒:
└── base +data-query ────► 筛选冷门联系人
└── im +messages-send ───► 飞书消息提醒
首次使用时,创建多维表格数据结构:
表 1:联系人主表 (contacts)
| 字段名 | 类型 | 说明 |
|---|---|---|
| 姓名 | 文本 | 联系人姓名 |
| 公司 | 文本 | 所在公司/组织 |
| 职位 | 文本 | 职位/角色 |
| 邮箱 | 文本 | 邮箱地址 |
| 手机 | 文本 | 联系方式 |
| 来源 | 单选 | 邮件/日历/通讯录/手动 |
| 关系类型 | 单选 | 客户/合作伙伴/同事/朋友/行业人脉/其他 |
| 重要程度 | 单选 | 高/中/低 |
| 热度分 | 数字 | 0-100,基于互动频率和最近互动时间计算 |
| 最后联系时间 | 日期 | 最近一次互动的时间 |
| 最后联系内容 | 文本 | 最近互动的摘要 |
| 备注 | 文本 | 自由备注 |
| 创建时间 | 日期 | 首次录入时间 |
表 2:互动记录 (interactions)
| 字段名 | 类型 | 说明 |
|---|---|---|
| 关联联系人 | 关联 | 关联到「联系人主表」 |
| 互动时间 | 日期 | 互动发生时间 |
| 互动类型 | 单选 | 邮件(发)/邮件(收)/会议/消息/电话/其他 |
| 互动摘要 | 文本 | 互动内容的简短描述 |
| 涉及主题 | 文本 | 讨论的话题或项目 |
| 邮件ID | 文件 | 关联的邮件 message_id(如有) |
| 会议ID | 文本 | 关联的 meeting_id(如有) |
# 1. 创建多维表格
# 注意:+table-create 可能部分成功(表创建成功但字段创建失败),需捕获错误后用 +field-create 补字段
# 注意:连续创建字段会触发限流(错误码 800004135),每次调用间隔至少 1 秒
lark-cli base +table-create --name "联系人" --fields '[
{"name":"姓名","type":"text"},
{"name":"公司","type":"text"},
{"name":"职位","type":"text"},
{"name":"邮箱","type":"text"},
{"name":"手机","type":"text"},
{"name":"来源","type":"select","multiple":false,"options":[{"name":"邮件"},{"name":"日历"},{"name":"通讯录"},{"name":"手动"}]},
{"name":"关系类型","type":"select","multiple":false,"options":[{"name":"客户"},{"name":"合作伙伴"},{"name":"同事"},{"name":"朋友"},{"name":"行业人脉"},{"name":"其他"}]},
{"name":"重要程度","type":"select","multiple":false,"options":[{"name":"高"},{"name":"中"},{"name":"低"}]},
{"name":"热度分","type":"number"},
{"name":"最后联系时间","type":"datetime"},
{"name":"最后联系内容","type":"text"},
{"name":"备注","type":"text"},
{"name":"创建时间","type":"datetime"}
]'
lark-cli base +table-create --name "互动记录" --fields '[
{"name":"互动时间","type":"datetime"},
{"name":"互动类型","type":"select","multiple":false,"options":[{"name":"邮件(发)"},{"name":"邮件(收)"},{"name":"会议"},{"name":"消息"},{"name":"电话"},{"name":"其他"}]},
{"name":"互动摘要","type":"text"},
{"name":"涉及主题","type":"text"},
{"name":"邮件ID","type":"text"},
{"name":"会议ID","type":"text"}
]'
# 注:关联联系人字段需单独用 +field-create 创建(type="lookup" 需要关联目标表 ID)
# 2. 记录 base_token 和各 table_id
首次使用时提示用户提供 Base URL 或创建新的多维表格。
限流处理:如果 +table-create 因限流部分失败,表仍会创建成功。此时:
1. 用base +table-list获取 table_id
2. 用base +field-create --table-id <id> --json '{"name":"字段名","type":"text"}'逐个补字段,每次间隔 1-2 秒
# 搜索指定时间范围的邮件
lark-cli mail +messages --folder INBOX --start-date "<YYYY-MM-DD>" --end-date "<YYYY-MM-DD>"
AI 处理逻辑:
过滤规则:
# 获取指定时间范围的日程
lark-cli calendar +agenda --start "<ISO8601>" --end "<ISO8601>"
AI 处理逻辑:
contact +search-user 补充飞书通讯录信息(职位、部门等)lark-cli contact +search-user --query "<联系人姓名>"
当联系人信息不完整时,通过飞书通讯录补充公司、职位等信息。
热度分计算公式(0-100):
热度分 = 频率分(0-40) + 近期分(0-40) + 重要度分(0-20)
频率分(过去 90 天互动次数):
0次 → 0分
1-3次 → 10分
4-10次 → 20分
11-20次 → 30分
20次以上 → 40分
近期分(最后一次互动距今天数):
7天内 → 40分
14天内 → 32分
30天内 → 24分
60天内 → 16分
90天内 → 8分
90天以上 → 0分
重要度分:
高 → 20分
中 → 12分
低 → 4分
热度分在每次导入新互动后自动重新计算。
支持的自然语言查询类型:
| 查询类型 | 示例 | 查询方式 |
|---|---|---|
| 按时间 | "上个月谁联系过我?" | base +record-list 互动记录表 + 时间过滤 |
| 按公司 | "XX 公司的人我聊过什么?" | base +record-list 联系人表 + 公司过滤 |
| 按人名 | "张三最近怎么样?" | base +record-list 联系人表 + 姓名过滤 |
| 按热度 | "该跟进谁了?" | base +data-query 热度分 < 30 的联系人 |
| 按主题 | "关于 AI 项目的讨论有哪些?" | base +record-list 互动记录表 + 主题关键词 |
| 综合查询 | "有没有超过3个月没联系的重要关系?" | base +data-query 最后联系 > 90天 AND 重要程度 = "高" |
# 查询冷门联系人(聚合查询)
lark-cli base +data-query --base-token "<base_token>" --dsl '{
"datasource": {"type": "table", "table": {"tableId": "<contacts_table_id>"}},
"dimensions": [{"field_name": "姓名", "alias": "name"}, {"field_name": "重要程度", "alias": "importance"}],
"measures": [{"field_name": "热度分", "aggregation": "avg", "alias": "avg_score"}],
"filters": {"type": 1, "conjunction": "and", "conditions": [{"field_name": "重要程度", "operator": "is", "value": ["高"]}, {"field_name": "热度分", "operator": "isLess", "value": ["30"]}]},
"shaper": {"format": "flat"}
}'
# 查询特定公司的联系人
lark-cli base +record-list --table-id "<contacts_table_id>" --filter '...公司 = "XX公司"'
# 查询最近互动
lark-cli base +record-list --table-id "<interactions_table_id>" --sort '互动时间 DESC' --page-size 20
筛选需要跟进的联系人:
lark-cli base +data-query --base-token "<base_token>" --dsl '{
"datasource": {"type": "table", "table": {"tableId": "<contacts_table_id>"}},
"dimensions": [{"field_name": "姓名", "alias": "name"}],
"measures": [{"field_name": "热度分", "aggregation": "avg", "alias": "avg_score"}],
"filters": {"type": 1, "conjunction": "and", "conditions": [{"field_name": "重要程度", "operator": "isNot", "value": ["低"]}, {"field_name": "热度分", "operator": "isLess", "value": ["30"]}]},
"shaper": {"format": "flat"}
}'
生成提醒消息并通过飞书发送:
lark-cli im +messages-send --chat-id "<chat_id>" --markdown "..."
提醒消息格式:
关系维护提醒
以下联系人已超过 60 天未联系:
| 姓名 | 公司 | 最后联系 | 热度分 | 建议 |
|------|------|---------|--------|------|
| 张三 | XX科技 | 75天前 | 12 | 发个消息打个招呼 |
| 李四 | YY投资 | 90天前 | 4 | 约个会议聊聊近况 |
lark-cli base +record-upsert --table-id "<contacts_table_id>" --json '{"字段名":"值"}'
lark-cli base +record-upsert --table-id "<interactions_table_id>" --json '{"字段名":"值"}'
| 命令 | 所需 scope |
|---|---|
mail +messages |
mail:mail:read |
calendar +agenda |
calendar:calendar.event:read |
contact +search-user |
contact:employee.id:readonly |
contact +get-user |
contact:employee.id:readonly |
base +table-create |
bitable:app |
base +record-list |
bitable:app:read |
base +record-upsert |
bitable:app:write |
base +data-query |
bitable:app:read |
im +messages-send |
im:message:sendasbot |
lark-shared](../lark-shared/SKILL.md) — 认证、权限(必读)lark-mail](../lark-mail/SKILL.md) — 邮件读取、安全规则lark-calendar](../lark-calendar/SKILL.md) — +agenda 详细用法lark-contact](../lark-contact/SKILL.md) — +search-user、+get-user 详细用法lark-base](../lark-base/SKILL.md) — +table-create、+record-list、+record-upsert、+data-query 详细用法lark-im](../lark-im/SKILL.md) — +messages-send 详细用法