OpenClaw 跑 wechat-publisher 发公众号,Base URL 填 TaoToken
2026/9/18 22:26:05 网站建设 项目流程

OpenClaw 装好 wechat-publisher,TOOLS.md 里 WECHAT_APP_ID、WECHAT_APP_SECRET 和 IP 白名单都按原文做完,第一次让 Agent 写公众号草稿却卡住:Skill 有,模型通道没有。TaoToken 要做的就是把这条模型通道补上,去 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 注册并创建 Key,再回 OpenClaw 模型配置把 Base URL 填 https://taotoken.net/api。公众号凭证仍走公众号自己的流程。

原文把 OpenClaw 当作本地优先的自托管 Agent,用 Skill 扩展动作,第四、五章拿 wechat-publisher 把 Markdown 推进公众号草稿箱。整个过程里真正烧 Token 的不是上传动作,而是 OpenClaw 背后写文章、拆大纲、调 Skill 的那几轮模型调用。原文只在 TOOLS.md 里教了 WECHAT_APP_ID / WECHAT_APP_SECRET 和 IP 白名单,没有交代模型这条通道怎么来。于是很多人把公众号侧配完,Skill 也装好,一执行才发现 Agent 连模型都还没接上。

这篇就按「接入配置」的视角,把 OpenClaw 的模型出口单独拎出来。顺序不复杂:先注册创建 Key,再把 OpenClaw 的模型配置指向 https://taotoken.net/api,最后回到 wechat-publisher 草稿流程看日志。公众号的 AppID、AppSecret、IP 白名单、脚本执行照原文走,不要和模型 Key 混在一起。

1. OpenClaw 跑 wechat-publisher 前,模型通道为什么是单独一层

1.1 Skill 只负责「把稿子推进草稿箱」

wechat-publisher 这个 Skill 的职责很具体:读本地 Markdown,处理封面图,调公众号接口,把内容送进草稿箱。它不负责替你写文章,也不负责把一个大纲拆成小节。OpenClaw 在调用 Skill 之前,先要用模型完成理解指令、生成或改写 Markdown、整理标题和摘要,然后才轮得到 wechat-publisher 去上传。换句话说,Skill 是手和脚,模型通道是嘴和脑子。

如果你只按原文把WECHAT_APP_IDWECHAT_APP_SECRET和 IP 白名单配好,公众号接口那一侧确实是通的。但 OpenClaw 发起模型请求时,如果 Base URL 还是空的,或者指向一个没有可用额度的官方地址,Agent 会在「写稿」阶段就停下来。你看到的现象可能是对话没有输出、任务卡住,或者日志里出现鉴权失败,而不是公众号接口报错。

所以排查顺序要反过来:先确认 OpenClaw 能正常调用模型,再确认 wechat-publisher 能拿到 Media ID。模型通道是前置条件,Skill 是后置动作,两者不要混成一件事。

1.2 TOOLS.md 里该放什么:公众号凭证与模型凭证分开

原文让你把公众号凭证写进~/.openclaw/workspace/TOOLS.md,这一步继续保留。TOOLS.md 适合放 wechat-publisher 需要读取的公众号侧信息,例如 AppID、AppSecret、默认作者、封面目录。它不应该承担模型通道的全部配置,尤其不要把模型 API Key 和公众号 Secret 写在同一段里,后面排障会很痛苦。

一个更清楚的做法是:模型通道走 OpenClaw 自己的模型配置,公众号通道走 TOOLS.md 或对话下发。这样 401 出现时,你能立刻判断是模型 Key 的问题,还是公众号 AppID / Secret 的问题。两者报错代码不同,修复路径也不同。

1.3 原文漏掉的那一步:OpenClaw 自己也要有模型出口

原文主线是「安装 OpenClaw → 装 Skill → 配公众号 → 让 AI 写文章 → 推草稿箱」。它默认你已经有一个可用的模型出口,但没有展开这个出口从哪里来、Key 在哪里创建、Base URL 填什么。对于本地自托管 Agent 来说,这一步不能靠猜。你需要一个兼容 OpenAI 风格的 API 通道,把 Key、Base URL、模型 ID 三样东西交给 OpenClaw。

TaoToken 在这里的角色就是统一 API 通道:你在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 创建 Key,拿模型广场里的模型 ID,然后把 Base URL 填成 https://taotoken.net/api。OpenClaw 仍然在本地跑,Skill 仍然在本地读文件,公众号仍然由 wechat-publisher 推送,变的只是模型请求发到哪里。

