作为开发者想要坚持日常技术输出、团队需要固定技术分享,但总没人手和时间?我们可以搭建一个自动化工具:每天自动生成一篇技术文章,直接推送到飞书群,全程无需人工干预,既可以巩固个人知识点,也能同步团队学习。

前言
为什么需要自动生成文章并推送飞书
这个自动化方案可以解决以下常见痛点:
- 想坚持内容输出,但总是挤不出时间创作
- 团队需要每日技术分享,但没人主动轮流承担
- 想每天固定学习一个新技术点,但很难坚持
只需要提前定好主题方向,大模型会自动生成结构清晰的技术文章,再通过飞书机器人推送到指定群聊,全程不需要人工干预,每天定时自动执行。
本文能学到什么
- 如何用Coze(扣子)搭建大模型生成工作流
- 如何配置飞书自定义机器人发送富文本消息
- 如何用GitHub Actions实现免费的定时任务触发
- 完整的异常处理、排障思路和扩展优化方案
准备工作
账号和权限准备
提前准备以下账号:
- Coze账号:字节跳动扣子平台,可免费使用,地址:coze.cn,支持GPT、豆包等多种大模型
- 飞书账号:需要是目标飞书群组的管理员,才有添加自定义机器人的权限
- GitHub账号:用来实现免费定时触发,本地部署则不需要
依赖环境安装
本文使用Python开发,需要安装核心依赖:
pip install requests python-dotenv pycryptodome
requests:调用Coze API和飞书APIpython-dotenv:加载本地环境变量,保护密钥pycryptodome:飞书机器人签名校验依赖
密钥配置与安全存储
密钥禁止硬编码,推荐使用环境变量存储:
-
本地开发新建
.env文件存储密钥,并将.env加入.gitignore避免上传:COZE_API_KEY=你的coze api密钥 COZE_WORKFLOW_ID=你的coze工作流id FEISHU_WEBHOOK_URL=你的飞书机器人webhook地址 FEISHU_SECRET=你的飞书签名密钥
-
使用GitHub Actions触发时,在项目的
Settings -> Secrets and variables -> Actions中添加对应密钥即可,不会泄露。

核心流程整体设计
需求拆解
整个需求拆分为三个核心步骤:
- 自动生成:调用Coze工作流,让大模型按照要求生成技术文章
- 格式整理:把大模型返回的Markdown转换为飞书支持的富文本格式
- 推送飞书:通过飞书机器人Webhook把整理好的文章推送到指定群聊
整体流程架构梳理
flowchart LR
A[定时触发] --> B[调用Coze工作流API]
B --> C{生成成功?}
C -->|是| D[格式转换: Markdown→飞书富文本]
D --> E[调用飞书Webhook推送]
E --> F[结束记录日志]
C -->|否| G[重试/记录错误日志]
Coze自动生成文章配置细节
Coze是字节推出的AI工作流编排平台,无需自行搭建大模型,简单拖拽即可配置生成逻辑,使用非常方便。
创建Coze工作流
- 登录Coze后台,点击「新建」→「工作流」
- 拖拽「大语言模型」节点,连接开始和结束节点,最终结构为:开始 → LLM调用 → 结束
配置大语言模型生成prompt
prompt是生成合格文章的核心,需要明确告诉大模型生成要求和格式。以下是每日生成前端技术文章的示例:
你是一个资深前端技术专家,请每天给前端开发团队分享一篇前端技术文章,要求如下:
1. 今天的日期是{{date}},请选择一个前端热门知识点,主题不要重复,深度适合中高级前端开发者
2. 文章结构必须包含:今日分享标题、知识点导读、原理讲解、代码示例、总结拓展五个部分
3. 语言通俗易懂,避免太官方的表述,代码示例必须正确可运行
4. 整体长度控制在1000字以内,不要太长
5. 输出格式使用标准Markdown
Coze支持变量传入,代码调用时可以动态传入当前日期,保证每次生成主题不重复。
文章结构化输出配置
除了prompt中写明结构要求,还可以在工作流输出配置中,要求大模型按照固定JSON结构返回,方便后续解析: 示例输出结构:
{
"title": "文章标题",
"content": "文章正文Markdown",
"topic": "知识点分类"
}
生成结果重试机制
为避免大模型生成失败,可在代码层面添加重试机制:
def generate_article(retry_times=3):
for i in range(retry_times):
try:
调用coze api
response = requests.post(...) data = response.json()
如果生成成功直接返回
if data.get('code') == 0: return data.get('data')
失败打印日志后重试
print(f"第{i+1}次生成失败: {data.get('msg')}") except Exception as e: print(f"生成请求异常: {e}") time.sleep(2) return None
如果连续三次生成失败,会发送错误提醒到飞书,方便及时排查问题。
飞书机器人推送配置细节
创建飞书自定义机器人
- 打开目标飞书群,点击群设置 → 机器人 → 添加机器人
- 选择「自定义机器人」,点击添加,设置机器人名称和头像
- 安全设置选择「签名校验」,不要选择IP限制,支持GitHub Actions调用
获取密钥信息
创建完成后,会直接得到Webhook地址和签名密钥,将两个信息保存到环境变量即可。
飞书富文本消息格式适配
使用富文本格式(post)可以很好的展示标题、段落、代码块,适配简单。飞书富文本基础结构如下:
message = {
"msg_type": "post",
"content": {
"post":
关键亮点:
🎯 流程清晰:大纲→文章→润色→推送
🤖 智能生成:使用 LLM 自动生成高质量文章
📝 格式规范:标准 Markdown,代码高亮
🚀 自动推送:一键发送到飞书
✅ 测试通过:完整验证工作流稳定性。