@topmindspace/tms-skills 0.4.1 → 0.5.0
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 +35 -0
- package/README.en.md +3 -3
- package/README.md +3 -3
- package/package.json +1 -1
- package/top-ppt-html/README.en.md +2 -2
- package/top-ppt-html/README.md +1 -1
- package/topmind-cover/README.en.md +2 -2
- package/topmind-cover/README.md +2 -2
- package/topmind-cover/references/cover-prompts.md +436 -0
- package/topmind-cover/references/cover-styles.md +3 -0
- package/topmind-wechat-post/README.en.md +1 -1
- package/topmind-wechat-post/README.md +1 -1
- package/topmind-wechat-post/references/wechat-constraints.md +5 -0
- package/topmind-x-article/README.en.md +25 -5
- package/topmind-x-article/README.md +21 -8
- package/topmind-x-article/SKILL.md +37 -13
- package/topmind-x-article/package.json +1 -1
- package/topmind-x-article/references/publish-checklist.md +9 -2
- package/topmind-x-article/references/x-html-format.md +73 -0
- package/topmind-x-article/scripts/md2x-html.py +394 -0
|
@@ -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.
|
|
7
|
+
- Version: **v0.2.0** (same tag as `@topmindspace/tms-skills@0.5.0`)
|
|
8
8
|
|
|
9
9
|
## Install
|
|
10
10
|
|
|
@@ -15,17 +15,37 @@ npx @topmindspace/tms-skills install topmind-x-article
|
|
|
15
15
|
## Usage
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
# 1. Draft →
|
|
18
|
+
# 1. Draft → one-click-copy HTML (preferred)
|
|
19
|
+
python3 scripts/md2x-html.py <draft>.md --out <package>/X长文.html \
|
|
20
|
+
--images <img1> <img2> ... [--cover cover-1200x675.png]
|
|
21
|
+
# Open X长文.html in a browser → click the top 「一键复制全文」 button → paste into the X Article editor body
|
|
22
|
+
# (the first # heading is excluded from the clipboard — fill it into X's title field by hand;
|
|
23
|
+
# upload the cover separately via X's dedicated cover entry)
|
|
24
|
+
|
|
25
|
+
# 2. Plain-text fallback (when HTML copying misbehaves)
|
|
19
26
|
python3 scripts/md2x.py <draft>.md --out <package>/X发布稿.txt
|
|
20
27
|
|
|
21
|
-
#
|
|
28
|
+
# 3. Cover: generate a 1200×675 cover with topmind-cover
|
|
22
29
|
|
|
23
|
-
#
|
|
30
|
+
# 4. Follow references/publish-checklist.md item by item
|
|
24
31
|
```
|
|
25
32
|
|
|
26
33
|
## Conversion rules
|
|
27
34
|
|
|
28
|
-
The
|
|
35
|
+
The HTML path follows `references/x-html-format.md`: rich-text paste into the X editor
|
|
36
|
+
(headings/bold/links/lists/quote blocks preserved); ` ``` ` prompt blocks render as quote
|
|
37
|
+
blocks with a 「复制提示词」 copy button; GFM tables become lists (X drops `<table>` on paste);
|
|
38
|
+
the first `#` heading is excluded from the clipboard; images are base64-inlined and numbered
|
|
39
|
+
`[图N]`, with per-image 「下载图片」 download buttons as fallback upload.
|
|
40
|
+
|
|
41
|
+
Prompt copying is dual-channel: the author side uses the 「复制提示词」 button in the HTML
|
|
42
|
+
(to grab the text before publishing); the reader-side one-click copy can only come from X
|
|
43
|
+
native code blocks (convert each block by hand via Insert → Code — native code blocks carry a
|
|
44
|
+
native copy button, while pasted `<pre>` is discarded by X).
|
|
45
|
+
|
|
46
|
+
The plain-text fallback follows `references/x-format.md`: headings → plain text lines,
|
|
47
|
+
horizontal rules → blank lines, emphasis markers removed, links → `text(url)`, images →
|
|
48
|
+
`[图N]` (image list appended at the end), tables → "label:value" lists, blockquotes unquoted.
|
|
29
49
|
|
|
30
50
|
Read the result through once by hand after converting.
|
|
31
51
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
把 Markdown 原稿变成"复制 → 粘贴 → 发"的 X 长文(Article)发布包。
|
|
6
6
|
|
|
7
|
-
- 版本:**v0.
|
|
7
|
+
- 版本:**v0.2.0**(与 `@topmindspace/tms-skills@0.5.0` 同 tag)
|
|
8
8
|
|
|
9
9
|
## 安装
|
|
10
10
|
|
|
@@ -15,21 +15,34 @@ npx @topmindspace/tms-skills install topmind-x-article
|
|
|
15
15
|
## 用法
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
# 1.
|
|
18
|
+
# 1. 原稿转一键复制 HTML(首选)
|
|
19
|
+
python3 scripts/md2x-html.py <原稿>.md --out <包>/X长文.html \
|
|
20
|
+
--images <图1> <图2> ... [--cover cover-1200x675.png]
|
|
21
|
+
# 浏览器打开 X长文.html → 点页顶「一键复制全文」→ 粘贴进 X Article 编辑器正文
|
|
22
|
+
# (首个 # 标题不进剪贴板,手动填入 X 标题栏;封面在 X 独立入口单独上传)
|
|
23
|
+
|
|
24
|
+
# 2. 纯文本兜底(HTML 复制异常时)
|
|
19
25
|
python3 scripts/md2x.py <原稿>.md --out <包>/X发布稿.txt
|
|
20
26
|
|
|
21
|
-
#
|
|
27
|
+
# 3. 封面图:用 topmind-cover 生成 1200×675
|
|
22
28
|
|
|
23
|
-
#
|
|
29
|
+
# 4. 按 references/publish-checklist.md 逐项发布
|
|
24
30
|
```
|
|
25
31
|
|
|
26
32
|
## 转换规则
|
|
27
33
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
HTML 链路按 `references/x-html-format.md`:富文本粘贴进 X 编辑器(标题/加粗/链接/
|
|
35
|
+
列表/引用块保留);` ``` ` 提示词块渲染为引用块 + 「复制提示词」按钮;GFM 表格转列表
|
|
36
|
+
(X 粘贴丢弃 `<table>`);首个 `#` 标题不进剪贴板;配图 base64 内嵌、按 `[图N]` 编号,
|
|
37
|
+
带不入编辑器时用图下「下载图片」按编号上传。
|
|
38
|
+
|
|
39
|
+
提示词的复制分双通道:作者侧用 HTML 里的「复制提示词」按钮(发布前取用文本);
|
|
40
|
+
读者侧一键复制只能来自 X 原生代码块(Insert → Code 手动逐块转换;原生代码块带
|
|
41
|
+
native copy button,粘贴 `<pre>` 会被 X 丢弃,走不过去)。
|
|
31
42
|
|
|
32
|
-
|
|
43
|
+
纯文本兜底按 `references/x-format.md`:标题→纯文本行、分隔线→空行、加粗/斜体/
|
|
44
|
+
行内代码去标记、链接→`文字(url)`、图片→`[图N]`(文末附配图清单)、表格→"项:值"列表、
|
|
45
|
+
引用去 `>`。转完必须人工通读一遍。
|
|
33
46
|
|
|
34
47
|
## 最小示例
|
|
35
48
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: topmind-x-article
|
|
3
|
-
version: 0.
|
|
4
|
-
description: "X 长文(Article)一键发布:Markdown 原稿 →
|
|
3
|
+
version: 0.2.0
|
|
4
|
+
description: "X 长文(Article)一键发布:Markdown 原稿 → 可直接复制的 X长文.html(富文本一键复制+配图内嵌)/ X发布稿.txt + 封面图 + 发布清单。沉淀自实战。Use when X 长文、发 X 文章、X article、长文发 X。Do NOT use for 短推文(→ topmind-x)、公众号(→ topmind-wechat-post)。"
|
|
5
5
|
action_category: write
|
|
6
6
|
triggers:
|
|
7
7
|
- X 长文
|
|
@@ -12,6 +12,7 @@ triggers:
|
|
|
12
12
|
- 转纯文本
|
|
13
13
|
- X 纯文本
|
|
14
14
|
- 发 article
|
|
15
|
+
- 一键复制
|
|
15
16
|
triggers_cn:
|
|
16
17
|
- 写 X 长文
|
|
17
18
|
- X 长文发布
|
|
@@ -28,30 +29,48 @@ updated: 2026-09-29
|
|
|
28
29
|
把一篇 Markdown 原稿变成"复制 → 粘贴 → 发"的 X 长文发布包。
|
|
29
30
|
|
|
30
31
|
```
|
|
31
|
-
原稿.md → md2x.py → X
|
|
32
|
+
原稿.md → md2x-html.py → X长文.html(一键复制全文+配图)→ 封面图(topmind-cover) → 发布清单 → 人工粘贴发布
|
|
33
|
+
原稿.md → md2x.py → X发布稿.txt(纯文本兜底)
|
|
32
34
|
```
|
|
33
35
|
|
|
34
36
|
## 工作流
|
|
35
37
|
|
|
36
|
-
1.
|
|
38
|
+
1. **转 HTML**(一键复制的核心,首选):
|
|
37
39
|
```bash
|
|
38
|
-
python3 scripts/md2x.py <原稿>.md --out <包>/X
|
|
40
|
+
python3 scripts/md2x-html.py <原稿>.md --out <包>/X长文.html \
|
|
41
|
+
--images <图1> <图2> ... [--cover cover-1200x675.png]
|
|
39
42
|
```
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
单文件 HTML:内联样式 + 配图 base64 内嵌。浏览器打开后点页顶
|
|
44
|
+
「一键复制全文」,富文本(含格式)进剪贴板,去 X 文章编辑器粘贴。
|
|
45
|
+
转换规则见 `references/x-html-format.md`。
|
|
46
|
+
- `#` 首个标题**不进剪贴板**:手动填入 X 标题栏(工具栏有三步话术提示)。
|
|
47
|
+
- 每张配图自动编号 `[图N]`;图片 data-URI 内嵌,能随粘贴带入编辑器最好,
|
|
48
|
+
带不进去时用图下「下载图片」按钮按编号下载再上传——不用找文件、不用对顺序。
|
|
49
|
+
- 每个 ``` 提示词块渲染为引用块(X 可识别)+ 右上角「复制提示词」按钮,
|
|
50
|
+
一键复制该块纯文本。**复制分双通道**:作者侧用 HTML 里的按钮(发布前取用文本);
|
|
51
|
+
读者侧一键复制只能来自 X 原生代码块,需在编辑器里 Insert → Code 手动逐块转换
|
|
52
|
+
(X 原生代码块带 native copy button;粘贴 `<pre>` 会被 X 丢弃,走不过去)。
|
|
53
|
+
详见 `references/x-html-format.md`「提示词的复制链路(双通道)」。
|
|
54
|
+
- 封面走 `--cover` 只在页顶预览 + 提供下载;**封面始终在 X 编辑器单独上传**
|
|
55
|
+
(X 有独立封面入口)。
|
|
56
|
+
2. **转纯文本**(兜底):`python3 scripts/md2x.py <原稿>.md --out <包>/X发布稿.txt`,
|
|
57
|
+
规则见 `references/x-format.md`。HTML 复制异常时的备用入口。
|
|
58
|
+
转完**通读一遍**:X 不渲染 markdown,标记剥离后断句、emphasis 全靠文字本身,
|
|
59
|
+
读不顺就回原稿改。
|
|
60
|
+
3. **封面图**:调 `topmind-cover`,平台选 `x`,得 1200×675 主图。
|
|
61
|
+
4. **发布清单**:按 `references/publish-checklist.md` 逐项过。
|
|
62
|
+
5. **发布**:用户在 X Article 编辑器粘贴全文、上传封面与配图(按 `[图N]` 编号),
|
|
45
63
|
人工点发布。**API 不发长文**(topmind-x 的 xurl 只覆盖短推文)。
|
|
46
|
-
|
|
64
|
+
6. **收尾**:记录发布时间与链接;全文抓回核对一遍(标题、数字、图序)。
|
|
47
65
|
|
|
48
66
|
## 目录约定
|
|
49
67
|
|
|
50
68
|
```
|
|
51
69
|
<包>/
|
|
52
70
|
├── 原稿.md # 输入(或复用既有原稿)
|
|
53
|
-
├── X
|
|
54
|
-
├──
|
|
71
|
+
├── X长文.html # 首选复制入口:浏览器打开,一键复制全文
|
|
72
|
+
├── X发布稿.txt # 纯文本兜底入口
|
|
73
|
+
├── cover-1200x675.png # 封面(topmind-cover 产出,X 编辑器单独上传)
|
|
55
74
|
└── 发布清单.md # 本次发布 checklist(含时间、链接)
|
|
56
75
|
```
|
|
57
76
|
|
|
@@ -60,6 +79,11 @@ updated: 2026-09-29
|
|
|
60
79
|
- 补充信息(邀请码、链接、勘误)**不挤正文**,发在发布后首条评论并置顶
|
|
61
80
|
- 标题 ≤140 字符,首段 3 行内出钩子;配图逐张按 `[图N]` 顺序上传,传完对照清单点一遍
|
|
62
81
|
- 事实修正只改发布包,不回头改已发原文(除非勘误)
|
|
82
|
+
- 提示词密集型文章(如 N 条直出提示词),发布时建议把提示词引用块逐块转为
|
|
83
|
+
X 原生代码块(Insert → Code → 粘贴 → 删原块,每块约 10 秒):这是 X 平台唯一可靠的
|
|
84
|
+
读者侧一键复制链路(原生代码块带 native copy button,已实测确认)
|
|
85
|
+
- X 编辑器对剪贴板 data-URI 图片的处理不稳定:**文本格式一键复制可靠,
|
|
86
|
+
图片按"能带入则带入,带不入则按编号下载上传"处理**,不要承诺用户图片 100% 一键带图
|
|
63
87
|
|
|
64
88
|
## When NOT to use
|
|
65
89
|
|
|
@@ -4,16 +4,23 @@
|
|
|
4
4
|
|
|
5
5
|
## 发布前
|
|
6
6
|
|
|
7
|
-
- [ ] `X
|
|
7
|
+
- [ ] `X长文.html` 浏览器打开一遍:「一键复制全文」按钮可用、配图 11 张按序显示、
|
|
8
|
+
每个提示词块右上角「复制提示词」可用、封面预览 + 下载正常
|
|
9
|
+
- [ ] `X发布稿.txt` 通读一遍:断句顺、无 markdown 残留标记(HTML 复制异常时的兜底)
|
|
8
10
|
- [ ] 标题 ≤140 字符;首段 3 行内出钩子
|
|
9
11
|
- [ ] 承重数字与原稿一致(转格式不改数字)
|
|
10
12
|
- [ ] 封面图 1200×675 已备好,标题字无错别字
|
|
11
13
|
- [ ] 配图按 `[图N]` 顺序排好,清单与文件一一对应
|
|
12
14
|
- [ ] 话题标签想好(放文末,不超过 3 个)
|
|
15
|
+
- [ ] 提示词密集型文章:规划好哪些提示词块要在 X 里转原生代码块
|
|
16
|
+
(Insert → Code,读者侧一键复制的唯一链路;纯展示、无需取用的可跳过)
|
|
13
17
|
|
|
14
18
|
## 发布时
|
|
15
19
|
|
|
16
|
-
- [ ]
|
|
20
|
+
- [ ] 一键复制全文 → X 文章编辑器粘贴 → 封面单独上传 → 配图按 `[图N]` 编号插入
|
|
21
|
+
(图片若随粘贴带入则跳过上传;带不入则用图下「下载图片」按编号下载再上传)
|
|
22
|
+
- [ ] (提示词类文章推荐)提示词引用块逐块转 X 原生代码块,得读者侧一键复制:
|
|
23
|
+
HTML 里点该块「复制提示词」→ X 编辑器对应位置 Insert → Code → 粘贴 → 删除原引用块
|
|
17
24
|
- [ ] 预览一遍:图序、段落、标题
|
|
18
25
|
|
|
19
26
|
## 发布后
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# x-html-format.md · md2x-html.py 转换规则
|
|
2
|
+
|
|
3
|
+
`scripts/md2x-html.py` 把 Markdown 原稿转成**单文件 HTML**(内联样式 + 图片 base64 内嵌,
|
|
4
|
+
无外部依赖),浏览器打开即用。对标 `md2wechat` 的公众号体验:页顶「一键复制全文」。
|
|
5
|
+
|
|
6
|
+
## X 文章编辑器语法(调研结论)
|
|
7
|
+
|
|
8
|
+
以 X 发文工具实测为准(x-md-to-article 等,2026-09-29 调研):
|
|
9
|
+
|
|
10
|
+
| 原稿元素 | HTML 输出 | 粘贴进 X 后的表现 |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| `#`(首个) | `h1.no-paste`(页面展示) | **不进剪贴板**:手动填入 X 标题栏 |
|
|
13
|
+
| `##` / `###` | `h2` / `h3` | X 原生"标题 / 副标题"两级 |
|
|
14
|
+
| 段落(`**粗体**`、`` `代码` ``、裸链接) | `p`(strong/code/a 保留) | 原生富文本;行内 code 变纯文本;链接保留 |
|
|
15
|
+
| `- ` / `1. ` | `ul` / `ol` | 原生列表 |
|
|
16
|
+
| `> ` | `blockquote` | 原生引用块 |
|
|
17
|
+
| ``` 围栏(直出提示词) | `div.prompt > blockquote > code` + 「复制提示词」按钮 | 原生引用块。**粘贴流到此为止**:X 不识别粘贴的 `<pre>` 为代码块;读者侧一键复制只能来自 X 原生代码块(Insert → Code 手动建),见下节「提示词的复制链路(双通道)」 |
|
|
18
|
+
| `---` | `hr` | 可能被丢弃 → 发布时手动 Insert → 分割线 |
|
|
19
|
+
| GFM 表格 | `ul.xtable`(表头加粗首项) | **X 粘贴会丢弃 `<table>`**,转列表保内容;如需原生表格,走 X 的 Insert → 表格手动建 |
|
|
20
|
+
| `[图N]` 独占一行 | `<figure>`:内嵌 data-URI 图片 + `[图N]` 编号 + 「下载图片」按钮 | 图片随粘贴带入不稳定,保底按编号下载上传 |
|
|
21
|
+
| 封面 `--cover` | 页顶预览 + 下载(`.no-paste`) | 始终在 X 编辑器独立封面入口单独上传 |
|
|
22
|
+
|
|
23
|
+
「复制全文」前 JS 自动剔除所有 `<button>` 与 `.no-paste` 块(标题、封面预览),
|
|
24
|
+
剪贴板里只剩 X 可识别的语义标签:`h2/h3/p/ul/ol/blockquote/a/hr/img`。
|
|
25
|
+
工具栏三步话术:**① 标题填入 X 标题栏 → ② 一键复制全文 → ③ 粘贴到 X 正文**。
|
|
26
|
+
|
|
27
|
+
## 提示词的复制链路(双通道)
|
|
28
|
+
|
|
29
|
+
核实结论(2026-09-29,两处独立实测一致):
|
|
30
|
+
|
|
31
|
+
- X 原生代码块(Insert → Code 插入)**带 native copy button**,读者侧可一键复制
|
|
32
|
+
(jpw-x-articles 真机验证原文:"Code content and native copy buttons persist")。
|
|
33
|
+
- 围栏代码**只能**走 Insert → Code 对话框,"never relies on clipboard HTML round-tripping";
|
|
34
|
+
粘贴 HTML 会丢弃 `<pre>`(x-md-to-article 实测笔记,2026-09-07)。
|
|
35
|
+
|
|
36
|
+
因此提示词的"复制"分两段:
|
|
37
|
+
|
|
38
|
+
- **通道 A(作者侧,发布前)**:`X长文.html` 里每个提示词块右上角「复制提示词」按钮,
|
|
39
|
+
一键复制该块纯文本。这是你粘贴发布时取用提示词文本的入口。
|
|
40
|
+
- **通道 B(读者侧,发布后)**:X 编辑器里把提示词引用块手动转为原生代码块,
|
|
41
|
+
读者才能一键复制。操作(每块约 10 秒):
|
|
42
|
+
1. 在 HTML 里点该块「复制提示词」(文本已进剪贴板);
|
|
43
|
+
2. X 编辑器对应位置 Insert → Code,新建原生代码块,粘贴;
|
|
44
|
+
3. 删除原来的引用块(避免正文重复)。
|
|
45
|
+
提示词密集型文章(如 N 条直出提示词)建议逐块转换;纯展示、无需读者取用的代码可跳过。
|
|
46
|
+
|
|
47
|
+
`X发布稿.txt` 里围栏已去标记、内容保留为纯文本,同样可作为通道 B 的文本来源。
|
|
48
|
+
|
|
49
|
+
## 图片约定
|
|
50
|
+
|
|
51
|
+
- `--images` 按顺序对应 `[图1]`、`[图2]`…;`--cover` 只做页顶预览 + 下载,**不占 `[图N]` 编号**
|
|
52
|
+
- 配图建议先压缩到宽 900px 左右的 JPEG(单张 <100KB),11 张图总 HTML 约 800KB,
|
|
53
|
+
直接双击打开不卡
|
|
54
|
+
- 下载按钮用 JS 取同图 `src` 触发下载,data-URI 在 HTML 里只存一份(体积减半)
|
|
55
|
+
|
|
56
|
+
## 复制行为
|
|
57
|
+
|
|
58
|
+
- 「一键复制全文」:`ClipboardItem` 同时写 `text/html` + `text/plain`,
|
|
59
|
+
富文本失败时自动降级纯文本
|
|
60
|
+
- 「复制提示词」:`innerText`(HTML 实体自动解码,拿到的是干净纯文本)
|
|
61
|
+
- 「下载图片/下载封面」:`a[download]` + data-URI,保底链路
|
|
62
|
+
|
|
63
|
+
## 已知限制(写进发布话术,不要过度承诺)
|
|
64
|
+
|
|
65
|
+
- 文本 + 格式一键复制可靠(富文本剪贴板,多家 X 发文技能同款做法)
|
|
66
|
+
- 图片 data-URI 能否随粘贴带入 X 文章编辑器**不稳定**:
|
|
67
|
+
有成功案例,但更多实战采用"HTML 粘贴文本 + 图片按编号上传"。
|
|
68
|
+
话术固定为:"能带入则带入,带不入则按编号下载上传"
|
|
69
|
+
- 封面始终在 X 编辑器单独上传(X 有独立封面入口),HTML 里只预览
|
|
70
|
+
- 分割线、代码块、表格三类 X 原生块**只能走 Insert 菜单**,粘贴流不承诺还原;
|
|
71
|
+
本链路已做最大兼容(引用块/列表/hr),剩余手动补。
|
|
72
|
+
其中代码块值得手动补:它是 X 侧唯一带读者一键复制(native copy button)的载体,
|
|
73
|
+
提示词类内容建议走「提示词的复制链路」通道 B 逐块转换
|