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

【OpenClaw】创建一个每日热点新闻 Skill:从 SKILL.md 到定时任务与网关配置

【OpenClaw】创建一个每日热点新闻 Skill:从 SKILL.md 到定时任务与网关配置 ★ FEATURED ARTICLE
1. 为什么我要把「每日热点」做成 OpenClaw Skill每天早上的信息焦虑我猜你也有打开十几个标签页Hacker News 刷一遍、GitHub Trending 看一眼、财经频道再扫两眼半小时过去真正记住的没几条。更麻烦的是这件事每天都要重复一遍纯手工操作没有任何沉淀。OpenClaw 的 Skill 机制刚好能解决这类「固定流程 固定输出」的重复劳动。所谓 Skill你可以把它理解成一份写给 AI 看的「岗位说明书」什么情况下该触发、按什么步骤执行、最后输出成什么格式。它不是一个插件也不是一段硬编码的程序而是一个放在固定目录下的SKILL.md文件OpenClaw 的网关在启动时会扫描这个目录把里面的描述注册成可被调用的能力。这篇要做的就是一个叫daily-news的 Skill每天早上 8 点自动跑一次聚合 AI/科技、财经/商业、互联网/开源三个板块的热点整理成一份带链接的简报推送到你配置好的渠道。整个链路涉及四个环节——写SKILL.md、重启网关让它生效、手动测试一次、用定时任务把它挂到每天固定时间。中间任何一环出问题简报都不会出现所以我会把每一步的验证动作都写清楚。适合谁看已经在用 OpenClaw、想让 Agent 干点「周期性实事」的人或者你还没配好 OpenClaw但想先看看一个完整 Skill 长什么样再决定要不要入坑。全文的命令和配置都可以直接复制路径按你本机的实际安装位置微调即可。需要提前说明的是Skill 本身只负责「怎么干」它不负责「连哪个模型」。模型调用这一层由网关配置决定所以第三步的网关配置和第五步的定时任务才是这个 Skill 能不能真正跑起来的关键。很多人卡在「SKILL.md 写完了但没反应」八成是网关没重启或者模型通道没配通。2. TaoToken 前置给 OpenClaw 网关配一条稳定的模型通道OpenClaw 的 Skill 在执行 Workflow 时需要调用大模型来做信息提取、分类和摘要生成。这一步走的是网关里配置的模型通道。如果你用的是官方直连遇到限流或者额度问题时定时任务会在凌晨静默失败第二天早上你什么都收不到还找不到原因。所以更稳的做法是给网关配一个兼容 OpenAI 协议的通道TaoToken 就是干这个的。它的接入地址是https://taotoken.net/api兼容 OpenAI 的/v1/chat/completions接口格式也就是说 OpenClaw 里凡是让你填base_url和api_key的地方都能直接对接。你需要在 TaoToken 控制台创建一个 API Key然后把它写进 OpenClaw 的网关配置里。先拿 Key。打开控制台页面https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite登录后在 API Keys 区域新建一个复制出来。这个 Key 只显示一次建议先存到本地密码管理器里。如果你还没决定用哪个模型可以先去模型对话页https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite试几句确认响应速度和输出质量符合预期再把它配到网关里。OpenClaw 的网关配置文件通常在~/.openclaw/config.yaml或安装目录下的config/里具体位置可以用openclaw config path查。找到后在模型提供方那一节填入下面这段。注意base_url结尾不要带/v1OpenClaw 会自己拼接路径# ~/.openclaw/config.yaml providers: taotoken: type: openai-compatible base_url: https://taotoken.net/api api_key: sk-你的TaoToken密钥 models: - id: claude-sonnet-4-5 name: Claude Sonnet 4.5 - id: gpt-4o-mini name: GPT-4o mini default_model: taotoken/claude-sonnet-4-5这里配了两个模型一个用来做主力摘要一个便宜快速适合在定时任务里跑量。default_model决定了 Skill 默认用哪个如果你希望每日简报质量高一点就用能力强的那个如果只是抓标题做分类小模型完全够用成本也低。配好之后先别急着写 Skill用一条命令验证通道是否通curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoToken密钥 \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-5, messages: [{role: user, content: 回复两个字通了}], max_tokens: 20 }返回里能看到choices数组和正常的中文内容说明 Key 和地址都没问题。如果返回 401先检查 Key 有没有复制完整、有没有多余空格如果返回model not found说明模型 ID 写错了去文档页https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite核对一下当前可用的模型名。这一步通了后面 Skill 里的模型调用才有意义。3. 可复制配置SKILL.md 模板与定时任务片段现在进入正题。Skill 的目录必须放在 OpenClaw 的工作区 skills 目录下命名只能用「小写字母 数字 连字符」大写字母和下划线都会导致扫描不到。先建目录和文件mkdir -p ~/.openclaw/workspace/skills/daily-news touch ~/.openclaw/workspace/skills/daily-news/SKILL.md然后写入下面这份SKILL.md。它由两部分组成顶部的 YAML front matter 定义元信息下面的 Markdown 正文定义触发条件和执行流程。front matter 里的name必须和目录名一致description要写清楚「什么时候用」和「什么时候不用」这是网关做意图匹配的依据。--- name: daily-news description: 每日各行业热点新闻简报自动聚合科技、AI、财经、互联网等领域的热门话题。 Use when: 用户说今日热点今日新闻行业简报或定时触发。 NOT for: 查询特定某条新闻的详细内容、股票实时行情。 --- # Daily News - 每日行业热点新闻 ## When to Run - 每天早上 8:00 定时触发 - 用户说今日热点今天有什么新闻行业简报 - 用户说给我看看今天的新闻 ## Workflow 1. 获取科技/AI 领域热点按优先级尝试 - Hacker News 热门curl https://hacker-news.firebaseio.com/v0/topstories.json?printpretty 取前 5 条再通过 ID 获取详情 curl https://hacker-news.firebaseio.com/v0/item/{id}.json?printpretty - 备选 RSShttps://hnrss.org/frontpage 2. 获取财经/商业热点 curl https://www.reddit.com/r/business/hot.json?limit5 3. 从返回结果中提取标题、来源、简要描述、链接 4. 按行业分类汇总AI/科技、财经/商业、互联网/开源 5. 对每条热点用一句话概括核心内容不超过 30 字 6. 按指定格式输出 ## Output Format 今日热点新闻简报 —— {当前日期} ### AI / 科技 1. **{标题1}** —— {来源} {一句话摘要} 链接{url} ### 财经 / 商业 1. **{标题1}** —— {来源} {一句话摘要} 链接{url} ### 互联网 / 开源 1. **{标题1}** —— {来源} {一句话摘要} 链接{url} 共整理 {总数} 条热点更新时间{当前时间}写完后重启网关让 OpenClaw 重新扫描 skills 目录openclaw gateway restart重启完成后用openclaw skills list确认daily-news出现在列表里。如果没出现先检查目录名有没有大写字母再检查 front matter 的---是不是顶格写的、有没有多余空行。接下来是定时任务。OpenClaw 的 cron 子命令支持标准五段式 Cron 表达式下面这条表示每天早上 8 点执行一次openclaw cron create \ --name 每日热点新闻 \ --schedule 0 8 * * * \ --agent 你的Agent名称 \ --prompt 使用daily-news生成今日热点新闻并推送给我几个常用表达式对照一下方便你按需改表达式含义0 8 * * *每天早上 8:000 9 * * 1每周一早上 9:00*/30 9-18 * * *工作日 9-18 点每 30 分钟0 8,20 * * *每天早 8 点和晚 8 点各一次创建后用openclaw cron list查看任务 ID 和下次执行时间用openclaw cron stop 任务ID临时停掉openclaw cron delete 任务ID彻底删除。这里有个容易忽略的点--agent必须填你实际存在的 Agent 名称填错的话任务会创建成功但执行时找不到 Agent日志里只会报一句很含糊的错误。4. 验证请求手动跑一次拿到成功结果定时任务没到点之前先用手动方式验证 Skill 能不能跑通。最直接的方式是命令行触发openclaw chat --prompt 使用daily-news生成今日热点新闻如果 Skill 注册成功你会看到 Agent 开始按 Workflow 里的步骤执行先请求 Hacker News 的 topstories 接口拿到一批 ID再逐个取详情然后请求 Reddit 的 business 板块最后按格式输出。整个过程大概十几秒到半分钟取决于模型响应速度。也可以在 Web UI 里直接输入「今日热点」效果一样。判断成功的标准有三个输出里有三个分类板块、每条热点带来源和链接、末尾有「共整理 N 条热点」的统计行。如果只输出了一段泛泛而谈的文字没有任何链接说明 Skill 没被匹配到Agent 是在用自己的通用能力瞎编。手动跑通之后再验证定时任务这一环。不用等到第二天早上可以临时把 schedule 改成「下一分钟」来测openclaw cron create \ --name 测试-每日热点 \ --schedule * * * * * \ --agent 你的Agent名称 \ --prompt 使用daily-news生成今日热点新闻并推送给我等一分钟看推送渠道有没有收到消息。收到后立刻删掉这个测试任务换成正式的0 8 * * *。这一步能帮你提前发现推送渠道没配好、Agent 名称写错这类问题避免第二天早上白等。如果你希望简报质量更稳定可以在SKILL.md的 Workflow 里加一条兜底逻辑当某个数据源请求失败时跳过它继续执行而不是整个任务中断。比如 Hacker News 接口偶尔会超时加一句「如果某数据源在 10 秒内无响应记录失败并继续下一个」就能避免整份简报因为一个源挂掉而消失。5. 本篇常见错排查401、local proxy failed 与 reading choices跑这个 Skill 的过程中报错基本集中在三类我按实际遇到的频率排一下。第一类是401 Unauthorized。这个几乎都是 Key 的问题要么复制时带了空格要么 Key 被控制台重置过要么config.yaml里api_key那一行的引号没配对。排查方法就是回到第 2 节那条 curl 命令单独测一次通道。curl 通了但 OpenClaw 报 401说明是配置文件的问题重点检查缩进——YAML 对缩进极其敏感api_key必须和base_url同级。第二类是local proxy failed或connection refused。这通常出现在网关重启之后原因是网关进程没起来或者端口被占用。先openclaw gateway status看进程状态再openclaw gateway restart重启一次。如果反复失败检查config.yaml里有没有配置本地代理端口把那段注释掉再试。注意这里说的是 OpenClaw 自身的本地转发配置和网络环境无关纯粹是进程间通信的问题。第三类是reading choices或cannot read property choices of undefined。这个报错的意思是模型返回的 JSON 里没有choices字段代码去读的时候读到了 undefined。常见原因有两个——一是base_url写成了https://taotoken.net/api/v1导致实际请求路径变成/api/v1/v1/chat/completions返回 404 的 HTML 而不是 JSON二是模型 ID 写错服务端返回了错误对象。解决办法就是把base_url改回https://taotoken.net/api并核对模型 ID。还有一类不算报错但很迷惑的现象Skill 手动能跑定时任务却不执行。这时候先看openclaw cron list里任务的状态是不是active再看--agent名称和实际 Agent 是否一致。如果都对去日志目录翻一下执行记录通常在~/.openclaw/logs/下能看到具体是哪一步失败。如果你在配置过程中需要对照完整的参数说明接入文档页https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite里有接口格式和字段解释需要新建或管理 Key 就去 API Keys 页https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite。这两个页面配合着看基本能覆盖 90% 的配置问题。6. 把每日简报挂上 Coding Plan让 Agent 长期跑下去单次跑通只是开始。真正让这个 Skill 有价值的是「每天都跑、不用管」。如果你打算把这类周期性任务长期挂着甚至后面再加几个类似的 Skill比如每周代码仓库巡检、每日依赖更新提醒那模型调用的稳定性和成本就变成主要矛盾了。TaoToken 的 Coding Plan 页面https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite里有针对长期编码和 Agent 场景的套餐说明适合把每日简报这类定时任务固定下来跑。配好之后你只需要维护SKILL.md里的 Workflow模型通道和额度的事交给它。回到这个 Skill 本身最后给你一个实用建议把SKILL.md当成代码来管理。每次调整 Workflow 或输出格式都在文件顶部加一行注释记录改动日期和原因。这样过两周你回头看能立刻知道「为什么当时加了 Reddit 这个源」「为什么摘要限制在 30 字」。定时任务不会骗人它每天都会按你写的东西执行所以写清楚比写得多更重要。
阅读完成 · 觉得有帮助?
咨询建站