2. 在 TaoToken 创建 OpenClaw 要用的 Key

2.1 打开官网注册,创建 YOUR_API_KEY

先打开 TaoToken 注册账号。登录后进入控制台,找到 API Keys 页面,创建一个新的 Key。创建时给它起一个能认出来的名字,例如openclaw-wechat,方便后面在用量列表里对照。Key 生成后只显示一次或有限次数,复制到安全位置,不要直接贴到公开仓库。

在本文所有配置示例里,Key 都写成YOUR_API_KEY。你实际填的时候换成自己刚创建的那一串。不要把它写进 wechat-publisher 的 Skill 文件,也不要提交到 Git。OpenClaw 的模型配置和公众号凭证是两套东西,Key 属于模型配置这一侧。

如果你还没有决定用哪个模型,可以先不急着填模型 ID。先把 Key 和 Base URL 准备好,再回模型广场挑一个当前可用的模型。模型列表会变化,以你打开页面时看到的为准。

2.2 模型 ID 去模型广场复制,不要凭记忆写

模型 ID 是最容易出错的一项。很多人习惯写一个记忆里的名字,或者从旧文章里复制一个带日期后缀的 ID,结果请求发出去变成 model not found。正确做法是:在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 的模型广场里找到你要用的模型,复制它展示的完整 ID,再填进 OpenClaw 配置。

本文配置示例里统一写YOUR_MODEL_ID,意思就是「以模型广场当时列表为准」。不要把它替换成 gpt-5 或随意加日期后缀的名字。OpenClaw 调 wechat-publisher 时,写文章和拆大纲用的就是你在模型配置里指定的那个 ID。ID 错了,Skill 还没机会执行,模型请求就先失败了。

如果你同时想给写作和代码任务用不同模型,可以在 OpenClaw 里配置多个模型项,把默认模型设为写公众号常用的那个。切换时只改模型 ID,Base URL 和 Key 不用动。

2.3 记住两个地址:官网和 Base URL 不是一个东西

这里最常混的是两个地址。官网落地页用于注册、创建 Key、看模型广场、看用量;Base URL 用于填进 OpenClaw 的模型配置。它们长得像,但用途完全不同。

用途地址说明
注册、创建 Key、看模型广场、看用量https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=给人点的页面
填进 OpenClaw 模型配置https://taotoken.net/api末尾不要加/v1,也不要加 UTM 参数

Base URL 一旦写成https://taotoken.net/api/v1,OpenClaw 拼接请求路径时就可能变成/v1/v1/...,轻则 404,重则一直鉴权失败。所以复制时只复制到/api为止。Key 从官网创建,Base URL 填进工具,两边不要互换。

3. 回到 OpenClaw 模型配置:Base URL 填 https://taotoken.net/api

3.1 找到 OpenClaw 的模型配置文件

OpenClaw 的配置目录通常在~/.openclaw/下面,workspace 在~/.openclaw/workspace/。模型通道的配置可能在~/.openclaw/config.json~/.openclaw/openclaw.json或你初始化时生成的同类文件里。不同版本字段名可能略有差异,但核心就四项:provider 或 type、baseUrl、apiKey、model。你打开本机已有的配置文件,按它原本的结构替换值即可,不要另建一套无关的全局配置。

如果你用的是图形化或对话式配置,也可以在 OpenClaw 的模型设置里选择 OpenAI Compatible 之类的自定义供应商,然后填 Base URL、Key 和模型 ID。无论走文件还是走界面,最终落点都一样:请求发到https://taotoken.net/api,带上YOUR_API_KEY,使用你从模型广场复制的YOUR_MODEL_ID

3.2 一份可复制的模型配置片段

下面是一个结构示例,字段名按你本机 OpenClaw 版本为准。重点看值:Base URL 是https://taotoken.net/api,Key 是YOUR_API_KEY,模型是YOUR_MODEL_ID

{ "models": { "default": { "provider": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "YOUR_API_KEY", "model": "YOUR_MODEL_ID" } } }

保存后重启 OpenClaw,或者在对话里让它重新加载配置。不要在这个 JSON 里写公众号的WECHAT_APP_IDWECHAT_APP_SECRET,那些属于 wechat-publisher 的凭证,放到 TOOLS.md 或对话下发。模型配置只负责让 OpenClaw 能发出模型请求。

3.3 对话下发与持久化的区别

