引言
在企业管理日常运营中,信息获取的时效性和准确性直接影响决策质量。本文复盘了一个真实场景:如何在 1 小时内,从接收需求到完成部署,搭建一套汽车行业晨报自动发布系统。该系统每天 08:00 前自动搜索全网新闻、整理分类、通过飞书推送给管理者,每条新闻均附带原始链接便于深度阅读。
一、需求接收与拆解
1.1 原始需求
用户提出以下核心诉求:
内容范围:汽车行业综合资讯,涵盖主机厂动态、供应链、新能源、智驾、政策市场、资本出海等 6 大分类
发布频率:每个工作日早上 08:00 前
发布渠道:飞书私聊
格式要求:每条新闻带原始链接,方便点击阅读详情
筛选标准:优先保留对经营、质量、供应链、客户动态有价值的内容
1.2 任务拆解
作为总协调负责人,我将需求拆解为以下可执行任务:
阶段 | 任务 | 预计耗时 |
|---|---|---|
1 | 修复飞书通信故障 | 5 分钟 |
2 | 安装并配置 Tavily 搜索技能 | 10 分钟 |
3 | 设计晨报输出模板 | 10 分钟 |
4 | 编写自动执行脚本 | 10 分钟 |
5 | 配置 Windows 任务计划 | 15 分钟 |
6 | 端到端测试验证 | 10 分钟 |
二、飞书通信修复
2.1 问题诊断
系统提示旧版飞书插件未禁用,导致新版插件无法正常工作。
2.2 修复步骤
步骤 1:禁用旧插件
openclaw config set plugins.entries.feishu.enabled false --json
步骤 2:重启网关
openclaw gateway restart
步骤 3:重新授权
网关重启后需刷新用户授权,系统在飞书中发送授权卡片,用户点击同意完成授权。
三、Tavily 搜索技能配置
3.1 为什么选择 Tavily
Tavily 是专为 AI 优化的搜索引擎,具有以下优势:
返回结构化结果,便于程序处理
支持时间范围过滤(day/week/month)
支持主题过滤(news/finance/general)
提供 AI 生成的答案摘要
免费额度足够日常使用
3.2 配置到系统
方式一:通过配置文件
编辑 ~/.openclaw/openclaw.json,在 plugins.entries.tavily 下添加配置。
方式二:通过命令行
openclaw config set plugins.entries.tavily.config.webSearch.apiKey "tvly-dev-****...****" --jsonopenclaw gateway restart
⚠️ 安全提示:API Key 属于敏感信息,配置文件中应脱敏存储,日志输出时需截断显示(前 4 位 + ... + 后 4 位)。
四、晨报模板设计
4.1 输出格式规范
经过两轮迭代,最终确定以下模板:
## 🚗 汽车行业晨报 | {日期}---### 1️⃣ 今日重点- **标题**: 核心结论 + 背景 [查看详情](原始链接)### 2️⃣ 主机厂动态- **车企名称**: 动态内容 [查看详情](链接)### 3️⃣ 供应链/零部件- **供应商**: 动态内容 [查看详情](链接)### 4️⃣ 新能源/智驾- **技术/产品**: 动态内容 [查看详情](链接)### 5️⃣ 政策与市场- **政策/市场**: 动态内容 [查看详情](链接)### 6️⃣ 资本/出海/价格战动向- **动向**: 内容 [查看详情](链接)### 7️⃣ 一句话速览> 总结今日最值得关注的行业信号### 8️⃣ 来源链接1. [标题 1](链接 1)2. [标题 2](链接 2)...
4.2 搜索词优化
测试发现英文搜索词返回结果质量更高,最终配置 6 个分类的英文搜索词。
五、自动执行脚本开发
5.1 脚本架构
采用两层脚本设计:
触发脚本(auto-morning-brief.py):
由 Windows 任务计划调用
创建触发文件
.trigger_morning_brief记录执行日志
生成脚本(morning-brief-generator.py):
监听触发文件
调用 Tavily API 搜索 6 个分类
整理格式并输出
清理触发文件
5.2 关键代码片段
def search_news(query): url = "https://api.tavily.com/search" payload = { "api_key": TAVILY_API_KEY, "query": query, "time_range": "day", "topic": "news", "search_depth": "advanced", "max_results": 8 } response = requests.post(url, json=payload, timeout=30) return response.json()
六、Windows 任务计划配置
6.1 创建批处理入口
创建 run-morning-brief.bat 批处理文件。
6.2 配置任务计划
PowerShell 命令:
Register-ScheduledTask ` -TaskName "OpenClaw-汽车行业晨报" ` -Trigger (New-ScheduledTaskTrigger -Daily -At 7:55am) ` -Description "每天 7:55 自动触发汽车行业晨报生成"
6.3 管理命令
# 查看任务状态Get-ScheduledTask -TaskName "OpenClaw-汽车行业晨报"# 手动测试Start-ScheduledTask -TaskName "OpenClaw-汽车行业晨报"# 暂停/恢复Disable-ScheduledTask / Enable-ScheduledTask
七、测试验证
7.1 手动触发测试
Start-ScheduledTask -TaskName "OpenClaw-汽车行业晨报"
7.2 验证要点
6 个分类均有内容
每条新闻带原始链接
链接可正常访问
格式符合模板要求
触发文件已清理
7.3 测试结果
首次测试因 Tavily 返回 snippet 为空导致内容为空,经调试后修复,成功生成含 10+ 条新闻的完整晨报。
八、经验总结
8.1 关键成功因素
分阶段验证:每完成一个阶段立即测试,避免问题累积
英文搜索词:Tavily 对英文内容覆盖更广,返回质量更高
两层脚本设计:触发与生成分离,便于调试和日志追踪
敏感信息脱敏:API Key 等敏感信息在日志和输出中截断显示
8.2 踩坑记录
问题 | 原因 | 解决方案 |
|---|---|---|
飞书无法发消息 | 旧插件未禁用 | 禁用旧插件 + 重启网关 |
Tavily 返回空结果 | 中文搜索词覆盖少 | 改用英文搜索词 |
snippet 为空 | API 返回格式变化 | 用 title 兜底 |
控制台乱码 | Windows GBK 编码 | 设置 UTF-8 输出 |
8.3 后续优化方向
增加新闻去重逻辑
支持用户自定义搜索词
增加异常告警机制
支持多接收人配置
九、系统状态
项目 | 状态 |
|---|---|
首次自动执行 | 2026-04-13 07:55 |
任务计划 | 已注册,状态 Ready |
飞书连接 | 正常 |
Tavily API | 正常 |
结语
本系统从需求接收到部署完成用时约 1小时,核心在于:
清晰的任务拆解:将大目标分解为可验证的小任务
合适的工具选型:Tavily + Windows 任务计划 + Python
迭代式开发:每步验证,快速修复
安全合规:敏感信息脱敏,权限最小化
这套方法论可复用于其他自动报告场景,如竞品监控、政策追踪、舆情分析等。
夜雨聆风