@topmindspace/topmind-writing-skills 0.8.31 → 0.8.32

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.
Files changed (58) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.en.md +34 -11
  3. package/README.md +35 -12
  4. package/package.json +4 -1
  5. package/topmind-briefs/CHANGELOG.md +11 -0
  6. package/topmind-briefs/README.en.md +14 -14
  7. package/topmind-briefs/README.md +16 -11
  8. package/topmind-briefs/SKILL.md +90 -84
  9. package/topmind-briefs/package.json +2 -2
  10. package/topmind-briefs/references/emoji-system.md +104 -0
  11. package/topmind-briefs/references/platform-specs.md +7 -6
  12. package/topmind-briefs/references/x-post-format.md +19 -8
  13. package/topmind-briefs/scripts/format_text.py +149 -0
  14. package/topmind-briefs/scripts/lint_x_post.py +1 -1
  15. package/topmind-cover/README.en.md +1 -1
  16. package/topmind-cover/README.md +1 -1
  17. package/topmind-cover/SKILL.md +4 -4
  18. package/topmind-cover/package.json +1 -1
  19. package/topmind-format/README.en.md +35 -0
  20. package/topmind-format/README.md +40 -0
  21. package/topmind-format/SKILL.md +92 -0
  22. package/topmind-format/package.json +13 -0
  23. package/topmind-format/references/emoji-system.md +104 -0
  24. package/topmind-format/references/x-post-format.md +142 -0
  25. package/topmind-format/scripts/audit_css.py +39 -0
  26. package/topmind-format/scripts/audit_docs.py +80 -0
  27. package/topmind-format/scripts/audit_skill.py +76 -0
  28. package/topmind-format/scripts/audit_styles.py +54 -0
  29. package/topmind-format/scripts/format_text.py +149 -0
  30. package/topmind-format/scripts/lint_x_post.py +291 -0
  31. package/topmind-format/scripts/negative_tests.py +139 -0
  32. package/topmind-format/scripts/package_skill.py +196 -0
  33. package/topmind-poster/README.en.md +1 -1
  34. package/topmind-poster/README.md +1 -1
  35. package/topmind-poster/SKILL.md +3 -3
  36. package/topmind-poster/package.json +1 -1
  37. package/topmind-viral-posts/README.en.md +7 -3
  38. package/topmind-viral-posts/README.md +12 -4
  39. package/topmind-viral-posts/SKILL.md +39 -15
  40. package/topmind-viral-posts/package.json +2 -2
  41. package/topmind-viral-posts/references/emoji-system.md +104 -0
  42. package/topmind-viral-posts/references/patterns.md +131 -2
  43. package/topmind-viral-posts/references/tags-and-topics.md +5 -1
  44. package/topmind-viral-posts/references/x-post-format.md +19 -8
  45. package/topmind-viral-posts/scripts/format_text.py +149 -0
  46. package/topmind-viral-posts/scripts/lint_x_post.py +1 -1
  47. package/topmind-wechat-post/README.en.md +1 -1
  48. package/topmind-wechat-post/README.md +1 -1
  49. package/topmind-wechat-post/SKILL.md +2 -2
  50. package/topmind-wechat-post/package.json +1 -1
  51. package/topmind-wechat-post/references/x-post-format.md +19 -8
  52. package/topmind-wechat-post/scripts/lint_x_post.py +1 -1
  53. package/topmind-x-article/README.en.md +1 -1
  54. package/topmind-x-article/README.md +1 -1
  55. package/topmind-x-article/SKILL.md +2 -2
  56. package/topmind-x-article/package.json +1 -1
  57. package/topmind-x-article/references/x-post-format.md +19 -8
  58. package/topmind-x-article/scripts/lint_x_post.py +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ ## [0.8.32] - 2026-10-14
2
+
3
+ > 根包 0.8.31 → **0.8.32**(patch);新增技能 **topmind-format 0.1.0**;技能版本:topmind-briefs 0.2.14 → 0.2.15、topmind-viral-posts 0.3.6 → 0.3.7、
4
+ > topmind-cover 0.4.7 → 0.4.8、topmind-x-article 0.4.12 → 0.4.13、topmind-wechat-post 0.3.6 → 0.3.7、topmind-poster 0.1.4 → 0.1.5(后四者为路由 / 共享文件同步)。
5
+
6
+ ### 新增
7
+
8
+ - **topmind-format · X 纯文本格式化**:用户贴现成文字,「转段子」→ 每句一行、行与行之间空一行;「格式化成短文」→ 合理分段、Markdown 列表改 emoji、标题 emoji 对应关键词、首尾人设点缀。只动排版不改字;新增共享脚本 `format_text.py`(`--mode duanzi|short`、`--split`、`--title-emoji`、`--open`、`--close`),输出前做原文保真校验(去空白 / 列表符号 / emoji 后逐字比对),改动文字即报错。带 README 中英文、负向测试与 6 条路由评测用例,自动进入 npm `files` 与 Release 打包。
9
+ - **TopMind emoji 体系**:新增共享 `references/emoji-system.md`(分发到 briefs、viral-posts、format)——人设点缀(主角 🐔 🐱,配角 🐰 🐶 🦊 与 🌱 🌿 🍀 🌸 🌼)0–2 个只放首尾、严肃内容不放;标题 emoji 0–1 个、按 14 类关键词对照表取,对不上就不放;列表符号一帖一套;点缀类合计 ≤3。
10
+
11
+ ### 变更
12
+
13
+ - **topmind-briefs**:短文不是长文,默认不出 HTML——X 版是一段纯文本,公众号版是 Markdown;HTML 脚本只在用户明确要求时使用。新增「尊重原始信息」铁律与交付格式,交付时写明信息来源、发布时间、来源链接与图片来源。
14
+ - **配图口径统一**:原图优先;没有原图时封面可选(不再默认配封面)。`x-post-format.md`、briefs、viral-posts、cover 的「X 短文封面」场景说明同步。
15
+ - **topmind-viral-posts**:类型从 14 扩到 18(新增冷知识揭秘、差额冲刺、反差对照、自问自答),新增「段子体排版」(一句一行、行间空行)与「组合玩法(钩子 × 主体 × 收尾)」两节、8 种常用组合;示例按用户提供的两条参考帖改写(未复制第三方截图与账号信息);表情规则接入 emoji 体系。
16
+
17
+ ### 优化
18
+
19
+ - 路由与分流:briefs、viral-posts、x-article、wechat-post、poster 的 Do NOT 点名 topmind-format;根 README 中英文新增「怎么选、怎么组合」表(briefs→format、viral→format、briefs+cover、x-article vs briefs 等)。
20
+ - `lint_x_post.py` 的表情识别补上 🆕 等 U+1F100–1F2FF 区段。
21
+ - `evals/evals.json` 增至 59 条(覆盖 7 个技能);README、`docs/PUBLISHING.md` 版本号与能力描述同步。
22
+
1
23
  ## [0.8.31] - 2026-10-14
2
24
 
3
25
  > 根包 0.8.30 → **0.8.31**(patch);技能版本:topmind-briefs 0.2.13 → 0.2.14、topmind-viral-posts 0.3.5 → 0.3.6、topmind-cover 0.4.6 → 0.4.7、
package/README.en.md CHANGED
@@ -35,7 +35,7 @@ npx @topmindspace/topmind-writing-skills install topmind-x-article
35
35
 
36
36
  ### topmind-briefs · Short-form briefs
37
37
 