有些 OpenClaw 用法支持在对话里临时下发模型凭证,比如你不想把 Key 写进文件,可以每次启动时通过环境变量或对话告诉它。这样做适合临时测试,但每次重启都要重新来一遍。长期跑公众号发布任务,建议把模型配置写进本机配置文件,Key 通过权限收紧的文件保存,或者用环境变量注入。

对话下发的内容和 TOOLS.md 的内容不要互相覆盖。你可以这样理解:模型配置决定 OpenClaw 用什么脑子写稿;TOOLS.md 决定 wechat-publisher 用什么身份把稿子推进哪个公众号。两者都配好,任务才能从头跑到尾。

3.4 公众号凭证继续留在 TOOLS.md

原文在 TOOLS.md 里教了WECHAT_APP_ID/WECHAT_APP_SECRET和 IP 白名单,这部分照旧。一个简单的 TOOLS.md 片段如下:

# TOOLS.md ## wechat-publisher WECHAT_APP_ID=wx_your_appid WECHAT_APP_SECRET=your_appsecret

IP 白名单要去公众号后台把运行 OpenClaw 的机器出口 IP 加进去。这个动作和 TaoToken 的 Key 无关,不要因为模型请求 401 就去改公众号白名单。反过来,公众号报 40164 时,也不要怀疑模型 Key。两套凭证分开排查,效率会高很多。

4. wechat-publisher Skill 第一次发草稿:从 Markdown 到 Media ID

4.1 安装 Skill 与确认目录结构

按原文方式把 wechat-publisher Skill 放进 OpenClaw 的 workspace。常见位置是~/.openclaw/workspace/skills/wechat-publisher,里面至少要有 Skill 描述文件和执行脚本。你可以先确认目录存在,再让 OpenClaw 重新加载 Skill。

mkdir -p ~/.openclaw/workspace/skills cd ~/.openclaw/workspace/skills # 按原文说明把 wechat-publisher Skill 放到这里 ls -la

Skill 装好后,OpenClaw 在对话里应该能识别到 wechat-publisher 这个能力。如果模型通道没配好,它可能连「我要调用哪个 Skill」都推理不出来;如果模型通道通了,但 Skill 目录不对,它会写稿却找不到上传动作。

4.2 准备 Markdown 和封面图

wechat-publisher 通常吃本地 Markdown 和一张封面图。你可以让 OpenClaw 先写一篇草稿,存到 workspace 的 drafts 目录,例如~/.openclaw/workspace/drafts/wechat-openclaw.md。封面图放在 assets 目录,例如~/.openclaw/workspace/assets/cover.png。图片格式和尺寸按原文和 Skill 说明来,不要临时换一个接口不支持的格式。

Markdown 里不要写公众号不支持的复杂语法。代码块、表格、引用这些常见元素,wechat-publisher 会做转换。转换失败时,日志里通常能看到「markdown -> html」这一步出错。先把内容收敛到普通 Markdown,再逐步加复杂元素。

4.3 给 OpenClaw 的触发指令

模型通道和 Skill 都准备好后,在 OpenClaw 对话里给一条明确指令。不要只说「发公众号」,那样它会缺上下文。把文件路径、封面路径、目标动作写清楚。

读取 ~/.openclaw/workspace/drafts/wechat-openclaw.md, 用 wechat-publisher 发布到公众号草稿箱, 封面用 ~/.openclaw/workspace/assets/cover.png, 只进草稿,不要群发。

这条指令会先触发模型调用,让 OpenClaw 理解任务并规划步骤,然后调用 wechat-publisher。模型通道如果走的是 TaoToken,你会在控制台看到这次对话产生的调用记录。Skill 执行阶段则去调公众号接口,不消耗模型 Token。

4.4 验证日志:三个成功信号

原文第二步的日志是最好的验收标准。跑通时重点看三个信号:封面图上传成功、内容转换成功、拿到 Media ID 后进草稿箱。日志可能长这样:

[wechat-publisher] cover upload ok [wechat-publisher] markdown -> html ok [wechat-publisher] draft created, media_id=...

看到media_id后,去公众号后台草稿箱确认文章在不在。封面、正文、作者信息都正常,说明模型通道和 Skill 都已生效。如果只看到模型输出,没有 Skill 日志,问题在触发指令或 Skill 装载;如果 Skill 日志停在某个上传步骤,问题在公众号凭证或 IP 白名单。

5. 跑不通先查这几种错:401、model not found、40013、40164

5.1 401 invalid api key:Key 过期或 Base URL 写错

