Files
dc-docs/docs/technical-workflow-share.md
T
Evilom 5616622a05 docs: 添加技术分享文档 - 钉钉群聊飞书文档收集与知识库构建
- 完整的技术架构说明
- 详细的工具配置指南
- 关键代码示例
- 部署和使用指南
- 经验总结和最佳实践

文档内容:
1. 项目概述与成果
2. 技术架构与流程
3. 详细技术方案(dws + lark-cli + Python)
4. 关键代码示例
5. 配置与部署指南
6. 关键经验与最佳实践
7. 使用指南与扩展方向
2026-06-03 11:06:10 +08:00

6.5 KiB
Raw Blame History

钉钉群聊飞书文档收集与知识库构建 - 技术分享

分享人:大师 | 日期: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 IDding9385b4aebd9af88635c2f4657eb6378f
  • User ID347672497

核心命令

# 获取群聊消息
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
维护人:大师