38
- Short-form briefs for WeChat + X: one topic, one chart (data rankings / paper explainers / product alerts / mechanism explainers). One X post or short thread, WeChat ~300–800 Chinese characters, 1 key visual. The X version uses emoji bullets and suggests 0–2 hashtags; the WeChat version keeps Markdown lists. One-click-copy HTML for both, draft only — never auto-post.
38
+ Short-form briefs for WeChat + X: one topic, one chart (data rankings / paper explainers / product alerts / mechanism explainers). A brief is not long-form: **no HTML by default**. The X version is one copy-ready plain-text block (paragraphing, restrained emoji, source links, 0–2 hashtags); the WeChat version is ~300–800 Chinese characters of Markdown. Original facts, images and quotes first; cover optional. Every delivery lists source, publish time and link. Draft only — never auto-post.
39
39
 
40
40
  ```bash
41
41
  npx @topmindspace/topmind-writing-skills install topmind-briefs
@@ -43,12 +43,22 @@ npx @topmindspace/topmind-writing-skills install topmind-briefs
43
43
 
44
44
  ### topmind-viral-posts · X viral short posts
45
45
 
46
- 14 post types summarised from common high-engagement writing patterns in the Chinese X community (all examples are original): short lines, conversational tone, an engagement hook, **one image per post** (portraits / pets / landscapes / fantasy / slogan graphics via `topmind-cover`). Every post carries **1–3 hashtags plus classification tags** (type / purpose / platform / tone). X drafts never use Markdown lists; bullets are emoji.
46
+ 18 post types plus hook × body × closer combinations, summarised from common high-engagement writing patterns in the Chinese X community (all examples are original): **duanzi layout** (one sentence per line, a blank line between lines), conversational tone, an engagement hook; original images first, optional generated image via `topmind-cover`. Every post carries **1–3 hashtags plus classification tags** (type / purpose / platform / tone). X drafts never use Markdown lists; bullets are emoji.
47
47
 
48
48
  ```bash
49
49
  npx @topmindspace/topmind-writing-skills install topmind-viral-posts
50
50
  ```
51
51
 
52
+ ### topmind-format · X plain-text formatter (new)
53
+
54
+ Paste existing text: **to duanzi** → one sentence per line with blank lines between; **to short post** → paragraphing, emoji bullets, a keyword-matched title emoji and the chicken/cat/plant persona motif (🐔 🐱 🌱 🌸) at the start or end. Layout only — words never change; `format_text.py` enforces fidelity.
55
+
56
+ ```bash
57
+ npx @topmindspace/topmind-writing-skills install topmind-format
58
+ ```
59
+
60
+ > **TopMind emoji system** (`emoji-system.md`, shared by briefs / viral-posts / format): 0–2 persona motifs at start/end only; 0–1 title emoji that must match the keyword; one bullet set per post; ≤3 decorative emoji in total.
61
+
52
62
  ### topmind-cover · Cover art generation
53
63
 
54
64
  Shared cover art for X long-form and WeChat: striking, eye-catching, theme-focused. **Pick a style → check the example → compose the prompt from the recipe**, then one-click crop to both platform sizes with `crop-cover.py` (X 1500×600, WeChat 900×383). 22-style index and recipes: [`references/cover-styles.md`](./topmind-cover/references/cover-styles.md).
@@ -81,14 +91,26 @@ npx @topmindspace/topmind-writing-skills install topmind-poster
81
91
 
82
92
  | Skill | Version | What it does |
83
93
  |-------|---------|--------------|
84
- | [`topmind-wechat-post`](./topmind-wechat-post/) | **0.3.6** | WeChat article lifecycle: package, review, 3 quality gates, inline typography & publish checklist |
85
- | [`topmind-x-article`](./topmind-x-article/) | **0.4.12** | X long-form one-click publish: Markdown → one-click-copy HTML (images/prompt copy, click-to-zoom images) / plain-text fallback + cover + checklist |
86
- | [`topmind-cover`](./topmind-cover/) | **0.4.7** | Cover art for X / WeChat (X master 1500×600 / 5:2): striking, theme-focused; 22-style cover style library + 16:9 X short-post cover scene + 12 title treatments + 55 example images (22 styles × 2 sizes + 11 variant samples) + 1 style overview |
87
- | [`topmind-briefs`](./topmind-briefs/) | **0.2.14** | Short-form briefs (WeChat + X): one topic, one chart; data rankings / paper explainers / product alerts / mechanism explainers; plain-text X version with emoji bullets, source links, a default 16:9 cover and hashtag suggestions; one-click-copy HTML for both |
88
- | [`topmind-viral-posts`](./topmind-viral-posts/) | **0.3.6** | X viral short posts: 14 template types (incl. trending-news type), hashtags + classification tags, plain-text emoji-bullet lists, source links for factual posts; every post gets an image by default — original images first, otherwise a 16:9 cover via topmind-cover |
89
- | [`topmind-poster`](./topmind-poster/) | **0.1.4** | HTML+CSS → high-res long image / poster / infographic PNG: headless Chrome 2× screenshot + auto-trim; "one image per section" batch workflow (generator + renderer) |
90
-
91
- Installer [`@topmindspace/topmind-writing-skills`](https://www.npmjs.com/package/@topmindspace/topmind-writing-skills) is **0.8.31** (whole-repo same-tag releases).
94
+ | [`topmind-wechat-post`](./topmind-wechat-post/) | **0.3.7** | WeChat article lifecycle: package, review, 3 quality gates, inline typography & publish checklist |
95
+ | [`topmind-x-article`](./topmind-x-article/) | **0.4.13** | X long-form one-click publish: Markdown → one-click-copy HTML (images/prompt copy, click-to-zoom images) / plain-text fallback + cover + checklist |
96
+ | [`topmind-cover`](./topmind-cover/) | **0.4.8** | Cover art for X / WeChat (X master 1500×600 / 5:2): striking, theme-focused; 22-style cover style library + 16:9 X short-post cover scene + 12 title treatments + 55 example images (22 styles × 2 sizes + 11 variant samples) + 1 style overview |
97
+ | [`topmind-briefs`](./topmind-briefs/) | **0.2.15** | Short-form briefs (WeChat + X): one topic, one chart; data rankings / paper explainers / product alerts / mechanism explainers; one plain-text X block (no HTML by default) with emoji bullets, source links and hashtag suggestions; original images first, cover optional; delivery lists source / publish time / link |
98
+ | [`topmind-viral-posts`](./topmind-viral-posts/) | **0.3.7** | X viral short posts: 18 template types + combinations, duanzi layout (blank line between lines), hashtags + classification tags, source links for factual posts; original images first, optional 16:9 image via topmind-cover |
99
+ | [`topmind-format`](./topmind-format/) | **0.1.0** | X plain-text formatter: to duanzi (blank lines) / to short post (paragraphing + emoji system); layout only, words unchanged, with a fidelity check |
100
+ | [`topmind-poster`](./topmind-poster/) | **0.1.5** | HTML+CSS → high-res long image / poster / infographic PNG: headless Chrome 2× screenshot + auto-trim; "one image per section" batch workflow (generator + renderer) |
101
+
102
+ Installer [`@topmindspace/topmind-writing-skills`](https://www.npmjs.com/package/@topmindspace/topmind-writing-skills) is **0.8.32** (whole-repo same-tag releases).
103
+
104
+ ### Which skill, and how they combine
105
+
106
+ | Task | Skill | Typical combination |
107
+ |---|---|---|
108
+ | A data-driven brief (numbers, rankings, launches) | `topmind-briefs` | → `topmind-format` for layout; no original image → `topmind-cover` 16:9 |
109
+ | Engagement jokes, follower posts | `topmind-viral-posts` | → `topmind-format` to re-lay duanzi; pair with a briefs version for the same event |
110
+ | Existing text, layout only | `topmind-format` | words unchanged; rewriting → briefs / viral-posts |
111
+ | Thousands-of-words X article | `topmind-x-article` | + `topmind-cover` (5:2); shorter than a post → briefs |
112
+ | WeChat long-form & layout | `topmind-wechat-post` | + `topmind-cover`; 300–800-char briefs → briefs |
113
+ | Long images, posters, infographics | `topmind-poster` | copy written first by briefs / wechat-post |
92
114
 
93
115
  > 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 stay on GitHub / in the Release zip.
94
116
 
@@ -118,7 +140,8 @@ Default probe order: `./.agents` → `./.claude` → `./.cursor` → `./.codex`
118
140
  ```