OpenClaw 报 401 时,先看模型配置里的apiKey是不是从 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 创建的那一串。有没有多空格、少字符、复制了旧 Key。然后看 Base URL 是不是https://taotoken.net/api,末尾有没有被误加/v1。如果 Key 没问题但 Base URL 带了/v1,请求路径可能对不上,也会表现为鉴权失败或 404。

修复方法很简单:重新创建一个 Key,替换YOUR_API_KEY,Base URL 只保留https://taotoken.net/api。保存后重启 OpenClaw,再发一条最小对话测试。

5.2 model not found:模型 ID 与通道列表不一致

这个错通常不是 Key 的问题,而是模型 ID 写错。你可能用了记忆里的名字,或者模型广场已经更新了列表。回到 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 的模型广场,复制当前可用模型的完整 ID,替换配置里的YOUR_MODEL_ID。不要自己加日期后缀,也不要写一个不存在的名字。

如果你配置了多个模型,检查默认模型指向的是哪一个。OpenClaw 可能读到了另一个旧配置项,导致实际请求的还是错误 ID。

5.3 40013 invalid appid:公众号 AppID 和 Secret 不是一对

模型通道通了,Skill 也开始跑了,但日志报40013 invalid appid,这基本是公众号侧的问题。检查~/.openclaw/workspace/TOOLS.md里的WECHAT_APP_IDWECHAT_APP_SECRET是不是同一个公众号的。AppID 和 Secret 不匹配、Secret 重置后没更新、或者复制时带了引号,都会触发这个错。

注意,这个错和 TaoToken 的 Key 无关。不要因为看到 40013 就去重新创建模型 Key,那只会浪费时间。公众号凭证归 TOOLS.md,模型 Key 归 OpenClaw 模型配置。

5.4 40164 IP 白名单与 Base URL 多 /v1

40164一般是公众号接口提示调用方 IP 不在白名单。去公众号后台把运行 OpenClaw 的机器出口 IP 加进去,再重试草稿发布。如果机器是动态 IP,需要把它固定下来,或者每次变化后更新白名单。

另一种常见问题是 Base URL 多写了/v1。模型请求失败时,有人会顺手去改公众号配置,其实应该先看 OpenClaw 模型配置里的baseUrl。正确值只有https://taotoken.net/api,不要带/v1,也不要带任何 UTM 参数。官网页面和接口地址是两回事,别把落地页链接粘进配置文件。

6. 把模型通道和 Skill 都验证一遍,再去看用量

6.1 最小对话测 OpenClaw 模型出口

在重新跑 wechat-publisher 之前,先用一条最小对话验证模型出口。打开 OpenClaw,发一句「用一句话说明当前模型通道可用」,看它能不能正常返回。如果这一步都不通,先不要碰 Skill,集中查 Key、Base URL、模型 ID。最小对话通过后,再进公众号草稿流程,变量会少很多。

你也可以在 TaoToken 模型对话 里用同一把 Key 发一条测试消息。模型对话能返回,说明 Key 和模型 ID 至少在这条通道上是可用的;OpenClaw 仍然失败,就回头检查 OpenClaw 的配置文件有没有生效、有没有重启、环境变量有没有覆盖。

6.2 控制台看这次调用有没有记上

草稿发布成功后,回到 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 的控制台看用量。你应该能看到刚才 OpenClaw 写文章、拆大纲、调 Skill 那几轮模型调用记录。如果一条都没有,说明 OpenClaw 实际没走这条模型通道,可能还在用旧配置或环境变量里的其他地址。

用量记录还能帮你判断成本花在哪。wechat-publisher 上传动作本身不消耗模型 Token,消耗集中在模型生成和推理阶段。看到调用记录,再看到公众号草稿箱里的文章,才算整条链路真正闭环。

6.3 后续要长期写公众号,Key、套餐、文档入口

如果你只是偶尔发一篇,当前的 Key 和模型配置就够用。如果打算让 OpenClaw 长期写公众号、拆大纲、批量生成草稿,可以打开 Coding Plan 看套餐是否匹配你的调用频率。Key 不够用时,在 控制台 API Keys 重新创建,再替换 OpenClaw 模型配置里的YOUR_API_KEY

公众号侧继续按原文维护 TOOLS.md、IP 白名单和 wechat-publisher Skill。模型侧只保留三件事:Key 从控制台来,Base URL 填https://taotoken.net/api,模型 ID 以模型广场当时列表为准。下次再遇到草稿发不出去,先看日志停在哪一步:停在模型返回之前,查模型通道;停在封面图或 Media ID,查公众号凭证和 Skill。把这条顺序固定下来,OpenClaw 发公众号就不再是一次性的手工活。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询