@topmindspace/topmind-writing-skills 0.8.27 → 0.8.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/README.en.md +3 -3
- package/README.md +3 -3
- package/package.json +1 -1
- package/topmind-briefs/CHANGELOG.md +5 -0
- package/topmind-briefs/README.en.md +1 -1
- package/topmind-briefs/README.md +1 -1
- package/topmind-briefs/SKILL.md +2 -2
- package/topmind-briefs/package.json +1 -1
- package/topmind-briefs/scripts/md2wechat.py +2 -1
- package/topmind-cover/README.en.md +1 -1
- package/topmind-cover/README.md +1 -1
- package/topmind-poster/README.en.md +1 -1
- package/topmind-poster/README.md +1 -1
- package/topmind-viral-posts/README.en.md +1 -1
- package/topmind-viral-posts/README.md +1 -1
- package/topmind-wechat-post/README.en.md +1 -1
- package/topmind-wechat-post/README.md +1 -1
- package/topmind-wechat-post/SKILL.md +4 -2
- package/topmind-wechat-post/package.json +1 -1
- package/topmind-wechat-post/scripts/lint-wechat.py +14 -1
- package/topmind-wechat-post/scripts/md2wechat.py +2 -1
- package/topmind-x-article/README.en.md +1 -1
- package/topmind-x-article/README.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
## [0.8.28] - 2026-10-11
|
|
2
|
+
|
|
3
|
+
> 根包 0.8.27 → **0.8.28**(patch);技能版本:topmind-wechat-post 0.3.3 → 0.3.4、topmind-briefs 0.2.10 → 0.2.11。
|
|
4
|
+
> 本次为本地既有修复的补发——该修复此前只存在于本地工作副本,远端 `main` 无对应提交。
|
|
5
|
+
|
|
6
|
+
> - 修 bug:`topmind-wechat-post/scripts/lint-wechat.py` 的**盘古之白误报**。检测侧直接对原文做 `PANGU_A/B.search()`,
|
|
7
|
+
> 而修复侧 `pangu_line()` 会先屏蔽行内代码 / 链接目标 / 裸 URL —— 两套规则不一致,导致图片链接目标里的中英混排片段
|
|
8
|
+
> 被算作缺空格,而 `--fix` 保护的正是这一段、根本不会改它,告警永远清不掉。新增 `pangu_scan()`,
|
|
9
|
+
> 让检测与修复共用同一套屏蔽规则
|
|
10
|
+
> - 修文案:`md2wechat.py` 的 `--author` 帮助文本仍写「留空写 {{作者名}} 占位」,
|
|
11
|
+
> 而函数自 2026-10-01 起已不再渲染自我介绍行,提示与实际行为对不上,改为「留空则不输出署名行」。
|
|
12
|
+
> 同步 `shared/` 与 `topmind-briefs/` 两份副本
|
|
13
|
+
> - 补文档:`topmind-wechat-post/SKILL.md` 的溯源审计段补**适用范围**——`audit-provenance.py` 按段落比对,
|
|
14
|
+
> 只在「源稿与派生稿同构」时有效;派生稿把表格改写成句子、数据清单改写成图时相似度会整体塌到阈值下,
|
|
15
|
+
> 此时改用**数字级回源核对**
|
|
16
|
+
> - 本地验证:`run_skill_gates.js check` / `audit` / `versions`、`check:shared`(37 份副本逐字节一致)、
|
|
17
|
+
> `check:evals`、`check:pack`(117 文件)、安装器守卫与 CLI 测试共 9 项全部 `exit 0`;
|
|
18
|
+
> `ci_skill_gates.sh` 全量门禁末行 `all skills green`;隐私扫描 144 文件 PASS。
|
|
19
|
+
> 图片链接目标不再误报「盘古之白」,真实缺空格(`这是API接口`)仍正常报出
|
|
20
|
+
|
|
1
21
|
## [0.8.27] - 2026-10-10
|
|
2
22
|
|
|
3
23
|
> 根包 0.8.26 → **0.8.27**(patch);技能版本:topmind-briefs 0.2.9 → 0.2.10、topmind-cover 0.4.3 → 0.4.4、
|
package/README.en.md
CHANGED
|
@@ -73,14 +73,14 @@ npx @topmindspace/topmind-writing-skills install topmind-poster
|
|
|
73
73
|
|
|
74
74
|
| Skill | Version | What it does |
|
|
75
75
|
|-------|---------|--------------|
|
|
76
|
-
| [`topmind-wechat-post`](./topmind-wechat-post/) | **0.3.
|
|
76
|
+
| [`topmind-wechat-post`](./topmind-wechat-post/) | **0.3.4** | WeChat article lifecycle: package, review, 3 quality gates, inline typography & publish checklist |
|
|
77
77
|
| [`topmind-x-article`](./topmind-x-article/) | **0.4.10** | X long-form one-click publish: Markdown → one-click-copy HTML (images/prompt copy, click-to-zoom images) / plain-text fallback + cover + checklist |
|
|
78
78
|
| [`topmind-cover`](./topmind-cover/) | **0.4.4** | Cover art for X / WeChat (X master 1500×600 / 5:2): striking, theme-focused; 22-style cover style library + 26 example images (incl. 3 alt samples) + 1 style overview |
|
|
79
|
-
| [`topmind-briefs`](./topmind-briefs/) | **0.2.
|
|
79
|
+
| [`topmind-briefs`](./topmind-briefs/) | **0.2.11** | Short-form briefs (WeChat + X): one topic, one chart; data rankings / paper one-liners / product alerts / mechanism explainers; one-click-copy HTML for both |
|
|
80
80
|
| [`topmind-viral-posts`](./topmind-viral-posts/) | **0.3.4** | X viral short posts: 14 template types (incl. trending-news type); prefer original images (official/third-party), generate only when none exists |
|
|
81
81
|
| [`topmind-poster`](./topmind-poster/) | **0.1.2** | HTML+CSS → high-res long image / poster / infographic PNG: headless Chrome 2× screenshot + auto-trim; "one image per section" batch workflow (generator + renderer) |
|
|
82
82
|
|
|
83
|
-
Installer [`@topmindspace/topmind-writing-skills`](https://www.npmjs.com/package/@topmindspace/topmind-writing-skills) is **0.8.
|
|
83
|
+
Installer [`@topmindspace/topmind-writing-skills`](https://www.npmjs.com/package/@topmindspace/topmind-writing-skills) is **0.8.28** (whole-repo same-tag releases).
|
|
84
84
|
|
|
85
85
|
> SKILL.md frontmatter uses only Agent Skills spec keys at the top level (`name` / `description` / `license` / `metadata`); version, `action_category`, `triggers` and other custom keys live under `metadata` as strings, so `skills-ref validate` passes. Shared scripts and `writing-principles.md` have a single source in `shared/`; skill folders keep byte-identical copies (CI checks with `node scripts/sync_shared.js --check`). The npm package ships only `overview.png` from the cover examples; the per-style samples and `references/cover-study/` images stay on GitHub / in the Release zip.
|
|
86
86
|
|
package/README.md
CHANGED
|
@@ -81,14 +81,14 @@ npx @topmindspace/topmind-writing-skills install topmind-poster
|
|
|
81
81
|
|
|
82
82
|
| 技能 | 版本 | 做什么 |
|
|
83
83
|
|------|------|--------|
|
|
84
|
-
| [`topmind-wechat-post`](./topmind-wechat-post/) | **0.3.
|
|
84
|
+
| [`topmind-wechat-post`](./topmind-wechat-post/) | **0.3.4** | 公众号文章全生命周期:交付包、审校改写、质量三关、微信内联排版与发布清单 |
|
|
85
85
|
| [`topmind-x-article`](./topmind-x-article/) | **0.4.10** | X 长文一键发布:Markdown 原稿 → 一键复制 HTML(含配图/提示词复制、图片点击放大)/ 纯文本兜底 + 封面图 + 发布清单 |
|
|
86
86
|
| [`topmind-cover`](./topmind-cover/) | **0.4.4** | 文章封面配图(X / 公众号共用,X 主尺寸 1500×600 / 5:2):震撼醒目主题突出;22 种封面风格库 + 26 张示例图(含 3 张 alt 样张) + 1 张风格总览图 |
|
|
87
|
-
| [`topmind-briefs`](./topmind-briefs/) | **0.2.
|
|
87
|
+
| [`topmind-briefs`](./topmind-briefs/) | **0.2.11** | 干货短文(公众号 + X 双平台):一件事讲透,数据榜单/论文解读/新品速递;双版一键复制 HTML |
|
|
88
88
|
| [`topmind-viral-posts`](./topmind-viral-posts/) | **0.3.4** | X 引流段子/爆款短篇:14 大类型模板(含热点资讯型);配图原图优先(官方/第三方),无原图才生图(清新优雅/MD3商务风) |
|
|
89
89
|
| [`topmind-poster`](./topmind-poster/) | **0.1.2** | HTML+CSS → 高清长图 / 海报 / 信息图 PNG:无头 Chrome 2× 截图 + 自动裁白;「一段一图」分段图批量出图(生成器 + 渲染器) |
|
|
90
90
|
|
|
91
|
-
安装器 [`@topmindspace/topmind-writing-skills`](https://www.npmjs.com/package/@topmindspace/topmind-writing-skills) 为 **0.8.
|
|
91
|
+
安装器 [`@topmindspace/topmind-writing-skills`](https://www.npmjs.com/package/@topmindspace/topmind-writing-skills) 为 **0.8.28**(整仓同 tag 发版)。
|
|
92
92
|
|
|
93
93
|
> SKILL.md frontmatter 顶层只用 Agent Skills 规范字段(`name` / `description` / `license` / `metadata`),版本、`action_category`、`triggers` 等自定义字段放在 `metadata` 下(字符串值),能通过官方校验器 `skills-ref validate`。
|
|
94
94
|
>
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@ One topic, one chart, then stop. Data-driven short posts: rankings, paper TL;DRs
|
|
|
6
6
|
product launches — one X post or short thread, ~300–800 Chinese characters on WeChat,
|
|
7
7
|
one-click-copy HTML for both.
|
|
8
8
|
|
|
9
|
-
- Version: **v0.2.
|
|
9
|
+
- Version: **v0.2.11** (ships with `@topmindspace/topmind-writing-skills@0.8.28`)
|
|
10
10
|
|
|
11
11
|
## Install
|
|
12
12
|
|
package/topmind-briefs/README.md
CHANGED
package/topmind-briefs/SKILL.md
CHANGED
|
@@ -3,12 +3,12 @@ name: topmind-briefs
|
|
|
3
3
|
description: "干货短文发布:公众号 + X 双平台,一件事讲透。X 一帖或短 thread,公众号约 300–800 字;1 张核心图(榜单/基准/截图/表格),不废话,只交付不代发。Use when 写短文、发快讯、数据榜单、论文一句话解读、新品速递、来篇短的、短平快、brief、快讯;信息密度型(数据、榜单、发布)走本技能。Do NOT use for X 长文(→ topmind-x-article)、公众号长文(→ topmind-wechat-post)、引流互动型短帖与段子(→ topmind-viral-posts)、把稿子发出去(→ topmind-x,须用户确认)。"
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
|
-
version: "0.2.
|
|
6
|
+
version: "0.2.11"
|
|
7
7
|
action_category: "write"
|
|
8
8
|
triggers: "写短文, 发快讯, 干货短文, 一句话解读, 数据榜单, 新品速递, brief, 快讯, 来篇短的, 短平快, 发个快讯"
|
|
9
9
|
author: "TopMindSpace"
|
|
10
10
|
homepage: "https://github.com/topmindspace/topmind-writing-skills#readme"
|
|
11
|
-
updated: "2026-10-
|
|
11
|
+
updated: "2026-10-11"
|
|
12
12
|
---
|
|
13
13
|
|
|
14
14
|
# topmind-briefs · 干货短文(公众号 + X)
|
|
@@ -1693,7 +1693,8 @@ def main():
|
|
|
1693
1693
|
help="不自动插入前言导读(默认 H2 >=4 个,或 H2 >=3 且正文 >=2000 中文字时插入)")
|
|
1694
1694
|
ap.add_argument("--signature", default="auto", choices=["auto", "on", "off"],
|
|
1695
1695
|
help="尾部签名区:auto=稿件末尾已有签名则不重复生成(默认)")
|
|
1696
|
-
ap.add_argument("--author", default="",
|
|
1696
|
+
ap.add_argument("--author", default="",
|
|
1697
|
+
help="签名区署名;留空则不输出署名行(不再写 {{作者名}} 占位)")
|
|
1697
1698
|
ap.add_argument("--author-bio", default="", help="签名区一句话简介")
|
|
1698
1699
|
args = ap.parse_args()
|
|
1699
1700
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
A reusable skill for generating cover art for X long-form posts and WeChat articles. Goal: **striking, eye-catching, theme-focused**.
|
|
6
6
|
|
|
7
|
-
- Version: **v0.4.4** (ships with `@topmindspace/topmind-writing-skills@0.8.
|
|
7
|
+
- Version: **v0.4.4** (ships with `@topmindspace/topmind-writing-skills@0.8.28`)
|
|
8
8
|
|
|
9
9
|
## Style gallery
|
|
10
10
|
|
package/topmind-cover/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Rankings, infographics, monthly-report long images, posters — plus the "one image per section" workflow for splitting a long article into N shareable images. Text is 100% controllable, diffable, and iterable.
|
|
6
6
|
|
|
7
|
-
- Version: **v0.1.2** (ships with `@topmindspace/topmind-writing-skills@0.8.
|
|
7
|
+
- Version: **v0.1.2** (ships with `@topmindspace/topmind-writing-skills@0.8.28`)
|
|
8
8
|
|
|
9
9
|
## Install
|
|
10
10
|
|
package/topmind-poster/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Short, real, hooked — read in 3 seconds, impossible not to like/comment/follow. Templates summarised from common high-engagement writing patterns in the Chinese X community (all examples are original, written for this skill), each post paired with 1 image.
|
|
6
6
|
|
|
7
|
-
- Version: **v0.3.4** (ships with `@topmindspace/topmind-writing-skills@0.8.
|
|
7
|
+
- Version: **v0.3.4** (ships with `@topmindspace/topmind-writing-skills@0.8.28`)
|
|
8
8
|
|
|
9
9
|
## Install
|
|
10
10
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Full lifecycle for WeChat articles: delivery package, review & rewrite, three quality gates, status sync, WeChat inline typography, and publish checklist.
|
|
6
6
|
|
|
7
|
-
- Version: **v0.3.
|
|
7
|
+
- Version: **v0.3.4** (ships with `@topmindspace/topmind-writing-skills@0.8.28`)
|
|
8
8
|
|
|
9
9
|
## Install
|
|
10
10
|
|
|
@@ -3,12 +3,12 @@ name: topmind-wechat-post
|
|
|
3
3
|
description: "管一篇公众号文章从选题/底稿到发布清单的完整生命周期:交付包搭建、审校改写、质量三关(事实/逻辑/去AI味,含改稿保真溯源审计)、状态同步、微信内联排版与发布清单。只出 HTML 与清单,不代发。Use when 写公众号文章、公众号排版、微信排版、公众号定稿、发公众号、公众号交付包、公众号发布清单、wechat、mp format。Do NOT use for 只改错别字、小红书/知乎、纯网页发布、通用长文润色(→ topmind-write)、X 长文(→ topmind-x-article)、封面(→ topmind-cover)。"
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
|
-
version: "0.3.
|
|
6
|
+
version: "0.3.4"
|
|
7
7
|
action_category: "write"
|
|
8
8
|
triggers: "公众号, 微信排版, 公众号排版, 公众号稿, 排版这篇文章, 定稿, 发公众号, 公众号交付, wechat, mp format, 写公众号文章, 公众号排版定稿, 公众号发布清单"
|
|
9
9
|
author: "TopMindSpace"
|
|
10
10
|
homepage: "https://github.com/topmindspace/topmind-writing-skills#readme"
|
|
11
|
-
updated: "2026-10-
|
|
11
|
+
updated: "2026-10-11"
|
|
12
12
|
---
|
|
13
13
|
|
|
14
14
|
# topmind-wechat-post · 公众号创作技能
|
|
@@ -146,6 +146,8 @@ python3 scripts/sync-status.py --set 定稿 <包> --apply
|
|
|
146
146
|
|
|
147
147
|
正向查「本稿有、源稿找不到」(扩写藏在这里),反向查「源稿有、本稿落下」。**退出码 1 不是失败,是「有待判定项」**:每一项要么归入已声明的修正/增补,要么就是不该有的改动;逐条在包内 README 声明后即收口。源稿里后加的块(勘误等)用 `--skip '^>\s*\[!'` 排除。细节见 `references/workflow.md`。
|
|
148
148
|
|
|
149
|
+
⚠️ **适用范围**:本脚本按**段落**比对,只在「源稿与派生稿同构」时有效(如 X 长文 → 公众号稿)。若派生稿把**表格改写成句子、数据清单改写成图**,相似度会整体塌到阈值下、失去判别力(实测一篇多源综述:正向 39/39 段全部判为待判定)。此时改用**数字级回源核对**——把正文每个承重数字逐个对回底本,再把结果写进包内 README 替代逐段判定。
|
|
150
|
+
|
|
149
151
|
### 关 2 · 逻辑
|
|
150
152
|
|
|
151
153
|
- 单边结论旁配反方证据
|
|
@@ -106,6 +106,19 @@ def pangu_line(line):
|
|
|
106
106
|
return line
|
|
107
107
|
|
|
108
108
|
|
|
109
|
+
def pangu_scan(line):
|
|
110
|
+
"""盘古之白检测:**必须先屏蔽与 pangu_line 相同的保护段**。
|
|
111
|
+
|
|
112
|
+
否则图片/链接目标里的中文会被误报:文件名出现 `Argon官方` 这类中英混排片段时,
|
|
113
|
+
会被当成缺空格命中 PANGU_B,而 --fix 保护的正是这一段、根本不会改它 ——
|
|
114
|
+
告警永远清不掉,用户会以为正文不合规。检测与修复必须用同一套屏蔽规则。
|
|
115
|
+
"""
|
|
116
|
+
masked = line
|
|
117
|
+
for pattern, _ in PROTECT:
|
|
118
|
+
masked = pattern.sub("\x00", masked)
|
|
119
|
+
return bool(PANGU_A.search(masked) or PANGU_B.search(masked))
|
|
120
|
+
|
|
121
|
+
|
|
109
122
|
def fix_cjk(path, dry_run=False):
|
|
110
123
|
with open(path, encoding="utf-8") as fh:
|
|
111
124
|
lines = fh.read().split("\n")
|
|
@@ -258,7 +271,7 @@ def lint(path, max_para, max_item, asset_root=None):
|
|
|
258
271
|
strong_chars += sum(len(re.findall(r"[*\u4e00-\u9fffA-Za-z0-9]", s))
|
|
259
272
|
for s in bold + marked)
|
|
260
273
|
|
|
261
|
-
if
|
|
274
|
+
if pangu_scan(stripped):
|
|
262
275
|
cjk_missing += 1
|
|
263
276
|
|
|
264
277
|
if not stripped:
|
|
@@ -1693,7 +1693,8 @@ def main():
|
|
|
1693
1693
|
help="不自动插入前言导读(默认 H2 >=4 个,或 H2 >=3 且正文 >=2000 中文字时插入)")
|
|
1694
1694
|
ap.add_argument("--signature", default="auto", choices=["auto", "on", "off"],
|
|
1695
1695
|
help="尾部签名区:auto=稿件末尾已有签名则不重复生成(默认)")
|
|
1696
|
-
ap.add_argument("--author", default="",
|
|
1696
|
+
ap.add_argument("--author", default="",
|
|
1697
|
+
help="签名区署名;留空则不输出署名行(不再写 {{作者名}} 占位)")
|
|
1697
1698
|
ap.add_argument("--author-bio", default="", help="签名区一句话简介")
|
|
1698
1699
|
args = ap.parse_args()
|
|
1699
1700
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Turn a Markdown draft into a "copy → paste → publish" X long-form (Article) package.
|
|
6
6
|
|
|
7
|
-
- Version: **v0.4.10** (ships with `@topmindspace/topmind-writing-skills@0.8.
|
|
7
|
+
- Version: **v0.4.10** (ships with `@topmindspace/topmind-writing-skills@0.8.28`)
|
|
8
8
|
|
|
9
9
|
## Install
|
|
10
10
|
|