119
141
  topmind-writing-skills/
120
142
  ├─ topmind-briefs/ # skill (SKILL.md + assets + references + scripts)
121
- ├─ topmind-viral-posts/ # skill (X viral short posts, one image each)
143
+ ├─ topmind-viral-posts/ # skill (X viral short posts, duanzi layout)
144
+ ├─ topmind-format/ # skill (X plain-text formatter: duanzi / short post)
122
145
  ├─ topmind-poster/ # skill (HTML → high-res long image / section images)
123
146
  ├─ topmind-cover/ # skill
124
147
  ├─ topmind-wechat-post/ # skill
package/README.md CHANGED
@@ -33,7 +33,7 @@ npx @topmindspace/topmind-writing-skills install topmind-x-article
33
33
 
34
34
  ### topmind-briefs · 干货短文
35
35
 
36
- 公众号 + X 双平台干货短文:一件事讲透(数据榜单 / 论文解读 / 新品速递 / 机制讲解),X 一帖或短 thread、公众号约 300–800 字,1 张核心图。X 版用 emoji 项目符号分点、附 0–2 个话题标签建议;公众号版保留 Markdown 列表。双版一键复制 HTML,只起草不代发。
36
+ 公众号 + X 双平台干货短文:一件事讲透(数据榜单 / 论文解读 / 新品速递 / 机制讲解)。短文不是长文,**默认不出 HTML**:X 版是一段可直接复制的纯文本(分段换行、克制的 emoji、来源链接、0–2 个话题标签),公众号版约 300–800 字 Markdown。尊重原始信息、原图、原文,配图原图优先、封面可选;交付时写明信息来源、发布时间与来源链接。只起草不代发。
37
37
 
38
38
  ```bash
39
39
  npx @topmindspace/topmind-writing-skills install topmind-briefs
@@ -41,13 +41,23 @@ npx @topmindspace/topmind-writing-skills install topmind-briefs
41
41
 
42
42
  ### topmind-viral-posts · X 引流段子/爆款短篇
43
43
 
44
- 基于对 X 中文区常见高互动写法的归纳,提供 14 类型模板(示例均为自编),短句分行、口语化、带互动钩子,**每帖配 1 张图**(美女/宠物/风景/奇幻/标语,走 topmind-cover 出图),并附**话题标签(1–3 个 hashtag)与内部分类标签**;X 稿不用 Markdown 列表,分点用 emoji 项目符号。
44
+ 基于对 X 中文区常见高互动写法的归纳,提供 18 类型模板 + 钩子×主体×收尾组合玩法(示例均为自编),默认**段子体**(一句一行、行与行之间空一行)、口语化、带互动钩子,配图原图优先(官方 / 第三方 / 自己的后台截图),没有原图时可选走 topmind-cover 出图,并附**话题标签(1–3 个 hashtag)与内部分类标签**;X 稿不用 Markdown 列表,分点用 emoji 项目符号。
45
45
 
46
46
  ```bash
47
47
  npx @topmindspace/topmind-writing-skills install topmind-viral-posts
