🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

公众号草稿发布 yuehancn/dsh-tool-gzh-publisher

DeepSeek Harness
yuehancn33 天前有提交已提供中文文档扫描:含敏感能力

过质量门后把稿件推进公众号草稿箱

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add yuehancn/dsh-tool-gzh-publisher
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么[目录]—
dsh 原生插件 · platform
暂无时间戳·判据 →
装得上吗[实装验证]—
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
数据截至 2026/10/04·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 33 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 3 处,展示前 3 条)
  • 执行外部命令来自配置/变量
    lib/index.js:92
    execFile(
  • 读取本地文件
    lib/index.js:120
    await access(path, fsConstants.R_OK);
  • 读取本地文件
    lib/index.js:137
    raw = JSON.parse(await readFile(accountsPath, "utf8"));
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 校验稿件质量门
  • 推送至公众号草稿箱

DeepSeek Harness 的微信公众号流水线:先按发布门禁校验草稿,再推送到草稿箱。

README

由 DeepSeek 最新模型翻译生成
dsh-tool-gzh-publisher Listed on dsh-plugin.org 在 dsh 里把关并推送公众号草稿 —— 装完这个插件,你的智能体就能先过质量门、再把稿件推进公众号草稿箱,全程不用离开对话。 公众号(WeChat Official Account)管线工具集,以 dsh 插件形式暴露给智能体。 Compatibility: built and tested against dsh 0.2.0-rc.2 (preview). The apply(ctx) plugin spec is stable; verify against your own dsh version if newer. 一行安装 dsh plugin --profile desktop add github:yuehancn/dsh-tool-gzh-publisher 支持的 profile:desktop(桌面版)/ web(Web 版)。 ⚠️ 需要本机已有 gzh_auto.py 管线脚本,见下方「前置条件」。 它不重新实现微信 API —— 微信的 access_token 握手、草稿创建、发布前质量门都在已经跑通的 gzh_auto.py(来自 gzh-auto-publisher 技能)里。本插件是一层 类型化桥接,把这套能力变成模型能安全调用的工具。
展开完整文档(README 剩余 1 节)
dsh-tool-gzh-publisher

Listed on dsh-plugin.org

在 dsh 里把关并推送公众号草稿 —— 装完这个插件,你的智能体就能先过质量门、再把稿件推进公众号草稿箱,全程不用离开对话。

公众号(WeChat Official Account)管线工具集,以 dsh 插件形式暴露给智能体。

Compatibility: built and tested against dsh 0.2.0-rc.2 (preview).
The apply(ctx) plugin spec is stable; verify against your own dsh version if newer.

一行安装

dsh plugin --profile desktop add github:yuehancn/dsh-tool-gzh-publisher

支持的 profile:desktop(桌面版)/ web(Web 版)。
⚠️ 需要本机已有 gzh_auto.py 管线脚本,见下方「前置条件」。

它不重新实现微信 API —— 微信的 access_token 握手、草稿创建、发布前质量门都在已经跑通的 gzh_auto.py(来自 gzh-auto-publisher 技能)里。本插件是一层 类型化桥接,把这套能力变成模型能安全调用的工具。

为什么不做成「直接 exec 一个脚本」?因为那样模型要自己拼 flag、自己解析中文输出、自己判断成功失败。凭据类、限频的 API 一旦有第二份实现,就必然出现两个
source of truth。这里只做:类型化参数 + 结构化输出 + 稳定的路径配置。

安装

dsh plugin --profile desktop add github:yuehancn/dsh-tool-gzh-publisher

Replace desktop with your own profile name. This plugin needs external setup
(a publisher script + an account registry) — see below.

⚠️ 本插件不是开箱即用。它桥接的 gzh_auto.py 与 accounts.json 是另一个仓库/技能的内容。装完插件后必须自己配好这三个路径,否则工具会明确报 gzh: publisher script not found at "…"。

🔐 权限与隐私

这一节很重要 —— 本插件会接触微信发布凭据。

| 项目 | 说明 |
| 凭据读取 | 插件本身不读取凭据。它把工作委托给 gzh_auto.py,由后者从你的 env_file 里读 WECHAT_APPID / WECHAT_APPSECRET,换取 access_token |
| 凭据传输 | access_token 只发给微信官方接口(api.weixin.qq.com)。不经过任何第三方 |
| 网络访问 | 仅访问微信官方 API。离线工具(gzh_accounts / gzh_validate / gzh_check)完全不出网 |
| 数据外发 | 无遥测。文章内容只在你调用 gzh_push_draft 时发给微信 |
| 文件读取 | 读你指定的稿件 .md 文件、accounts.json、以及 env_file |
| 文件写入 | 无。本插件不写任何文件 |
| 进程启动 | 通过 execFile 调用你配置的 pythonPath 执行 scriptPath。⚠️ 这是本插件唯一会启动的进程 |
| 生命周期脚本 | 无 preinstall / postinstall / prepare。安装时不会跑任何代码 |
| 运行时依赖 | 仅 @deepseek-ai/schemastery(配置校验)。其余为 peer,由 dsh 提供 |

⚠️ 发布是不可逆的对外动作。gzh_push_draft 只推草稿箱、不发布,最终「发布」仍需人工点击 —— 这是有意设计。

工具一览

| 工具 | 背后命令 | 联网 | 作用 |
| gzh_accounts | 直接读 accounts.json | 否 | 列出本机可发布的公众号,含定位/关键词/工作目录 |
| gzh_validate | validate --account --file | 否 | 对稿件跑发布门(字数/金句/emoji/AI 腔/结尾),不碰网络 |
| gzh_check | check --account | 否 | 账号配置体检:必填字段、磁盘路径、env 里有没有 APPID/SECRET |
| gzh_push_draft | push --account --file [--title] [--digest] | 是 | 先过门再推草稿箱;不发布,人还得点「发布」 |
| gzh_verify | verify --account | 是 | 真实凭据握手,取 access_token。唯一会鉴权的工具 |

工具描述里显式标了联网与否,因为模型不该在只想体检配置时误触发一次鉴权。

前置条件

本插件需要三样外部东西:

| 配置项 | 默认值 | 说明 |
| scriptPath | …/gzh-auto-publisher/scripts/gzh_auto.py | 被桥接的发布脚本 |
| pythonPath | 本机 3.13.12 venv python | 跑脚本的解释器 |
| accountsPath | …/gzh-auto-publisher/accounts.json | 账号注册表 |

accounts.json 的每个条目形如:

{
"我的公众号": {
"name": "我的公众号", "positioning": "账号定位一句话",json
"keywords": ["关键词1", "关键词2"],
"workdir": "C:/path/to/drafts",
"env_file": "C:/path/to/.env",
"min_cjk": 1500,
"max_cjk": 2600,
"min_gold": 2,
"ending": "…我的公众号", "author": "作者名" } }

env_file 指向一个文件,里面存着 WECHAT_APPID / WECHAT_APPSECRET。
⚠️ 该文件不要提交到任何仓库。

安装(手工,本机开发用)

展开:不走命令行的手工装法

1. 插件本体

放在 ~/.dsh/plugins/dsh-tool-gzh-publisher/:

package.json
cordis.patch.yml
lib/index.js

2. 激活(两处都要改,缺一不可)

~/.dsh/profiles/<profile>/package.json: json {
"dependencies": {
"dsh-tool-gzh-publisher": "link:C:/Users/<你>/.dsh/plugins/dsh-tool-gzh-publisher" },
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-tool-gzh-publisher"]
}
}
}

