@topmindspace/tms-skills 0.2.0 → 0.3.1
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 +60 -0
- package/README.en.md +57 -12
- package/README.md +56 -11
- package/bin/tms-skills.js +35 -5
- package/package.json +1 -1
- package/top-ppt-html/README.en.md +2 -2
- package/top-ppt-html/README.md +3 -3
- package/top-ppt-html/SKILL.md +4 -5
- package/top-ppt-html/references/modes.md +1 -1
- package/top-ppt-html/scripts/audit_docs.py +24 -0
- package/top-ppt-html/scripts/audit_skill.py +2 -2
- package/top-ppt-html/scripts/build_pptx.js +36 -0
- package/top-ppt-html/scripts/package_skill.py +3 -3
- package/topmind-cover/README.en.md +68 -0
- package/topmind-cover/README.md +34 -6
- package/topmind-cover/SKILL.md +44 -7
- package/topmind-cover/assets/examples/README.md +37 -0
- package/topmind-cover/assets/examples/big-type-wechat.png +0 -0
- package/topmind-cover/assets/examples/big-type.png +0 -0
- package/topmind-cover/assets/examples/brand-launch-wechat.png +0 -0
- package/topmind-cover/assets/examples/brand-launch.png +0 -0
- package/topmind-cover/assets/examples/gan-huo-wechat.png +0 -0
- package/topmind-cover/assets/examples/gan-huo.png +0 -0
- package/topmind-cover/assets/examples/ip-fun-wechat.png +0 -0
- package/topmind-cover/assets/examples/ip-fun.png +0 -0
- package/topmind-cover/assets/examples/magazine-wechat.png +0 -0
- package/topmind-cover/assets/examples/magazine.png +0 -0
- package/topmind-cover/assets/examples/minimal-wechat.png +0 -0
- package/topmind-cover/assets/examples/minimal.png +0 -0
- package/topmind-cover/assets/examples/news-flash-wechat.png +0 -0
- package/topmind-cover/assets/examples/news-flash.png +0 -0
- package/topmind-cover/assets/examples/overview.png +0 -0
- package/topmind-cover/assets/examples/tutorial-steps-wechat.png +0 -0
- package/topmind-cover/assets/examples/tutorial-steps.png +0 -0
- package/topmind-cover/references/cover-styles.md +327 -21
- package/topmind-cover/scripts/audit_docs.py +22 -0
- package/topmind-cover/scripts/crop-cover.py +1 -2
- package/topmind-wechat-post/README.en.md +63 -0
- package/topmind-wechat-post/README.md +16 -0
- package/topmind-wechat-post/SKILL.md +22 -13
- package/topmind-wechat-post/references/typography-rules.md +1 -1
- package/topmind-wechat-post/references/writing-quality.md +2 -2
- package/topmind-wechat-post/scripts/audit_docs.py +22 -0
- package/topmind-wechat-post/scripts/md2wechat.py +8 -1
- package/topmind-x-article/README.en.md +46 -0
- package/topmind-x-article/README.md +13 -2
- package/topmind-x-article/SKILL.md +13 -4
- package/topmind-x-article/scripts/audit_docs.py +22 -0
- package/topmind-x-article/scripts/md2x.py +5 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,63 @@
|
|
|
1
|
+
## [0.3.1] - 2026-09-29
|
|
2
|
+
|
|
3
|
+
> 根包 0.3.0 → **0.3.1**(patch);4 个技能 `version` 保持不动(top-ppt-html 0.1.19,其余 0.1.0)。
|
|
4
|
+
> 整仓同 tag 发版,技能 `version` 独立演进(见 docs/PUBLISHING.md)。
|
|
5
|
+
|
|
6
|
+
### topmind-cover:风格库按爆款封面重沉淀 + 样张重制
|
|
7
|
+
|
|
8
|
+
- `references/cover-styles.md` 按 7 张爆款参考封面 + Manus 实战封面重沉淀为 **8 种风格**:
|
|
9
|
+
爆款干货(`gan-huo`)/ 巨字宣言(`big-type`)/ 品牌发布(`brand-launch`)/
|
|
10
|
+
教程步骤(`tutorial-steps`)/ IP 趣味(`ip-fun`)/ 资讯快报(`news-flash`)/
|
|
11
|
+
极简留白(`minimal`,保留)/ 杂志编辑(`magazine`,保留),
|
|
12
|
+
每种含适用场景、构图公式、配色 hex、标题写法规范(4~8 字、数字/关键词彩色突出)、
|
|
13
|
+
中英 prompt 配方、避坑;删除旧 6 风格。
|
|
14
|
+
- `assets/examples/` 样张全部重制:**16 张**(8 风格 × 1200×675 主图 + 900×383 公众号中央裁剪版)
|
|
15
|
+
+ `overview.png`(8 宫格总览图),逐张目检(标题逐字准确、无乱码、中央 60% 安全区),
|
|
16
|
+
7 次返工均为"底部元素超出安全区";旧 12 张移除。
|
|
17
|
+
- 提炼规律:标题字巨大化(占画面高 22%~45%)、左文右图通用分区、三层文字结构
|
|
18
|
+
(大标题 + 胶囊/笔刷副标题 + 底部标签条)、数字前置造冲击、背景极简浅色。
|
|
19
|
+
- 根 README(中/英)、cover README(中/英)、cover SKILL.md 嵌入总览图(GitHub 绝对 URL)
|
|
20
|
+
+ 8 风格一行式索引;用法"6 选 1"→"8 选 1"。
|
|
21
|
+
|
|
22
|
+
### bug 修复
|
|
23
|
+
|
|
24
|
+
- topmind-wechat-post `scripts/md2wechat.py`:本地图片文件缺失时未登记进"图片上传清单"
|
|
25
|
+
(用户按清单补图会漏传);现登记 `⚠ 本地文件缺失` 行并计入"图片 N 张"计数。
|
|
26
|
+
HTML 仍保留断链占位(设计选择),清单已标注。
|
|
27
|
+
|
|
28
|
+
## [0.3.0] - 2026-09-29
|
|
29
|
+
|
|
30
|
+
> 根包 0.2.0 → **0.3.0**(minor,新功能);4 个技能 `version` 保持不动(top-ppt-html 0.1.19,其余 0.1.0)。
|
|
31
|
+
> 整仓同 tag 发版,技能 `version` 独立演进(见 docs/PUBLISHING.md)。
|
|
32
|
+
|
|
33
|
+
### topmind-cover:封面风格库 + 12 张示例图(新功能)
|
|
34
|
+
|
|
35
|
+
- `references/cover-styles.md` 扩为 **6 种风格库**:震撼大字报(`big-poster`)/ 科技未来感(`tech-future`)/
|
|
36
|
+
杂志编辑风(`magazine`)/ 极简留白(`minimal`)/ 国潮插画(`guochao`)/ 赛博故障艺术(`cyber-glitch`),
|
|
37
|
+
每种含适用场景、配色 hex、字体建议、中英 prompt 配方、避坑。
|
|
38
|
+
- `assets/examples/` 新增 **12 张示例图**(6 风格 × 1200×675 主图 + 900×383 公众号中央裁剪版,共约 6.4MB),
|
|
39
|
+
附 `assets/examples/README.md`(清单 + 安全区说明 + 复用声明),随 npm 包发布。
|
|
40
|
+
- SKILL.md 工作流新增"**步骤 0 选风格**"(三步必做:按题材 6 选 1 → 看示例图 → 按配方组 prompt)。
|
|
41
|
+
- 标题**中央垂直 60% 安全区**上升为设计铁律(风格库新增"安全区铁律"章节):标题字与关键主体
|
|
42
|
+
上下各预留 13%+,否则 900×383 中央裁剪会切掉标题。
|
|
43
|
+
|
|
44
|
+
### 最佳实践整改
|
|
45
|
+
|
|
46
|
+
- top-ppt-html / topmind-wechat-post 的 SKILL.md `description` 改**第三人称**(降误触发);
|
|
47
|
+
topmind-cover `description` 同步微调("一次配齐"→"全流程覆盖"),`triggers` 新增 `缩略图` / `thumbnail`。
|
|
48
|
+
- topmind-wechat-post:站外取源坑与回推命令串收敛到 `references/workflow.md`,SKILL.md 只留索引;
|
|
49
|
+
新增跨技能路由索引(封面配图 → topmind-cover,X 长文 → topmind-x-article);
|
|
50
|
+
二级标题序号由排版层自动生成(不再手写)。
|
|
51
|
+
- 各技能 README(中/英)与 SKILL.md 对齐:cover 新增风格库与示例图章节、用法改"步骤 0 选风格";
|
|
52
|
+
x-article 转换规则补"分隔线→空行"。
|
|
53
|
+
|
|
54
|
+
### bug 修复
|
|
55
|
+
|
|
56
|
+
- topmind-x-article `scripts/md2x.py`:`---` / `***` / `___` 分隔线转**空行**(原逻辑误当 frontmatter 吞掉);
|
|
57
|
+
`***粗斜体***` 先去三重星号再处理 `**` / `__` / `*`,不再残留星号。
|
|
58
|
+
- topmind-cover `scripts/crop-cover.py`:移除 `--slug` 悬空参数
|
|
59
|
+
(用法与文档统一:`crop-cover.py <主图> --out-dir <包>/images/`)。
|
|
60
|
+
|
|
1
61
|
## [0.2.0] - 2026-09-29
|
|
2
62
|
|
|
3
63
|
### 新增三个写作/配图技能
|
package/README.en.md
CHANGED
|
@@ -9,17 +9,56 @@
|
|
|
9
9
|
[](https://github.com/topmindspace/tms-skills/actions/workflows/ci.yml)
|
|
10
10
|
[](LICENSE)
|
|
11
11
|
|
|
12
|
-
**TopMindspace agent-skills monorepo** —
|
|
12
|
+
**TopMindspace agent-skills monorepo** — formal business presentations, WeChat articles, X long-form posts, cover art: four skills, one repo.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
### top-ppt-html · Formal business presentations
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Built for **demo reports / formal business decks**: **HTML + PPT dual delivery**. Day-to-day, present with single-file HTML like slides; export **high-fidelity editable PPTX** when needed (charts carry data you can annotate). MD3-inspired: fitting information density, restrained type / shapes / color. Formal business presenting — not decoration.
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
```bash
|
|
19
|
+
npx @topmindspace/tms-skills install top-ppt-html
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### topmind-wechat-post · WeChat article authoring
|
|
23
|
+
|
|
24
|
+
Full lifecycle for WeChat articles: delivery package, review & rewrite, three quality gates (facts / logic / de-AI-flavor), WeChat inline typography (images must be embedded), publish checklist and status sync. Python stdlib only — zero dependencies.
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx @topmindspace/tms-skills install topmind-wechat-post
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### topmind-x-article · One-click X long-form publishing
|
|
31
|
+
|
|
32
|
+
Markdown draft → paste-ready plain text (`md2x.py` adapts to the X Article editor: images → `[图N]`, tables → "item: value" lists) + cover art + publish checklist. Publishing is done by hand-pasting; fetch the text back for verification after posting.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npx @topmindspace/tms-skills install topmind-x-article
|
|
36
|
+
```
|
|
19
37
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
- **
|
|
38
|
+
### topmind-cover · Cover art generation
|
|
39
|
+
|
|
40
|
+
Shared cover art for X long-form and WeChat: striking, eye-catching, theme-focused. Built-in **8-style cover style library** (viral dry-goods / giant-type manifesto / brand launch / tutorial steps / fun IP / news flash / minimalist / editorial magazine — each with use cases, hex palettes, font suggestions, Chinese+English prompt recipes) + **17 dual-size example images** (`assets/examples/`, shipped with the package): **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 1200×675, WeChat 900×383).
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx @topmindspace/tms-skills install topmind-cover
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Style gallery** (8-style overview; full-size per-style shots in `topmind-cover/assets/examples/<style>.png`, recipes in [`references/cover-styles.md`](./topmind-cover/references/cover-styles.md)):
|
|
47
|
+
|
|
48
|
+
<p align="center">
|
|
49
|
+
<img src="https://github.com/topmindspace/tms-skills/raw/main/topmind-cover/assets/examples/overview.png" alt="topmind-cover · 8 cover-style overview" width="960" />
|
|
50
|
+
</p>
|
|
51
|
+
|
|
52
|
+
| Style | Best for |
|
|
53
|
+
|-------|----------|
|
|
54
|
+
| Viral dry-goods `gan-huo` | Tested picks, reviews, roundups; default for first-person "I tried it all for you" posts |
|
|
55
|
+
| Giant-type manifesto `big-type` | Opinion pieces, deep essays, launch manifestos; default for one-sentence-stance pieces |
|
|
56
|
+
| Brand launch `brand-launch` | Product launches, version updates, official best practices / whitepapers; first choice when a brand is the subject |
|
|
57
|
+
| Tutorial steps `tutorial-steps` | Tutorials, onboarding guides, step-by-step walkthroughs, beginner-proof recipes |
|
|
58
|
+
| Fun IP `ip-fun` | Case studies, data recaps, retrospectives, series (part 1 / part 2) |
|
|
59
|
+
| News flash `news-flash` | News, flashes, hot-topic explainers, interview teasers, "myth-busting" angles |
|
|
60
|
+
| Minimal `minimal` | Essays, book reviews, light takes, lifestyle musings; WeChat "light reading" pieces |
|
|
61
|
+
| Editorial magazine `magazine` | In-depth interviews, profiles, business analysis, year-in-review; when "craft / trust" matters |
|
|
23
62
|
|
|
24
63
|
> Let ideas fly — make good thinking visible.
|
|
25
64
|
|
|
@@ -27,7 +66,7 @@ Plenty of PPT skills exist — some lean gadgety, some dump consulting density b
|
|
|
27
66
|
<img src="docs/assets/tms-skills-banner.png" alt="tms-skills · top-ppt-html — formal business presentations" width="960" />
|
|
28
67
|
</p>
|
|
29
68
|
|
|
30
|
-
> **Warning**: do not install `@topmindspace/tms-skills@^2` (2.0.0–2.1.1 deprecated). Current line is **0.
|
|
69
|
+
> **Warning**: do not install `@topmindspace/tms-skills@^2` (2.0.0–2.1.1 deprecated). Current line is **0.2.x** (`latest`).
|
|
31
70
|
|
|
32
71
|
## Craft at a glance
|
|
33
72
|
|
|
@@ -70,7 +109,7 @@ Plenty of PPT skills exist — some lean gadgety, some dump consulting density b
|
|
|
70
109
|
| Fullscreen | **F** | Immersive present mode |
|
|
71
110
|
| Collapse toolbar | **B** | Mini bar (brand + expand); remembers per file |
|
|
72
111
|
|
|
73
|
-
See [top-ppt-html/README.md](./top-ppt-html/README.md) and [SKILL.md](./top-ppt-html/SKILL.md).
|
|
112
|
+
See [top-ppt-html/README.md](./top-ppt-html/README.md#html-header-toolbar) and [SKILL.md](./top-ppt-html/SKILL.md).
|
|
74
113
|
|
|
75
114
|
## Skills
|
|
76
115
|
|
|
@@ -79,9 +118,15 @@ See [top-ppt-html/README.md](./top-ppt-html/README.md) and [SKILL.md](./top-ppt-
|
|
|
79
118
|
| [`top-ppt-html`](./top-ppt-html/) | **0.1.19** | Formal business decks: paginated HTML + editable 16:9 PPTX; dual delivery · MD3-inspired density; 3 modes × 9 styles; strict 0/0 |
|
|
80
119
|
| [`topmind-wechat-post`](./topmind-wechat-post/) | **0.1.0** | WeChat article lifecycle: package, review, 3 quality gates, inline typography & publish checklist |
|
|
81
120
|
| [`topmind-x-article`](./topmind-x-article/) | **0.1.0** | X long-form one-click publish: Markdown → paste-ready plain text + cover + checklist |
|
|
82
|
-
| [`topmind-cover`](./topmind-cover/) | **0.1.0** | Cover art for X / WeChat: striking, theme-focused;
|
|
121
|
+
| [`topmind-cover`](./topmind-cover/) | **0.1.0** | Cover art for X / WeChat: striking, theme-focused; 8-style cover style library + 17 dual-size example images, size specs + crop tooling |
|
|
122
|
+
|
|
123
|
+
Installer [`@topmindspace/tms-skills`](https://www.npmjs.com/package/@topmindspace/tms-skills) is **0.3.1** (whole-repo same-tag releases).
|
|
124
|
+
|
|
125
|
+
### topmind-cover · Cover style library
|
|
126
|
+
|
|
127
|
+
Style index and the 8-grid overview are in the topmind-cover skill intro above.
|
|
83
128
|
|
|
84
|
-
|
|
129
|
+
**Three steps to a cover**: ① pick 1 of 8 styles by topic → ② check the matching example in [`topmind-cover/assets/examples/`](./topmind-cover/assets/examples/) → ③ compose the prompt from that style's recipe in [`references/cover-styles.md`](./topmind-cover/references/cover-styles.md). 17 example images (8 styles × 1200×675 master + 900×383 WeChat center-crop + `overview.png` 8-grid overview, ~7.5MB) ship with the npm package; **safe-zone rule**: title text and key subject must stay inside the central vertical 60% safe zone.
|
|
85
130
|
|
|
86
131
|
## Install
|
|
87
132
|
|
|
@@ -91,7 +136,7 @@ Installer [`@topmindspace/tms-skills`](https://www.npmjs.com/package/@topmindspa
|
|
|
91
136
|
npx @topmindspace/tms-skills list
|
|
92
137
|
npx @topmindspace/tms-skills install top-ppt-html
|
|
93
138
|
npx @topmindspace/tms-skills install top-ppt-html --to ./.claude/skills
|
|
94
|
-
npx @topmindspace/tms-skills@0.
|
|
139
|
+
npx @topmindspace/tms-skills@0.3.1 install top-ppt-html # pin
|
|
95
140
|
```
|
|
96
141
|
|
|
97
142
|
```bash
|
package/README.md
CHANGED
|
@@ -7,17 +7,56 @@
|
|
|
7
7
|
[](https://github.com/topmindspace/tms-skills/actions/workflows/ci.yml)
|
|
8
8
|
[](LICENSE)
|
|
9
9
|
|
|
10
|
-
**TopMindspace 智能体技能 monorepo**
|
|
10
|
+
**TopMindspace 智能体技能 monorepo** —— 演示报告、公众号文章、X 长文、封面配图:四个技能,一个仓库。
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
### top-ppt-html · 正式商务演示
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
为**演示报告 / 正式商务演示**而生:**HTML + PPT 双交付**。日常用单文件 HTML 等同幻灯片演示;需要时再导出**高保真可编辑 PPTX**(图表带数据、可标注)。参考 MD3:合适的信息密度、克制的文字 / 图形 / 形状 / 颜色。主场是正式商务演示,不是 gadget。
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
```bash
|
|
17
|
+
npx @topmindspace/tms-skills install top-ppt-html
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### topmind-wechat-post · 公众号创作
|
|
21
|
+
|
|
22
|
+
公众号文章全生命周期:交付包、审校改写、质量三关(事实 / 逻辑 / 去 AI 味)、微信内联排版(图片必内嵌)、发布清单与状态同步。脚本纯 Python 标准库,零依赖。
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npx @topmindspace/tms-skills install topmind-wechat-post
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### topmind-x-article · X 长文一键发布
|
|
29
|
+
|
|
30
|
+
Markdown 原稿 → 可直接粘贴的纯文本(`md2x.py` 按 X Article 编辑器支持转制:图片→`[图N]`、表格→"项:值"列表)+ 封面图 + 发布清单。发布走人工粘贴,发布后抓回核对。
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx @topmindspace/tms-skills install topmind-x-article
|
|
34
|
+
```
|
|
17
35
|
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
-
|
|
36
|
+
### topmind-cover · 封面配图生成
|
|
37
|
+
|
|
38
|
+
X 长文与公众号共用的封面图:震撼、醒目、主题突出。内置 **8 种封面风格库**(爆款干货 / 巨字宣言 / 品牌发布 / 教程步骤 / IP 趣味 / 资讯快报 / 极简留白 / 杂志编辑,含适用场景、配色 hex、字体建议、中英 prompt 配方)+ **17 张双尺寸示例图**(`assets/examples/`,随包发布):**选风格 → 看示例 → 按配方组 prompt** 三步出图,`crop-cover.py` 一键裁出双平台尺寸(X 1200×675、公众号 900×383)。
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npx @topmindspace/tms-skills install topmind-cover
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**封面风格样张**(8 宫格总览;单风格大图见 `topmind-cover/assets/examples/<风格>.png`,配方见 [`references/cover-styles.md`](./topmind-cover/references/cover-styles.md)):
|
|
45
|
+
|
|
46
|
+
<p align="center">
|
|
47
|
+
<img src="https://github.com/topmindspace/tms-skills/raw/main/topmind-cover/assets/examples/overview.png" alt="topmind-cover · 8 封面风格总览" width="960" />
|
|
48
|
+
</p>
|
|
49
|
+
|
|
50
|
+
| 风格 | 适用场景 |
|
|
51
|
+
|------|----------|
|
|
52
|
+
| 爆款干货 `gan-huo` | 干货清单、评测、盘点、实测筛选;"我替你试完了/筛完了"类第一人称实测文默认选它 |
|
|
53
|
+
| 巨字宣言 `big-type` | 观点评论、深度长文、产品/版本发布宣言;"一句话立场"类文章默认选它 |
|
|
54
|
+
| 品牌发布 `brand-launch` | 产品发布、版本更新、官方最佳实践/白皮书;有明确品牌主体的内容首选 |
|
|
55
|
+
| 教程步骤 `tutorial-steps` | 教程、上手指南、分步实操、保姆级攻略 |
|
|
56
|
+
| IP 趣味 `ip-fun` | 实战案例、数据战报、复盘、系列连载(上/下篇) |
|
|
57
|
+
| 资讯快报 `news-flash` | 资讯、快讯、热点解读、人物专访预告、"祛魅/揭秘"类选题 |
|
|
58
|
+
| 极简留白 `minimal` | 随笔、书评、轻观点、生活感悟;公众号"轻阅读"类文章 |
|
|
59
|
+
| 杂志编辑 `magazine` | 深度访谈、人物特写、商业分析、年度盘点;需要"质感/信任感"时用它 |
|
|
21
60
|
|
|
22
61
|
> 让 idea 飞,好想法被看见。
|
|
23
62
|
|
|
@@ -25,7 +64,7 @@
|
|
|
25
64
|
<img src="docs/assets/tms-skills-banner.png" alt="tms-skills · top-ppt-html — formal business presentations" width="960" />
|
|
26
65
|
</p>
|
|
27
66
|
|
|
28
|
-
> **警告**:不要安装 `@topmindspace/tms-skills@^2`(2.0.0–2.1.1 已弃用)。当前线 **0.
|
|
67
|
+
> **警告**:不要安装 `@topmindspace/tms-skills@^2`(2.0.0–2.1.1 已弃用)。当前线 **0.2.x**(`latest`)。
|
|
29
68
|
|
|
30
69
|
## 一眼看到工艺
|
|
31
70
|
|
|
@@ -77,9 +116,15 @@
|
|
|
77
116
|
| [`top-ppt-html`](./top-ppt-html/) | **0.1.19** | 正式商务演示:HTML 可翻页 + 16:9 可编辑 PPTX;双交付 · MD3 密度克制;三模式 × 九风格;strict 0/0 |
|
|
78
117
|
| [`topmind-wechat-post`](./topmind-wechat-post/) | **0.1.0** | 公众号文章全生命周期:交付包、审校改写、质量三关、微信内联排版与发布清单 |
|
|
79
118
|
| [`topmind-x-article`](./topmind-x-article/) | **0.1.0** | X 长文一键发布:Markdown 原稿转可直接粘贴的纯文本 + 封面图 + 发布清单 |
|
|
80
|
-
| [`topmind-cover`](./topmind-cover/) | **0.1.0** | 文章封面配图(X /
|
|
119
|
+
| [`topmind-cover`](./topmind-cover/) | **0.1.0** | 文章封面配图(X / 公众号共用):震撼醒目主题突出;8 风格封面风格库 + 17 张双尺寸示例图,尺寸规范 + 裁剪落盘 |
|
|
120
|
+
|
|
121
|
+
安装器 [`@topmindspace/tms-skills`](https://www.npmjs.com/package/@topmindspace/tms-skills) 为 **0.3.1**(整仓同 tag 发版)。
|
|
122
|
+
|
|
123
|
+
### topmind-cover · 封面风格库
|
|
124
|
+
|
|
125
|
+
风格索引与 8 宫格总览样张见上文 topmind-cover 技能介绍处。
|
|
81
126
|
|
|
82
|
-
|
|
127
|
+
**三步出图**:① 按题材从 8 风格选 1 → ② 看 [`topmind-cover/assets/examples/`](./topmind-cover/assets/examples/) 对应示例图 → ③ 按 [`references/cover-styles.md`](./topmind-cover/references/cover-styles.md) 该风格的 prompt 配方组 prompt。17 张示例图(8 风格 × 1200×675 主图 + 900×383 公众号中央裁剪版 + `overview.png` 8 宫格总览,约 7.5MB)随 npm 包发布;**安全区铁律**:标题字与关键主体必须落在画面中央垂直 60% 安全区内。
|
|
83
128
|
|
|
84
129
|
## 安装
|
|
85
130
|
|
|
@@ -89,7 +134,7 @@
|
|
|
89
134
|
npx @topmindspace/tms-skills list
|
|
90
135
|
npx @topmindspace/tms-skills install top-ppt-html
|
|
91
136
|
npx @topmindspace/tms-skills install top-ppt-html --to ./.claude/skills
|
|
92
|
-
npx @topmindspace/tms-skills@0.1
|
|
137
|
+
npx @topmindspace/tms-skills@0.3.1 install top-ppt-html # 钉版本
|
|
93
138
|
```
|
|
94
139
|
|
|
95
140
|
```bash
|
package/bin/tms-skills.js
CHANGED
|
@@ -101,10 +101,37 @@ function copyDir(src, dest) {
|
|
|
101
101
|
} else if (entry.isFile()) {
|
|
102
102
|
if (entry.name.endsWith('.pyc')) continue;
|
|
103
103
|
fs.copyFileSync(s, d);
|
|
104
|
+
} else {
|
|
105
|
+
console.warn(`warning: skipping non-regular file: ${s}`);
|
|
104
106
|
}
|
|
105
107
|
}
|
|
106
108
|
}
|
|
107
109
|
|
|
110
|
+
function normPath(p) {
|
|
111
|
+
const s = path.resolve(p);
|
|
112
|
+
return process.platform === 'win32' ? s.toLowerCase() : s;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/** 安装目标守卫(审计 严重-2):
|
|
116
|
+
* dest == 技能源目录 → --force 会先 rmSync 删掉源目录,再"成功"装出空目录(数据丢失 + 虚假成功);
|
|
117
|
+
* dest 在源目录内部 → copyDir 无限递归复制直至 ENAMETOOLONG,并留下垃圾目录树。
|
|
118
|
+
* path.resolve 归一化后比对(dest === src,或 dest 以 src + 路径分隔符开头),
|
|
119
|
+
* Windows 下额外做大小写归一。无论是否 --force,一律拒绝。
|
|
120
|
+
*/
|
|
121
|
+
function assertDestOutsideSource(src, dest) {
|
|
122
|
+
const absSrc = normPath(src);
|
|
123
|
+
const absDest = normPath(dest);
|
|
124
|
+
if (absDest === absSrc || absDest.startsWith(absSrc + path.sep)) {
|
|
125
|
+
die(
|
|
126
|
+
`Refusing to install into the skill's own directory tree.\n` +
|
|
127
|
+
` skill source: ${absSrc}\n` +
|
|
128
|
+
` destination: ${absDest}\n` +
|
|
129
|
+
`Choose a --to directory outside the skill source ` +
|
|
130
|
+
`(installing into it would delete or recurse into the source).`
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
108
135
|
function install(skillId, targetRoot, { force = false } = {}) {
|
|
109
136
|
assertSkillId(skillId);
|
|
110
137
|
const src = skillDir(skillId);
|
|
@@ -112,6 +139,7 @@ function install(skillId, targetRoot, { force = false } = {}) {
|
|
|
112
139
|
die(`Skill not found: ${skillId}\nAvailable: ${listSkillIds().join(', ') || '(none)'}`);
|
|
113
140
|
}
|
|
114
141
|
const dest = path.join(targetRoot, skillId);
|
|
142
|
+
assertDestOutsideSource(src, dest);
|
|
115
143
|
fs.mkdirSync(targetRoot, { recursive: true });
|
|
116
144
|
if (fs.existsSync(dest)) {
|
|
117
145
|
if (!force) {
|
|
@@ -126,17 +154,19 @@ function install(skillId, targetRoot, { force = false } = {}) {
|
|
|
126
154
|
console.log(`Installed ${skillId}`);
|
|
127
155
|
console.log(` from ${src}`);
|
|
128
156
|
console.log(` to ${dest}`);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
157
|
+
if (skillId === 'top-ppt-html') {
|
|
158
|
+
console.log('');
|
|
159
|
+
console.log('Optional (PPTX export only):');
|
|
160
|
+
console.log(` cd "${dest}" && npm install`);
|
|
161
|
+
}
|
|
132
162
|
}
|
|
133
163
|
|
|
134
164
|
function usageText() {
|
|
135
165
|
return `tms-skills — install TopMindspace agent skills
|
|
136
166
|
|
|
137
167
|
Usage:
|
|
138
|
-
tms-skills list
|
|
139
|
-
tms-skills install <skill-id> [--to <dir>] [--force|-f]
|
|
168
|
+
tms-skills list|ls
|
|
169
|
+
tms-skills install <skill-id> [--to|-t <dir>] [--force|-f]
|
|
140
170
|
tms-skills help
|
|
141
171
|
|
|
142
172
|
Examples (npm recommended when published):
|
package/package.json
CHANGED
|
@@ -18,7 +18,7 @@ Plenty of PPT skills exist. This one is for **formal business presenting**: clea
|
|
|
18
18
|
</p>
|
|
19
19
|
|
|
20
20
|
- Skill id: `top-ppt-html`; brand: **TopPPT HTML**
|
|
21
|
-
- Version: **v0.1.19** (same tag as `@topmindspace/tms-skills@0.1
|
|
21
|
+
- Version: **v0.1.19** (same tag as `@topmindspace/tms-skills@0.3.1`)
|
|
22
22
|
- **Agent entry**: `SKILL.md` → `references/playbook.md` (L1) → L2 on demand
|
|
23
23
|
- **Human maintainers**: this README (install / commands / layout); do not treat it as the generation spec
|
|
24
24
|
|
|
@@ -73,7 +73,7 @@ Also: arrow-key paging; **Esc** closes modals. After style/theme change, re-run
|
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
75
|
npx @topmindspace/tms-skills install top-ppt-html
|
|
76
|
-
npx @topmindspace/tms-skills@0.1
|
|
76
|
+
npx @topmindspace/tms-skills@0.3.1 install top-ppt-html
|
|
77
77
|
npx github:topmindspace/tms-skills install top-ppt-html
|
|
78
78
|
```
|
|
79
79
|
|
package/top-ppt-html/README.md
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
</p>
|
|
19
19
|
|
|
20
20
|
- 技能标识:`top-ppt-html`;品牌名:**TopPPT HTML**
|
|
21
|
-
- 版本:**v0.1.19**(与 `@topmindspace/tms-skills@0.1
|
|
21
|
+
- 版本:**v0.1.19**(与 `@topmindspace/tms-skills@0.3.1` 同 tag)
|
|
22
22
|
- **智能体入口**:`SKILL.md` → `references/playbook.md`(L1)→ L2 按需
|
|
23
23
|
- **人类维护者**:本 README(安装 / 命令 / 目录);勿把本文件当生成规范
|
|
24
24
|
|
|
@@ -170,7 +170,7 @@ top-ppt-html/
|
|
|
170
170
|
│ ├─ illustration-layout.md # L2 插画/配图 brief │
|
|
171
171
|
│ └─ …(modes / styles / design-system / content-rules / icons / default-surface / │
|
|
172
172
|
│ outline-design / pptx-export / high-fidelity / failure-modes / tech-design; │
|
|
173
|
-
│ 归档见 docs/archive/refs/) │
|
|
173
|
+
│ 归档见 ../docs/archive/refs/) │
|
|
174
174
|
├─ evals/ # Eval 框架(结果/过程/风格/效率四类目标) │
|
|
175
175
|
│ ├─ prompts.csv # 14 条 prompt(显式/隐式/上下文/负对照) │
|
|
176
176
|
│ ├─ rubric.schema.json # 风格目标结构化评分契约 │
|
|
@@ -223,7 +223,7 @@ python scripts/check_triggers.py
|
|
|
223
223
|
| `references/presentation-craft.md` | Mode A L1.5 工艺(反截断 / 大气正式) |
|
|
224
224
|
| `assets/examples/` | 3 份黄金样张(每模式 1)+ TopMind showcase |
|
|
225
225
|
| `evals/trigger-queries.json` | description 触发正/负例;`check_triggers.py` |
|
|
226
|
-
|
|
|
226
|
+
| `../docs/archive/` | 历史规范 / 旧示例 |
|
|
227
227
|
|
|
228
228
|
风格画廊与主题参考图:`assets/theme-overview*.png`(Gate 0)。完整规范索引见 playbook §十。
|
|
229
229
|
|
package/top-ppt-html/SKILL.md
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: top-ppt-html
|
|
3
|
-
description: "
|
|
3
|
+
description: "为正式商务演示把材料做成可视化报告:零外链可翻页 HTML(日常上台)+ 高保真可编辑 16:9 PPTX(按需)双交付;MD3 式密度克制;三模式(A 演示 / B 研究 / C 架构)× 9 风格。Use when 用户要做报告、演示、汇报、PPT、slides、deck、路演,或写研究报告、分析报告、咨询报告、白皮书、调研、评测、对标、经营分析、复盘、项目汇报、商务/HTML/网页报告,或做架构图、拓扑图、流程图、泳道图、方案图,或把材料做成可视化报告并导出 HTML/PPT/PPTX,或优化报告的排版/版式/配色/图文布局,或做报告时说快速模式/fast/直接生成/一键出稿/少问一句。Do NOT use for 纯代码工程、非报告类网页或应用开发、视频/图片生成、直接改写已有 Word/PPT 源文件本身。"
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: "Python 3 stdlib for HTML generation; Node >=18 + pptxgenjs for PPTX; optional playwright for browser regression / theme captures."
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
author: TopMindspace
|
|
6
|
+
version: 0.1.19
|
|
7
|
+
author: TopMindspace
|
|
9
8
|
---
|
|
10
9
|
# TopPPT HTML
|
|
11
10
|
|
|
@@ -88,7 +87,7 @@ metadata:
|
|
|
88
87
|
**L2 一览**(命中条件与逐任务只读清单的**详表以 playbook §十为准**,此处仅索引):
|
|
89
88
|
|
|
90
89
|
- 模式契约与锁定版式 → `references/modes.md` · 完整路径七步 → `references/outline-design.md`
|
|
91
|
-
- **A/Fast L1.5 → `default-surface.md` + `presentation-craft.md`** · 骨架 `layout-grammar.md` §七 ·
|
|
90
|
+
- **A/Fast L1.5 → `default-surface.md` + `presentation-craft.md`** · 骨架 `layout-grammar.md` §七 · 插画规范(L2)→ `illustration-layout.md`
|
|
92
91
|
- 组件/版式**代码** → `components.md` · 页型表 `page-type-matrix.md` · 图表门面 `charts.md` + 决策树 `chart-decision-tree.md`(extended 按需)· 信息图 → `infographics.md`
|
|
93
92
|
- 配色/主题/字阶 → `styles.md` + `design-system.md` · 写作 → `content-rules.md` · 图标语义 → `icons.md`
|
|
94
93
|
- PPTX 精导 → `references/pptx-export.md` · 深度高保真 → `references/high-fidelity.md` · 修复顺序 → `references/failure-modes.md` · 技能维护 → `references/tech-design.md`
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
|
|
65
65
|
---
|
|
66
66
|
|
|
67
|
-
> **六项问询**(一次问完、全部带意图推荐、不选即按推荐走):①意图与模式推荐合并确认(本表)②篇幅(A 8–15 页 / B 12–25 页 / C 1–3
|
|
67
|
+
> **六项问询**(一次问完、全部带意图推荐、不选即按推荐走):①意图与模式推荐合并确认(本表)②篇幅(A 8–15 页 / B 12–25 页 / C 1–3 张图共 6–8 页)③风格 9 套(始终选择——风格是 HTML 皮肤,与交付格式无关)④**亮暗主题**(浅色默认 / 深色沉浸;石墨深灰默认深色;HTML 与 PPTX 同主题导出——`REPORT_MODEL.theme`)⑤交付格式(仅 HTML / HTML+PPTX)⑥参考图确认(Gate 0 已展示整体图,问用户是否看到、要不要换)。载体优先结构化选项卡,宿主工具不支持则对话文本一次列全;问询顺序与完整措辞以 `SKILL.md` 为准。
|
|
68
68
|
>
|
|
69
69
|
> 六项问询收**形式参数**;模式确定后,内容主线/大纲/逐页规划走 `outline-design.md` 内容架构七步法(含按需大纲确认),再进入生成。
|
|
70
70
|
|
|
@@ -18,6 +18,9 @@
|
|
|
18
18
|
⑥ 任务路由可解析性 —— extract_snippet.py 的 TASK_ROUTES 每条 (文件, 节) 必须可
|
|
19
19
|
实际抽取(防「文字声明同源」漂移:路由声明的节在文件里找不到即失败;
|
|
20
20
|
空节路由 = 该文件只能整读,≥20KB 的 L2 文件不允许)
|
|
21
|
+
⑦ 反引号引用可达 —— 反引号代码引用中的 `references/*.md` / `scripts/*`
|
|
22
|
+
路径必须存在(审计 轻微-15 门禁盲区:①–⑥ 只查 [text](path) 形式,
|
|
23
|
+
`references/pan-style.md` 曾漏网;glob/占位符写法跳过)
|
|
21
24
|
|
|
22
25
|
何时跑:改 `references/*`、拆分/新增规范文件、调整选型表后(与 regression.py 互补——
|
|
23
26
|
后者管交付物正确性,本工具管规范自洽性)。
|
|
@@ -162,6 +165,27 @@ def main() -> int:
|
|
|
162
165
|
errs.append(f'任务路由空节(整读大文件,应补节号或标题关键词):{empty_routes}')
|
|
163
166
|
print(f'⑥ 任务路由可解析性:{len(ES.TASK_ROUTES)} 条路由 · 不可解析 {len(unresolved)} · 空节 {len(empty_routes)}')
|
|
164
167
|
|
|
168
|
+
# ⑦ 反引号引用可达(审计 轻微-15 门禁盲区:`references/pan-style.md` 曾漏网;
|
|
169
|
+
# glob/占位符写法(* ? < > |)跳过;先按引用文件所在目录解析,再回落技能根)
|
|
170
|
+
bt_path = re.compile(r'(references|scripts)/([\w.\-/]+)')
|
|
171
|
+
bt_suffix = re.compile(r':\d+(?:-\d+)?$')
|
|
172
|
+
backtick_bad = 0
|
|
173
|
+
for rel in doc_files():
|
|
174
|
+
mp = ROOT / rel
|
|
175
|
+
text = mp.read_text(encoding='utf-8')
|
|
176
|
+
for span in set(re.findall(r'`([^`]+)`', text)):
|
|
177
|
+
for kind, p in bt_path.findall(span):
|
|
178
|
+
p = bt_suffix.sub('', p)
|
|
179
|
+
if not p or any(c in p for c in '*?<>|'):
|
|
180
|
+
continue
|
|
181
|
+
tgt = mp.parent / kind / p
|
|
182
|
+
if not tgt.exists():
|
|
183
|
+
tgt = ROOT / kind / p
|
|
184
|
+
if not tgt.exists():
|
|
185
|
+
backtick_bad += 1
|
|
186
|
+
errs.append(f'反引号引用不可达 {rel}: `{kind}/{p}`')
|
|
187
|
+
print(f'⑦ 反引号引用可达:异常 {backtick_bad} 处')
|
|
188
|
+
|
|
165
189
|
print()
|
|
166
190
|
if errs:
|
|
167
191
|
print('审计未通过:')
|
|
@@ -159,8 +159,8 @@ def main() -> int:
|
|
|
159
159
|
chk('② compatibility', 0 < clen <= 500,
|
|
160
160
|
f'compatibility 缺失或超 500 字符({clen})',
|
|
161
161
|
f'{clen} 字符')
|
|
162
|
-
meta_ver = re.search(r'^\s
|
|
163
|
-
meta_author = re.search(r'^\s
|
|
162
|
+
meta_ver = re.search(r'^\s*version:\s*"?([\w.\-]+)"?\s*$', sk, re.M)
|
|
163
|
+
meta_author = re.search(r'^\s*author:\s*(\S+)\s*$', sk, re.M)
|
|
164
164
|
pkg_ver = ''
|
|
165
165
|
try:
|
|
166
166
|
import json as _json
|
|
@@ -62,6 +62,42 @@ const pptxgen = require('pptxgenjs');
|
|
|
62
62
|
const fs = require('fs');
|
|
63
63
|
const path = require('path');
|
|
64
64
|
|
|
65
|
+
/* ═══ CLI 参数 fail-fast(审计 中等-12)═══
|
|
66
|
+
* 未知参数一律报错退出(exit 2),不再执行默认构建并写出文件;
|
|
67
|
+
* --help / -h 打印用法并正常退出(exit 0)。
|
|
68
|
+
* 位置参数只接受一个(输出文件名)。 */
|
|
69
|
+
(function failFastOnUnknownArgs() {
|
|
70
|
+
const raw = process.argv.slice(2);
|
|
71
|
+
if (raw.includes('--help') || raw.includes('-h')) {
|
|
72
|
+
console.log(
|
|
73
|
+
`用法:
|
|
74
|
+
node scripts/build_pptx.js [输出.pptx] --model=<模型.json> [--style=<风格>] [--theme=light|dark]
|
|
75
|
+
|
|
76
|
+
1) 抽模型:python scripts/extract_model.py <报告.html>(生成 <报告>.model.json)
|
|
77
|
+
2) 生成: node scripts/build_pptx.js 报告.pptx --model=报告.model.json
|
|
78
|
+
3) 质检: python scripts/validate_pptx.py 报告.pptx --strict --model=报告.model.json
|
|
79
|
+
|
|
80
|
+
参数:
|
|
81
|
+
--model=<file> 内容模型 JSON(推荐:由 extract_model.py 从 HTML 报告抽取;缺省用内嵌示例)
|
|
82
|
+
--style=<name> 覆盖模型的风格(9 套风格 token 见 scripts/layout-constants.json)
|
|
83
|
+
--theme=light|dark 主题(--theme 覆盖 > 模型 theme > 默认 light)`);
|
|
84
|
+
process.exit(0);
|
|
85
|
+
}
|
|
86
|
+
const known = /^(--model=|--style=|--theme=)/;
|
|
87
|
+
let positional = 0;
|
|
88
|
+
for (const a of raw) {
|
|
89
|
+
if (a.startsWith('-')) {
|
|
90
|
+
if (!known.test(a)) {
|
|
91
|
+
console.error(`[build_pptx] FAIL: 未知参数 ${a} —— 拒绝执行(用 --help 查看用法)`);
|
|
92
|
+
process.exit(2);
|
|
93
|
+
}
|
|
94
|
+
} else if (++positional > 1) {
|
|
95
|
+
console.error(`[build_pptx] FAIL: 多余的位置参数 ${a} —— 只接受一个输出文件名`);
|
|
96
|
+
process.exit(2);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
})();
|
|
100
|
+
|
|
65
101
|
/* ══════════ 版式常量单源(scripts/layout-constants.json · 两通道共用,禁止在此手写常量) ══════════ */
|
|
66
102
|
const LC = JSON.parse(fs.readFileSync(path.join(__dirname, 'layout-constants.json'), 'utf-8'));
|
|
67
103
|
const STYLE_PRESETS = LC.styles; // 9 套风格 token(light)
|
|
@@ -64,11 +64,11 @@ NAME = 'top-ppt-html' # 技能全名 = 分发包顶层目
|
|
|
64
64
|
OUT = ROOT / 'dist' / f'{NAME}.zip'
|
|
65
65
|
MANIFEST = ROOT / 'dist' / f'{NAME}.manifest.json'
|
|
66
66
|
DESC_LIMIT = 1024
|
|
67
|
-
# 版本唯一事实源 =
|
|
68
|
-
#
|
|
67
|
+
# 版本唯一事实源 = SKILL.md frontmatter `version`(须与 package.json version 一致,见 --check 比对);
|
|
68
|
+
# 回退读 package.json。注意:layout-constants.json 的 `version` 是版式常量版本(0.1),不是技能版本,禁止用作技能版本。
|
|
69
69
|
try:
|
|
70
70
|
VERSION = str(json.loads(
|
|
71
|
-
(ROOT / '
|
|
71
|
+
(ROOT / 'package.json').read_text(encoding='utf-8')).get('version') or '0.0')
|
|
72
72
|
except (OSError, json.JSONDecodeError):
|
|
73
73
|
VERSION = '0.0'
|
|
74
74
|
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# topmind-cover · Cover Art Generation
|
|
2
|
+
|
|
3
|
+
**[中文](./README.md)** | English
|
|
4
|
+
|
|
5
|
+
A reusable skill for generating cover art for X long-form posts and WeChat articles. Goal: **striking, eye-catching, theme-focused**.
|
|
6
|
+
|
|
7
|
+
## Style gallery
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<img src="https://github.com/topmindspace/tms-skills/raw/main/topmind-cover/assets/examples/overview.png" alt="topmind-cover · 8 cover-style overview" width="960" />
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
| Style | Best for |
|
|
14
|
+
|-------|----------|
|
|
15
|
+
| Viral dry-goods `gan-huo` | Tested picks, reviews, roundups; default for first-person "I tried it all for you" posts |
|
|
16
|
+
| Giant-type manifesto `big-type` | Opinion pieces, deep essays, launch manifestos; default for one-sentence-stance pieces |
|
|
17
|
+
| Brand launch `brand-launch` | Product launches, version updates, official best practices / whitepapers; first choice when a brand is the subject |
|
|
18
|
+
| Tutorial steps `tutorial-steps` | Tutorials, onboarding guides, step-by-step walkthroughs, beginner-proof recipes |
|
|
19
|
+
| Fun IP `ip-fun` | Case studies, data recaps, retrospectives, series (part 1 / part 2) |
|
|
20
|
+
| News flash `news-flash` | News, flashes, hot-topic explainers, interview teasers, "myth-busting" angles |
|
|
21
|
+
| Minimal `minimal` | Essays, book reviews, light takes, lifestyle musings; WeChat "light reading" pieces |
|
|
22
|
+
| Editorial magazine `magazine` | In-depth interviews, profiles, business analysis, year-in-review; when "craft / trust" matters |
|
|
23
|
+
|
|
24
|
+
## Install
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx @topmindspace/tms-skills install topmind-cover
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
0. **Pick a style (3 steps, required)**: choose 1 of 8 styles from `references/cover-styles.md` by topic
|
|
33
|
+
→ check `assets/examples/<style>.png` to confirm the visual language
|
|
34
|
+
→ compose the prompt from that style's recipe (replace `{TITLE}` with the real title).
|
|
35
|
+
1. Input: article title + 3 theme keywords + platform (x / wechat / both, default both).
|
|
36
|
+
2. Generate with the agent's image-generation capability (landscape 16:9, 8% margin on all sides).
|
|
37
|
+
3. Eyeball check (required): title text correct word for word, subject complete, theme legible at a glance;
|
|
38
|
+
title text and key subject stay inside the central vertical 60% safe zone (so the 900×383 center crop never cuts the title).
|
|
39
|
+
4. Crop and save:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
python3 scripts/crop-cover.py <main-image> --out-dir <package>/images/
|
|
43
|
+
# produces 00-封面.png (1200×675) + 00-封面-公众号.png (900×383, center crop)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Style library & examples
|
|
47
|
+
|
|
48
|
+
- **Style library** `references/cover-styles.md`: 8 styles (viral dry-goods / giant-type manifesto / brand launch / tutorial steps / fun IP / news flash / minimalist / editorial magazine), each with use cases, hex palettes, font suggestions, Chinese+English prompt recipes, and pitfalls.
|
|
49
|
+
- **Example images** [assets/examples/](./assets/examples/): 17 (8 styles × 1200×675 master + 900×383 WeChat center-crop + `overview.png` 8-grid overview, ~7.5MB), shipped with the package, free to reuse or adapt (manifest + safe-zone notes + reuse terms in [assets/examples/README.md](./assets/examples/README.md)).
|
|
50
|
+
- **Safe-zone rule**: title text and key subject must stay inside the central vertical 60% safe zone (keep the top/bottom 13%+ free of title text), or the WeChat center crop will cut the title.
|
|
51
|
+
|
|
52
|
+
## Sizes
|
|
53
|
+
|
|
54
|
+
| Platform | Size | Aspect |
|
|
55
|
+
|----------|------|--------|
|
|
56
|
+
| X Article cover | 1200×675 | 16:9 (master image) |
|
|
57
|
+
| WeChat cover large image | 900×383 | 2.35:1 (center crop) |
|
|
58
|
+
|
|
59
|
+
## Design rules
|
|
60
|
+
|
|
61
|
+
One image, one theme; subject fills 40%+ of the frame; big title ≤ 10 chars, high contrast; avoid clutter, tiny dense text, and competing subjects.
|
|
62
|
+
|
|
63
|
+
## Development
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
python3 scripts/package_skill.py --check
|
|
67
|
+
python3 scripts/negative_tests.py
|
|
68
|
+
```
|