48
48
  ```
49
49
 
50
- > 14 类型:干货忠告 / 互关求粉 / 自嘲幽默 / 互动提问 / 打卡日常 / 新人报到 / **热点资讯**(基于真实检索,配官方原图可多图)/ 暴论 / 数据晒单 / 真诚交友 / 吐槽共鸣 / 干货技巧 / 经验忠告 / 执行清单。
50
+ > 18 类型:干货忠告 / 互关求粉 / 自嘲幽默 / 互动提问 / 打卡日常 / 新人报到 / **热点资讯**(基于真实检索,配官方原图可多图)/ 暴论 / 数据晒单 / 真诚交友 / 吐槽共鸣 / 干货技巧 / 经验忠告 / 执行清单 / **冷知识揭秘** / **差额冲刺** / **反差对照** / **自问自答**。
51
+
52
+ ### topmind-format · X 纯文本格式化(新)
53
+
54
+ 用户贴一段现成文字:**转段子** → 每句一行、行间空一行;**格式化成短文** → 合理分段换行、列表改 emoji、标题 emoji 对应关键词、开头结尾加鸡/猫/植物人设点缀(🐔 🐱 🌱 🌸)。只动排版不改字,`format_text.py` 自带原文保真校验。
55
+
56
+ ```bash
57
+ npx @topmindspace/topmind-writing-skills install topmind-format
58
+ ```
59
+
60
+ > **TopMind emoji 体系**(`emoji-system.md`,briefs / viral-posts / format 共用):人设点缀 0–2 个只放首尾;标题 emoji 0–1 个、必须对上关键词;列表符号一帖一套;点缀类合计 ≤3。
51
61
 
52
62
  ### topmind-cover · 封面配图生成
53
63
 
@@ -81,14 +91,26 @@ npx @topmindspace/topmind-writing-skills install topmind-poster
81
91
 
82
92
  | 技能 | 版本 | 做什么 |
83
93
  |------|------|--------|
84
- | [`topmind-wechat-post`](./topmind-wechat-post/) | **0.3.6** | 公众号文章全生命周期:交付包、审校改写、质量三关、微信内联排版与发布清单 |
85
- | [`topmind-x-article`](./topmind-x-article/) | **0.4.12** | X 长文一键发布:Markdown 原稿 → 一键复制 HTML(含配图/提示词复制、图片点击放大)/ 纯文本兜底 + 封面图 + 发布清单 |
86
- | [`topmind-cover`](./topmind-cover/) | **0.4.7** | 文章封面配图(X / 公众号共用,X 主尺寸 1500×600 / 5:2):震撼醒目主题突出;22 种封面风格库 + X 短文 16:9 封面场景 + 12 种标题花式 + 55 张示例图(22 种风格 × 2 尺寸 + 11 张变体样张) + 1 张风格总览图 |
87
- | [`topmind-briefs`](./topmind-briefs/) | **0.2.14** | 干货短文(公众号 + X 双平台):一件事讲透,数据榜单/论文解读/新品速递;X 版纯文本 + emoji 列表 + 来源链接 + 默认 16:9 封面 + 话题标签建议;双版一键复制 HTML |
88
- | [`topmind-viral-posts`](./topmind-viral-posts/) | **0.3.6** | X 引流段子/爆款短篇:14 大类型模板(含热点资讯型),纯文本 emoji 列表、事实类带来源链接、带话题标签与分类标签;每条默认配图,原图优先(官方/第三方),无原图走 topmind-cover 出 16:9 封面(清新优雅/MD3商务风) |
89
- | [`topmind-poster`](./topmind-poster/) | **0.1.4** | HTML+CSS → 高清长图 / 海报 / 信息图 PNG:无头 Chrome 2× 截图 + 自动裁白;「一段一图」分段图批量出图(生成器 + 渲染器) |
90
-
91
- 安装器 [`@topmindspace/topmind-writing-skills`](https://www.npmjs.com/package/@topmindspace/topmind-writing-skills) 为 **0.8.31**(整仓同 tag 发版)。
94
+ | [`topmind-wechat-post`](./topmind-wechat-post/) | **0.3.7** | 公众号文章全生命周期:交付包、审校改写、质量三关、微信内联排版与发布清单 |
95
+ | [`topmind-x-article`](./topmind-x-article/) | **0.4.13** | X 长文一键发布:Markdown 原稿 → 一键复制 HTML(含配图/提示词复制、图片点击放大)/ 纯文本兜底 + 封面图 + 发布清单 |
96
+ | [`topmind-cover`](./topmind-cover/) | **0.4.8** | 文章封面配图(X / 公众号共用,X 主尺寸 1500×600 / 5:2):震撼醒目主题突出;22 种封面风格库 + X 短文 16:9 封面场景 + 12 种标题花式 + 55 张示例图(22 种风格 × 2 尺寸 + 11 张变体样张) + 1 张风格总览图 |
97
+ | [`topmind-briefs`](./topmind-briefs/) | **0.2.15** | 干货短文(公众号 + X 双平台):一件事讲透,数据榜单/论文解读/新品速递;X 版一段纯文本(默认不出 HTML)+ emoji 列表 + 来源链接 + 话题标签建议;原图优先、封面可选;交付附信息来源 / 发布时间 / 链接 |
98
+ | [`topmind-viral-posts`](./topmind-viral-posts/) | **0.3.7** | X 引流段子/爆款短篇:18 大类型模板 + 组合玩法,段子体(行间空行)、事实类带来源链接、带话题标签与分类标签;配图原图优先,无原图可选走 topmind-cover 出 16:9 图 |
99
+ | [`topmind-format`](./topmind-format/) | **0.1.0** | X 纯文本格式化:转段子(行间空行)/ 格式化成短文(分段 + emoji 体系),只动排版不改字,带原文保真校验 |
100
+ | [`topmind-poster`](./topmind-poster/) | **0.1.5** | HTML+CSS → 高清长图 / 海报 / 信息图 PNG:无头 Chrome 2× 截图 + 自动裁白;「一段一图」分段图批量出图(生成器 + 渲染器) |
101
+
102
+ 安装器 [`@topmindspace/topmind-writing-skills`](https://www.npmjs.com/package/@topmindspace/topmind-writing-skills) 为 **0.8.32**(整仓同 tag 发版)。
103
+
104
+ ### 怎么选、怎么组合
105
+
106
+ | 你要做的事 | 用哪个 | 常见组合 |
107
+ |---|---|---|
108
+ | 一件事的干货短文(数据、榜单、发布) | `topmind-briefs` | → `topmind-format` 统一排版;没有原图 → `topmind-cover` 出 16:9 首图 |
109
+ | 引流段子、涨粉帖、互关帖 | `topmind-viral-posts` | → `topmind-format` 重排段子体;同一事件可配一条 briefs 干货版 |
110
+ | 现成文字只要排版(转段子 / 格式化) | `topmind-format` | 只动排版不改字;要改写内容再转 briefs / viral-posts |
111
+ | 数千字 X 长文 | `topmind-x-article` | + `topmind-cover`(5:2 封面);短于一帖的内容走 briefs |
112
+ | 公众号长文与排版 | `topmind-wechat-post` | + `topmind-cover`;300–800 字短文走 briefs |
113
+ | 长图、海报、信息图 PNG | `topmind-poster` | 文案先由 briefs / wechat-post 写好 |
92
114
 
93
115
  > SKILL.md frontmatter 顶层只用 Agent Skills 规范字段(`name` / `description` / `license` / `metadata`),版本、`action_category`、`triggers` 等自定义字段放在 `metadata` 下(字符串值),能通过官方校验器 `skills-ref validate`。
94
116
  >
@@ -122,7 +144,8 @@ npx github:topmindspace/topmind-writing-skills install topmind-briefs
122
144
  ```
123
145
  topmind-writing-skills/
124
146
  ├─ topmind-briefs/ # 技能(SKILL.md + assets + references + scripts)
125
- ├─ topmind-viral-posts/ # 技能(X 引流段子/爆款短篇,每帖配图)
147
+ ├─ topmind-viral-posts/ # 技能(X 引流段子/爆款短篇,段子体)
148
+ ├─ topmind-format/ # 技能(X 纯文本格式化:转段子 / 格式化成短文)
126
149
  ├─ topmind-poster/ # 技能(HTML → 高清长图 / 分段图)
127
150
  ├─ topmind-cover/ # 技能
128
151
  ├─ topmind-wechat-post/ # 技能
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topmindspace/topmind-writing-skills",
3
- "version": "0.8.31",
3
+ "version": "0.8.32",
4
4
  "description": "TopMindSpace 写作技能合集 — 通过 npm / npx 安装技能(公众号长文、X 长文、干货短文、X 引流短帖、封面图、长图海报)。只出稿与发布包,不代发。",
5
5
  "license": "MIT",
6
6
  "author": "TopMindspace",
@@ -35,6 +35,7 @@
35
35
  "CHANGELOG.md",
36
36
  "topmind-briefs",
37
37
  "topmind-cover",
38
+ "topmind-format",
38
39
  "topmind-poster",
39
40
  "topmind-viral-posts",
40
41
  "topmind-wechat-post",
@@ -43,12 +44,14 @@
43
44
  "topmind-cover/assets/examples/overview.png",
44
45
  "!topmind-briefs/dist/",
45
46
  "!topmind-cover/dist/",
47
+ "!topmind-format/dist/",
46
48
  "!topmind-poster/dist/",
47
49
  "!topmind-viral-posts/dist/",
48
50
  "!topmind-wechat-post/dist/",
49
51
  "!topmind-x-article/dist/",
50
52
  "!topmind-briefs/package-lock.json",
51
53
  "!topmind-cover/package-lock.json",
54
+ "!topmind-format/package-lock.json",
52
55
  "!topmind-poster/package-lock.json",
53
56
  "!topmind-viral-posts/package-lock.json",
54
57
  "!topmind-wechat-post/package-lock.json",
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.15 (2026-10-14)
4
+
5
+ - 变更:短文默认不出 HTML——X 版交付一段可直接复制的纯文本,公众号版交付 Markdown;`md2x-html.py` / `md2wechat.py` 仍随包自带,仅在用户明确要求时使用
6
+ - 特性支持:新增「尊重原始信息」铁律(原始信息 / 原文 / 原图 / 口径标注 / 不洗稿)与交付格式(X 版、公众号版、配图、信息来源:来源名称|发布时间|链接)
7
+ - 变更:配图原图优先,没有原图时封面可选(不再默认配封面);接入共享 `emoji-system.md` 与 `format_text.py`
8
+ - 优化:新增「和其他技能怎么配合」表;description 的 Do NOT 增加格式化 / 转段子 → topmind-format
9
+
10
+ ## 0.2.14 (2026-10-14)
11
+
12
+ - X 版来源行规范、默认 16:9 封面、lint W8/W9/W10 警告处理(见根 CHANGELOG 0.8.31)
13
+
3
14
  ## 0.2.13 (2026-10-11)
