首页 / 资讯中心 / 文章详情

用WorkBuddy搭建自动AI日报:定时触发、内容总结与微信推送全攻略

用WorkBuddy搭建自动AI日报:定时触发、内容总结与微信推送全攻略 ★ FEATURED ARTICLE
每天上午十点半我微信里准点收到一份“AI日报”。不是那种转发群里凑数的剪报而是看起来就像一个编辑做过的内部快报今日核心、大模型发布、开源动态、工具更新、值得注意的讨论每块三到五条摘要末尾还给一句“今天值得关注什么”的结论。这个习惯已经持续了一段时间背后的“人工编辑”是我给 WorkBuddy 配的一个定时任务每分钟、每小时、每天几点触发都由一套规则管着。很多人问我这玩意儿怎么搭起来的今天干脆把整套思路拆开聊聊。先说明白它解决的是什么问题。我每天早上打开信息流满屏都是 AI 的内容但真正值得动手研究的其实没几条。与其刷两个小时手机不如让一个自动化工作流在固定时间替你抓取、过滤、排序再把结果送进微信。WorkBuddy 这类 AI 工作台最大的价值就是把“信息收集、内容整理、消息分发”串成一条流水线而你只需要维护好规则和提示词。下面这些内容是按照我实际配置和使用过的路子写的使用的方案尽量通用你换成同类工具也适用。1. 一条日报流水线的完整设计思路1.1 先把需求拆成“三个节点”最开始我差点把这事儿想复杂了以为要写爬虫、搭数据库、做前端页面。其实一条自动日报的核心只包含三件事按计划触发任务、抓取并总结内容、把结果交给指定渠道。对应到 WorkBuddy 里就是三个节点定时节点、内容处理节点、消息发送节点。定时节点解决“什么时候干”内容处理节点解决“干什么”消息发送节点解决“怎么送达”。我当时在能力卡片里加了一个 workflow名字就叫ai_daily_report里面串了这三个环节整个任务看起来就像一条流水线。这种拆分方式有一个明显的好处任何一个环节都可以单独替换。比如今天我想换内容源改一个 URL 列表就行明天我想把日报发送到飞书替换发送节点就行后面的定时规则和摘要逻辑完全不用动。1.2 触发时间为什么选“十点半”而不是九点很多人第一反应是“日报当然要早上九点发”我实测下来九点不是好选择。九点是多数人刚进办公状态的时间推送容易被直接划掉。十点半是个更稳妥的时间——上午会议大多已经开完人进入工作状态正好需要一份资料来规划下午和第二天的事情。定时表达式写的是30 10 * * *这就是每天上午十点半触发的 cron 写法分钟在前、小时在后对应到这个任务就是“第 30 分钟第 10 小时”。配置时要注意工具内部默认的时区有些云函数用的 UTC 时区直接填30 10会变成北京时间晚上六点半。我这里额外指定了timezone: Asia/Shanghai并且实际验证过触发日志。另一个细节是“补偿触发”。有些自动化平台提供 missed run 选项意思是任务到点没跑起来比如电脑休眠、服务重启等恢复了要不要补跑。日报类任务我推荐开启虽然十点半那次可能偶尔迟到但总比一整天收不到强。1.3 内容源选几个才够看又不过载信息源我分了三类一手技术动态、社区讨论、聚合资讯。一手技术动态用 GitHub Trending 和模型厂商的 release notes社区讨论看 Hacker News 和几个技术论坛聚合资讯用 36kr 或者少数派的 RSS。刚开始我贪多挂了七八个源结果日报里重复信息特别多同一个模型发布在三个来源里各出现一次摘要显得很啰嗦。后来砍到五个以内并且在“去重”环节加了规则如果两条内容标题的相似度超过 80%只保留热度更高那一条。这里有一个很关键的取舍日报不是新闻全文它是“导览”。每条摘要控制在 80 到 120 字只交代三件事——是什么、为什么值得关注、跟我的工作有什么关系。太多了反而失去“扫一眼就知道今天有什么”的价值。2. 核心机制拆解定时、抓取、总结、推送是怎么配合的2.1 定时节点不是简单设个闹钟WorkBuddy 里的定时任务没那么简单它背后是一套“日历触发器”的机制。你在能力卡片里新建一个触发器指定 cron 表达式系统到点会把工作流实例唤醒向后续节点传一个初始上下文比如当前时间2025-01-14 10:30:00和触发来源scheduled。我在这个节点里还做了一步“日期检查”避免节假日也照发日报。设置了一个节假日列表周六周日不触发法定节假日也不触发。如果你负责团队内部的信息推送这一点很重要工作日日报和休息日骚扰是两回事。定时任务的“失败重试”也值得单独看。第一次跑的时候某次抓取请求超时导致整个流程中断后面全没了。后来我在定时节点后面加了一个简单的分支内容节点统计抓取的条目数低于 10 条就判定为异常触发一次重试重试还是失败就发送一条“今日日报生成失败”的占位推送而不是默不作声。2.2 内容抓取阶段先拿列表再取正文别一把梭这一步是我踩坑最多的地方。早期做法是用户说“抓取这几个网站的最新内容”我直接让工作流把每个页面的正文全部下载然后扔给大模型总结。结果每次请求时间都很长摘要质量也不稳定经常把评论区、导航菜单里的内容一起总结进去。后来我把策略改成了“两步走”。第一步用 RSS 或者搜索接口拉取每个源的最新内容列表只保留标题、链接、发布时间、基础摘要。第二步根据第一步的列表筛出最值得深入看的几篇再请求正文做深度摘要。举个例子模型厂商 release notes 这种页面我要的其实就是“版本号、更新的核心能力、破坏性变更”没必要把整个 release page 全部塞给模型。在 prompt 里明确指定输入格式标题、链接、更新摘要限制120字、相关标签模型输出稳定很多。抓取阶段还要注意请求头的伪装。有些资讯站对明显非浏览器请求有反爬我在这里给请求头补了User-Agent: Mozilla/5.0和Accept: text/html实测下来被拒的情况大幅减少。别一上来就研究什么复杂的验证码识别绝大多数日报场景用标准请求头就够。2.3 让大模型按固定格式输出日报总结环节是整个工作流质量的关键也是大多数人做得最敷衍的地方。我的 prompt 不是一段简单的“帮我总结今天的 AI 资讯”而是一份结构化的“编辑指令”。你是我的 AI 信息助理。请根据抓取到的内容生成一份日报要求如下 1. 遵守 Markdown 格式标题为“AI 日报 YYYY-MM-DD” 2. 按“今日核心 / 模型与算力 / 开源动态 / 工具产品 / 社区值得看”五个板块组织 3. 每条内容包括一句话标题、来源、120字以内摘要 4. 摘要必须说明“为什么值得关注”不允许只复述原文 5. 最后添加“今日观察”用2-3句话给出你自己的判断 6. 禁止输出营销口吻禁止使用感叹号禁止写“重磅”“震惊”这条 prompt 是迭代出来的。最初只有“帮我总结”模型输出经常是“根据最新消息某公司发布了新产品这可能对未来产生深远影响”这种废话。后来我加了两条约束才好转摘要必须包含“为什么值得关注”以及禁止使用空洞的营销词。输出质量立刻不一样了。模型跑出来的内容还要做一层校验。WorkBuddy 的流程里我加了一个规则节点检查输出是否包含“重磅”“震惊”“前所未有”之类的词如果出现自动替换成更中性的表达如果输出的标题那一行不是以日期开头就判定为格式错误让模型重新生成。2.4 推送进微信选一条最省事的通道把日报推送进微信技术方案其实有好几条。企业微信应用消息、公众号模板消息、第三方推送渠道我最后用的是 Server 酱的 webhook 通道因为它流程最短只要向一个 URL POST 一段 JSON 就能把消息推送到微信。同样如果不用 Server 酱也可以用 PushPlus 或者其他聚合推送服务接口大同小异。核心点是推送通道要封装成一个“消息节点”而不是把推送代码散落在各步骤里。我在消息节点里配置了这样一段发送请求{ title: AI 日报 01-14, desp: 今日核心新开源模型发布三个值得看的工具更新两条社区讨论, channel: wechat }标题配合摘要一起看扫一眼就知道今天需不需要打开完整日报。如果摘要里显示“今日无重大动态”我甚至不会点开详细内容这就达到了最初想要的“过滤”效果。另一个值得做的细节是“分段推送”。日报很长一次性塞进微信容易被折叠阅读体验很差。我后来把日报拆成“摘要卡片”和“完整长文”两次推送摘要卡片十点半到完整版如果被摘要勾起了兴趣可以在卡片里点链接打开。微信号和 Server 酱的接口天然支持这种短链接跳转不需要额外开发。3. 完整实操从空白工作台到每天十点半收到日报3.1 创建定时任务配置固定的触发规则在 WorkBuddy 工作台里新建一个自动化任务目标选“定时触发”然后填 cron 表达式。如果你对 cron 不熟悉可视化模式也可以选“每天”“10:30”效果一样。我建议你在建任务的第一个版本时把触发时间设成每五分钟一次先小范围验证整个流程能不能跑通确认无误后再改成每天十点半。用低频率去调一个可能失败的长流程效率太低了五分钟一次可以直接观察问题和日志。定时触发配置完成后我建议手动执行一次不要干等。在 WorkBuddy 的任务详情页里有“立即运行”按钮点它会直接唤起流程方便你在真实环境里验证整条链路。3.2 配置内容源列表建立“抓取线索表”别把 URL 硬编码在规则里。我在 WorkBuddy 里建了一个单独的表叫news_sources每一行是一个源的信息源名称、入口 URL、请求方法、间隔时间、类型。日报工作流启动时先去读这张表再按配置发起抓取。这样做的最大好处是你想临时加一个源不需要改动流程只需要往表里插一行数据。比如某天大模型厂商有发布会我提前一天把对应的官方博客加进去第二天日报自动就会包含这个源的内容。这一步的实际操作逻辑是新增一张数据表字段包括source_id,name,url,type,enabled把常用源填进去比如 OpenAI 官方博客、GitHub Trending、Hacker News 的 RSS在工作流的第一个节点调用“读取数据表”动作拿到所有 enabled 的源将源列表传给内容抓取节点一开始就按这种“配置驱动”的方式搭流程后面维护成本会低很多。3.3 写摘要提示词并做多轮测试摘要提示词不要一次成型。你先用最基础的版本跑几轮看输出里哪些地方不是你想要的再逐步往 prompt 里加约束条件。我做了一个“两阶段 prompt”的做法。第一阶段让模型输出一个大纲列举它认为今天最重要的话题。第二阶段再让模型根据大纲填充具体内容。这个做法在你的日报有“今日核心”板块时特别有用——如果一开始就让模型直接输出完整日报它经常把最核心的条目淹没在普通摘要里。我见过不少人在这里犯的错误是把整个工作流的“prompt 调试”和“流程测试”混在一起。一旦流程跑失败分不清是抓取的问题还是模型输出格式的问题。解决办法是把每个节点的输入输出都记录到日志里在 WorkBuddy 前后端日志里分步查看抓取节点返回的条目数、总结节点输出的字符数、推送节点的 HTTP 状态码。分段定位问题十分钟内就能找出来。3.4 接入微信推送并验证消息格式接入 Server 酱后第一次推送建议只推送一句话验证通道是通的curl -X POST https://sctapi.ftqq.com/你的SendKey.send \ -d titleAI日报通道测试 \ -d desp如果你收到这条消息说明推送通道是通的。收到测试消息后再把日报生成节点和推送节点串联起来。首次完整推送以后检查四个地方消息标题是否显示了日期摘要有没有被折叠点击链接能不能打开内容分段是否正常。微信端的消息有个特点长文会自动折叠摘要显示得越短完整内容被打开的概率越高。我把每一部分控制在 200 字以内整个日报控制在 1500 字左右实测点击率比最初那种五六千字长文高出不少。3.5 把敏感信息和密钥单独存放推送通道通常需要一个 SendKey 或者 webhook 地址这些属于密钥信息。不要直接写在流程里至少要用 WorkBuddy 的变量功能把密钥存在环境变量区。我在工作流里引用变量时统一写成{{ secrets.wechat_send_key }}这样既方便更换通道也避免把密钥带进仓库里。这一步说小很小说大很大。尤其是你把流程分享给别人或者有一天要把这个脚本挂到服务器上跑密钥散落在代码里会成为一个安全问题。养成用环境变量的习惯后面迁移工作流会省很多事。4. 日报内容优化让人真的想看而不是点到为止4.1 如何让模型筛选出“真正重要”的信息很多日报的最大问题是“什么都重要”。我加了一个显式的评分机制在 prompt 里给模型一个排序规则按“影响力范围、与自己相关程度、信息新鲜度”三个维度打分最终只需要留下综合得分最高的八到十条。这看起来有点玄学但实际操作就是很具体的 prompt 约束。对每条候选内容执行评分 - 影响力这条信息会改变多少人现有做事方式0-5分 - 相关性这条信息在最近一周内被反复讨论吗0-5分 - 新鲜度这不是三天前的旧闻重发0-5分 只输出得分最高的前十条按得分排序。模型不善于精确计算但让它按维度排序并输出 Top N效果比“挑重点”明确得多。这也是“日报”和“新闻剪报”之间最大的差异所在。4.2 “今日观察”怎么写才不像废话我在 prompt 里给“今日观察”定了明确要求必须写一个可执行的判断比如“建议关注某框架的分支提交频率未来两周内可能有正式版发布”而不是“AI 技术快速发展值得关注”。对模型来说要让“观察”有信息量你得给它足够的背景。我在工作流里除了今天的内容还会额外把“昨天日报的观察结论”传给模型让它对比今天是否有进展。这样连续几天的日报就会形成一个追踪线索而不是每天孤零零地看几个新闻标题。4.3 定期给日报“换血”别让模型审美疲劳同一个 prompt 用久了输出会有明显的固定套路。我现在每月会改一次“今日核心”的措辞或者调整板块名称和顺序让模型从不同角度审视信息。另一个办法是“随机化板块顺序”。比如逢周五推送时把“开源动态”放在最前面因为周五大家对接开源项目更感兴趣其他时间还是按“今日核心”优先。这种日期条件在 WorkBuddy 里用条件分支很直接如果你用的是单一的模板也可以直接置换成“按周几输出不同模板”的轮换规则。内容源也要定期换血。我每月末会看一遍“过去三十天各源被引用的次数”引用次数为零的源直接下线。很多 RSS 源长时间不更新与其留在列表里徒增请求不如删掉。5. 常见问题与排查心得5.1 定时任务没触发问题多半在时区或 cron 语义现象工作流配置没问题手动运行也正常但到点就是不发。排查路径看 WorkBuddy 的运行日志里定时节点有没有生成触发记录。如果没有任何记录检查 cron 表达式的时区设置UTC 和北京时间差了八个小时很容易出现“十点半变成下午六点半”的问题。看是否有“错过执行”的开关。服务在触发时间点处于休眠状态普遍任务调度系统会补跑但默认配置可能不开启。看任务是不是被配置成了“周一起始”的日历而今天恰好被排除在外。我最后用了一个更稳的方法每天上午十点先触发一个“预检任务”向自己的微信发一句“日报将在三十分钟后生成”十点半出正式日报。这样即使正式任务出问题我也能第一时间感知到。5.2 日报内容生成出来了但推送失败推送失败大多数跟四个因素有关密钥失效、请求格式错误、目标接口限流、微信侧模板内容违规。密钥失效基本是每次推送配置文件迁移后最容易出现的。请求格式错误多发在 server 酱接口传参最新版要求title和desp两个字段少一个都不会成功。微信侧需要注意消息内容里不要包含外链跳转的敏感域名也不要使用诱导分享的说法。我一开始在日报详情里加了“点击在看支持我”这种表述第二天推送就被判定为营销内容。改成纯粹的工具分享语气再没有出现过问题。5.3 大模型输出的日报出现“幻觉”怎么办AI 总结本来就容易把细节搞错。应对办法是“引用优先”prompt 里硬性要求每条摘要附带原文链接并且用原文标题作为摘要开头对模型生成的“今日观察”用一条独立的规则检查如果观察里出现了原文中没有提到的具体产品名、公司名、数据自动删除该条观察并递归生成一次输出格式里增加可信度字段低于 70 分的不允许发布这层检查和生成一样重要。不要把模型输出当作最终结果前面加一道“自我校验”会让日报的可靠性上一个台阶。5.4 每天收一样的东西内容越来越水怎么办这是信息源固定后的必然结果。模型不会因为你已经看过了就自动跳过旧内容它每次面对的都是“今天抓到的列表”。解决办法在我这里有几个基于历史标题做“标题相似度去重”重复出现的条目不进入最终日报名单每天上午的日报里加入“昨日回顾”板块可以列出昨天提到过但今天又有新进展的信息作为“追踪”如果某条新闻连续三天没有新进展模型会在摘要里标注“此条为旧闻重推”并降低它在板块中的排位这句话挺关键日报的长期价值来源于连续性而不是单日的信息量。让模型记住昨天的关键词才能做出真正像“跟踪”的内容。6. 最后再分享两个我调试时踩过的坑第一个坑是把任务设计得太重。最初我恨不得把十几个信息源、评论区热帖、行业风向全部塞进日报里结果每天生成的耗时超过六分钟频繁超时。后来我把日报拆成“工作日轻量版”和“周深度版”两套任务工作日版只包含核心动态周末版才做长分析和选题整理。任务切轻之后稳定性和阅读体验反而都提升了。第二个坑是忽略了失败提示。自动化流程跑得越顺人就越容易松懈。我给自己留了一条兜底通道如果当天日报生成失败系统应该给我推一条“今日日报生成失败点击查看失败原因”的占位消息而不是沉默。很多故障你当时没注意等注意到的时候可能已经过去好几天了。按我使用的这套逻辑你只需要花一个下午的时间就能把“每天上午十点半自动收到一份 AI 日报”这件事真正落地。难点从来不在技术而在于怎么设计规则让 AI 在输出时恰好符合你的阅读习惯。把流程跑通然后持续去调那几条规则你会发现用不了多久微信里那份日报就会变成你每天都想看一眼的内容。
阅读完成 · 觉得有帮助?
咨询建站