# Personal Weekly Report From Feishu

> 基于飞书群组和单聊的历史消息，自动生成指定成员的个人周工作报告。通过飞书 MCP 工具获取用户信息、群组列表和聊天记录，筛选该成员发送和被@的消息，分析整理为结构化周报。Use when the user asks to generate a personal weekly report (个人周报) from Feishu chat history, or mentions "基于飞书沟通内容生成周报".

- Skill: `zxremail/personal-weekly-report-from-feishu` (Agent Skill)
- Install (CLI): `npx skillmds@latest add zxremail/personal-weekly-report-from-feishu`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zxremail/personal-weekly-report-from-feishu/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: zxremail (https://skillmd.com/u/zxremail)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/zxremail/personal-weekly-report-from-feishu

---


# 基于飞书聊天记录生成个人周报

当用户要求基于飞书群组和单聊中的沟通内容生成个人周工作报告时，遵循以下流程。

---

## 1. 获取用户身份

使用 `authen_v1_userInfo_get` 获取当前飞书用户信息，记录 `open_id` 用于后续消息筛选。

如果用户自报姓名，用返回的 `name` 字段做交叉确认。

## 2. 获取群组列表

使用 `im_v1_chat_list` 获取用户所在的群组，按活跃时间降序排列：

```json
{
  "query": {
    "page_size": 50,
    "sort_type": "ByActiveTimeDesc",
    "user_id_type": "open_id"
  }
}
```

从结果中选取与工作相关的群组（通常取前 30~50 个活跃群组）。

## 3. 计算时间范围

- 默认取"当前时间向前推一周"：以当前日期为 `end_time`（当天 23:59:59），往前推 7 天为 `start_time`（该天 00:00:00）。用户未指定时间范围时一律使用此默认值。
- 将起止时间转换为**秒级 Unix 时间戳**（UTC+8 → UTC）。
- 示例：若当前日期为 2026-04-09，则 `start_time` = 2026-04-02 00:00:00 UTC+8，`end_time` = 2026-04-09 23:59:59 UTC+8。

## 4. 批量获取聊天记录

对每个目标群组，使用 `im_v1_message_list` 获取指定时间范围内的消息：

```json
{
  "query": {
    "container_id_type": "chat",
    "container_id": "<chat_id>",
    "start_time": "<unix_timestamp>",
    "end_time": "<unix_timestamp>",
    "sort_type": "ByCreateTimeDesc",
    "page_size": 50
  }
}
```

**并行策略**：每轮并行请求 8~10 个群组，减少总耗时。优先请求活跃度最高的群组。

## 5. 筛选相关消息

从所有返回消息中，筛选与目标用户相关的内容：

### 5.1 用户发送的消息

`sender.id` 等于用户的 `open_id` 的消息。

### 5.2 用户被 @ 的消息

`mentions` 数组中包含用户 `open_id` 的消息——这些消息虽非本人发送，但说明用户参与了该话题。

### 5.3 消息类型处理

| 消息类型 | 处理方式 |
|---------|---------|
| `text` | 直接提取 `content.text` |
| `post` | 解析富文本，提取 `text` 和 `a`（链接）标签内容 |
| `interactive` | 提取卡片标题和文本元素 |
| `image` / `media` / `file` | 记录存在附件，不解析内容 |
| `system` | 提取系统消息模板（如邀请入群），辅助判断上下文 |

### 5.4 上下文补充

对用户发送或被@的消息，同时保留该消息前后的 2~3 条群组消息作为上下文，帮助理解讨论背景。

## 6. 参考周报文档（可选）

如果用户所在群组中存在周报文档链接（如驱动小小组的周报提醒卡片），可使用 `docx_v1_document_rawContent` 获取文档内容，作为交叉参考和格式参考。

传入参数结构：

```json
{
  "path": { "document_id": "<从URL末段提取>" },
  "query": { "lang": 0 }
}
```

## 7. 分析与分类

将筛选出的消息按以下维度归类整理：

### 7.1 按项目/主题分组

根据群组名称和消息内容，识别所涉及的项目或主题。常见分组维度：

- 产品项目名称（如 RK3588 RIGOLOS、草原雕、蛇雕等）
- 技术领域（如 PCIe、SDIO、MCU 升级等）
- 支持类工作（如问题定位、评估测试、面试等）

### 7.2 判断工作性质

| 分类 | 判断依据 |
|------|---------|
| 开发与适配 | 提及驱动移植、模块搭建、功能实现、镜像制作等 |
| 问题定位与调试 | 提及排查、定位、卡死、异常、crash 等 |
| 评估与测试 | 提及评估、压测、测试、验证等 |
| 技术支持 | 提及协助、帮忙查找、提供资料等 |
| 团队管理 | 提及会议、周报、面试等 |

## 8. 生成周报

### 8.1 报告结构

```markdown
## [姓名] 本周工作报告（YYYY/MM/DD - YYYY/MM/DD）

### 一、本周完成工作

#### 1. [项目/主题名称]
- **[具体工作项]**：[详细描述，包含关键技术细节]

#### 2. [项目/主题名称]
- ...

### 二、下周工作计划

#### 1. [项目/主题名称]
- [计划内容]
```

### 8.2 内容规范

- 使用**第一人称或第三人称客观描述**，而非聊天原文。
- 将零散的聊天内容**归纳提炼**为完整的工作条目，不要逐条罗列聊天消息。
- 保留关键技术细节（如具体的技术方案、问题根因、配置参数等）。
- 下周计划从本周未完成工作和讨论中提到的后续任务中提取。

### 8.3 输出方式

直接在对话中输出周报内容，不生成文件（除非用户要求保存为文件）。