4
15
 
5
16
  - 特性支持:X 版纯文本排版——不用 Markdown 列表、标题和加粗,分点改用 emoji 项目符号;新增共享规则文档 `references/x-post-format.md` 与检查脚本 `scripts/lint_x_post.py`
@@ -2,11 +2,13 @@
2
2
 
3
3
  **[中文](./README.md)** | English
4
4
 
5
- One topic, one chart, then stop. Data-driven short posts: rankings, paper explainers,
6
- product launches — one X post or short thread, ~300–800 Chinese characters on WeChat,
7
- one-click-copy HTML for both.
5
+ One topic, then stop. Data-driven short posts: rankings, paper explainers, product launches.
6
+ A brief is not a long-form article — **no HTML by default**: the X version is one copy-ready plain-text block
7
+ (sensible paragraphing, restrained emoji, source links); the WeChat version is ~300–800 Chinese characters of Markdown.
8
+ Original facts, images and quotes come first; a cover is optional when no original image exists. Every delivery lists
9
+ each source's name, publish time and link.
8
10
 
9
- - Version: **v0.2.14** (ships with `@topmindspace/topmind-writing-skills@0.8.31`)
11
+ - Version: **v0.2.15** (ships with `@topmindspace/topmind-writing-skills@0.8.32`)
10
12
 
11
13
  ## Install
12
14
 
@@ -16,21 +18,19 @@ npx @topmindspace/topmind-writing-skills install topmind-briefs
16
18
 
17
19
  ## Usage
18
20
 
19
- Run from this skill's directory:
21
+ ```bash
22
+ python3 scripts/lint_x_post.py brief-x.txt # check the X version
23
+ python3 scripts/format_text.py brief-x.txt --mode short --title-emoji 📊 # layout only, words unchanged
24
+ ```
25
+
26
+ HTML only on explicit request (scripts ship with the skill; single source of truth is `shared/scripts/` in the repo):
20
27
 
21
28
  ```bash
22
- # X version (image order derived from the WeChat draft; never hand-order --images)
23
29
  python3 scripts/md2x-html.py brief-x.md --out brief-x.html --images-from brief-wechat.md
24
-
25
- # WeChat version (images inlined as base64; writes <slug>-公众号版.html + 图片上传清单.md)
26
30
  python3 scripts/md2wechat.py --input brief-wechat.md --out-dir out --slug brief --embed-images --no-toc
27
31
  ```
28
32
 
29
- Both scripts ship with this skill (Python standard library only), so a standalone
30
- install of briefs can render HTML. They are byte-identical copies of the same-named
31
- scripts in `topmind-x-article` / `topmind-wechat-post`; inside the repo,
32
- `scripts/negative_tests.py` checks they stay in sync. See [SKILL.md](./SKILL.md)
33
- for the full workflow.
33
+ See [SKILL.md](./SKILL.md) for the workflow and [references/emoji-system.md](./references/emoji-system.md) for the emoji system.
34
34
 
35
35
  ## X formatting and hashtags
36
36
 
@@ -54,6 +54,6 @@ python3 scripts/lint_x_post.py brief-x.md
54
54
 
55
55
  ## When NOT to use
56
56
 
57
- X long-form → `topmind-x-article`; WeChat long-form → `topmind-wechat-post`;
57
+ Formatting existing text / converting to duanzi → `topmind-format`; X long-form → `topmind-x-article`; WeChat long-form → `topmind-wechat-post`;
58
58
  engagement-style short posts and jokes → `topmind-viral-posts`; standalone long images/posters → `topmind-poster`;
59
59
  covers and header images → `topmind-cover`; posting → `topmind-x` (only after the user confirms).
@@ -2,10 +2,11 @@
2
2
 
3
3
  [English](./README.en.md) | 中文
4
4
 
5
- 一件事,一张图,讲完就停。干货向短文:数据榜单、论文解读、新品速递——
6
- X 一帖或短 thread,公众号约 300–800 字,双版一键复制 HTML。
5
+ 一件事,讲完就停。干货向短文:数据榜单、论文解读、新品速递。短文不是长文——**默认不出 HTML**:
6
+ X 版是一段可直接复制的纯文本(分段换行 + 克制的 emoji + 来源链接),公众号版约 300–800 字 Markdown。
7
+ 尊重原始信息、原图、原文;配图原图优先,没有原图时封面可选(`topmind-cover`);交付时写明信息来源、发布时间与来源链接。
7
8
 
8
- - 版本:**v0.2.14**(随 `@topmindspace/topmind-writing-skills@0.8.31` 发布)
9
+ - 版本:**v0.2.15**(随 `@topmindspace/topmind-writing-skills@0.8.32` 发布)
9
10
 
10
11
  ## 安装
11
12
 
@@ -15,19 +16,23 @@ npx @topmindspace/topmind-writing-skills install topmind-briefs
15
16
 
16
17
  ## 用法
17
18
 
18
- 在本技能目录下运行:
19
+ ```bash
20
+ # 检查 X 版:无 Markdown 残留、符号一致、表情不过量、有来源
21
+ python3 scripts/lint_x_post.py X短文.txt
22
+ # 只动排版不改字:统一分段、列表改 emoji、加标题 emoji 与人设点缀
23
+ python3 scripts/format_text.py X短文.txt --mode short --title-emoji 📊 --out X短文.txt
24
+ ```
25
+
26
+ 交付格式:`【X 版】`纯文本 +(可选)`【公众号版】`Markdown + `【配图】`原图与来源 + `【信息来源】`来源名称 / 发布时间 / 链接。
27
+
28
+ 用户明确要 HTML 时才用(脚本随包自带,唯一真源在仓库 `shared/scripts/`):
19
29
 
20
30
  ```bash
21
- # X 版(图片顺序从公众号稿派生,禁止手工拼 --images)
22
31
  python3 scripts/md2x-html.py X短文.md --out X短文.html --images-from 公众号短文.md
23
-
24
- # 公众号版(图片 base64 内嵌,输出 <短名>-公众号版.html + 图片上传清单.md)
25
32
  python3 scripts/md2wechat.py --input 公众号短文.md --out-dir 交付 --slug 短名 --embed-images --no-toc
26
33
  ```
27
34
 
28
- 两个脚本随本技能自带(纯 Python 标准库),单独安装 briefs 即可出 HTML。
29
- 唯一真源在仓库 `shared/scripts/`,与 `topmind-x-article` / `topmind-wechat-post` 是同一份逐字节副本,
30
- 仓库 CI 用 `node scripts/sync_shared.js --check` 校验一致。工作流细节见 [SKILL.md](./SKILL.md)。
35
+ 工作流细节见 [SKILL.md](./SKILL.md);emoji 体系见 [references/emoji-system.md](./references/emoji-system.md)。
31
36
 
32
37
  ## X 版格式与话题标签
33
38
 
@@ -48,6 +53,6 @@ python3 scripts/lint_x_post.py X短文.md
48
53
 
49
54
  ## 何时不用
50
55
 
51
- X 长文 → `topmind-x-article`;公众号长文 → `topmind-wechat-post`;
56
+ 现成文字格式化 / 转段子 → `topmind-format`;X 长文 → `topmind-x-article`;公众号长文 → `topmind-wechat-post`;
52
57
  引流互动型短帖与段子 → `topmind-viral-posts`;单独出长图/海报 → `topmind-poster`;
