30+ 篇文章验证的公众号写作管线
一条命令装进 DSH
选题、写作、质量门禁、排版、配图、草稿箱,装进你每天在用的 DSH。模型是你的,凭据只落本地,群发永远归你。
需要 Node ^22.19.0 || >=24.0.0 与 DSH v0.1.x developer preview
它解决什么
想用 AI 持续产出公众号文章,现有方案各断一截:
工具链是断的
排版工具只有排版。Markdown 编辑器把稿子变成微信图文,但选题、写作、配图、推送还是人肉串联,最后一公里是复制粘贴进公众号后台。
SaaS 是黑盒
闭源写作工具按年订阅,模型不是你自己的,风格不可控,内容数据要经过第三方服务器。
开源管线门槛高
命令行工具环境折腾,微信 IP 白名单和凭据配置劝退大部分人;而且几乎没有方案能定时跑完自动进草稿箱。
→ dsh-wewrite 把一条真实运营中的管线装进 DSH:装完即用,默认只进草稿箱。
5 分钟上手
- 01
装插件
一条命令装进 DSH。仓库直接提交了预构建产物,不需要在 pnpm 侧加任何 allowBuilds 信任声明,装完即用。
npx @deepseek-ai/dsh plugin --profile web add github:jerryjiao/dsh-wewrite#v0.1.4
装完启动 dsh web,会话视图环里出现「wewrite 工作台」tab——这是写作台首屏。 - 02
配凭据
工作台设置页填公众号 AppID / AppSecret,点连接测试。模型不用另配——文本生成直接用 DSH 里已有的模型配置。图片供应商 API Key 可选,不配则文章无图推进,不阻塞发布。

设置页按分组配置;AppSecret 保存后只回显掩码,连接测试在同一页。 - 03
出第一篇
选题面板挑一条热榜,或直接输入主题。管线跑完选题、大纲、成稿、门禁、渲染、配图六步,在编辑器里改稿——右侧微信预览与最终推送产物字节一致。确认后点推草稿箱,到公众平台后台图文素材里查看。群发请你在后台自己点。

选题中心热门榜拉取真实 Hacker News 数据,点「写这个」直接进管线。
它做什么
六步管线
一次运行产出全部产物:Markdown 原稿、微信内联样式 HTML、门禁报告、配图。
选题→大纲→成稿→门禁→渲染→配图
质量门禁未过会拦下默认推送路径:改稿重过,或显式覆盖。

热榜选题
内置 Hacker News(官方 API,无需 key),可配 DailyHotApi 兼容的自建聚合源。单源失败只标记该源,不清空面板。
编辑器与微信预览
CodeMirror 改稿,右侧 375px 微信预览,预览 HTML 与推送载荷字节一致——所见即所推。三套排版主题可换。
定时进草稿箱
RRULE 定时跑管线(如每个工作日 04:00),产物恒定进草稿箱,运行历史完整可审计。DSH 离线错过的时刻不补偿,下次启动提示错过了几个。
九家图片供应商
gpt-image-2 优先,openai → doubao → dashscope → jimeng → minimax → azure_openai → gemini → openrouter → replicate 依次降级。全部失败就无图推进,不卡成稿。
模型原生复用
不另建模型账号体系。管线文本步直接用 DSH 配置的模型,单次运行可覆盖 provider / model。
安全默认
这不是附加项,是产品价值观——公众号是你积累多年的资产,推出去的每个字都该由你过目。
默认只到草稿箱
v0.1 的推送面只有 draft/add。freepublish 群发调用路径在类型层不可达,群发永远由你在公众平台后台人工执行。
凭据只落本地
AppSecret 与各 API Key 经 DSH 凭据服务存进 ~/.dsh 本地目录,不进 git,不离开你的机器。
日志全脱敏
secret / access_token / API key 在日志、报错与运行历史中一律掩码。
无遥测
不收集、不上报任何使用数据。这个官网也不引第三方统计脚本。
架构
单包双端(host + client),DSH Cordis 插件形态:文本步调宿主模型,确定性步骤纯代码执行。

文字版
DSH Web UI(React 18,http://127.0.0.1:3080)
└─ wewrite 工作台 tab
│ 选题 │ 编辑器 │ 微信预览 │ 运行历史 │ 定时计划 │ 设置
│ connection.rpc(仅 loopback 回环,authority 校验)
▼
DSH Host(Node + Cordis)
└─ dsh-wewrite 宿主插件:WeWriteService(唯一写权威,操作串行化)
├─ pipeline/ 六步引擎:选题→大纲→成稿→门禁→渲染→配图
│ 文本步调 ctx.llm,确定性步骤纯代码执行
├─ scheduler/ RRULE 归一化 → durable occurrence claim → 派发 run
├─ wechat/ token / uploadimg / material / draft
│ apiBaseUrl 可配 = 代理缝(全部调用统一走该地址)
└─ providers/ 9 家图片供应商 + fallback 编排
凭据:ctx.credentials(~/.dsh 本地) 数据:storageDomain(~/.dsh 本地)FAQ
推送报 errcode 40164(不在 IP 白名单)怎么办?
这是微信侧约束:调用服务端接口的出口 IP 必须在公众号白名单里。先在设置页点连接测试,诊断会显示当前出口 IP。两条出路:① 出口 IP 固定,就把它加进公众平台 IP 白名单(家宽 IP 会变,此路不稳);② 不固定,就在任意有固定公网 IP 的服务器上反向代理 api.weixin.qq.com——文档里有 Caddy 一行配置的最小示例——把服务器 IP 加白一次,再把设置里的微信 API 地址指向它。本插件不提供也不销售代理服务。
群发功能在哪?
v0.1 没有,这是有意的安全默认:推送面只到草稿箱,群发调用路径在类型层不可达。Roadmap 的 v0.2 会以显式 opt-in(默认关闭、逐次确认)的形式评估提供。
管线失败会留下半成品草稿吗?
不会。推送是原子操作,任一环节失败即中止,草稿箱不会出现残稿。已完成的文章产物保留在本地,改好可重推。