只写 dependencies = 装了但没启用。bundles 才是启用开关。

3. node_modules 链接

dsh 加载时从 profile 的 node_modules 读包,所以需要一条 junction:
bat
mklink /J "%USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-tool-gzh-publisher" ^
"%USERPROFILE%\.dsh\plugins\dsh-tool-gzh-publisher"

4. profile patch 填配置

~/.dsh/profiles/<profile>/cordis.patch.yml 末尾追加: yaml
- id: tool-gzh-publisher
config:
scriptPath: <你的 gzh_auto.py 绝对路径> pythonPath: <你的 python 解释器绝对路径> accountsPath: <你的 accounts.json 绝对路径> timeoutMs: 300000

- id: tool-gzh-publisher 在这里是按 id 覆盖已存在的行(bundle 已经声明过这一行)。新行必须写在 cordis.patch.yml 的 - insert: 里,否则报 patch: entry "xxx" not found。

配置项

| 键 | 默认 | 说明 |
| scriptPath | 无(需自配) | 被桥接的发布脚本绝对路径 |
| pythonPath | 系统 python | 跑脚本的解释器 |
| accountsPath | 无(需自配) | 账号注册表绝对路径 |
| timeoutMs | 180000 | gzh_push_draft 的调用预算 |
| accounts / validate / check / push / verify | true | 逐工具开关,可关掉不想暴露的 |