53
58
  封面/头图 → `topmind-cover`;发帖 → `topmind-x`(须用户确认)。
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: topmind-briefs
3
- description: "干货短文发布:公众号 + X 双平台,一件事讲透。X 一帖或短 thread(纯文本,列表用 emoji 项目符号,带来源链接,默认配 16:9 封面,附 0–2 个话题标签建议),公众号约 300–800 字;1 张核心图(榜单/基准/截图/表格),不废话,只交付不代发。Use when 写短文、公众号短文、X 短文、发快讯、简讯、速报、数据榜单、榜单速报、论文解读、新品速递、来篇短的、短平快、brief;信息密度型(数据、榜单、发布)走本技能。Do NOT use for X 长文与发 X 文章(→ topmind-x-article)、公众号长文(→ topmind-wechat-post)、引流互动型短帖、段子、涨粉帖、互关帖、爆款短篇(→ topmind-viral-posts)、单独出长图/海报/信息图 PNG(→ topmind-poster)、封面与头图(→ topmind-cover)、把稿子发出去(→ topmind-x,须用户确认)。"
3
+ description: "干货短文:一件事讲透,X + 公众号双平台。短文不是长文——默认不出 HTML:X 版是一段可直接复制的纯文本(合理分段换行,标题与列表用克制的 emoji,带来源链接,0–2 个话题标签),公众号版是 300–800 字 Markdown;尊重原始信息、原图、原文,配图原图优先(官方截图/基准图/榜单实拍),没有原图时封面可选;交付时写明信息来源、发布时间与来源链接。只交付不代发。Use when 写短文、公众号短文、X 短文、发快讯、简讯、速报、数据榜单、榜单速报、论文解读、新品速递、来篇短的、短平快、brief;信息密度型(数据、榜单、发布)走本技能。Do NOT use for 把现成文字格式化、转段子、排版(→ topmind-format)、X 长文与发 X 文章(→ topmind-x-article)、公众号长文与公众号排版 HTML(→ topmind-wechat-post)、引流互动型短帖、段子、涨粉帖、互关帖、爆款短篇(→ topmind-viral-posts)、单独出长图/海报/信息图 PNG(→ topmind-poster)、封面与头图(→ topmind-cover)、把稿子发出去(→ topmind-x,须用户确认)。"
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.14"
6
+ version: "0.2.15"
7
7
  action_category: "write"
8
8
  triggers: "写短文, 公众号短文, X 短文, 发快讯, 快讯, 简讯, 速报, 干货短文, 论文解读, 数据榜单, 榜单速报, 新品速递, brief, 来篇短的, 短平快, 发个快讯"
9
9
  author: "TopMindSpace"
@@ -11,131 +11,137 @@ metadata:
11
11
  updated: "2026-10-14"
12
12
  ---
13
13
 
14
- # topmind-briefs · 干货短文(公众号 + X)
14
+ # topmind-briefs · 干货短文(X + 公众号)
15
15
 
16
- 一件事,一张图,讲完就停。跟 `topmind-viral-posts` 的区别:
17
- 那是引流互动型短帖(段子、钩子、涨粉);这是**信息密度型干货短文**(数据、榜单、
18
- 论文、新品,第三方客观口吻)。公众号文章如果是长文(深度稿、多图多节),走 `topmind-wechat-post`;
19
- 本技能的公众号版只有 300–800 字。
16
+ 一件事,一段话,讲完就停。短文不是长文:**默认不出 HTML、不做排版包**,交付的是可以直接复制粘贴的文字。
17
+
18
+ - 跟 `topmind-viral-posts` 的区别:那是引流互动型段子(第一人称、钩子、涨粉);这是**信息密度型干货短文**(数据、榜单、论文、新品,第三方客观口吻)。
19
+ - 跟 `topmind-x-article` / `topmind-wechat-post` 的区别:那两个是长文(数千字、多节多图、HTML 发布包);本技能 X 版一帖或 ≤3 条 thread,公众号版 300–800 字。
20
+ - 现成文字只要排版 → `topmind-format`。
20
21
 
21
22
  ## 何时不用
22
23
 
24
+ - 把现成文字格式化、转段子、加空行和 emoji → `topmind-format`
23
25
  - X 长文(数千字深度稿)、发 X 文章 → `topmind-x-article`
24
- - 公众号长文 → `topmind-wechat-post`
26
+ - 公众号长文、公众号排版 HTML → `topmind-wechat-post`
25
27
  - 引流互动型短帖(第一人称、段子、钩子、涨粉、互关)→ `topmind-viral-posts`
26
28
  - 单独出长图、海报、信息图 PNG → `topmind-poster`;只要封面、头图 → `topmind-cover`
27
29
  - 把稿子发到 X → `topmind-x`(发帖连接器,须用户确认后才发)
28
- - 需要多张配图、复杂排版的稿件(本技能只配 1 张核心图)
29
30
 
30
31
  ## 语言铁律
31
32
 
32
- - **默认中文**:标题、正文、配图文案一律用中文写作,这是默认行为,不需要用户每次声明。
33
- - **英文是例外**:只有用户**明确说**"写英文文章/帖子"时才用英文。用户消息里夹杂英文词、
34
- 给英文参考素材、引用英文原文,都不算"要求写英文"。
35
- - 引用英文一手素材(论文标题、官方公告、图表原文)时保留英文原文,正文主体仍是中文,
36
- 必要时在旁给中文翻译。
33
+ - **默认中文**:标题、正文、配图说明一律用中文,不需要用户每次声明。
34
+ - **英文是例外**:只有用户**明确说**「写英文」时才用英文。消息里夹英文词、给英文素材、引用英文原文,都不算要求写英文。
35
+ - 引用英文一手素材(论文标题、官方公告、图表原文)时保留原文,必要时在旁给中文翻译。
36
+
37
+ ## 尊重原始信息(铁律)
38
+
39
+ 1. **原始信息**:事实、数字、时间以一手来源为准(官方公告、更新日志、论文、原帖、财报);二手报道至少找 2 个独立来源交叉确认,无法核实的承重事实删掉。
40
+ 2. **原文**:引用原话时逐字照录并加「」,写明出处;不把转述写成引语,不改原文数字的单位和口径。
41
+ 3. **原图**:配图用官方截图 > 官方基准图 > 第三方榜单实拍 > 论文原图,保留原图不裁掉关键信息,不用 AI 图冒充原图。
42
+ 4. **口径标注**:厂商数字标「(厂商口径)」,未证实消息标「(传言)」,自己的判断标「(推测)」或写成「现在看起来…」,与事实分开写。
43
+ 5. **不洗稿**:观点可以撞,表达必须原创;不照搬聚合站或别人帖子的行文。
37
44
 
38
45
  ## 工作流
39
46
 
