ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

用 OpenClaw skill 把 Markdown 自动发布到微信公众号:TaoToken 配置与验证全流程

用 OpenClaw skill 把 Markdown 自动发布到微信公众号:TaoToken 配置与验证全流程 1. 从 Markdown 到公众号草稿卡住的从来不是写作AI 把文章写完真正的体力活才刚开始。公众号后台不支持外链图片每张图要手动上传封面图得单独传成永久素材代码块、引用块、高亮段落要在编辑器里一个个调样式头部的星标提示、底部的关注引导每次都得复制粘贴。一篇三千字的稿子光发布环节就能吃掉三四十分钟。我想要的链路很明确本地一个 Markdown 文件跑一条命令草稿箱里出现排版好的文章我只需要审核和点发布。执行载体用 OpenClaw skill鉴权和模型调用统一走 TaoToken 的 Key/API 通道这样写作、配图、发布三个环节共用一套凭证不用在多个平台之间来回切。这篇就把这套链路拆开讲config.toml 和 settings.json 怎么写、skill 怎么触发、图片怎么自动上传、Markdown 怎么渲染成微信能认的内联样式 HTML最后附一次从本地文件到草稿箱的端到端验证。适合已经在用 OpenClaw 做内容工作流、或者正准备把发布环节自动化的人。2. TaoToken 前置统一 Key 与 API 通道2.1 为什么发布链路也要接 TaoToken很多人以为发布环节只跟微信接口打交道跟模型无关。实际不是。发布 skill 里至少有三个地方要调模型标题二次润色、摘要生成、以及图片 alt 文本和封面文案的补全。如果这些调用散落在不同平台Key 管理会变成灾难。TaoToken 在这里的角色是统一入口一个 Key 覆盖对话模型和编码类模型API 地址固定skill 里只配一次。官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点用 https://taotoken.net/api 注意 API 地址不带 UTM 参数直接写进配置即可。2.2 拿 Key 与确认模型登录后进控制台在 API Keys 页面创建一个新 Key。建议按用途分 Key比如openclaw-publish单独一个方便后续排查是哪个环节在消耗额度。创建入口在 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 。创建完先别急着写进配置用模型对话页面确认一下 Key 可用、模型列表能正常返回 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 。这一步能省掉后面大量「到底是 Key 错还是配置错」的排查时间。2.3 微信侧的准备工作公众号这边需要三样东西AppID、AppSecret、以及一个已认证的服务号或订阅号草稿箱接口对账号类型有要求。AppID 和 AppSecret 在公众平台「设置与开发 - 基本配置」里。另外要把服务器出口 IP 加进白名单否则调接口会直接返回 IP 不在白名单的错误。注意AppSecret 只在生成时显示一次务必当场保存。丢了只能重置重置后旧的全部失效。3. 可复制配置config.toml 与 settings.json 骨架3.1 目录结构先定下来OpenClaw 的工作区建议这样组织发布 skill 只认这个结构图片和文章放一起缓存文件跟着文章走openclawworkspace/ ├── config.toml ├── skills/ │ └── wechat-publisher/ │ ├── settings.json │ └── scripts/publish.py └── articles/ └── 2026-03-07/ └── 主题名/ ├── article.md ├── cover.png ├── img-01.png └── meta.json3.2 config.toml模型与 Key 通道这是 OpenClaw 主配置重点是 provider 段。base_url 指向 TaoToken 的 API 地址api_key 从环境变量读避免明文进版本库[provider.taotoken] type openai-compatible base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY default_model claude-sonnet-4-5 timeout_seconds 120 [workspace] root ~/Documents/openclawworkspace articles_dir articles [logging] level info file ~/Documents/openclawworkspace/logs/publish.log环境变量在 shell 里导出写进~/.bashrc或~/.zshrcexport TAOTOKEN_API_KEYsk-你的Key3.3 settings.json发布 skill 的专属配置这个文件管微信侧凭证和渲染开关跟 config.toml 分开方便单独备份和轮换{ wechat: { app_id: wx你的AppID, app_secret_env: WECHAT_APP_SECRET, author: 你的署名, default_thumb_media_id: }, render: { enable_header: true, enable_footer: true, highlight_color: #1a73e8, code_theme: github }, publish: { auto_update_draft: true, image_cache: true, notify_on_success: true } }auto_update_draft设为 true 后重复执行不会产生重复草稿而是更新已有草稿。image_cache打开后已上传图片的微信 CDN 地址会写进 meta.json改稿重发不重复上传。3.4 skill 触发配置OpenClaw 的 skill 靠触发词和命令绑定。在 skill 目录下加一个 manifest声明什么时候调用它{ name: wechat-publisher, trigger: [发布公众号, 推送到草稿箱, publish wechat], entry: scripts/publish.py, args_schema: { article_dir: string, force_new: boolean } }配好之后你在对话里说「把这篇发布公众号」OpenClaw 就会带上当前文章目录去调 publish.py。4. 端到端验证从本地 Markdown 到草稿箱4.1 准备一篇最小测试文章先别拿正式稿试建一个测试目录放一篇带图片和隐藏标签的短文章# 测试标题 !-- wechat:lead -- 这里是导读内容渲染后会变成蓝色左边框的导读框。 !-- /wechat:lead -- 正文第一段包含一个行内代码 print(hello)。 ![测试图](./img-01.png) !-- wechat:highlight -- 这句话会被渲染成加粗高亮。 !-- /wechat:highlight --隐藏标签用 HTML 注释实现在飞书、GitHub 里完全不可见只有微信渲染器会识别并套样式。4.2 执行发布命令cd ~/Documents/openclawworkspace python3 skills/wechat-publisher/scripts/publish.py \ --article-dir ~/Documents/openclawworkspace/articles/2026-03-07/测试主题/脚本内部按顺序做四件事扫描目录收集图片、调微信 upload-img 接口上传并替换链接、把 Markdown 渲染成内联样式 HTML、调草稿创建接口写入草稿箱。4.3 看返回结果成功时终端会打印类似输出[1/4] 扫描图片: 找到 2 张 (cover.png, img-01.png) [2/4] 上传图片: cover.png - media_idxxx, img-01.png - https://mmbiz.qpic.cn/... [3/4] 渲染 HTML: 识别隐藏标签 2 处, 内联样式 47 个 [4/4] 创建草稿: media_idyyy, 状态success 草稿已写入请到公众号后台草稿箱查看。同时 meta.json 里会多出wechat_image_map和media_id两个字段。第二次改稿重跑日志里图片上传那步会显示「命中缓存跳过」草稿走更新接口不会多出一条。4.4 验证草稿内容进公众号后台草稿箱检查三件事图片是否正常显示不是裂图、隐藏标签样式是否生效、封面图是否已设置。三项都对链路就通了。5. 本篇常见错排查5.1 图片上传报 40001 或 invalid credential这是 access_token 失效或 AppSecret 配错。access_token 有效期两小时脚本一般会缓存但如果服务器时间漂移或者多进程并发刷新会出现旧 token 被覆盖的情况。排查顺序先确认WECHAT_APP_SECRET环境变量能读到再手动调一次 token 接口看返回。curl https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credentialappid你的AppIDsecret你的Secret返回里带access_token说明凭证没问题问题在脚本缓存逻辑。5.2 IP 不在白名单错误信息通常是errcode: 40164。公众号后台把服务器出口 IP 加进白名单即可。注意如果服务器走的是动态出口IP 会变这种情况要么固定出口要么每次发布前先查当前 IP 再更新白名单。5.3 草稿重复创建说明 meta.json 里的 media_id 没被读到。检查两点article_dir 是否指对了目录meta.json 必须和 article.md 同级以及 settings.json 里auto_update_draft是否为 true。如果确实想强制新建加--force-new参数。5.4 隐藏标签没生效渲染器识别的是固定格式的 HTML 注释!-- wechat:lead --和!-- /wechat:lead --必须成对中间不能有嵌套。如果标签名拼错渲染器会当普通注释忽略内容照常显示但没样式。用grep -n wechat: article.md快速核对标签。5.5 模型调用超时发布 skill 里的润色和摘要调用走 TaoToken 通道如果超时先确认TAOTOKEN_API_KEY环境变量在当前 shell 生效echo $TAOTOKEN_API_KEY看有没有值。如果是在 systemd 或 cron 里跑环境变量不会自动继承需要在 service 文件里显式声明 Environment。6. 把发布环节接进你的工作流这套链路跑通之后日常操作就变成AI 写完文章落到本地目录你说一句「发布公众号」草稿箱里出现排版好的稿子你审核完点发布。发布决策始终在你手里自动化只处理排版和上传这些重复劳动。如果你还在手动排版建议先从最小测试文章跑一遍第 4 节的验证流程把图片上传和隐藏标签这两块确认无误再换成正式稿。长期做内容的话把发布 skill 和写作 skill 串起来配合 Coding Plan 管理模型调用额度整条链路会更稳 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。接入过程中遇到鉴权或接口报错先查接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 大部分错误码在里面都有对应说明。
返回列表