JK公众号排版2.0 / WeChat Typesetting 2.0
角色定位
本 Skill 是总 SKILL,内部封装三层:
JK公众号排版2.0 · 总管(本文件 · 只管调度与台账)
│ 派单:文章 + 输出路径(模板固定 tech-blue)
▼
排版执行员(references/role-typesetter.md · 只干活,只排版)
│ 产物:成品页 + 正文片段
▼
质量总监(references/role-quality-director.md · 只验收,合规守门)
│ PASS → 回总管;FAIL → 打回执行员重做(最多 3 轮)
▼
总管登记 → 交付
- 总管(我):不产出 HTML、不写样式、不做判定。接需求 → 派单(固定商务科技蓝)→ 送质量总监验收 → 登记 → 统计 → 交付。
- 执行员:只接收「文章 + 输出路径」,渲染成公众号富文本(成品页 + 正文片段)。不挑模板、不写台账。
- 底部固定:每篇产物正文末尾自动追加「免责声明 + 品牌图片」(base64 内嵌,不依赖外链);确需关闭用
render.js ... --no-footer。 - 质量总监:只对产物做合规判定(微信官方《文章结构验证规范》),PASS 才放行,FAIL 逐条给修法并打回。
硬约束:
1. 登记与统计只能由总管执行,执行员与质量总监任何时候都不得调用 scripts/ledger.js。
2. 质量门禁不可跳过:未经质量总监 PASS 的产物,不得交付给用户。
路径常量
SKILL_DIR = ~/.workbuddy/skills/jk-wechat-typesetting
渲染脚本 = $SKILL_DIR/scripts/render.js
台账脚本 = $SKILL_DIR/scripts/ledger.js
台账数据 = $SKILL_DIR/data/ledger.json
质量门禁 = $SKILL_DIR/scripts/qa_gate.sh
静态检查 = $SKILL_DIR/scripts/qa_check.py
排版工具 = $SKILL_DIR/assets/wechat-article-studio.html
示例文章 = $SKILL_DIR/assets/demo-article.md
执行员 = $SKILL_DIR/references/role-typesetter.md
质量总监 = $SKILL_DIR/references/role-quality-director.md
模板规范 = $SKILL_DIR/references/template-spec.md
合规规范 = $SKILL_DIR/references/wechat-structure-spec.md
上手指南 = $SKILL_DIR/references/onboarding.md
版本对比 = $SKILL_DIR/references/v1-vs-v2.md
项目说明 = $SKILL_DIR/README.md
版本对比 = $SKILL_DIR/references/v1-vs-v2.md
项目说明 = $SKILL_DIR/README.md
常见问题 = $SKILL_DIR/references/faq.md
根目录配置 = $SKILL_DIR/data/config.json
执行命令统一用 node <脚本>。禁止硬编码带小版本号的 node 目录;若 node 不可用,取 $(ls -d ~/.workbuddy/binaries/node/versions/*/bin/node | tail -1)。
标准流程
0. 首次使用(只做一次,必做)
第一次使用本 Skill 时,必须先做两件事:
- 问用户内容生成的根目录是哪个目录,并明确告知:未来生成的所有内容都在这个根目录中可以找到——产物按日期归档,根目录下有日历台账(
台账日历.html,按月翻看 · 点日期格子筛选(默认全选当月有内容的日期)· 点文章卡片直达排版成品),也有每天的明细(days/YYYY-MM-DD.md)。拿到答复后执行:
bash
node $SKILL_DIR/scripts/ledger.js root --set <用户给的目录>
- 把
references/onboarding.md(上手指南)完整讲给用户看,用户看完再开始正式排版。
之后每次使用不再重复这两步。用户问「产物在哪 / 之前排的去哪找」→ 跑 node ledger.js root 直接报路径。
1. 接需求
| 项 | 说明 |
|---|---|
| 文章成稿 | 文案是否已定稿?未定稿先问是否要顺一遍 |
| 模板 | 固定「商务科技蓝」(tech-blue),本 Skill 为单模板版,无需挑选 |
| 输出位置 | 首次使用先走第 0 步设置根目录;已设置则默认写到 <根目录>/YYYY-MM-DD/ |
2. 模板(单模板版,无需挑选)
本 Skill 只保留一套风格:商务科技蓝(tech-blue)——商业 / 科技 / 干货通吃。不再做模板推荐、不再出同文对比页。
node $SKILL_DIR/scripts/render.js --list # 查看当前模板(永远只有这一套)
排版时模板 id 可直接省略:
node $SKILL_DIR/scripts/render.js 文章.md 输出.html
> 需要别的风格(如国风、轻奢、极简黑白)用「JK公众号排版Pro」(多模板版)。
3. 派单给执行员
把「文章 + 输出路径」交给 references/role-typesetter.md(模板固定 tech-blue,可省略不写)。
4. 质量门禁(2.0 新增,不可跳过)
执行员回报后,总管把正文片段交给质量总监:
bash $SKILL_DIR/scripts/qa_gate.sh <正文片段.html> --out <产物同目录>/<名称>.qa.md
- 退出码 0(PASS)→ 进入第 5 步。
- 退出码 1(FAIL)→ 原路打回执行员,附质量总监的逐条修法,重做后重新检测;同一产物最多 3 轮,第 3 轮仍 FAIL 则由总管如实报给用户并给出选项(接受豁免 / 换模板 / 手动改)。
- 退出码 2(异常)→ 先排查环境(CLI 依赖、Chromium 路径),修好环境再测,不算通过。
- 门禁显示「CLI 不可用,已降级」→ 新机器默认只有 L2 静态检查(仍可 PASS/FAIL,够用)。要启用 L1 官方 CLI:把规范仓
verify-article-structure-spec克隆到${HOME}/verify-article-structure-spec并在其cli/下npm install,或用VAS_CLI_DIR=<cli 目录>环境变量指向它。
5. 登记(总管专属,每次必做)
node $SKILL_DIR/scripts/ledger.js record \
--tpl <模板id> \
--title "<文章标题>" \
--words <中文字数> \
--out "<成品页绝对路径>" \
--qa "pass" \
--note "<备注,可选>"
--qa 记录本次质量门禁结论(pass / fail / pass(L2))。登记不可跳过,即使失败也要登记。
已设置根目录时,登记会自动刷新根目录里的日历台账(台账日历.html)与当天明细(days/YYYY-MM-DD.md),无需手动执行 calendar。
6. 交付 + 汇报统计
交付成品(一键复制页 + 正文片段 + 质检报告),附简短统计(累计第 N 次、本次模板、本次门禁结论),并提醒:产物、日历台账、每天明细都在根目录可以找到。用 present_files 打开成品。
统计命令
node $SKILL_DIR/scripts/ledger.js stats # 完整统计(默认)
node $SKILL_DIR/scripts/ledger.js stats --json # 机器可读
node $SKILL_DIR/scripts/ledger.js last # 最后一次用的模板
node $SKILL_DIR/scripts/ledger.js top # 模板使用排行
node $SKILL_DIR/scripts/ledger.js list --limit 20 # 最近记录
node $SKILL_DIR/scripts/ledger.js stats --html 看板.html # 可视化统计看板
stats 输出四项用户最关心的指标:累计排版次数、最后一次用的模板、每次用的模板(明细)、最常固定使用的模板(排行 + 占比 + 连续次数)。
台账数据结构
data/ledger.json(追加写,永不覆盖、永不删记录):
{
"version": 2,
"records": [
{
"ts": "2026-10-10 23:40+08:00",
"template": "tech-blue",
"templateName": "商务科技蓝",
"title": "文章标题",
"words": 1990,
"output": "/abs/path/wechat.html",
"qa": "pass",
"note": ""
}
]
}
内容根目录结构(第 0 步设置后)
<根目录>/
├── 台账日历.html # 日历台账:按月翻看 · 点日期格子筛选(默认全选当月有内容的日期)· 点文章卡片直达排版成品
├── days/
│ └── YYYY-MM-DD.md # 每天的明细(标题/模板/字数/门禁结论/产物路径/备注)
└── YYYY-MM-DD/ # 当天产物(成品页 + 片段 + 质检报告)
边界
- 用户只问统计 → 只跑台账,不排版、不触发执行员。
- 用户只问模板有哪些 → 跑
node scripts/render.js --list(只有商务科技蓝一套)。 - 用户绕过总管直接让排版 → 可以执行,但必须登记并告知已计入统计。
- 不做:图片生成、配图排版、公众号发布、SVG 转图、文案代写。
- 用户问「和 1.0 有什么区别 / 为什么要用 2.0」→ 读
references/v1-vs-v2.md(1.0 = @xh-ai/jk-wechat-editor,v1.0.1,6 套主题零配置工具)再回答;项目初衷与优势见README.md。 - 用户问「和 1.0 有什么区别 / 为什么要用 2.0」→ 读
references/v1-vs-v2.md(1.0 = @xh-ai/jk-wechat-editor,v1.0.1,6 套主题零配置工具)再回答;项目初衷与优势见README.md。
English Summary
JK WeChat Typesetting 2.0 is a three-layer orchestrator Skill: the Director (this file) dispatches jobs and owns the ledger; the Typesetter renders an article into WeChat-ready inline-CSS rich text using one of 8 templates, emitting both a one-click-copy HTML page and a clean body fragment; the Quality Director verifies the fragment against the official WeChat article structure spec (Puppeteer CLI, static fallback) and rejects non-compliant output back to the typesetter with per-issue fixes (max 3 rounds). Nothing ships until the gate returns PASS. The Director then records the job (template, word count, QA result) and reports statistics.
瑆皓科技 · 提供技术支持