40
- 1. **定主题**:用户给方向,或从热点里挑。一篇只讲一件事——
41
- 一个数据、一个榜单变化、一篇论文的核心结论、一个新品的关键参数。
42
- 定不下来就问:这篇让读者记住哪一个数字/结论?
43
- 2. **找素材**:事实先核实(一手来源)。图优先找现成的:
44
- 官方截图 > 官方基准图 > 第三方榜单实拍 > 论文原图。
45
- 没有现成图才自制(只做对比表、趋势图这种信息图,不做装饰图)。
46
- 3. **写**:按 `references/style-guide.md` 写。X 版和公众号版各写一版,
47
- 内容一致,篇幅按平台调整(见 `references/platform-specs.md`)。
48
- **X 版是纯文本**:不用 Markdown 列表、标题和加粗(X 不渲染),分点用 emoji 项目符号,
49
- 正文后单独一行写来源(直接贴 URL),并给出 0–2 个话题标签建议(见下节「X 版格式与话题标签」)。
50
- **X 版默认配封面**:调用 `topmind-cover` 的「X 短文封面」场景出 1 张 16:9 封面(1200×675),作为第 1 张图;
51
- 核心证据图(榜单、基准、截图)排在封面之后,总数不超过 4 张。用户说不要封面时跳过。
52
- 4. **自检**:过一遍禁止清单;确认每个数字都有来源;确认图和文字说的是同一件事;
53
- 推测/判断必须显式标注"(推测)",与事实段落切割,不混写;按 `references/writing-principles.md`「去 AI 味清单」过一遍;
54
- X 版跑 `python3 scripts/lint_x_post.py X短文.md`,错误清零,W8(表情过多)/ W9(AI 套话)/ W10(缺来源)警告逐条处理。
55
- 5. **交付**:双版 HTML,一键复制,外加 X 版纯文本稿 `X短文.txt`、X 封面 `00-封面-X短文.png` 与话题标签建议(只交付,不发布)。两个脚本随本技能自带
56
- (`scripts/` 下,纯 Python 标准库),单独安装本技能即可运行,不依赖其它技能目录——
57
- - X 版:`python3 scripts/md2x-html.py X短文.md --out X短文.html --images-from 公众号短文.md`
58
- (HTML 里不嵌封面,封面单独交付、发帖时作为第 1 张图上传;1–4 张正文图按 [图N] 顺序嵌入;thread 超长时拆条)。
59
- **禁止手工拼 `--images`**:文件名排序 ≠ 文档顺序,手工传参曾导致整段配图错位;
60
- 脚本内置 `[图N]` 连续性 + 数量校验,不通过直接报错。
61
- 公众号稿里必须有对应的本地图片 `![图注](图片路径)`,只写链接或占位文字时数量校验会报错。
62
- - 公众号版:`python3 scripts/md2wechat.py --input 公众号短文.md --out-dir <交付目录> --slug <短名> --embed-images --no-toc`
63
- (输出 `<短名>-公众号版.html` + `图片上传清单.md`;图片 base64 内嵌,图注写在图下方;
64
- `--no-toc` 对应「短文不写前言导读」)。
65
- - 两个脚本的唯一真源在仓库 `shared/scripts/`,本目录是逐字节副本(与 x-article、wechat-post
66
- 同一份);只改真源再跑 `npm run sync:shared`,CI 用 `sync_shared.js --check` 校验一致。
67
- - 构建后必跑校验:嵌入图数量 = 文档图数量;嵌入图顺序 = 文档出现顺序
68
- (逐张解码与源文件比对);[图N] 编号连续;
69
- X 版内嵌图序列(无封面)与公众号版逐字节一致。
70
-
71
- ## X 版格式与话题标签
72
-
73
- **列表**:X 不渲染 Markdown,X 版里没有 `- ` / `1.` 列表、`#` 标题、`**加粗**`。分点用 emoji 项目符号,
74
- 同一帖内风格一致,每条一行,二级条目缩进两格,最多两层:
75
-
76
- | 用途 | 符号 |
77
- |---|---|
78
- | 并列要点 | 🔹(二级 ▫️) |
79
- | 步骤 | 1️⃣ 2️⃣ 3️⃣ |
80
- | 结论 / 对比 | ✅ / ❌ |
81
- | 重点数据 | 📌 📊 |
82
- | 严肃资讯 | • ▪ |
47
+ 1. **定主题**:一篇只讲一件事——一个数据、一个榜单变化、一篇论文的核心结论、一个新品的关键参数。定不下来就问:这篇让读者记住哪一个数字或结论?
48
+ 2. **找素材**:先核实,再找图。记下每条信息的**来源名称、链接、发布时间**(交付时要报给用户)。
49
+ 3. **写 X 版**:一段纯文本,按 [references/platform-specs.md](references/platform-specs.md) 和 [references/style-guide.md](references/style-guide.md):
50
+ - 标题一行,行首可放 1 个与关键词对应的 emoji(发布 🆕、数据 📊、论文 📄 …);
51
+ - 正文一段 1–3 行,段与段空一行;并列信息用 emoji 列表(默认 🔹,步骤 1️⃣,对比 ✅/❌),一帖一套;
52
+ - 正文后单独一行 `来源:名称 URL`,最后一行 0–2 个话题标签;
53
+ - emoji 配额按 [references/emoji-system.md](references/emoji-system.md):人设点缀(🐔 🐱 🌱)最多 2 个、只放首尾,严肃资讯不放;
54
+ - 不用 Markdown(X 不渲染),规则见 [references/x-post-format.md](references/x-post-format.md)。
55
+ 4. **写公众号版**(用户要双平台时):300–800 字 Markdown,内容与 X 版一致,只允许排版差异;不写前言导读。
56
+ 5. **配图**:原图优先,1 张核心图,最多 4 张,每张写一句图注说明它证明什么。**没有可用原图时**,封面可选:问用户或直接调用 `topmind-cover` 的「X 短文封面」(16:9,1200×675)。有原图时不另配封面,除非用户要。
57
+ 6. **自检**:
58
+ - 每个数字都有来源;图和文字说的是同一件事;推测已标注;
59
+ - 按 [references/writing-principles.md](references/writing-principles.md)「去 AI 味清单」过一遍;
60
+ - `python3 scripts/lint_x_post.py X短文.txt`:错误清零,W8(表情过多)/ W9(AI 套话)/ W10(缺来源)逐条处理;
61
+ - 需要统一排版时可跑 `python3 scripts/format_text.py X短文.txt --mode short --out X短文.txt`(只动排版不改字)。
62
+ 7. **交付**(只交付,不发布):见下节「交付格式」。
63
+
64
+ ## 交付格式
65
+
66
+ 默认交付纯文本,不生成 HTML:
67
+
68
+ ```text
69
+ 【X 版】(可直接复制)
70
+ <一段纯文本>
71
+
72
+ 【公众号版】(用户要时)
73
+ <Markdown 正文>
83
74
 
84
- 完整规则(符号集、缩进、数量、语气适配、版式骨架)见 [references/x-post-format.md](references/x-post-format.md)。
75
+ 【配图】
76
+ [图1] <文件名或原图链接> — <图注>;来源:<名称>
85
77
 
86
- **来源**:每个数字都要能追到出处。正文之后单独一行 `来源:<名称> <URL>`,最多 3 条;厂商数字标「(厂商口径)」,
87
- 未证实消息标「(传言)」。X 版示例:
78
+ 【信息来源】
79
+ - <来源名称>|发布时间:<YYYY-MM-DD HH:MM,注明时区>|<URL>
80
+ - <来源名称>|发布时间:…|<URL>
81
+ ```
82
+
83
+ 给用户的说明里必须写明:**信息来源、发布时间、来源链接**(每条承重事实一条),以及图片来源(原图出处或「生图」)。
84
+ 发布时间取原文页面上的时间;页面没有时间时写「未标注」,不猜。
85
+
86
+ **HTML 只在用户明确要求时出**(例如「出个一键复制 HTML」「公众号要排版好的版本」):
87
+ `python3 scripts/md2x-html.py X短文.md --out X短文.html --images-from 公众号短文.md`、
88
+ `python3 scripts/md2wechat.py --input 公众号短文.md --out-dir <交付目录> --slug <短名> --embed-images --no-toc`。
89
+ 两个脚本的唯一真源在仓库 `shared/scripts/`,本目录是逐字节副本;`[图N]` 顺序由脚本校验,禁止手工拼 `--images`。
90
+ 需要完整公众号排版包时转 `topmind-wechat-post`。
91
+
92
+ ## X 版示例
88
93
 
