n8n自动化实战:每天早上 10 点自动生成工作日报

2025-11-19 17:43:58
文章摘要
这篇文章讲的,是怎样用n8n、飞书日历和大模型,打造一个“自动写日报的小助手”。会议一开完,它就会自己去抓日程、读文档、分析重点,还能自动生成待办、风险、决策,一键发到飞书群里。你不用再到处翻会议记录,也不用苦思冥想写日报,每天能省下半小时。

一、为什么企业需要这个自动化方案?

在日常工作中,你是否遇到过这些痛点

  1. 每天开完会,在线文档记了一份,本地文档还有一份,领导突然问上周会议定了什么,翻半天找不到。
  2. 写日报时,要重新回忆今天开了哪些会、谁说了什么、有哪些待办
  3. 团队成员信息不同步,A 同事不知道 B 同事会议上承诺的交付时间

传统解决方式是人工整理,但问题在于:

  1. 耗时:每天至少20-30分钟整理会议记录
  2. 遗漏:人的记忆有限,关键信息容易丢失
  3. 不及时:往往晚上才想起来整理,信息时效性差

本文将教你用 n8n + 日历 + 大模型,搭建一个全自动的每日工作摘要生成器,包含:

  1. 每日10 点自动触发
  2. 自动抓取当天所有会议安排
  3. 自动读取会议关联的飞书文档/腾讯文档
  4. 用魔塔 API 自动提取「待办事项」「关键决策」「风险点」
  5. 最后生成一份日报,自动写入指定的飞书文档

全程零人工介入,每天为你节省 30 分钟。


二、工作流程

整个自动化流程分为 6 个关键环节:

定时触发(每天 10:00)
    ↓
配置参数(飞书凭证、魔塔 API Key)
    ↓
获取飞书访问令牌
    ↓
抓取飞书日历今日会议
    ↓
过滤并提取会议详情
    ↓
AI 分析每个会议内容(魔塔 API)
    ↓
汇总生成每日摘要
    ↓
发送到飞书群聊机器人

【完整工作流画布截图】

技术栈选择

模块

国内方案

说明

自动化平台

n8n

免费试用 14 天

日历系统

飞书日历

本文以飞书为例

AI大模型

魔塔社区API 

有免费额度

输出渠道

飞书群聊机器人

最简单直接


三、实操流程:从零搭建自动化日报系统

准备工作

在开始之前,你需要:

1. 注册 n8n 账号(14天免费试用,足以运行演示方案)

2. 准备飞书开放平台账号

3. 准备魔塔社区账号

4. 创建一个飞书群聊并添加机器人


获取飞书 API 凭证

1. 打开 https://open.feishu.cn/,点击开发者后台,创建企业自建应用

2. 在「凭证与基础信息」中复制 App ID 和 App Secret,后面会用到

3. 在「权限管理」中开通以下权限:

calendar:calendar (获取日历)

calendar:calendar.event (获取日历事件)

calendar:calendar.event:readonly (以应用身份读取日历)

在「版本管理与发布」中创建版本并发布


创建飞书群聊机器人

1. 在飞书电脑端中,点击左上角「+」→「创建群组」

2. 命名为:「每日工作摘要」

3. 添加需要接收日报的团队成员

4. 点击右上角「设置」→「群机器人」→「添加」→「自定义机器人」

5. 机器人名称:「日报助手」,点击「添加」

复制 Webhook 地址,格式类似:

   https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

保存好这个地址,稍后要用


获取魔塔社区 API Key

  1. 访问 https://www.modelscope.cn/
  2. 点击右上角「登录/注册」
  3. 使用手机号或邮箱完成注册
  4. 登录后,点击右上角头像 → 「账号奢姿」,点击左侧「访问令牌」
  5. 点击「新建访问令牌」,名称填写:「n8n 日报生成」
  6. 点击「确定」复制 API Key

保存好这个 Key,稍后要用


第一步 启用 n8n AI 工作流构建器

1. 登录 n8n 后,点击左上角 + 创建新工作流

2. 等待片刻,页面刷新后即可看到 AI 构建器入口


第二步 用自然语言生成工作流骨架

工作流构建器只需一条自然语言提示即可生成整个流程。

我们只需粘贴一段简洁的目标描述,构建器就会自动选择节点、连接线路并预填充参数。

点击「Build with AI」按钮,输入以下英文提示词(AI 构建器对英文支持更好)

Build an n8n workflow with the following nodes and exact names:

Node 1: "Daily Trigger at 10 AM" - Schedule Trigger node that runs every day at 10:00 AM, timezone Asia/Shanghai

