5616622a05
- 完整的技术架构说明 - 详细的工具配置指南 - 关键代码示例 - 部署和使用指南 - 经验总结和最佳实践 文档内容: 1. 项目概述与成果 2. 技术架构与流程 3. 详细技术方案(dws + lark-cli + Python) 4. 关键代码示例 5. 配置与部署指南 6. 关键经验与最佳实践 7. 使用指南与扩展方向
6.5 KiB
6.5 KiB
钉钉群聊飞书文档收集与知识库构建 - 技术分享
分享人:大师 | 日期:2026-06-03 | 版本:v1.0
一、项目概述
1.1 背景
公司战略研究团队每天在钉钉群中分享飞书文档(研究报告、竞品分析、日报等),手动收集和整理效率低下。本项目实现了:
- 自动化采集:从钉钉群聊中提取消息、链接和文件
- 批量下载:自动下载飞书文档和文件附件
- 知识结构化:构建知识图谱和 Obsidian 知识库
- 定时更新:支持每日自动采集最新内容
1.2 成果
| 指标 | 数量 |
|---|---|
| 消息总数 | 388 条 |
| 飞书文档 | 159 篇 |
| 文件附件 | 19 个 |
| 活跃人员 | 28 位 |
| 时间范围 | 2026-05-01 ~ 2026-06-03 |
二、技术架构
2.1 整体流程
钉钉群聊消息
↓
消息采集(dws CLI)
↓
链接提取(Python)
↓
文档下载(lark-cli)
↓
内容解析(Python + BeautifulSoup)
↓
知识图谱构建(Python)
↓
Obsidian 知识库生成(Python)
↓
可视化展示(HTML + Mermaid)
2.2 核心工具
| 工具 | 用途 | 版本 |
|---|---|---|
| dws CLI | 钉钉消息采集、文件下载 | 悟空 CLI |
| lark-cli | 飞书文档下载 | v1.0.32 |
| Python | 数据处理、脚本开发 | 3.10+ |
| BeautifulSoup | HTML 解析 | 4.x |
| Obsidian | 知识库管理 | 最新版 |
三、详细技术方案
3.1 钉钉消息采集
工具:dws CLI(悟空)
安装路径:C:\Users\admin\.real\.bin\dws\bin\dws.exe
认证信息:
- Corp ID:
ding9385b4aebd9af88635c2f4657eb6378f - User ID:
347672497
核心命令:
# 获取群聊消息
dws chat message list --group <group_id> --time <time> --forward true --format json --limit 200
# 下载文件附件
dws drive download --node <fileId> --output <path>
群组 ID:
| 群组 | openConversationId |
|---|---|
| 创新组 | cidMuM+itt5PeY7xNSWsv3M0g== |
| dc战略问题研究院 | cidoUneRB4Db8TAXaTrKxkQAw== |
分页策略:
由于 API 返回消息有数量限制,需要分多次拉取:
# 分段拉取策略
segments = [
("2026-05-01", "true"), # 从5月1日向前
("2026-05-19", "true"), # 从5月19日向前
("2026-05-24", "true"), # 从5月24日向前
("2026-06-03", "false"), # 从6月3日向后
]
# 去重:使用 openMessageId
all_msgs = {}
for msg in msgs:
all_msgs[msg["openMessageId"]] = msg
3.2 链接提取
正则表达式
# 飞书文档链接
feishu_re = re.compile(r'https?://[a-zA-Z0-9.-]+\.feishu\.cn/(?:wiki|docx)/[A-Za-z0-9]+')
# 文件附件
file_re = re.compile(r'\[文件\]\s+(.+?)\s+fileId:\s+(\S+)')
3.3 飞书文档下载
工具:lark-cli(官方飞书 CLI)
安装:
npm install -g @larksuite/cli
配置:
# 初始化配置
lark-cli config init
# 登录授权
lark-cli auth login --domain docs,drive,wiki --recommend
核心命令:
# 获取文档内容
lark-cli api GET /open-apis/docx/v1/documents/<doc_id>/blocks --format json
3.4 文件附件下载
使用 dws CLI
# 下载文件
dws drive download --node <fileId> --output <path>
四、关键代码
4.1 消息采集脚本
def fetch(group_id, time_str, forward="true"):
cmd = [DWS, "chat", "message", "list",
"--group", group_id,
"--time", time_str,
"--forward", forward,
"--format", "json",
"--limit", "200"]
result = subprocess.run(cmd, capture_output=True, timeout=60)
output = result.stdout.decode("utf-8", errors="replace")
json_start = output.find("{")
data = json.loads(output[json_start:])
return data.get("result", {}).get("messages", [])
4.2 链接提取脚本
feishu_re = re.compile(r'https?://[a-zA-Z0-9.-]+\.feishu\.cn/(?:wiki|docx)/[A-Za-z0-9]+')
for msg in messages:
content = msg.get("content", "")
for link in feishu_re.findall(content):
all_links.append({"url": link, "sender": msg.get("sender", "")})
4.3 文档下载脚本
def get_document_content(doc_id):
cmd = [LARK_CLI, "api", "GET",
f"/open-apis/docx/v1/documents/{doc_id}/blocks",
"--format", "json"]
result = subprocess.run(cmd, capture_output=True, timeout=30)
if result.returncode == 0:
data = json.loads(result.stdout.decode("utf-8", errors="replace"))
if data.get("code") == 0:
return data["data"]
return None
五、配置与部署
5.1 环境要求
Python 3.10+
Node.js 18+
npm 9+
5.2 依赖安装
# Python 依赖
pip install beautifulsoup4 requests
# Node.js 依赖
npm install -g @larksuite/cli
5.3 定时任务
# 创建定时任务(每天18:00执行)
schtasks /create /tn "FeishuDocCollector" /tr "python D:\desktop\feishu_docs_summary\scripts\daily_feishu_collector.py" /sc daily /st 18:00
六、关键经验
6.1 API 限制与应对
| 问题 | 解决方案 |
|---|---|
| 消息分页 | 分多次拉取 + openMessageId 去重 |
| 飞书文档权限 | 使用 lark-cli(已授权) |
| 文件下载超时 | 增加 timeout 参数 |
6.2 性能优化
- 并发控制:API 调用间隔 0.5 秒
- 增量更新:只下载新文档
- 缓存机制:已下载文档不重复下载
七、使用指南
7.1 快速开始
# 1. 全量拉取消息
python scripts/fetch_all.py
# 2. 提取链接
python scripts/extract_links.py
# 3. 下载文档
python scripts/download_feishu_docs.py
# 4. 构建知识图谱
python scripts/build_graph.py
# 5. 生成 Obsidian 知识库
python scripts/write_obsidian.py
7.2 每日更新
# 运行每日采集脚本
python scripts/daily_feishu_collector.py
八、总结
本项目通过 dws CLI + lark-cli + Python 实现了钉钉群聊飞书文档的自动化收集和知识库构建,大幅提升了团队知识管理效率。
核心价值:
- ✅ 自动化采集,节省人工时间
- ✅ 结构化存储,便于检索
- ✅ 知识图谱,发现关联关系
- ✅ Obsidian 集成,支持双向链接
- ✅ 定时更新,保持内容新鲜
技术亮点:
- ✅ 多工具协同(dws + lark-cli + Python)
- ✅ 增量更新机制
- ✅ 完整的错误处理
- ✅ 灵活的配置系统
文档版本:v1.0
最后更新:2026-06-03
维护人:大师