89
94
  ```text
90
- SWE-bench Verified 榜单 10 月 13 日更新,第一名换人了。
95
+ 📊 SWE-bench Verified 榜单 10 月 13 日更新,第一名换人了
91
96
 
92
- 📊 前三名
93
97
  🔹 模型 A:78.2%
94
98
  🔹 模型 B:76.9%
95
99
  🔹 模型 C:74.5%
96
100
 
97
- 分数为榜单官方口径,成本差距见图 2。
101
+ 前三名差距不到 4 个百分点,成本差距见图 1。
98
102
 
99
103
  来源:SWE-bench 官方榜单 https://www.swebench.com
100
104
 
101
105
  #SWEbench #AI编程
102
106
  ```
103
107
 
104
- (示例中的模型名与分数为虚构演示。)
108
+ (示例中的模型名与分数为虚构演示。更多示例见 [references/examples.md](references/examples.md)。)
105
109
 
106
- **公众号稿 → X 稿**:公众号稿用 Markdown 列表,X 稿由它派生,列表改成 emoji 项目符号,只允许排版差异,
107
- 数字、结论、条数和顺序保持一致。公众号稿不受影响,继续用 Markdown 列表。
110
+ ## 话题标签
108
111
 
109
- **话题标签**:X 版末尾给 0–2 个话题标签建议(另给 1 个备选),单独成行放在最后:
110
- 榜单、发布类取榜单名或产品通用名,再加 1 个领域词;不堆砌,不蹭无关热点,不用诱导互动或敏感标签;
111
- 中文帖用中文话题,英文帖用英文驼峰。公众号稿不加话题标签。细则见 `references/platform-specs.md`。
112
+ X 版末尾给 0–2 个话题标签建议(另给 1 个备选),单独成行放在最后:榜单、发布类取榜单名或产品通用名,再加 1 个领域词;
113
+ 不堆砌,不蹭无关热点,不用诱导互动或敏感标签;中文帖用中文话题,英文帖用英文驼峰。公众号稿不加话题标签。细则见 `references/platform-specs.md`。
112
114
 
113
115
  ## 内容类型(四种)
114
116
 
115
117
  | 类型 | 适用 | 结构 |
116
118
  |------|------|------|
117
- | 数据榜单型 | 基准评测、成本对比 | 判断句开头 → 基准一句 → 最扎眼数字 → 双图(解决率+成本) |
118
- | 榜单速报型 | 排行榜更新、排名变动 | "Just in:"+排名+分数 → 性价比 → 细分展开 → 纵向对比 → 榜单实拍 |
119
- | 论文解读型 | 新论文、新方法 | 判断句开头 → "New idea: X"+3 条 emoji 要点 → 论文原图 |
120
- | 机制讲解型 | 技术原理、流程拆解 | 痛点一句 → 序号分步(1️⃣2️⃣3️⃣)→ "In short:"三行 → 流程图/视频 |
119
+ | 数据榜单型 | 基准评测、成本对比 | 判断句开头 → 基准一句 → 最扎眼数字 → 核心图(解决率 / 成本) |
120
+ | 榜单速报型 | 排行榜更新、排名变动 | 排名 + 分数 → 性价比 → 细分展开 → 纵向对比 → 榜单实拍 |
121
+ | 论文解读型 | 新论文、新方法 | 判断句开头 → 核心方法一句 + 3 条 emoji 要点 → 论文原图 |
122
+ | 机制讲解型 | 技术原理、流程拆解 | 痛点一句 → 1️⃣2️⃣3️⃣ 分步 → 「简单来说」一句 → 流程图 |
121
123
 
122
124
  ## 配图铁律
123
125
 
124
- - 一篇配 1 张核心图,最多 4 张。每张图必须承载信息,装饰图一律不要。
125
- - 图注写一句,说明这张图在证明什么。
126
- - **位置**:图片必须紧跟它证明的那段文字之后(最多隔一段);章节题图放在节首。
127
- 禁止"图堆在节末"、"图与文字错位到下一节"。
128
- - X:图片按顺序编号,文字里用 [图1] 标注对应关系。
129
- - 公众号:图片内嵌,图注写在图下方。
130
- - 校验脚本思路:对每张图,取其前后各 6 行文本,检查是否出现该图主题关键词
131
- (如 Grok 图邻近必须有"Grok");不通过则人工核对。
126
+ - 一篇配 1 张核心图,最多 4 张。每张图必须承载信息,装饰图不要。
127
+ - 图注写一句,说明这张图在证明什么;X 版文字里用 [图1] 标注对应关系。
128
+ - 图紧跟它证明的那段文字(公众号版);图与文字不错位。
129
+ - 封面不是必需品:有原图就用原图当首图;没有原图才考虑 `topmind-cover`。
130
+
131
+ ## 和其他技能怎么配合
132
+
133
+ | 场景 | 组合 |
134
+ |---|---|
135
+ | 写完再统一排版 | 本技能 → `topmind-format` 短文体(只排版不改字) |
136
+ | 没有原图、要一张首图 | 本技能 → `topmind-cover`「X 短文封面」 |
137
+ | 内容太多、写成长文 | 转 `topmind-x-article`(X 长文)或 `topmind-wechat-post`(公众号长文) |
138
+ | 要一张数据长图 | 本技能出文案 → `topmind-poster` 出图 |
139
+ | 同一事件出段子 | 本技能出干货版,`topmind-viral-posts` 出引流版,事实与来源保持一致 |
132
140
 
133
141
  ## 运营铁律
134
142
 
135
143
  - 只起草,不代发。发布前用户确认。
136
- - **交付铁律**:发布/分享时直接用交付的 HTML 原文件原样呈现,不临时重新生成版本。
137
- - 数字必须有来源;厂商数字标"厂商口径"。
138
- - 不洗稿:观点可以撞,表达必须原创。
144
+ - 数字必须有来源;厂商数字标「厂商口径」。
139
145
  - 不碰医疗建议、投资建议、政治站队。
140
146
 
141
147
  ## 发文铁律
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "author": "TopMindSpace",
3
- "description": "干货短文发布:公众号 + X 双平台,一件事讲透。X 一帖或短 thread,公众号约 300–800 字,1 张核心图,不废话。",
3
+ "description": "干货短文发布:公众号 + X 双平台,一件事讲透。X 纯文本一帖或短 thread(默认不出 HTML),公众号约 300–800 字 Markdown,原图优先,附信息来源与发布时间。",
4
4
  "license": "MIT",
5
5
  "name": "topmind-briefs",
6
6
  "private": true,
@@ -9,5 +9,5 @@
9
9
  "type": "git",
10
10
  "url": "git+https://github.com/topmindspace/topmind-writing-skills.git"
11
11
  },
12
- "version": "0.2.14"
12
+ "version": "0.2.15"
13
13
  }