Node 2: "Workflow Configuration" - Set node with these assignments:
- feishuAppId (string)
- feishuAppSecret (string)
- feishuCalendarId (string, default "primary")
- motaApiKey (string, for ModelScope API)
- feishuWebhook (string, for sending to Feishu group chat bot)

Node 3: "Get Feishu Access Token" - HTTP Request node:
- Method: POST
- URL: https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal
- Headers: Content-Type: application/json
- Body (JSON): {"app_id": "expression to get feishuAppId from Workflow Configuration", "app_secret": "expression to get feishuAppSecret from Workflow Configuration"}

Node 4: "Extract Access Token" - Set node to extract tenant_access_token from response as "accessToken"

Node 5: "Get Today Calendar Events" - HTTP Request node:
- Method: POST
- URL: https://open.feishu.cn/open-apis/calendar/v4/calendars/{use feishuCalendarId}/events/search
- Headers: Authorization: Bearer {use accessToken}, Content-Type: application/json
- Body (JSON): time range from today 00:00:00 to 23:59:59 unix timestamp

Node 6: "Filter and Process Events" - Code node to:
- Filter out cancelled events
- Extract: title, start_time, end_time, description, attendees
- Return array of meeting objects

Node 7: "Check If Events Exist" - IF node checking if item count > 0

Node 8 (True branch): "Analyze Each Meeting with AI" - HTTP Request node:
- Method: POST
- URL: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
- Headers: Authorization: Bearer {use motaApiKey}, Content-Type: application/json
- Body: Call qwen-plus model with system prompt asking to extract action items, decisions, and risks from meeting content

Node 9: "Extract AI Response" - Code node to extract message.content from AI response

Node 10: "Aggregate All Summaries" - Aggregate node to collect all meeting summaries into one item

Node 11: "Generate Final Daily Report" - HTTP Request node calling ModelScope API again to create comprehensive daily summary from all meeting analyses

Node 12: "Extract Final Summary" - Code node to extract final summary text

Node 13 (False branch from Node 7): "No Meetings Message" - Set node with text "今日无会议安排"

Node 14: "Send to Feishu Bot" - HTTP Request node:
- Method: POST
- URL: {use feishuWebhook}
- Headers: Content-Type: application/json
- Body: {"msg_type": "text", "content": {"text": "summary text from Node 12 or Node 13"}}

Connect all nodes in the correct flow with proper branching at the IF node.


注意:n8n 的 AI 构建器会消耗积分(免费版每月 20 个),每次生成或修改算 1 次,失败不扣分。

现在我们已经搭建好了一个基本的工作流,下面我们将修改流程中的关键节点。。


第三步 配置飞书日历节点

生成的工作流中,第一个实际执行节点需要接入飞书 API。

在 n8n 中配置飞书凭证

配置 Workflow Configuration :

1. 点击节点进入编辑模式

2. 填写以下参数:

feishuAppId:你的飞书 App ID

feishuAppSecret::你的飞书 App Secret

feishuCalendarIdprimary(日历ID)

motaApiKey:魔塔 API Key

feishuWebhook:飞书机器人 Webhook

填后,点击右上角「Execute Step」测试,应该返回包含这 5 个参数的数据


第四步 修改 Get Feishu Access Token 节点

AI 生成的这个节点存在 JSON 格式错误,需要手动修改。

点击「Get Feishu Access Token」节点,找到「Body」→「JSON」字段,当前内容可能是

{
  "app_id": {{ $('Workflow Configuration').first().json.feishuAppId }},
  "app_secret": {{ $('Workflow Configuration').first().json.feishuAppSecret }}
}

改成

{
  "app_id": "={{ $('Workflow Configuration').first().json.feishuAppId }}",
  "app_secret": "={{ $('Workflow Configuration').first().json.feishuAppSecret }}"
}


第五步 修改 Get Today Calendar Events 节点

先修改 URL表达式

点击「Get Today Calendar Events」节点,修改 URL 为:

=https://open.feishu.cn/open-apis/calendar/v4/calendars/{{ $('Workflow Configuration').first().json.feishuCalendarId }}/events/search


接着修改 Headers

确保 Headers 包含两个参数:

Header 1

 Name: Authorization

 Value: =Bearer {{ $('Extract Access Token').first().json.accessToken }}

Header 2

 Name: Content-Type

 Value: application/json


修改 JSON Body

修改 Body 为

{
  "start_time": "={{ Math.floor(new Date().setHours(0,0,0,0)/1000) }}",
  "end_time": "={{ Math.floor(new Date().setHours(23,59,59,999)/1000) }}"
}


第六步 修改 Filter and Process Events 节点

替换 JavaScript 代码

点击「Filter and Process Events」节点,将代码替换为