验证

三个探针(.probe/,为开发期产物,正式交付可删): bash
node .probe/verify-load.mjs # 模块能否被 dsh 加载、5 个工具是否注册、开关是否生效
node .probe/behaviour.mjs # classify 映射全覆盖 + 真实脚本端到端
node .probe/live.mjs # 真实稿件跑门 + 真实微信 API
node .probe/live2.mjs # 从「已安装路径」加载,跑真凭据握手

本机实测结论:

- verify-load PASS — 5 工具注册,空配置默认值正确,push:false, verify:false 时正确降为 3 个工具
- behaviour 全 PASS — exit0+✅→ok、exit1+❌→fail、exit0但含❌→fail、详情原文保留;真实脚本对 4 字草稿给出真实判词(CJK=4(要求 1500-2600) | 金句=0(≥2) | 结尾错误)
- live — 三篇历史稿件全部 ok=false(这是脚本的真实意见,不是插件 bug)
- live2 — 从安装路径加载成功;gzh_check 报配置完整;gzh_verify 真实取到 token(✅ 授权 OK(token 前缀 108_vH…))

dsh 自身加载验证:
bash

需要 ELECTRON_RUN_AS_NODE=1;--dump-config 是顶层 flag,不是 plugin 子命令

ELECTRON_RUN_AS_NODE=1 "<DeepSeek Harness.exe>" \
"resources/app.asar/dsh/node_modules/@deepseek-ai/dsh/lib/bin.js" \
--profile web --dump-config | grep -A2 "== dsh-tool-gzh-publisher"

输出:

== dsh-tool-gzh-publisher

- id: tool-gzh-publisher
name: dsh-tool-gzh-publisher

坑位备忘

1. --dump-config 是顶层 flag。dsh plugin --profile web dump-config 会把
1. 把 dump-config 当成 pnpm 参数透传,然后报 'pnpm' 不是内部或外部命令。
正确写法:dsh --profile web --dump-config。
2. 必须 ELECTRON_RUN_AS_NODE=1,且用桌面版的 exe 跑 asar 里的 bin.js。
裸 node 读不了 asar 路径(MODULE_NOT_FOUND);不带该变量则 exe 会试图开窗口并吞掉 stdout(表现为「rc=0 但输出 2 字节」)。
3. gzh_check 不是「列草稿箱」。它检查的是账号配置。真正的草稿列表要走微信后台。最初我把工具起名叫 gzh_drafts 并写成「列出草稿箱」,读脚本源码(cmd_check 在 gzh_auto.py:310)后改正为 gzh_check。
4. 中文输出必须设 PYTHONIOENCODING=utf-8 + PYTHONUTF8=1,否则 Windows 默认 OEM 代码页会把账号名、标题打成乱码。插件在 runScript() 里已设。
5. classify() 不能只看退出码。脚本存在「exit 0 但输出里带 ❌」的情况
(部分判词先打 ✅ 再打 ❌)。判据是 code===0 && !/❌/。
6. accounts.json 的中文键(账号名常为中文)在 JSON 里是 UTF-8,读取时要显式 encoding: "utf8",否则在 GBK 默认环境下会抛解码错。
预览分享卡片长什么样 ↓yuehancn/dsh-tool-gzh-publisher
分享 · DeepSeek Harness Hub
yuehancn/dsh-tool-gzh-publisher

过质量门后把稿件推进公众号草稿箱

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部