1. daily-news 验收报 401,先查模型通道
OpenClaw 跑 daily-news 卡在 401 时,先用 TaoToken 换模型通道,注册入口 https://taotoken.net/?utm_source=taotoken_aicg_blog_end,拿到 Key 后把 Base URL 填成 https://taotoken.net/api,再跑openclaw chat --prompt "使用daily-news生成今日热点新闻"就能正常出稿。这篇文章按原文的建目录、写 SKILL.md、重启网关、测试、挂 cron 的顺序来,只在模型通道这一步换成 TaoToken。
1.1 SKILL.md 只是说明书,不是执行引擎
很多读者走到openclaw gateway restart那一步就以为万事大吉,结果一执行openclaw chat --prompt "使用daily-news生成今日热点新闻",返回的不是简报,而是HTTP 401或者model not found。这时候第一反应不该是怀疑 SKILL.md 写错,而是要想清楚 OpenClaw 的工作分工:SKILL.md 是给 OpenClaw 看的说明书,告诉它什么时候触发、去哪些地址抓新闻、按什么格式输出;但真正把抓回来的原始条目整理成通顺摘要的,是背后的大模型。OpenClaw 只是编排方,模型才是干活的。
也就是说,Skill 的文件结构再标准,只要模型调用这一环是断的,测试命令就一定失败。原文里描述的工作流里,抓 Hacker News、Reddit 都是 HTTP 请求,不依赖模型;但最后一步“提取并整理信息”“按指定格式输出”这类动作,OpenClaw 会把它变成一次模型对话。这次对话需要三样东西:API Key、Base URL、模型 ID。官方文档里给出的默认值对多数自建环境并不友好,要么 Key 没申请到,要么额度没生效,于是压力全堆在验收这一步。
1.2 模型调用才是真正烧 Key 的地方
换个角度看整条链路:openclaw cron create之后的定时任务,每天早上 8 点触发的是 daily-news Skill 的完整工作流,而工作流里最消耗资源、也最依赖外部服务的就是模型调用。新闻源接口是免费公开的,真正按量计费的是每次生成摘要时消耗的 Token。官方 Key 在大量 Agent 任务下很容易触达额度上限,尤其是加了 cron 定时之后,每天固定要跑一次,一个月下来量并不小。
TaoToken 在这里扮演的是一个统一接入通道:你在 TaoToken 拿到的 Key 可以走 OpenAI 兼容的调用方式,也可以按 Anthropic 兼容的方式接入,OpenClaw 这边只要把原来填官方 Key 的位置换成 TaoToken 的 Key,把 Base URL 换成 https://taotoken.net/api,剩下的工作流完全不用动。换句话说,daily-news 的目录结构、SKILL.md 内容、cron 表达式都照原文写,只有模型通道这一处替换。
2. 按原文建 daily-news 目录,重写 SKILL.md
2.1 目录命名:小写字母、数字、连字符
先照原文把技能目录建起来。OpenClaw 对 Skill 目录名有硬性要求:只能用小写字母、数字和连字符,不能用下划线、空格或中文。daily-news这个名字完全合规。在终端执行:
mkdir -p ~/.openclaw/workspace/skills/daily-news touch ~/.openclaw/workspace/skills/daily-news/SKILL.md目录创建好之后,先不急着改配置。建议先确认路径拼写无误,因为后面的openclaw gateway restart只负责加载 Skill,不负责帮你检查目录名。常见的坑是把daily-news写成daily_news,OpenClaw 扫描时会直接忽略,日志里还不报错,表现出来就是“Skill 没生效”。
2.2 SKILL.md 全文与各段作用
打开~/.openclaw/workspace/skills/daily-news/SKILL.md,写入以下内容。这里在原文基础上补了一步“调用模型生成摘要”,这就是真正消耗 TaoToken 的地方:
--- name: daily-news description: 每天生成一份行业热点简报,覆盖 AI/科技、财经/商业、互联网/开源三个板块。当用户说“今日热点”“今日新闻”“行业简报”,或定时任务触发时运行。不用于查询单条新闻详情、个股实时行情或天气。 --- # Daily News 简报生成 ## When to Run - 每天早上 08:00 由 cron 自动触发 - 用户直接说“今日热点”“今日新闻”“行业简报” ## Workflow 1. 抓取候选新闻: - 请求 Hacker News 热门列表接口,取前 5 条 ID - 逐个请求每条新闻详情,保留标题、链接和来源 - 若 Hacker News 不可用,降级到 hnrss.org 或 TechCrunch RSS 2. 获取财经内容:读取 Reddit r/business 的 hot 列表前 5 条 3. 数据清洗:按标题去重,过滤掉空链接和明显重复的条目 4. 调用大模型:把清洗后的原始条目交给模型,为每条生成不超过 30 字的一句话摘要 5. 分类汇总:按“AI/科技”“财经/商业”“互联网/开源”三个板块输出 ## Output Format 输出固定结构:简报标题 + 发布日期 + 三个分类板块;每个板块用编号列出新闻标题、来源、一句话摘要和原文链接;末尾统计本次共整理多少条热点。 ## 注意事项 - 新闻源接口和模型 Key 从环境变量读取,不写死在 SKILL.md 中 - 某个源连续失败两次就跳过,不要阻塞整个任务 - 输出完成后原样返回给调用方,由 OpenClaw 负责推送到渠道前部的 YAML front-matter 里,name必须和目录名一致,description要写清楚触发条件和不适用的场景,这两项是 OpenClaw 判断“什么时候该用这个 Skill”的依据。Workflow 里的第 4 步是关键:你写的提示词会通过 OpenClaw 的模型通道发出去,这一发消耗的就是 Key 里的额度。
3. 把模型通道切到 TaoToken:Key、Base URL、环境变量
3.1 注册并创建 API Key
模型通道换到 TaoToken 之前,需要先有一把能用的 Key。打开 TaoToken 完成注册,进入控制台后在 API Keys 页面创建一把新 Key,复制出来备用。注意这个链接是给人浏览和操作的官网入口,注册、建 Key、看用量都在这里完成;真正要填进 OpenClaw 的是另一串地址,两者不要混用。
创建 Key 的时候建议顺手给个备注名,比如openclaw-daily-news。这样以后在控制台看用量时,一眼就能认出每天 8 点那笔固定消耗来自哪个任务。如果同一个 TaoToken 账号下还要跑 Codex、Claude Code 等多个工具,多建几把 Key、按工具分开命名,比所有工具共用一把 Key 好排查得多。
3.2 Base URL 填 https://taotoken.net/api,不要带 /v1
这是最容易填错的一处。OpenAI 官方接口习惯在地址末尾加/v1,很多读者照搬这个习惯,把 Base URL 写成https://taotoken.net/api/v1,结果全部请求 404。TaoToken 的兼容通道地址就是https://taotoken.net/api,末尾不带/v1。
模型 ID 不要凭记忆填,也不要照抄网上教程里的旧 ID。打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 的模型广场,看当时列表里有哪些可用模型,再把你选中的模型 ID 原样复制到 OpenClaw 的配置里。模型广场的列表会更新,今天能用的 ID 不代表下周还能用,以当次查看为准。
提示:官网落地页和给工具填的接口地址是两回事。落地页是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end ,给人点;接口地址是 https://taotoken.net/api ,给 OpenClaw、Codex、Claude Code 这类工具填,后者不要追加任何 UTM 参数。
3.3 OpenClaw 侧的环境变量替换
OpenClaw 读取模型配置的方式因版本而异,但多数分支都认环境变量。在启动openclaw gateway的同一个 shell 里设置:
export OPENAI_API_KEY="YOUR_API_KEY" export OPENAI_BASE_URL="https://taotoken.net/api"YOUR_API_KEY换成你刚从 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 创建的那把 Key。如果你用的 OpenClaw 分支走 Anthropic 兼容格式,则对应设置ANTHROPIC_AUTH_TOKEN和ANTHROPIC_BASE_URL,后者同样填https://taotoken.net/api。模型 ID 在 OpenClaw 的模型选择配置里填,名称以模型广场当时列表为准。
这里要强调一点:环境变量只影响 OpenClaw 发起模型请求时的凭证和地址,不修改 daily-news Skill 本身。所以你刚才写的 SKILL.md 可以原样保留,后续想换模型,也只需要改环境变量或配置项,Skill 文件不用动。
4. openclaw gateway restart 后,用 chat 命令首跑 daily-news
4.1 重启网关让配置生效
环境变量和 SKILL.md 都就位后,执行原文里的重启命令:
openclaw gateway restart重启的作用是重新扫描~/.openclaw/workspace/skills/目录,加载新增的 daily-news 技能,同时让新的模型环境变量生效。如果重启后日志里出现skill loaded之类的字样,说明目录命名和 front-matter 都没问题;如果没有任何输出,先回去检查目录是不是daily-news,front-matter 里的name是否匹配。
4.2 两条验收路径:CLI 和 Web UI
首次验证用命令行最直接:
openclaw chat --prompt "使用daily-news生成今日热点新闻"正常情况下,你会看到“AI/科技”“财经/商业”“互联网/开源”三个板块依次输出,每条新闻带标题、来源、一句摘要和链接,末尾还有本次整理的总条数。这一步通过,说明模型通道已经通了,且 daily-news 的 Workflow 能正常走完。
如果你习惯用 Web UI,也可以在对话框里直接输入“今日热点”或“行业简报”。Web UI 走的模型配置和 CLI 是同一套,不需要额外设置。用 Web UI 的好处是能看到 OpenClaw 完整的工作流日志,哪一步去抓新闻、哪一步发起模型调用都一目了然,后续排障会方便很多。
5. cron 定时:每天早上 8 点自动出一份简报
5.1 创建每日热点任务
手动测试通过后,设置定时推送让 daily-news 每天早上自动跑。原文给的命令思路是创建一个 cron 任务,把 daily-news 作为 agent 的执行内容:
openclaw cron create \ --name "每日热点新闻" \ --schedule "0 8 * * *" \ --agent "你的Agent名称" \ --prompt "使用daily-news生成今日热点新闻并推送到默认渠道"注意两点:--agent要替换成你 OpenClaw 环境里实际存在的 Agent 名称,可以在openclaw agent list里查到;--prompt里的“推送到默认渠道”依赖 OpenClaw 已经配置好的消息渠道,如果没配渠道,这个参数不影响任务创建,只是推送那一步不会执行。
5.2 cron 表达式速查与任务管理
0 8 * * *是标准的 Unix cron 表达式,含义是每天早上 08:00。常用变体整理如下:
| Cron 表达式 | 含义 |
|---|---|
0 8 * * * | 每天 08:00 |
0 9 * * 1 | 每周一 09:00 |
*/30 9-18 * * 1-5 | 工作日 09:00–18:00 每 30 分钟 |
任务创建后,用下面三条命令管理:
openclaw cron list openclaw cron stop 任务ID openclaw cron delete 任务ID这里重点提醒一句:cron 任务触发后,OpenClaw 会发起一次完整的工作流,其中模型调用消耗的是你在环境变量里配置的 TaoToken Key。换句话说,每天 8 点都会有一笔固定的 Token 消耗。你在 TaoToken 控制台的用量页面上应该能看到一条规律的每日记录,如果某天曲线是平的,说明定时任务没触发。
6. 进阶:给 daily-news 扩充新闻源、联网搜索、增强摘要
6.1 按领域补充 RSS/API 源
原文建议按领域扩充新闻源,做法是在 SKILL.md 的 Workflow 里追加数据源。OpenClaw 执行时会按顺序请求,某个源失败会自动跳过。常用源整理如下:
| 领域 | 推荐源 |
|---|---|
| AI / 机器学习 | arXiv cs.AI 最新论文、Papers with Code |
| 科技资讯 | TechCrunch、The Verge、36氪 RSS |
| 开发者资讯 | Hacker News、Dev.to、Reddit r/programming |
| 财经新闻 | 财新、华尔街见闻 RSS |
追加源时注意控制总量,源太多会导致每次运行时间变长,Token 消耗也会增加。建议保持每个板块最多 2 到 3 个源,够用就好。
6.2 联网搜索兜底
如果你用的 OpenClaw 版本配置了联网搜索,可以在 Workflow 里加一步兜底逻辑:当上面的新闻源都请求失败或条目数少于 5 条时,用“今日 行业热点 科技 AI 财经”这类关键词搜索一次,把前 3 条结果补充进对应板块。这个功能是锦上添花,不建议把它当成主数据源,否则每天 8 点的任务会变成一次长时间的搜索任务,Token 消耗也不好控制。
6.3 摘要生成与渠道推送
摘要这一步是模型通道的用武之地。你可以把 Workflow 里的第 4 步改成“对每条热点用不超过 30 字的一句话概括核心内容”,然后在 Output Format 里用引用格式展示摘要。改完之后,每次跑 daily-news 都会先抓原始标题和链接,再由模型生成摘要,最后的输出比直接堆链接可读性好很多。
如果你已经在 OpenClaw 里配好了微信、飞书或 Slack 渠道,cron 任务执行完会直接把结果推到对应聊天窗口。推送动作本身由 OpenClaw 的渠道插件负责,TaoToken 只参与模型摘要这一步,不需要额外的推送配置。
7. 排障:OpenClaw 连模型通道时的三个高频报错
7.1 HTTP 401:Key 不正确或已被删除
401 Unauthorized基本可以断定是 API Key 的问题。先检查环境变量里YOUR_API_KEY是否被替换成了真实 Key,再检查复制的时候有没有多复制空格或折行。如果确认无误,登录 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 的控制台查看这把 Key 是否还在生效中。顺便说一句,很多读者把 Key 写进了 SKILL.md 而不是环境变量,这样既危险又容易出 401,因为 OpenClaw 发起模型调用时读的是环境变量,不是 Skill 文件。
7.2 model not found:模型 ID 和广场不一致
model not found说明 Key 有效,但填写的模型 ID 不在可用列表里。解决办法只有一条:回到模型广场,把当前列表里的模型 ID 原样复制过来,不要凭记忆写,更不要套用网上教程里的旧 ID。模型 ID 对大小写敏感,多一个空格、少一个连字符都会报这个错。
7.3 Base URL 多写了 /v1
所有请求都返回 404、404 或者“端点不存在”时,优先怀疑 Base URL。对照检查:OpenClaw 环境变量里填的是https://taotoken.net/api,不是https://taotoken.net/api/v1,也不是https://taotoken.net/v1。TaoToken 的兼容通道地址是固定的,末尾不带/v1。
如果上面三个问题都排查完还是不行,建议在同一个 shell 里先echo $OPENAI_BASE_URL确认环境变量已经生效,再执行openclaw gateway restart,然后重新跑一次测试命令。OpenClaw 启动时没有把环境变量读进去是常见原因,重启能解决大部分这类问题。
8. 跑通后去 TaoToken 控制台核对 cron 用量
8.1 先验证 Key 再管 Key
到这一步,daily-news 应该已经能每天自动出简报。建议你先在 TaoToken 模型对话 里用同一把 Key 发一条测试消息,确认这把 Key 的模型调用完全正常,再回看每天的 cron 消耗。模型对话页面能直接验证 Key 和模型 ID 的组合,省得在 OpenClaw 和 TaoToken 控制台之间来回切。
确认 Key 可用后,到 控制台 API Keys 把开发环境和生产环境的 Key 分开管理。daily-news 这种每天固定跑的任务单独用一把 Key,方便统计月度消耗;本地测试用另一把,两者互不干扰。如果每天 8 点的任务再加上其他 Agent 任务,Token 消耗会明显往上走,这时候打开 Coding Plan 看看套餐档位是否还够用,比等到某天 401 再临时充值要稳妥。
8.2 用量核对与下一步
我的习惯是每周去控制台看一次用量曲线,重点核对早上 8 点这个时间点是否每天都有一笔固定消耗。如果某天曲线是平的,说明 cron 没触发或者渠道推送断了,这时候跑openclaw cron list看任务状态,比重新翻 SKILL.md 有效得多。如果之后你想把同一把 Key 用到 Claude Code 上,对照这份 Claude Code 接入文档 改环境变量就可以,操作路径和 OpenClaw 这边是同一个套路。