// 获取飞书日历返回的事件列表
const input = $input.all();
const meetings = [];

// 遍历所有事件
for (const item of input) {
  const events = item.json.data?.items || [];
  
  for (const event of events) {
    // 跳过已取消的会议
    if (event.status === 'cancelled') {
      continue;
    }
    
    // 提取会议信息
    const meeting = {
      title: event.summary || '未命名会议',
      startTime: event.start_time?.date_time || event.start_time?.date || '',
      endTime: event.end_time?.date_time || event.end_time?.date || '',
      description: event.description || '无会议描述',
      attendees: (event.attendees || []).map(a => a.attendee_ability || a.user_id).join(', ') || '无参会人信息'
    };
    
    meetings.push(meeting);
  }
}

// 如果没有会议,返回空数组
if (meetings.length === 0) {
  return [];
}

// 返回会议列表
return meetings.map(m => ({ json: m }));


第八步 修改 Analyze Each Meeting with AI 节点

配置魔塔API调用,点击「Analyze Each Meeting with AI」节点,确认配置

Method: POST

URL

https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions

Headers:

  1. Name: Authorization
  2. Value: =Bearer {{ $('Workflow Configuration').first().json.motaApiKey }}
  3. Name: Content-Type
  4. Value: application/json

JSON Body:

{
  "model": "qwen-plus",
  "messages": [
    {
      "role": "system",
      "content": "你是一个会议分析助手。请分析会议内容并提取:\n1. 待办事项(标注负责人)\n2. 关键决策\n3. 风险点\n\n用简洁的中文 Markdown 格式输出。"
    },
    {
      "role": "user",
      "content": "=会议:{{ $json.title }}\n时间:{{ $json.startTime }} 至 {{ $json.endTime }}\n参会人:{{ $json.attendees }}\n内容:{{ $json.description }}"
    }
  ]
}


第九步 修改 Extract AI Response 节点

点击「Extract AI Response」节点,将代码替换为

// 提取 AI 返回的内容
const aiResponse = $input.first().json;

return {
  json: {
    meetingTitle: $('Filter and Process Events').item.json.title,
    aiSummary: aiResponse.choices[0].message.content
  }
};



第十步 配置 Generate Final Daily Report 节点

配置最终摘要生成,点击「Generate Final Daily Report」节点,配置与第九步相同的 URL 和 Headers

JSON Body:

{
  "model""qwen-plus",
  "messages": [
    {
      "role""system",
      "content""你是一个工作日报生成助手。请基于所有会议的分析结果,生成一份结构化的每日工作摘要,包括:\n\n# 今日工作摘要\n\n## 会议概览\n[列出所有会议]\n\n## 待办事项汇总\n[按优先级分类]\n\n## 关键决策\n[重要决定]\n\n## 风险提示\n[需要关注的问题]\n\n用清晰的中文 Markdown 格式输出。"
    },
    {
      "role""user",
      "content""=请基于以下会议分析生成日报:\n\n{{ $json.aggregatedData }}"
    }
  ]
}


第十一步 修改 Extract Final Summary 节点

点击「Extract Final Summary」节点,将代码替换为

// 提取最终摘要
const response = $input.first().json;
const summary = response.choices[0].message.content;

// 添加生成时间
const now = new Date();
const dateStr = now.toLocaleDateString('zh-CN', {
  year'numeric',
  month'2-digit',
  day'2-digit',
  weekday'long'
});

return {
  json: {
    dailySummary`生成时间: ${dateStr} ${now.toLocaleTimeString('zh-CN')}\n\n${summary}`
  }
};



第十二步 配置 Send to Feishu Bot 节点

配置飞书机器人发送,点击「Send to Feishu Bot」节点,确认配置

Method: POST

URL

={{ $('Workflow Configuration').first().json.feishuWebhook }}

Headers:

Name: Content-Type

Value: application/json

JSON Body

{
  "msg_type": "text",
  "content": {
    "text": "={{ $('Extract Final Summary').first().json.dailySummary || $('No Meetings Message').first().json.message || '生成日报失败' }}"
  }
}


第十二步 测试与激活

按照从左到右的顺序,逐个点击「Execute Step」测试,有问题就逐个调试,最后点击工作流右上角的「Execute Workflow」察所有节点的执行状态,打开飞书群聊,查看是否收到日报消息。

测试成功后,点击工作流右上角的「Inactive」开关,切换为「Active」,系统提示「Workflow activated successfully」就表示完成激活。

激活后,每天早上 10 点会自动执行,无需人工干预。


声明:该内容由作者自行发布,观点内容仅供参考,不代表平台立场;如有侵权,请联系平台删除。