@topmindspace/topmind-writing-skills 0.8.32 → 0.8.33
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 +22 -0
- package/README.en.md +6 -6
- package/README.md +8 -8
- package/package.json +1 -1
- package/topmind-briefs/CHANGELOG.md +6 -0
- package/topmind-briefs/README.en.md +1 -1
- package/topmind-briefs/README.md +1 -1
- package/topmind-briefs/SKILL.md +44 -24
- package/topmind-briefs/package.json +1 -1
- package/topmind-briefs/references/emoji-system.md +15 -3
- package/topmind-briefs/references/x-layout-patterns.md +78 -0
- package/topmind-briefs/references/x-post-format.md +35 -4
- package/topmind-briefs/scripts/lint_x_post.py +20 -1
- package/topmind-cover/README.en.md +1 -1
- package/topmind-cover/README.md +1 -1
- package/topmind-format/README.en.md +1 -1
- package/topmind-format/README.md +1 -1
- package/topmind-format/SKILL.md +12 -8
- package/topmind-format/package.json +1 -1
- package/topmind-format/references/emoji-system.md +15 -3
- package/topmind-format/references/x-layout-patterns.md +78 -0
- package/topmind-format/references/x-post-format.md +35 -4
- package/topmind-format/scripts/lint_x_post.py +20 -1
- package/topmind-format/scripts/negative_tests.py +12 -0
- 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-viral-posts/SKILL.md +13 -9
- package/topmind-viral-posts/package.json +1 -1
- package/topmind-viral-posts/references/emoji-system.md +15 -3
- package/topmind-viral-posts/references/x-layout-patterns.md +78 -0
- package/topmind-viral-posts/references/x-post-format.md +35 -4
- package/topmind-viral-posts/scripts/lint_x_post.py +20 -1
- package/topmind-wechat-post/README.en.md +1 -1
- package/topmind-wechat-post/README.md +1 -1
- package/topmind-wechat-post/SKILL.md +1 -1
- package/topmind-wechat-post/package.json +1 -1
- package/topmind-wechat-post/references/x-post-format.md +35 -4
- package/topmind-wechat-post/scripts/lint_x_post.py +20 -1
- package/topmind-x-article/README.en.md +1 -1
- package/topmind-x-article/README.md +1 -1
- package/topmind-x-article/SKILL.md +1 -1
- package/topmind-x-article/package.json +1 -1
- package/topmind-x-article/references/x-post-format.md +35 -4
- package/topmind-x-article/scripts/lint_x_post.py +20 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
## [0.8.33] - 2026-10-14
|
|
2
|
+
|
|
3
|
+
> 根包 0.8.32 → **0.8.33**(patch);技能版本:topmind-briefs 0.2.15 → 0.2.16、topmind-format 0.1.0 → 0.1.1、topmind-viral-posts 0.3.7 → 0.3.8、
|
|
4
|
+
> topmind-wechat-post 0.3.7 → 0.3.8、topmind-x-article 0.4.13 → 0.4.14(后两者只同步共享文件 `x-post-format.md` / `lint_x_post.py`);topmind-cover、topmind-poster 不变。
|
|
5
|
+
|
|
6
|
+
### 新增
|
|
7
|
+
|
|
8
|
+
- **X 短文版式规律**:新增共享文档 `references/x-layout-patterns.md`(分发到 briefs、format、viral-posts),拆解 6 条 X 参考帖的开头钩子、分段长度、空行节奏、列表写法、emoji 用法、中英混排、链接与话题标签位置、结尾,只记规律、不收录原文,逐条注明原帖链接;末尾附一页速查。
|
|
9
|
+
- **交付三块**:X 短文 / 短帖 / 格式化统一交付 ① 可直接复制的纯文本正文(text 代码块,块内无 Markdown)② 原帖 / 信源地址(含发布时间)③ 1–2 张原图(图片地址或交付目录文件)。规则写入 `x-post-format.md`,briefs 附正例模板。
|
|
10
|
+
- **`lint_x_post.py`**:新增 E8(普通帖里残留代码围栏 ```)、E9(删除线 ~~)、W11(连续多个空行);`--fix` 自动去掉围栏与删除线。format 负向测试补对应用例与共享文档存在性检查。
|
|
11
|
+
|
|
12
|
+
### 变更
|
|
13
|
+
|
|
14
|
+
- **没有原图先询问**:briefs、format、viral-posts 与 `x-post-format.md` 统一为「没有原图时主动问用户是否配图(可选 topmind-cover),不擅自生图」;viral-posts 输出模板新增「信源」行,示例同步。
|
|
15
|
+
- **emoji 体系唯一真源**:`emoji-system.md` 声明为 TopMind emoji 体系唯一出处,各技能只引用不另写;新增「只用 TopMind 的,不跟风」一节(不用 🔥 😍 凑标题、不堆话题标签、长帖可零 emoji 靠【小标题】分层),列表前「xx:」引导语,长帖资讯配额。
|
|
16
|
+
- **`x-post-format.md`**:新增「版式节奏」7 条(首行给结论、列表引导语、长条目间空行、【小标题】分节、中英混排、链接单独一行、一句收尾)与第四种骨架「分节长帖」。
|
|
17
|
+
- **topmind-briefs**:X 版写作步骤接入版式规律;配图改为交付 1–2 张原图;交付格式改为固定三块并附正例模板。
|
|
18
|
+
|
|
19
|
+
### 文档
|
|
20
|
+
|
|
21
|
+
- README 中英文、`docs/PUBLISHING.md`、各技能 README 版本号与能力描述同步。
|
|
22
|
+
|
|
1
23
|
## [0.8.32] - 2026-10-14
|
|
2
24
|
|
|
3
25
|
> 根包 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、
|
package/README.en.md
CHANGED
|
@@ -91,15 +91,15 @@ npx @topmindspace/topmind-writing-skills install topmind-poster
|
|
|
91
91
|
|
|
92
92
|
| Skill | Version | What it does |
|
|
93
93
|
|-------|---------|--------------|
|
|
94
|
-
| [`topmind-wechat-post`](./topmind-wechat-post/) | **0.3.
|
|
95
|
-
| [`topmind-x-article`](./topmind-x-article/) | **0.4.
|
|
94
|
+
| [`topmind-wechat-post`](./topmind-wechat-post/) | **0.3.8** | WeChat article lifecycle: package, review, 3 quality gates, inline typography & publish checklist |
|
|
95
|
+
| [`topmind-x-article`](./topmind-x-article/) | **0.4.14** | X long-form one-click publish: Markdown → one-click-copy HTML (images/prompt copy, click-to-zoom images) / plain-text fallback + cover + checklist |
|
|
96
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.
|
|
98
|
-
| [`topmind-viral-posts`](./topmind-viral-posts/) | **0.3.
|
|
99
|
-
| [`topmind-format`](./topmind-format/) | **0.1.
|
|
97
|
+
| [`topmind-briefs`](./topmind-briefs/) | **0.2.16** | 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; fixed 3-part delivery (copyable plain text / source links / 1–2 original images); asks before generating any image when no original exists |
|
|
98
|
+
| [`topmind-viral-posts`](./topmind-viral-posts/) | **0.3.8** | 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; asks before generating a 16:9 image via topmind-cover |
|
|
99
|
+
| [`topmind-format`](./topmind-format/) | **0.1.1** | X plain-text formatter: to duanzi (blank lines) / to short post (paragraphing + emoji system); layout only, words unchanged, with a fidelity check; 3-part delivery |
|
|
100
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
101
|
|
|
102
|
-
Installer [`@topmindspace/topmind-writing-skills`](https://www.npmjs.com/package/@topmindspace/topmind-writing-skills) is **0.8.
|
|
102
|
+
Installer [`@topmindspace/topmind-writing-skills`](https://www.npmjs.com/package/@topmindspace/topmind-writing-skills) is **0.8.33** (whole-repo same-tag releases).
|
|
103
103
|
|
|
104
104
|
### Which skill, and how they combine
|
|
105
105
|
|
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 双平台干货短文:一件事讲透(数据榜单 / 论文解读 / 新品速递 / 机制讲解)。短文不是长文,**默认不出 HTML**:X 版是一段可直接复制的纯文本(分段换行、克制的 emoji、来源链接、0–2 个话题标签),公众号版约 300–800 字 Markdown
|
|
36
|
+
公众号 + X 双平台干货短文:一件事讲透(数据榜单 / 论文解读 / 新品速递 / 机制讲解)。短文不是长文,**默认不出 HTML**:X 版是一段可直接复制的纯文本(分段换行、克制的 emoji、来源链接、0–2 个话题标签),公众号版约 300–800 字 Markdown。尊重原始信息、原图、原文;交付固定三块:可复制纯文本正文、原帖 / 信源地址(含发布时间)、1–2 张原图,没有原图时主动询问是否配图(可选 topmind-cover),不擅自生图。只起草不代发。
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
39
|
npx @topmindspace/topmind-writing-skills install topmind-briefs
|
|
@@ -41,7 +41,7 @@ npx @topmindspace/topmind-writing-skills install topmind-briefs
|
|
|
41
41
|
|
|
42
42
|
### topmind-viral-posts · X 引流段子/爆款短篇
|
|
43
43
|
|
|
44
|
-
基于对 X 中文区常见高互动写法的归纳,提供 18 类型模板 + 钩子×主体×收尾组合玩法(示例均为自编),默认**段子体**(一句一行、行与行之间空一行)、口语化、带互动钩子,配图原图优先(官方 / 第三方 /
|
|
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
|
|
@@ -91,15 +91,15 @@ npx @topmindspace/topmind-writing-skills install topmind-poster
|
|
|
91
91
|
|
|
92
92
|
| 技能 | 版本 | 做什么 |
|
|
93
93
|
|------|------|--------|
|
|
94
|
-
| [`topmind-wechat-post`](./topmind-wechat-post/) | **0.3.
|
|
95
|
-
| [`topmind-x-article`](./topmind-x-article/) | **0.4.
|
|
94
|
+
| [`topmind-wechat-post`](./topmind-wechat-post/) | **0.3.8** | 公众号文章全生命周期:交付包、审校改写、质量三关、微信内联排版与发布清单 |
|
|
95
|
+
| [`topmind-x-article`](./topmind-x-article/) | **0.4.14** | X 长文一键发布:Markdown 原稿 → 一键复制 HTML(含配图/提示词复制、图片点击放大)/ 纯文本兜底 + 封面图 + 发布清单 |
|
|
96
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.
|
|
98
|
-
| [`topmind-viral-posts`](./topmind-viral-posts/) | **0.3.
|
|
99
|
-
| [`topmind-format`](./topmind-format/) | **0.1.
|
|
97
|
+
| [`topmind-briefs`](./topmind-briefs/) | **0.2.16** | 干货短文(公众号 + X 双平台):一件事讲透,数据榜单/论文解读/新品速递;X 版一段纯文本(默认不出 HTML)+ emoji 列表 + 来源链接 + 话题标签建议;交付三块(纯文本 / 信源 / 1–2 张原图),无原图先询问配图 |
|
|
98
|
+
| [`topmind-viral-posts`](./topmind-viral-posts/) | **0.3.8** | X 引流段子/爆款短篇:18 大类型模板 + 组合玩法,段子体(行间空行)、事实类带来源链接、带话题标签与分类标签;配图原图优先,无原图先询问再走 topmind-cover 出 16:9 图 |
|
|
99
|
+
| [`topmind-format`](./topmind-format/) | **0.1.1** | X 纯文本格式化:转段子(行间空行)/ 格式化成短文(分段 + emoji 体系),只动排版不改字,带原文保真校验;交付三块,无原图先询问配图 |
|
|
100
100
|
| [`topmind-poster`](./topmind-poster/) | **0.1.5** | HTML+CSS → 高清长图 / 海报 / 信息图 PNG:无头 Chrome 2× 截图 + 自动裁白;「一段一图」分段图批量出图(生成器 + 渲染器) |
|
|
101
101
|
|
|
102
|
-
安装器 [`@topmindspace/topmind-writing-skills`](https://www.npmjs.com/package/@topmindspace/topmind-writing-skills) 为 **0.8.
|
|
102
|
+
安装器 [`@topmindspace/topmind-writing-skills`](https://www.npmjs.com/package/@topmindspace/topmind-writing-skills) 为 **0.8.33**(整仓同 tag 发版)。
|
|
103
103
|
|
|
104
104
|
### 怎么选、怎么组合
|
|
105
105
|
|
package/package.json
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.16 (2026-10-14)
|
|
4
|
+
|
|
5
|
+
- 特性支持:交付固定三块(可复制纯文本正文 / 原帖与信源地址 / 1–2 张原图)并附正例模板;没有原图时主动询问是否配图,不擅自生图
|
|
6
|
+
- 优化:X 版写作接入共享 `x-layout-patterns.md`(首行给结论、列表引导语、长条目间空行、【小标题】分节、中英混排、链接单独一行);emoji 只引用共享 `emoji-system.md`
|
|
7
|
+
- 优化:`lint_x_post.py` 新增 E8/E9/W11(见根 CHANGELOG 0.8.33)
|
|
8
|
+
|
|
3
9
|
## 0.2.15 (2026-10-14)
|
|
4
10
|
|
|
5
11
|
- 变更:短文默认不出 HTML——X 版交付一段可直接复制的纯文本,公众号版交付 Markdown;`md2x-html.py` / `md2wechat.py` 仍随包自带,仅在用户明确要求时使用
|
|
@@ -8,7 +8,7 @@ A brief is not a long-form article — **no HTML by default**: the X version is
|
|
|
8
8
|
Original facts, images and quotes come first; a cover is optional when no original image exists. Every delivery lists
|
|
9
9
|
each source's name, publish time and link.
|
|
10
10
|
|
|
11
|
-
- Version: **v0.2.
|
|
11
|
+
- Version: **v0.2.16** (ships with `@topmindspace/topmind-writing-skills@0.8.33`)
|
|
12
12
|
|
|
13
13
|
## Install
|
|
14
14
|
|
package/topmind-briefs/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
X 版是一段可直接复制的纯文本(分段换行 + 克制的 emoji + 来源链接),公众号版约 300–800 字 Markdown。
|
|
7
7
|
尊重原始信息、原图、原文;配图原图优先,没有原图时封面可选(`topmind-cover`);交付时写明信息来源、发布时间与来源链接。
|
|
8
8
|
|
|
9
|
-
- 版本:**v0.2.
|
|
9
|
+
- 版本:**v0.2.16**(随 `@topmindspace/topmind-writing-skills@0.8.33` 发布)
|
|
10
10
|
|
|
11
11
|
## 安装
|
|
12
12
|
|
package/topmind-briefs/SKILL.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: topmind-briefs
|
|
3
|
-
description: "干货短文:一件事讲透,X + 公众号双平台。短文不是长文——默认不出 HTML:X
|
|
3
|
+
description: "干货短文:一件事讲透,X + 公众号双平台。短文不是长文——默认不出 HTML:X 版是一段可直接复制的纯文本(首行给结论、合理分段换行、emoji 项目符号列表,emoji 只用 TopMind 体系,带来源链接,0–2 个话题标签),公众号版是 300–800 字 Markdown;交付固定三块:①可复制纯文本正文 ②原帖/信源地址 ③1–2 张原图(官方图、原帖图/截图);没有原图时主动询问是否配图,不擅自生图。尊重原始信息、原图、原文。只交付不代发。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.
|
|
6
|
+
version: "0.2.16"
|
|
7
7
|
action_category: "write"
|
|
8
8
|
triggers: "写短文, 公众号短文, X 短文, 发快讯, 快讯, 简讯, 速报, 干货短文, 论文解读, 数据榜单, 榜单速报, 新品速递, brief, 来篇短的, 短平快, 发个快讯"
|
|
9
9
|
author: "TopMindSpace"
|
|
@@ -46,42 +46,62 @@ metadata:
|
|
|
46
46
|
|
|
47
47
|
1. **定主题**:一篇只讲一件事——一个数据、一个榜单变化、一篇论文的核心结论、一个新品的关键参数。定不下来就问:这篇让读者记住哪一个数字或结论?
|
|
48
48
|
2. **找素材**:先核实,再找图。记下每条信息的**来源名称、链接、发布时间**(交付时要报给用户)。
|
|
49
|
-
3. **写 X 版**:一段纯文本,按 [references/platform-specs.md](references/platform-specs.md)
|
|
50
|
-
-
|
|
51
|
-
- 正文一段 1–3 行,段与段空一行;并列信息用 emoji 列表(默认 🔹,步骤 1️⃣,对比
|
|
49
|
+
3. **写 X 版**:一段纯文本,按 [references/platform-specs.md](references/platform-specs.md)、[references/style-guide.md](references/style-guide.md) 和参考帖版式规律 [references/x-layout-patterns.md](references/x-layout-patterns.md):
|
|
50
|
+
- 标题一行,写出「是什么 + 最扎眼的事实」(只看首行也拿到信息),行首可放 1 个与关键词对应的 emoji(发布 🆕、数据 📊、论文 📄 …);
|
|
51
|
+
- 正文一段 1–3 行,段与段空一行;并列信息用 emoji 列表(默认 🔹,步骤 1️⃣,对比 ✅/❌),一帖一套;列表前一行写「xx:」引导语,列表后一句收尾;
|
|
52
|
+
- 中英混排:英文专名保留原文,中英之间加半角空格;链接单独一行写明用途;
|
|
53
|
+
- 信息量大(约 500 字以上、账号支持长帖)时用【小标题】分节,不用 `#`;
|
|
52
54
|
- 正文后单独一行 `来源:名称 URL`,最后一行 0–2 个话题标签;
|
|
53
|
-
- emoji
|
|
55
|
+
- emoji 只用 TopMind 体系,唯一出处 [references/emoji-system.md](references/emoji-system.md):标题 emoji 按关键词对照表取(对不上就不放,不用 🔥 😍 凑数),人设点缀(🐔 🐱 🌱)最多 2 个、只放首尾,严肃资讯不放;
|
|
54
56
|
- 不用 Markdown(X 不渲染),规则见 [references/x-post-format.md](references/x-post-format.md)。
|
|
55
57
|
4. **写公众号版**(用户要双平台时):300–800 字 Markdown,内容与 X 版一致,只允许排版差异;不写前言导读。
|
|
56
|
-
5.
|
|
58
|
+
5. **配图**:原图优先,交付 1–2 张(官方图、原帖配图 / 原帖截图、基准图、榜单实拍),每张写一句图注说明它证明什么;给可直接打开的图片地址,能下载就下载到交付目录。**没有可用原图时,必须主动问用户「要不要配图?可以用 topmind-cover 出一张 16:9 封面」**,用户说要再调用 `topmind-cover` 的「X 短文封面」(16:9,1200×675);不擅自生图。
|
|
57
59
|
6. **自检**:
|
|
58
60
|
- 每个数字都有来源;图和文字说的是同一件事;推测已标注;
|
|
59
61
|
- 按 [references/writing-principles.md](references/writing-principles.md)「去 AI 味清单」过一遍;
|
|
60
|
-
- `python3 scripts/lint_x_post.py X短文.txt
|
|
62
|
+
- `python3 scripts/lint_x_post.py X短文.txt`:错误清零(含 Markdown 列表/标题/加粗/引用/链接/删除线/代码围栏残留),W8(表情过多)/ W9(AI 套话)/ W10(缺来源)逐条处理;
|
|
61
63
|
- 需要统一排版时可跑 `python3 scripts/format_text.py X短文.txt --mode short --out X短文.txt`(只动排版不改字)。
|
|
62
64
|
7. **交付**(只交付,不发布):见下节「交付格式」。
|
|
63
65
|
|
|
64
|
-
##
|
|
66
|
+
## 交付格式(固定三块)
|
|
65
67
|
|
|
66
|
-
默认交付纯文本,不生成 HTML
|
|
68
|
+
默认交付纯文本,不生成 HTML。给用户的回复固定三块,顺序不变(规则见 [references/x-post-format.md](references/x-post-format.md)「交付三块」):
|
|
67
69
|
|
|
70
|
+
1. **① 正文(可直接复制)**:X 版纯文本放进 `text` 代码块(保证空行不丢),块内没有任何 Markdown 符号;用户要公众号版时,另起一个 `markdown` 代码块。
|
|
71
|
+
2. **② 原帖 / 信源**:每条承重事实一行:`来源名称|发布时间(注明时区)|URL`。发布时间取原文页面上的时间,页面没有就写「未标注」,不猜。
|
|
72
|
+
3. **③ 原图(1–2 张)**:`[图1] 图片地址或交付目录文件名 — 图注;来源:原帖 / 官网`。视频只给封面帧地址并注明「视频」。
|
|
73
|
+
没找到原图 → 写「未找到原图」,并在回复最后问一句:**「这条没有原图,要不要配图?可以用 topmind-cover 出一张 16:9 封面。」**
|
|
74
|
+
|
|
75
|
+
### 正例模板
|
|
76
|
+
|
|
77
|
+
````text
|
|
78
|
+
① 正文(可直接复制)
|
|
68
79
|
```text
|
|
69
|
-
|
|
70
|
-
|
|
80
|
+
🆕 某编辑器 3.0 发布:补全延迟降到 200ms 内,免费版每月 50 次 🐱
|
|
81
|
+
|
|
82
|
+
这次更新有三处变化:
|
|
71
83
|
|
|
72
|
-
|
|
73
|
-
|
|
84
|
+
🔹 补全延迟降到 200ms 内(厂商口径)
|
|
85
|
+
🔹 支持多文件同时修改
|
|
86
|
+
🔹 免费版每月 50 次
|
|
74
87
|
|
|
75
|
-
|
|
76
|
-
[图1] <文件名或原图链接> — <图注>;来源:<名称>
|
|
88
|
+
对日常写小脚本的人,免费额度够用了。
|
|
77
89
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
90
|
+
来源:官方更新日志 https://example.com/changelog
|
|
91
|
+
|
|
92
|
+
#AI编程
|
|
81
93
|
```
|
|
82
94
|
|
|
83
|
-
|
|
84
|
-
|
|
95
|
+
② 原帖 / 信源
|
|
96
|
+
- 官方更新日志|2026-10-13 09:00(UTC+8)|https://example.com/changelog
|
|
97
|
+
- 官方账号原帖|2026-10-13 09:05(UTC+8)|https://x.com/example/status/1234567890
|
|
98
|
+
|
|
99
|
+
③ 原图
|
|
100
|
+
[图1] https://example.com/images/release-3.png — 官方发布图,展示三项更新;来源:官方更新日志
|
|
101
|
+
[图2] 01-原帖截图.png — 官方原帖截图;来源:官方账号原帖
|
|
102
|
+
````
|
|
103
|
+
|
|
104
|
+
(模板中的产品、数字与链接均为虚构演示。)没有原图时,③ 写「未找到原图」,结尾加上配图询问。
|
|
85
105
|
|
|
86
106
|
**HTML 只在用户明确要求时出**(例如「出个一键复制 HTML」「公众号要排版好的版本」):
|
|
87
107
|
`python3 scripts/md2x-html.py X短文.md --out X短文.html --images-from 公众号短文.md`、
|
|
@@ -123,17 +143,17 @@ X 版末尾给 0–2 个话题标签建议(另给 1 个备选),单独成
|
|
|
123
143
|
|
|
124
144
|
## 配图铁律
|
|
125
145
|
|
|
126
|
-
-
|
|
146
|
+
- 交付 1–2 张原图(核心图),最多 4 张。每张图必须承载信息,装饰图不要。
|
|
127
147
|
- 图注写一句,说明这张图在证明什么;X 版文字里用 [图1] 标注对应关系。
|
|
128
148
|
- 图紧跟它证明的那段文字(公众号版);图与文字不错位。
|
|
129
|
-
-
|
|
149
|
+
- 封面不是必需品:有原图就用原图当首图;没有原图先问用户要不要配图,用户同意后才走 `topmind-cover`,不擅自生图。
|
|
130
150
|
|
|
131
151
|
## 和其他技能怎么配合
|
|
132
152
|
|
|
133
153
|
| 场景 | 组合 |
|
|
134
154
|
|---|---|
|
|
135
155
|
| 写完再统一排版 | 本技能 → `topmind-format` 短文体(只排版不改字) |
|
|
136
|
-
|
|
|
156
|
+
| 没有原图、用户同意配图 | 本技能 → `topmind-cover`「X 短文封面」 |
|
|
137
157
|
| 内容太多、写成长文 | 转 `topmind-x-article`(X 长文)或 `topmind-wechat-post`(公众号长文) |
|
|
138
158
|
| 要一张数据长图 | 本技能出文案 → `topmind-poster` 出图 |
|
|
139
159
|
| 同一事件出段子 | 本技能出干货版,`topmind-viral-posts` 出引流版,事实与来源保持一致 |
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> 适用:`topmind-briefs`(短文)、`topmind-viral-posts`(段子)、`topmind-format`(格式化)的 X 稿,以及其他技能派生 X 纯文本稿时。
|
|
4
4
|
> 公众号稿正文不用人设点缀。列表符号的细则见 `x-post-format.md`,本文只定「用哪些、用几个、放哪里」。
|
|
5
|
+
> **唯一真源**:本文是 TopMind emoji 体系的唯一出处(仓库 `shared/references/emoji-system.md`,各技能目录里是逐字节副本)。各技能 SKILL.md 只引用本文,不另写一套 emoji 规则;要改体系只改这里。
|
|
5
6
|
|
|
6
7
|
## 一、三类 emoji,各管一件事
|
|
7
8
|
|
|
@@ -55,23 +56,34 @@
|
|
|
55
56
|
|
|
56
57
|
一个标题只放一个 emoji,放在行首,后面空一格。
|
|
57
58
|
|
|
58
|
-
##
|
|
59
|
+
## 四、只用 TopMind 的,不跟风
|
|
60
|
+
|
|
61
|
+
参考帖里常见的 🔥 😍 🚀 💥 开头、6–10 个话题标签、同一列表 🔸 🔹 混用,是别人的个人风格,TopMind 不照搬:
|
|
62
|
+
|
|
63
|
+
- 标题行首只放第三节对照表里的标题 emoji;对不上关键词就不放,不用 🔥 😍 🚀 凑热度。
|
|
64
|
+
- 账号辨识度只靠人设点缀(🐔 🐱 + 小动物 / 植物),放首尾。
|
|
65
|
+
- 信息密度高的长帖(分【小标题】的那种)可以完全不用 emoji,靠空行和【】小标题分层——这也是 TopMind 风格。
|
|
66
|
+
- 版式规律见 `x-layout-patterns.md`。
|
|
67
|
+
|
|
68
|
+
## 五、列表 emoji:统一、克制
|
|
59
69
|
|
|
60
70
|
- 默认 🔹(二级 ▫️),步骤 1️⃣ 2️⃣ 3️⃣,对比 ✅ / ❌ 成对,严肃内容用 • ▪。
|
|
61
71
|
- 一帖一套,不在同一层级混用;列表项里不再加第二个 emoji。
|
|
62
72
|
- 数据型列表可以用一次 📌 标最关键那一条,其余仍用 🔹。
|
|
73
|
+
- 列表前写一句「xx:」引导语(如「三处变化:」),引导语本身不加 emoji。
|
|
63
74
|
|
|
64
|
-
##
|
|
75
|
+
## 六、按体裁的配额
|
|
65
76
|
|
|
66
77
|
| 体裁 | 人设点缀 | 标题 emoji | 列表符号 | 情绪表情 |
|
|
67
78
|
|---|---|---|---|---|
|
|
68
79
|
| 段子(topmind-viral-posts / 转段子) | 0–2 | 不用(段子没有标题行) | 一般不用列表 | ≤1 |
|
|
69
80
|
| 短文(topmind-briefs / 格式化成短文) | 0–2 | 0–1 | 一套 | 0 |
|
|
70
81
|
| 严肃资讯 | 0 | 0–1(只用 ⚡ 📄 ⚠️ 📅) | • ▪ 或 🔹 | 0 |
|
|
82
|
+
| 长帖资讯(【小标题】分节) | 0–1(只放结尾) | 0–1 | 一套或不用 | 0 |
|
|
71
83
|
|
|
72
84
|
合计:一帖的点缀类 emoji(人设 + 标题 + 情绪)不超过 3 个,`lint_x_post.py` 超过 4 个会给 W8 警告。
|
|
73
85
|
|
|
74
|
-
##
|
|
86
|
+
## 七、示例(原创)
|
|
75
87
|
|
|
76
88
|
段子:
|
|
77
89
|
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# X 短文版式规律(参考帖拆解)
|
|
2
|
+
|
|
3
|
+
> 适用:`topmind-briefs`(短文)、`topmind-format`(格式化)、`topmind-viral-posts`(段子 / 短帖)的 X 纯文本稿。
|
|
4
|
+
> 本文只记**版式规律**,不收录原文;需要看原样时打开原帖。emoji 一律按 `emoji-system.md` 的 TopMind 体系取,参考帖里的 emoji 只作结构参考。
|
|
5
|
+
> 拆解时间:2026-10-14。
|
|
6
|
+
|
|
7
|
+
## 参考帖
|
|
8
|
+
|
|
9
|
+
| # | 原帖 | 体裁 | 一句话版式特征 |
|
|
10
|
+
|---|---|---|---|
|
|
11
|
+
| A | https://x.com/NFT_Chen/status/2110238874291110097 | 中文测评速报 | 标题行带结论 → 「证据拆解:」→ 1️⃣–5️⃣ 证据 → 一句评价 → 一句金句 → 末行话题标签 |
|
|
12
|
+
| B | https://x.com/moritzkremb/status/2110108110203363626 | 英文视频导流 | 两行短句钩子,各自成段 → 「In this video:」+ 3 条短条目 → 末行「Full breakdown: 链接」 |
|
|
13
|
+
| C | https://x.com/stevenmarkryan/status/2110184367347863796 | 英文清单体 | 一句引子 → 13 条 • 列表,每条一行,长短交错,无收尾 |
|
|
14
|
+
| D | https://x.com/GitHub_Daily/status/2110219134357451045 | 中文工具推荐 | 痛点场景开头 → 是什么 → 技术来源 → 链接单独一段 → 用法举例 → 隐私说明 → 一句推荐收尾;全程无 emoji、无列表 |
|
|
15
|
+
| E | https://x.com/NFT_Chen/status/2110146921646223867 | 中文作品拆解 | 情绪 emoji + 标题 → 「关键细节拆解:」→ 7 条 🔸 + 1 条 🔹 收束,条目间空行 → 一句总结 → 话题标签 → 末行链接 |
|
|
16
|
+
| F | https://x.com/dotey/status/2110053992554238391 | 中文长帖资讯 | 标题行写全核心事实(谁/何时/价格)→ 导语段 → 【小标题】分节 × 5 → 每节 1–4 个短段 → 无 emoji、无话题标签 |
|
|
17
|
+
|
|
18
|
+
## 一、开头钩子
|
|
19
|
+
|
|
20
|
+
1. **标题行就给结论**:A、F 的第一行把「是什么 + 最扎眼的事实」写全(F 连价格都写进标题),读者只看第一行也拿到信息。
|
|
21
|
+
2. **场景钩子**:D 用一个人人遇到过的痛点场景开头(想不起文件名),第二段才说产品——适合工具推荐。
|
|
22
|
+
3. **两句短钩**:B 用两句各成一段的短句(判断 + 对比),英文帖常见。
|
|
23
|
+
4. 钩子行最多 1 个情绪或标题 emoji(A、E 在行首各 1 个);F、D 完全不用也照样清楚。
|
|
24
|
+
|
|
25
|
+
TopMind 写法:短文首行 = 标题 emoji(按关键词对照表,0–1 个)+ 带结论的标题;段子首行 = 钩子句 + 可选 1 个人设点缀。
|
|
26
|
+
|
|
27
|
+
## 二、分段长度与空行节奏
|
|
28
|
+
|
|
29
|
+
1. **一段一个意思**:D、F 每段 1–3 句,中文约 40–90 字;段与段之间一定空一行。
|
|
30
|
+
2. **标题、引导语、列表、收尾、标签之间各空一行**;列表内部一般不空行(A、C)。
|
|
31
|
+
3. **条目本身很长(超过一行)时,条目之间空一行**(E)——否则手机上挤成一团。
|
|
32
|
+
4. 长帖(F)用【小标题】单独一行分节,节与节之间空一行;小标题后紧跟正文,不再空两行。
|
|
33
|
+
5. 不出现连续两个以上空行(段子体的行间空行是唯一例外)。
|
|
34
|
+
|
|
35
|
+
## 三、列表写法
|
|
36
|
+
|
|
37
|
+
1. **引导语 + 冒号**:「证据拆解:」「关键细节拆解:」「In this video:」——先告诉读者下面是什么。
|
|
38
|
+
2. **符号按用途选**:有先后 / 证据链用 1️⃣ 2️⃣ 3️⃣(A);并列要点用 🔹 或 •(C、E);一帖一套。
|
|
39
|
+
3. **条目格式**:`关键词:说明` 或 一句完整短句;条目开头就是关键词(E 的「商店街:」「夜景氛围:」)。
|
|
40
|
+
4. **数量**:短帖 3–5 条最舒服(A 5 条、B 3 条);C 的 13 条清单体只适合纯吐槽/盘点,干货短文不超过 7 条。
|
|
41
|
+
5. **收束条**:E 用一个不同符号标出最后一条「交互」作为收束——TopMind 里改用 📌 标最关键的一条,不在同层换符号。
|
|
42
|
+
6. 列表后接**一句总结**(A、E)把读者拉回结论,再接标签。
|
|
43
|
+
|
|
44
|
+
## 四、emoji 用法
|
|
45
|
+
|
|
46
|
+
1. 参考帖的 emoji 只出现在三个位置:**标题行首、列表行首、(偶尔)收尾行**;正文段中间都不插。
|
|
47
|
+
2. 信息密度越高、emoji 越少:F、D 零 emoji 依然好读,靠的是空行和【小标题】。
|
|
48
|
+
3. 不连用、不堆叠;🔥 😍 这类情绪 emoji 是参考帖的个人风格,**TopMind 不照搬**——标题 emoji 只按关键词对照表取,人设点缀用 🐔 🐱 🌱 等(见 `emoji-system.md`)。
|
|
49
|
+
|
|
50
|
+
## 五、中英混排
|
|
51
|
+
|
|
52
|
+
1. **中文帖里的英文专名保留原文**(Tokenizer、Three.js、EmbeddingGemma、API),首次出现可加中文解释(F:「token(模型处理文字的基本单位)」)。
|
|
53
|
+
2. **中英文之间加半角空格**(D、F 的写法:「Mac 上的本地搜索工具」「7.4 亿参数」);数字与中文单位之间不加空格亦可,但一帖内统一。
|
|
54
|
+
3. 中文标点用全角(,。:「」),英文句子内用半角;不在中文句中夹英文标点。
|
|
55
|
+
4. 英文帖(B、C)短句、一行一意,列表符号用 • 或 >,不用中文标点。
|
|
56
|
+
|
|
57
|
+
## 六、链接与话题标签位置
|
|
58
|
+
|
|
59
|
+
1. **链接单独成段或单独一行**,前面写清是什么:「GitHub:URL」(D)、「Full breakdown: URL」(B);不把 URL 夹在句子中间。
|
|
60
|
+
2. TopMind 规定:来源链接放正文之后、话题标签之前,写成 `来源:名称 URL`(见 `x-post-format.md`)。
|
|
61
|
+
3. **话题标签放末行**(A);E 在标签后又放链接、F 不放标签——TopMind 统一为「来源行 → 标签行」最后两段,标签 0–2 个(段子 1–3 个),不堆 6–10 个(A、E 的堆标签不学)。
|
|
62
|
+
|
|
63
|
+
## 七、结尾
|
|
64
|
+
|
|
65
|
+
1. **一句判断或建议收尾**:「免费可薅,别指望质量!」(A 的结构:短句 + 态度)、「装一个能省不少事」(D 的结构:给读者一个行动理由)。
|
|
66
|
+
2. 收尾句单独成段,不超过一行;之后只接来源和标签。
|
|
67
|
+
3. 清单体(C)可以无收尾,但短文默认要有一句收尾。
|
|
68
|
+
4. 收尾行可放 1 个人设点缀(🌱 🐾),严肃资讯不放。
|
|
69
|
+
|
|
70
|
+
## 八、一页速查(写完对照)
|
|
71
|
+
|
|
72
|
+
- 首行有结论;标题 emoji 0–1 个且对得上关键词
|
|
73
|
+
- 段落 1–3 句,段间空一行;长条目之间空一行
|
|
74
|
+
- 列表前有「xx:」引导语;一帖一套符号;3–5 条
|
|
75
|
+
- 列表后有一句总结或收尾
|
|
76
|
+
- 英文专名保留,中英之间空格
|
|
77
|
+
- 链接单独一行写清用途;来源行 → 标签行在最后
|
|
78
|
+
- 无 Markdown 符号(`- ` `* ` `#` `**` `>` `[]()` 反引号)
|
|
@@ -52,13 +52,24 @@ X 稿也要能经得起追问:每个数字、引用和结论都能找到出处
|
|
|
52
52
|
4. **原帖与截图**:引用 X 原帖时贴原帖链接,截图里写明作者和时间;不贴二次搬运号的链接。
|
|
53
53
|
5. **时间锚点**:资讯类写明具体日期(「10 月 13 日」),不写「最近」「近日」。
|
|
54
54
|
|
|
55
|
-
##
|
|
55
|
+
## 版式节奏(来自参考帖拆解,详见 `x-layout-patterns.md`)
|
|
56
|
+
|
|
57
|
+
1. **首行给结论**:标题行写出「是什么 + 最扎眼的事实」,只看第一行也拿到信息。
|
|
58
|
+
2. **列表前加引导语**:「三处变化:」「证据拆解:」单独一行,后面紧跟列表。
|
|
59
|
+
3. **长条目之间空一行**:一条列表超过一行时,条目之间空一行;短条目连续排。
|
|
60
|
+
4. **长帖用【小标题】分节**:超过约 500 字时,用【谁能用】【多少钱】这样的小标题单独成行,不用 `#`。
|
|
61
|
+
5. **中英混排**:英文专名保留原文,中英之间加半角空格;中文句用全角标点。
|
|
62
|
+
6. **链接单独一行并写明用途**:`GitHub:URL`、`来源:名称 URL`,不夹在句子中间。
|
|
63
|
+
7. **一句收尾**:列表后用一句判断或建议收尾,单独成段,然后才是来源和标签。
|
|
64
|
+
|
|
65
|
+
## 版式骨架(四选一)
|
|
56
66
|
|
|
57
67
|
| 骨架 | 结构 | 适合 |
|
|
58
68
|
|---|---|---|
|
|
59
69
|
| 钩子 + 列表 | 钩子一行 → 空行 → 3–5 条 🔹 → 空行 → 一句收尾 → 来源 → 标签 | 更新、盘点、干货 |
|
|
60
70
|
| 步骤 | 痛点一行 → 1️⃣–5️⃣ 步骤 → 「简单来说:」一句 → 来源 → 标签 | 教程、上手 |
|
|
61
71
|
| 对比 | 一句结论 → ✅ / ❌ 成对 2–3 组 → 适用建议一句 → 来源 → 标签 | 选型、评测 |
|
|
72
|
+
| 分节长帖 | 标题行(含核心事实)→ 导语一段 → 【小标题】× 3–5,每节 1–3 段 → 收尾 → 来源 → 标签 | 发布会、定价、政策等信息量大的资讯(需账号支持长帖) |
|
|
62
73
|
|
|
63
74
|
thread 每条都按同一骨架:第 1 条放钩子和最关键的事实,最后一条放来源汇总和话题标签,中间条目用「1/5」这样的序号开头。
|
|
64
75
|
|
|
@@ -66,12 +77,32 @@ thread 每条都按同一骨架:第 1 条放钩子和最关键的事实,最
|
|
|
66
77
|
|
|
67
78
|
X 短文、短帖的首图按这个顺序取:
|
|
68
79
|
|
|
69
|
-
1.
|
|
70
|
-
2.
|
|
80
|
+
1. **一手原图**:官方截图、基准原图、榜单实拍、论文原图、原帖配图或原帖截图、自己的后台截图——有就用它当首图(1–2 张),不另配封面。
|
|
81
|
+
2. **没有原图时:先问,不擅自生图**。交付时明确问一句「这条没有找到原图,要不要配图?可以用 topmind-cover 出一张 16:9 封面」;用户说要,再调用 `topmind-cover` 的「X 短文封面」场景(16:9,1200×675),交付文件 `00-封面-X短文.png`。
|
|
71
82
|
3. **纯文字段子**(冷知识、自问自答、吐槽)可以不配图。
|
|
72
83
|
|
|
73
84
|
资讯和数据类不用 AI 图冒充原图;原图 + 封面合计不超过 4 张。
|
|
74
85
|
|
|
86
|
+
## 交付三块(X 短文 / 短帖 / 格式化统一)
|
|
87
|
+
|
|
88
|
+
给用户的 X 稿固定分三块,顺序不变:
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
① 正文(可直接复制)
|
|
92
|
+
<纯文本正文,放在 text 代码块里,保证空行不丢;块内不出现任何 Markdown 符号>
|
|
93
|
+
|
|
94
|
+
② 原帖 / 信源
|
|
95
|
+
- <来源名称>|<发布时间,注明时区>|<URL>
|
|
96
|
+
|
|
97
|
+
③ 原图(1–2 张)
|
|
98
|
+
[图1] <图片地址,或已下载到交付目录的文件名> — <一句图注>;来源:<原帖 / 官网>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
- ① 里不放说明文字、不放「来源:」以外的备注;正文内的来源行保留(读者在 X 上能看到出处),② 是给用户核对用的完整清单。
|
|
102
|
+
- ③ 找到原图时给可直接打开的图片地址(如原帖图片的 `pbs.twimg.com` 地址、官网图片地址),能下载就下载到交付目录;视频只给封面帧地址并说明是视频。
|
|
103
|
+
- ③ 没有原图时写「未找到原图」,并在最后**主动问用户要不要配图**(可选 `topmind-cover`);用户回复前不生图。
|
|
104
|
+
- 用户自己贴的文字(`topmind-format`)没有信源时,② 写「用户提供,未附来源」,③ 同样询问是否配图。
|
|
105
|
+
|
|
75
106
|
## 段子体(行间空行)
|
|
76
107
|
|
|
77
108
|
段子默认段子体:一句一行,行与行之间都空一行;不用列表符号。现成文字转段子体交给 `topmind-format`。
|
|
@@ -136,7 +167,7 @@ X 短文、短帖的首图按这个顺序取:
|
|
|
136
167
|
|
|
137
168
|
## 自检与工具
|
|
138
169
|
|
|
139
|
-
- 清单:无 Markdown 列表 / 标题 /
|
|
170
|
+
- 清单:无 Markdown 列表 / 标题 / 加粗 / 引用 / 链接 / 反引号;同层符号一致;层级 ≤2;列表 ≤7 条;点缀表情 ≤3;数字都有来源行;话题标签在末行;首图已定(原图优先;没有原图已询问用户);交付分三块。
|
|
140
171
|
- 工具:`python3 scripts/lint_x_post.py X稿.txt` 检查;加 `--fix` 把 Markdown 列表、标题、加粗等自动改成 X 写法(输出到 `--out`,不覆盖原文件)。
|
|
141
172
|
脚本还会警告点缀表情过多(W8)、疑似 AI 套话(W9)、有数据但缺来源(W10)。
|
|
142
173
|
文件里有多条帖子时,用单独一行 `---` 分隔;长文兜底稿(`X发布稿.txt`)加 `--long`。
|
|
@@ -12,7 +12,9 @@ X 的普通帖子不渲染 Markdown。本脚本检查 X 稿,并可把常见 Ma
|
|
|
12
12
|
cat X稿.txt | python3 lint_x_post.py - # 从标准输入读取
|
|
13
13
|
|
|
14
14
|
警告(不影响退出码,--strict 时算失败)还包括:点缀表情过多(W8)、疑似 AI 套话(W9)、
|
|
15
|
-
有数据但缺来源(W10)。
|
|
15
|
+
有数据但缺来源(W10)、连续多个空行(W11)。
|
|
16
|
+
普通帖(非 --long)里出现代码围栏 ``` 记 E8(多半是把交付代码块的围栏一起复制进来了),
|
|
17
|
+
删除线 ~~文字~~ 记 E9;--fix 会去掉这两类符号。
|
|
16
18
|
|
|
17
19
|
退出码:有错误 → 1;加 --strict 时警告也算失败;其余 → 0。
|
|
18
20
|
只用 Python 标准库。
|
|
@@ -40,6 +42,8 @@ TABLE_RE = re.compile(r"^\s*\|.*\|\s*$")
|
|
|
40
42
|
CODE_RE = re.compile(r"`[^`\n]+`")
|
|
41
43
|
SEP_RE = re.compile(r"^\s*(-{3,}|={3,}|\*{3,})\s*$")
|
|
42
44
|
FENCE_RE = re.compile(r"^\s*(```|~~~)")
|
|
45
|
+
STRIKE_RE = re.compile(r"~~[^~\n]+~~")
|
|
46
|
+
MAX_BLANK_RUN = 1 # 段间只空一行;连续 2 个以上空行记 W11
|
|
43
47
|
|
|
44
48
|
# --- 项目符号识别(emoji / 纯文本符号 / 序号)----------------------------------
|
|
45
49
|
KEYCAP = r"[0-9]\uFE0F?\u20E3"
|
|
@@ -127,11 +131,23 @@ def lint_post(start: int, lines: list[str], long_mode: bool):
|
|
|
127
131
|
errs, warns = [], []
|
|
128
132
|
in_fence = False
|
|
129
133
|
bullets = [] # (行号, 缩进宽度, 符号)
|
|
134
|
+
blank_run = 0
|
|
130
135
|
for off, ln in enumerate(lines):
|
|
131
136
|
no = start + off
|
|
137
|
+
if not ln.strip():
|
|
138
|
+
blank_run += 1
|
|
139
|
+
if blank_run == MAX_BLANK_RUN + 1:
|
|
140
|
+
warns.append((no, "W11", "连续多个空行:段与段之间只空一行"))
|
|
141
|
+
else:
|
|
142
|
+
blank_run = 0
|
|
132
143
|
if FENCE_RE.match(ln):
|
|
144
|
+
if not long_mode:
|
|
145
|
+
errs.append((no, "E8", "代码围栏(``` / ~~~):X 不渲染,复制正文时不要带上代码块围栏"))
|
|
146
|
+
continue
|
|
133
147
|
in_fence = not in_fence
|
|
134
148
|
continue
|
|
149
|
+
if STRIKE_RE.search(ln):
|
|
150
|
+
errs.append((no, "E9", "Markdown 删除线(~~):X 不渲染,去掉波浪线"))
|
|
135
151
|
if in_fence or (long_mode and indent_width(ln[: len(ln) - len(ln.lstrip())]) >= 4 and ln.strip()):
|
|
136
152
|
continue
|
|
137
153
|
if UL_RE.match(ln) and not SEP_RE.match(ln):
|
|
@@ -213,6 +229,8 @@ def fix_lines(lines: list[str], long_mode: bool) -> list[str]:
|
|
|
213
229
|
counters: dict[int, int] = {}
|
|
214
230
|
for ln in lines:
|
|
215
231
|
if FENCE_RE.match(ln):
|
|
232
|
+
if not long_mode:
|
|
233
|
+
continue # 普通帖:去掉误带的代码块围栏
|
|
216
234
|
in_fence = not in_fence
|
|
217
235
|
out.append(ln)
|
|
218
236
|
continue
|
|
@@ -240,6 +258,7 @@ def fix_lines(lines: list[str], long_mode: bool) -> list[str]:
|
|
|
240
258
|
s = re.sub(r"^\s*>\s?", "", s)
|
|
241
259
|
s = re.sub(r"\*\*([^*\n]+)\*\*", r"\1", s)
|
|
242
260
|
s = re.sub(r"(?<![\w_])__([^_\n]+)__(?![\w_])", r"\1", s)
|
|
261
|
+
s = STRIKE_RE.sub(lambda mm: mm.group(0)[2:-2], s)
|
|
243
262
|
s = LINK_RE.sub(lambda mm: f"{mm.group(1)} {mm.group(2)}", s)
|
|
244
263
|
s = CODE_RE.sub(lambda mm: mm.group(0).strip("`"), s)
|
|
245
264
|
out.append(s)
|
|
@@ -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.8** (ships with `@topmindspace/topmind-writing-skills@0.8.
|
|
7
|
+
- Version: **v0.4.8** (ships with `@topmindspace/topmind-writing-skills@0.8.33`)
|
|
8
8
|
|
|
9
9
|
## Style gallery
|
|
10
10
|
|
package/topmind-cover/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Lays out existing text for X: **duanzi mode** (one sentence per line, a blank line between every line) or **short-post mode** (paragraphing, emoji bullets, a keyword-matched title emoji, and the account's chicken/cat/plant motif at the start or end). Layout only — the words are never changed; a fidelity check enforces it.
|
|
6
6
|
|
|
7
|
-
- Version: **v0.1.
|
|
7
|
+
- Version: **v0.1.1** (ships with `@topmindspace/topmind-writing-skills@0.8.33`)
|
|
8
8
|
|
|
9
9
|
## Install
|
|
10
10
|
|
package/topmind-format/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
把现成的文字排成 X 上好读的样子:**转段子**(每句一行、行间空一行)或**格式化成短文**(分段换行 + emoji 列表 + 标题 emoji + 鸡/猫/植物人设点缀)。只动排版,不改字,自带原文保真校验。
|
|
6
6
|
|
|
7
|
-
- 版本:**v0.1.
|
|
7
|
+
- 版本:**v0.1.1**(随 `@topmindspace/topmind-writing-skills@0.8.33` 发布)
|
|
8
8
|
|
|
9
9
|
## 安装
|
|
10
10
|
|