[{"data":1,"prerenderedAt":454},["ShallowReactive",2],{"page-/post/zzao/wx-auto-publish-share-sop":3,"surrounding-page":445},{"id":4,"title":5,"author":6,"body":7,"date":435,"description":422,"extension":436,"group":6,"lastmod":437,"meta":438,"navigation":439,"path":440,"rawbody":441,"seo":442,"showTitle":6,"stem":443,"tags":6,"versions":6,"__hash__":444},"content/post/zzao/wx-auto-publish-share-sop.md","公众号自动化发文全流程思路分享",null,{"type":8,"value":9,"toc":421},"minimark",[10,17,31,37,40,54,59,62,65,68,73,79,82,87,90,97,102,108,116,121,124,135,140,143,154,158,164,171,174,177,188,195,198,201,207,211,218,229,246,252,267,284,287,292,299,302,305,308,313,316,322,325,328,331,342,347,352,355,360,365,369,374,377,380,383,386,391,394,397,403,408,411],[11,12,13],"blockquote",{},[14,15,16],"p",{},"嘿，Jinx，帮我写一篇公众号贴图，内容是 xxxxx",[14,18,19,20,24,25,27,28,30],{},"当把当把这行文字发给",[21,22,23],"code",{},"OpenClaw","时，它经过了哪些流程？当把这行文字发给",[21,26,23],{},"时，它经过了哪些流程？这行文字发给",[21,29,23],{},"时，它经过了哪些流程？",[14,32,33],{},[34,35,36],"strong",{},"首先，它命中了一个skill，这个skill是所有流程的入口。",[14,38,39],{},"当你在说发公众号、发文章、发贴图等等",[14,41,42,43,46,47,50,51,53],{},"它就会读取这个",[21,44,45],{},"SKILL","的",[21,48,49],{},"SKILL.md","，",[21,52,49],{},"里会说明这几种路径的入口",[14,55,56],{},[34,57,58],{},"比如发文章对应一篇SOP.md，发公众号贴图对应一篇SOP.md。",[14,60,61],{},"另外还有一个MD规则文档，在支持MD的内容平台上，必须优先读取MD文档。在不支持的内容平台，比如说公众号贴图，则无需使用MD文档。",[14,63,64],{},"还有一个个人风格文档，它的作用和MD规则文档一致，需要个人风格时就读取，不需要时就忽略",[14,66,67],{},"如果说我在发公众号文章，那公众号文章对应的SOP就是这样的，它非常短（但对比其他SOP已经是最长的了），只分5️⃣步。",[14,69,70],{},[34,71,72],{},"第一步",[14,74,75,76],{},"给我发给他的纯文本加入MD语法（一般我的草稿比较长，不太需要它润色），然后存在指定目录下，如",[21,77,78],{},"posts/YYYY-MM-DD-{slug}/post.md",[14,80,81],{},"落到指定位置的目的是方便整理，多平台发布。",[14,83,84],{},[34,85,86],{},"第二步",[14,88,89],{},"上传配图到COS。",[14,91,92,93,96],{},"通过命令 ",[21,94,95],{},"z cos upload --folder","，把所有用到的图先传到自己的图床上，因为这些文章还要同步到博客，用自己的图床是最好的。",[14,98,99],{},[34,100,101],{},"第三步",[14,103,104,107],{},[21,105,106],{},"zotepad ","    导出HTML。",[14,109,110,112,113],{},[21,111,106],{},"    是我vibe coding的一个多端App，在客户端上，它开放了一个http接口，调用时传入一个本地md文件路径，他就会自动打开并显示预览界面，界面加载后会自动",[34,114,115],{},"把带有内联样式的html导出到指定目录下",[14,117,118],{},[34,119,120],{},"第四步",[14,122,123],{},"生成封面图。",[14,125,126,127,130,131,134],{},"接口强制要求必须要有一张图片，所以我会调用SKILL：",[21,128,129],{},"z-card-image","，模板使用    ",[21,132,133],{}," wechat-cover-split","，从文章标题中提炼1-2行关键词渲染成封面图。",[14,136,137],{},[34,138,139],{},"第五步",[14,141,142],{},"写入草稿箱。这一步其实融合了三个接口：授权+上传素材（第二步的图）+新增草稿（第三步的内容）。我已经专门写过一篇文章解析这三步了。",[14,144,145,146,149,150,153],{},"同样是很简短的命令：",[21,147,148],{},"z wx draft xxxxx","。在这一步，会把",[21,151,152],{},"cos url","替换为微信素材库的链接。",[155,156,157],"h2",{"id":157},"小结一下",[14,159,160,161],{},"一个SKILL（60行）作为入口串联所有流程，每个SOP里都是简单的命令调用，或者指定使用某个SKILL ",[21,162,163],{},"30-90行",[14,165,166],{},[167,168],"img",{"alt":169,"src":170},"1.00","https://img.zzao.club/zotepad/1773834234492_v5jtt390iz.png",[172,173],"br",{},[155,175,176],{"id":176},"录入草稿",[14,178,179,180,183,184,187],{},"这一步我一般使用",[34,181,182],{},"豆包输入法","和",[34,185,186],{},"手机自带的文档APP","实现。因为豆包输入法的语音输入非常准确，大部分专有名词都能翻译过来。临时翻译错的，在结束时还能自动修改一下。",[14,189,190,191,194],{},"如果是需要配图的文章，我会直接在内容里写一个配图1、配图2。在Skill的入口处，我会写上，",[34,192,193],{},"如果我要求多图，那就需要他先写草稿，然后根据我挨个发送的图片插入回去","。",[155,196,197],{"id":197},"带样式的内容",[14,199,200],{},"这一步我是用我自己vibe Coding的一个APP（zotepad）来实现的。",[14,202,203,206],{},[34,204,205],{},"但其他实现方式也非常多","，只要随便一个能渲染MD的页面，能支持导出即可，我用bun写了一个页面也测试过了。问题就是公众号编辑器自己的坑比较多，需要多次调试。",[155,208,210],{"id":209},"用-cli-作为中间层","用 CLI 作为中间层",[14,212,213,214,217],{},"前两步先把初稿处理好，然后渲染好样式之后，就要进入准备发布的环节。这一环节我抽离到了一个",[21,215,216],{},"CLI","中。",[14,219,220,221,224,225,228],{},"这个CLI的功能，并不像传统的CLI一样按功能划分，",[34,222,223],{},"它是专门为了Agent调用存在","的。也就是说，它里面的命令可能是",[34,226,227],{},"结合了非常多的不想干的服务","，靠一个靠命令和二级子命令来适配。",[14,230,231,232,235,236,239,240,242,243,245],{},"这样做的好处就是，当你有了特别多的",[21,233,234],{},"Skill","之后，他们可能包装了非常多的",[21,237,238],{},"Scripts","，这些",[21,241,238],{},"散落在各个",[21,244,234],{},"中，不太好维护。",[14,247,248,249,251],{},"而这些",[21,250,238],{},"往往还会去调用更底层的服务，这样调用的链条就非常难以排查和维护。收在一起，我觉得方便一些。",[14,253,254,255,46,257,260,261,263,264,266],{},"并且",[21,256,216],{},[21,258,259],{},"--help","天然就像一个",[21,262,234],{},"一样。如果大模型在调用时发现不对，很有可能会主动排查这个",[21,265,216],{},"支持的命令。在命令描述里，你就可以简短地写上这个命令具体做的什么工作以及必须的参数。",[14,268,269,270,272,273,276,277,279,280,283],{},"更重要的一点，这个",[21,271,216],{},"它不需要发布到",[21,274,275],{},"NPM","上去，你只需要让命令指向这个",[21,278,216],{},"打包后的入口文件（比如zz wx xxxxx），然后每次使用时发现问题及时修改，然后重新build，马上就能看到效果。(",[34,281,282],{},"用 ~/.bun/bin/z 软连接到 build后的 dist/index.js",")",[14,285,286],{},"上面那个APP也是同理，你去发布到应用商店是非常慢的，但是你在本地直接启动。发现问题之后，马上就能热更新。这对于运行在一个本地的OpenClaw来说，是一个极大的助力",[14,288,289],{},[34,290,291],{},"修改后马上得到反馈，这一点也是Skill要比MCP好用的地方。",[14,293,294,295,298],{},"最后，获取授权+上传素材+发送草稿，在CLI里就只是一行命令。",[34,296,297],{},"大模型不需要知道这三步具体做了什么","，他他只需要知道他运行完这个命令，会得到他想要的结果。",[155,300,301],{"id":301},"底层服务",[14,303,304],{},"CLI的命令最终调用的是底层的服务。这个后端服务实现了接入微信公众号开放的三个接口。这里其实我已经写过一篇文章，详细解释过这三个接口了。",[14,306,307],{},"并且这个服务就在我的博客项目里，也是开源的。",[14,309,310],{},[34,311,312],{},"服务需要部署在云服务器上。",[155,314,315],{"id":315},"个人风格文档的迭代",[14,317,318,319,194],{},"这个文档的迭代我没有放在入口的skill里，因为我想的是哪篇文章爆了，给流量了，再",[34,320,321],{},"单独去触发一个SKILL迭代这个文件",[14,323,324],{},"如果每次写文章都要它总结出什么东西来，估计很快就乱了，它一定会带着它当前上下文乱总结。",[14,326,327],{},"而且写的差的文章，再像自己也没用啊，差的就会一直差下去了，让它分析一下偶尔写的好的就行了。",[155,329,330],{"id":330},"其他发布方式",[14,332,333,334,341],{},"如果没有自己的底层服务，没有云服务器，可以尝试一下 ",[335,336,340],"a",{"href":337,"rel":338},"https://github.com/wechatsync/Wechatsync",[339],"nofollow","wechatsync"," 这个开源项目（MIT）。既支持CLI，也有浏览器插件，也有MCP服务，支持的20多个平台",[14,343,344],{},[167,345],{"alt":169,"src":346},"https://img.zzao.club/zotepad/1773835461137_mbet492aq.png",[14,348,349,350,194],{},"先安装浏览器插件，然后全局安装",[21,351,216],{},[14,353,354],{},"我自己用命令尝试发布头条和B站，都是直接发到草稿箱。",[14,356,357],{},[34,358,359],{},"有一点问题就是可能本地cli会和浏览器插件通信失败，原因未知。",[14,361,362],{},[34,363,364],{},"但是已经很方便了。",[155,366,368],{"id":367},"spawn-a-sub-agent","spawn a sub-agent",[14,370,371],{},[34,372,373],{},"当一个任务完全不依赖已有的上下文时，要学会使用这个指令去指派子代理去做个任务。",[14,375,376],{},"比如给文章添加md语法。它就是短短的MD规范和MD文章。一个本地部署的模型都能做的到。",[14,378,379],{},"比如去搜某个页面，拿到信息。",[14,381,382],{},"这样做的好处是，任务不会收到上下文的干扰。一旦聊多了之后，上下文里难免会进来一些奇怪的东西。",[155,384,385],{"id":385},"最终的设计",[14,387,388],{},[167,389],{"alt":169,"src":390},"https://img.zzao.club/zotepad/1773836244760_e1yycxgr3a6.png",[155,392,393],{"id":393},"小结",[14,395,396],{},"核心的目标就是SKILL精简到底",[14,398,399,402],{},[34,400,401],{},"只要是有确定结果的工作流，SKILL就不必知道细节","，只需要知道如何执行以及拿到结果之后要干什么就行了。",[14,404,405],{},[34,406,407],{},"小的、闭环的任务，交给 sub-agent",[14,409,410],{},"数据源的质量决定了大模型的",[14,412,413,414,416,417,420],{},"设计好你的底层服务和上层的",[21,415,45],{},"，在下一个",[21,418,419],{},"openclaw","到来的时候还是可以继续用的",{"title":422,"searchDepth":423,"depth":423,"links":424},"",2,[425,426,427,428,429,430,431,432,433,434],{"id":157,"depth":423,"text":157},{"id":176,"depth":423,"text":176},{"id":197,"depth":423,"text":197},{"id":209,"depth":423,"text":210},{"id":301,"depth":423,"text":301},{"id":315,"depth":423,"text":315},{"id":330,"depth":423,"text":330},{"id":367,"depth":423,"text":368},{"id":385,"depth":423,"text":385},{"id":393,"depth":423,"text":393},"2026-03-09T18:05:57.000Z","md","2026-03-18T12:36:31.162Z",{},true,"/post/zzao/wx-auto-publish-share-sop","---\ntitle: 公众号自动化发文全流程思路分享\ndate: \"2026-03-09T18:05:57.000Z\"\nlastmod: \"2026-03-18T12:36:31.162Z\"\n---\n\n> 嘿，Jinx，帮我写一篇公众号贴图，内容是 xxxxx\n\n当把当把这行文字发给`OpenClaw`时，它经过了哪些流程？当把这行文字发给`OpenClaw`时，它经过了哪些流程？这行文字发给`OpenClaw`时，它经过了哪些流程？\n\n**首先，它命中了一个skill，这个skill是所有流程的入口。**\n\n当你在说发公众号、发文章、发贴图等等\n\n它就会读取这个`SKILL`的`SKILL.md`，`SKILL.md`里会说明这几种路径的入口\n\n**比如发文章对应一篇SOP.md，发公众号贴图对应一篇SOP.md。**\n\n另外还有一个MD规则文档，在支持MD的内容平台上，必须优先读取MD文档。在不支持的内容平台，比如说公众号贴图，则无需使用MD文档。\n\n还有一个个人风格文档，它的作用和MD规则文档一致，需要个人风格时就读取，不需要时就忽略\n\n如果说我在发公众号文章，那公众号文章对应的SOP就是这样的，它非常短（但对比其他SOP已经是最长的了），只分5️⃣步。\n\n**第一步**\n\n给我发给他的纯文本加入MD语法（一般我的草稿比较长，不太需要它润色），然后存在指定目录下，如`posts/YYYY-MM-DD-{slug}/post.md`\n\n落到指定位置的目的是方便整理，多平台发布。\n\n**第二步**\n\n上传配图到COS。\n\n通过命令 `z cos upload --folder`，把所有用到的图先传到自己的图床上，因为这些文章还要同步到博客，用自己的图床是最好的。\n\n**第三步**\n\n`zotepad `    导出HTML。\n\n`zotepad `    是我vibe coding的一个多端App，在客户端上，它开放了一个http接口，调用时传入一个本地md文件路径，他就会自动打开并显示预览界面，界面加载后会自动**把带有内联样式的html导出到指定目录下**\n\n**第四步**\n\n生成封面图。\n\n接口强制要求必须要有一张图片，所以我会调用SKILL：`z-card-image`，模板使用    ` wechat-cover-split`，从文章标题中提炼1-2行关键词渲染成封面图。\n\n**第五步**\n\n写入草稿箱。这一步其实融合了三个接口：授权+上传素材（第二步的图）+新增草稿（第三步的内容）。我已经专门写过一篇文章解析这三步了。\n\n同样是很简短的命令：`z wx draft xxxxx`。在这一步，会把`cos url`替换为微信素材库的链接。\n\n## 小结一下\n\n一个SKILL（60行）作为入口串联所有流程，每个SOP里都是简单的命令调用，或者指定使用某个SKILL `30-90行`\n\n![1.00](https://img.zzao.club/zotepad/1773834234492_v5jtt390iz.png)\n\n\u003Cbr />\n\n## 录入草稿\n\n这一步我一般使用**豆包输入法**和**手机自带的文档APP**实现。因为豆包输入法的语音输入非常准确，大部分专有名词都能翻译过来。临时翻译错的，在结束时还能自动修改一下。\n\n如果是需要配图的文章，我会直接在内容里写一个配图1、配图2。在Skill的入口处，我会写上，**如果我要求多图，那就需要他先写草稿，然后根据我挨个发送的图片插入回去**。\n\n## 带样式的内容\n\n这一步我是用我自己vibe Coding的一个APP（zotepad）来实现的。\n\n**但其他实现方式也非常多**，只要随便一个能渲染MD的页面，能支持导出即可，我用bun写了一个页面也测试过了。问题就是公众号编辑器自己的坑比较多，需要多次调试。\n\n## 用 CLI 作为中间层\n\n前两步先把初稿处理好，然后渲染好样式之后，就要进入准备发布的环节。这一环节我抽离到了一个`CLI`中。\n\n这个CLI的功能，并不像传统的CLI一样按功能划分，**它是专门为了Agent调用存在**的。也就是说，它里面的命令可能是**结合了非常多的不想干的服务**，靠一个靠命令和二级子命令来适配。\n\n这样做的好处就是，当你有了特别多的`Skill`之后，他们可能包装了非常多的`Scripts`，这些`Scripts`散落在各个`Skill`中，不太好维护。\n\n而这些`Scripts`往往还会去调用更底层的服务，这样调用的链条就非常难以排查和维护。收在一起，我觉得方便一些。\n\n并且`CLI`的`--help`天然就像一个`Skill`一样。如果大模型在调用时发现不对，很有可能会主动排查这个`CLI`支持的命令。在命令描述里，你就可以简短地写上这个命令具体做的什么工作以及必须的参数。\n\n更重要的一点，这个`CLI`它不需要发布到`NPM`上去，你只需要让命令指向这个`CLI`打包后的入口文件（比如zz wx xxxxx），然后每次使用时发现问题及时修改，然后重新build，马上就能看到效果。(**用 \\~/.bun/bin/z 软连接到 build后的 dist/index.js**)\n\n上面那个APP也是同理，你去发布到应用商店是非常慢的，但是你在本地直接启动。发现问题之后，马上就能热更新。这对于运行在一个本地的OpenClaw来说，是一个极大的助力\n\n**修改后马上得到反馈，这一点也是Skill要比MCP好用的地方。**\n\n最后，获取授权+上传素材+发送草稿，在CLI里就只是一行命令。**大模型不需要知道这三步具体做了什么**，他他只需要知道他运行完这个命令，会得到他想要的结果。\n\n## 底层服务\n\nCLI的命令最终调用的是底层的服务。这个后端服务实现了接入微信公众号开放的三个接口。这里其实我已经写过一篇文章，详细解释过这三个接口了。\n\n并且这个服务就在我的博客项目里，也是开源的。\n\n**服务需要部署在云服务器上。**\n\n## 个人风格文档的迭代\n\n这个文档的迭代我没有放在入口的skill里，因为我想的是哪篇文章爆了，给流量了，再**单独去触发一个SKILL迭代这个文件**。\n\n如果每次写文章都要它总结出什么东西来，估计很快就乱了，它一定会带着它当前上下文乱总结。\n\n而且写的差的文章，再像自己也没用啊，差的就会一直差下去了，让它分析一下偶尔写的好的就行了。\n\n## 其他发布方式\n\n如果没有自己的底层服务，没有云服务器，可以尝试一下 [wechatsync](https://github.com/wechatsync/Wechatsync) 这个开源项目（MIT）。既支持CLI，也有浏览器插件，也有MCP服务，支持的20多个平台\n\n![1.00](https://img.zzao.club/zotepad/1773835461137_mbet492aq.png)\n\n先安装浏览器插件，然后全局安装`CLI`。\n\n我自己用命令尝试发布头条和B站，都是直接发到草稿箱。\n\n**有一点问题就是可能本地cli会和浏览器插件通信失败，原因未知。**\n\n**但是已经很方便了。**\n\n## spawn a sub-agent\n\n**当一个任务完全不依赖已有的上下文时，要学会使用这个指令去指派子代理去做个任务。**\n\n比如给文章添加md语法。它就是短短的MD规范和MD文章。一个本地部署的模型都能做的到。\n\n比如去搜某个页面，拿到信息。\n\n这样做的好处是，任务不会收到上下文的干扰。一旦聊多了之后，上下文里难免会进来一些奇怪的东西。\n\n## 最终的设计\n\n![1.00](https://img.zzao.club/zotepad/1773836244760_e1yycxgr3a6.png)\n\n## 小结\n\n核心的目标就是SKILL精简到底\n\n**只要是有确定结果的工作流，SKILL就不必知道细节**，只需要知道如何执行以及拿到结果之后要干什么就行了。\n\n**小的、闭环的任务，交给 sub-agent**\n\n数据源的质量决定了大模型的\n\n设计好你的底层服务和上层的`SKILL`，在下一个`openclaw`到来的时候还是可以继续用的\n",{"title":5,"description":422},"post/zzao/wx-auto-publish-share-sop","Bi1SY3lp5lJTydoMpFRHD-MkBFMGpjpESLZhi02dWJY",[446,450],{"title":447,"path":448,"stem":449,"children":-1},"OpenClaw 安装入门（Windows）","/post/zzao/openclaw/openclaw-install-windows","post/zzao/openclaw/openclaw-install-windows",{"title":451,"path":452,"stem":453,"children":-1},"假设你是AI，你的Skill应该是什么样的","/post/zzao/ai-skill-structure","post/zzao/ai-skill-structure",1779005084793]