@topmindspace/tms-skills 0.3.0 → 0.3.5
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 +186 -0
- package/README.en.md +10 -70
- package/README.md +11 -69
- package/package.json +1 -1
- package/top-ppt-html/README.en.md +19 -20
- package/top-ppt-html/README.md +36 -90
- package/top-ppt-html/SKILL.md +65 -60
- package/top-ppt-html/references/charts.md +0 -15
- package/top-ppt-html/references/components.md +0 -18
- package/top-ppt-html/references/design-system.md +2 -2
- package/top-ppt-html/references/icons.md +2 -2
- package/top-ppt-html/references/infographics.md +1 -5
- package/top-ppt-html/references/modes.md +4 -4
- package/top-ppt-html/references/tech-design.md +3 -3
- package/top-ppt-html/scripts/build_examples.py +4 -4
- package/top-ppt-html/scripts/build_pptx.js +240 -59
- package/top-ppt-html/scripts/check_triggers.py +10 -2
- package/top-ppt-html/scripts/extract_model.py +16 -5
- package/top-ppt-html/scripts/gen_channel_a.js +55 -10
- package/top-ppt-html/scripts/hydrate_charts.py +68 -13
- package/top-ppt-html/scripts/negative_tests.py +1 -1
- package/top-ppt-html/scripts/prepare_images.py +1 -1
- package/top-ppt-html/scripts/recommend_layout.py +26 -3
- package/top-ppt-html/scripts/render_from_model.py +78 -13
- package/top-ppt-html/scripts/scaffold_report.py +43 -3
- package/top-ppt-html/scripts/sync_runtime.py +32 -4
- package/top-ppt-html/scripts/test_feedback_gates.py +24 -0
- package/top-ppt-html/scripts/validate_pptx.py +10 -1
- package/top-ppt-html/scripts/validate_report.py +43 -7
- package/topmind-cover/README.en.md +12 -8
- package/topmind-cover/README.md +13 -9
- package/topmind-cover/SKILL.md +33 -21
- package/topmind-cover/assets/examples/README.md +16 -19
- 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 +322 -143
- package/topmind-wechat-post/README.en.md +49 -1
- package/topmind-wechat-post/README.md +48 -2
- package/topmind-wechat-post/SKILL.md +35 -37
- package/topmind-wechat-post/references/element-spec.md +1 -1
- package/topmind-wechat-post/references/known-pits.md +2 -3
- package/topmind-wechat-post/references/typography-rules.md +1 -1
- package/topmind-wechat-post/references/workflow.md +3 -3
- package/topmind-wechat-post/references/writing-quality.md +8 -32
- package/topmind-wechat-post/scripts/md2wechat.py +125 -42
- package/topmind-wechat-post/scripts/negative_tests.py +32 -0
- package/topmind-x-article/README.en.md +40 -1
- package/topmind-x-article/README.md +42 -4
- package/topmind-x-article/SKILL.md +11 -5
- package/topmind-x-article/references/x-format.md +13 -10
- package/topmind-x-article/scripts/md2x.py +220 -40
- package/topmind-cover/assets/examples/big-poster-wechat.png +0 -0
- package/topmind-cover/assets/examples/big-poster.png +0 -0
- package/topmind-cover/assets/examples/cyber-glitch-wechat.png +0 -0
- package/topmind-cover/assets/examples/cyber-glitch.png +0 -0
- package/topmind-cover/assets/examples/guochao-wechat.png +0 -0
- package/topmind-cover/assets/examples/guochao.png +0 -0
- package/topmind-cover/assets/examples/tech-future-wechat.png +0 -0
- package/topmind-cover/assets/examples/tech-future.png +0 -0
|
@@ -28,6 +28,7 @@ research / architecture 仍须显式传 --layout-qa(不强制)。
|
|
|
28
28
|
import sys
|
|
29
29
|
import re
|
|
30
30
|
import json
|
|
31
|
+
import base64
|
|
31
32
|
import hashlib
|
|
32
33
|
from typing import Optional
|
|
33
34
|
from html.parser import HTMLParser
|
|
@@ -914,7 +915,11 @@ def _check_v9_hard_gates(txt, chk, model):
|
|
|
914
915
|
ctype = 'donut'
|
|
915
916
|
if ctype not in skew_types:
|
|
916
917
|
continue
|
|
917
|
-
|
|
918
|
+
try:
|
|
919
|
+
vals = [float(v) for v in (ch.get('values') or []) if v is not None]
|
|
920
|
+
except (TypeError, ValueError):
|
|
921
|
+
skew_hits.append(f"第{si}章 {ctype} values 含非数值(图表数据非法,无法判定占比)")
|
|
922
|
+
continue
|
|
918
923
|
vals = [v for v in vals if v >= 0]
|
|
919
924
|
if len(vals) < 2:
|
|
920
925
|
continue
|
|
@@ -1194,6 +1199,28 @@ def _img_srcs(img):
|
|
|
1194
1199
|
return srcs
|
|
1195
1200
|
|
|
1196
1201
|
|
|
1202
|
+
def _img_alt_ok(tag: str) -> bool:
|
|
1203
|
+
"""alt 存在且非空(alt="" 视为缺失)。"""
|
|
1204
|
+
m = re.search(r'alt\s*=\s*("([^"]*)"|\'([^\']*)\')', tag)
|
|
1205
|
+
if not m:
|
|
1206
|
+
return False
|
|
1207
|
+
val = m.group(2) if m.group(2) is not None else m.group(3)
|
|
1208
|
+
return bool(val and val.strip())
|
|
1209
|
+
|
|
1210
|
+
|
|
1211
|
+
def _data_uri_bytes(tag: str):
|
|
1212
|
+
"""解码 data: URI 的实际字节数;非 base64 或解码失败时回落为载荷字符数。"""
|
|
1213
|
+
m = (re.search(r'src\s*=\s*"data:[^"\',]*,([^"]*)"', tag)
|
|
1214
|
+
or re.search(r"src\s*=\s*'data:[^\"\',]*,([^']*)'", tag))
|
|
1215
|
+
if not m:
|
|
1216
|
+
return None
|
|
1217
|
+
payload = re.sub(r'\s', '', m.group(1))
|
|
1218
|
+
try:
|
|
1219
|
+
return len(base64.b64decode(payload))
|
|
1220
|
+
except Exception:
|
|
1221
|
+
return len(payload)
|
|
1222
|
+
|
|
1223
|
+
|
|
1197
1224
|
def _check_media(txt, chk, model):
|
|
1198
1225
|
"""素材图片与配图占位:零外链铁律(<img> 只允许 data: 内联或相对路径);
|
|
1199
1226
|
alt 可访问性;配图占位必须有可见标签;模型 image 三选一(src/items/placeholder)
|
|
@@ -1203,13 +1230,15 @@ def _check_media(txt, chk, model):
|
|
|
1203
1230
|
bad = [t for t in imgs if re.search(r'src\s*=\s*["\']\s*(?:https?:)?//', t)]
|
|
1204
1231
|
chk("图片源无外链(data: 内联或相对路径,零外链铁律)", not bad,
|
|
1205
1232
|
f"{len(bad)} 处外链图片" if bad else "")
|
|
1206
|
-
noalt = [t for t in imgs if
|
|
1233
|
+
noalt = [t for t in imgs if not _img_alt_ok(t)]
|
|
1207
1234
|
chk("图片均带 alt(可访问性)", not noalt,
|
|
1208
|
-
f"{len(noalt)} 处缺 alt" if noalt else "", level="WARN")
|
|
1235
|
+
f"{len(noalt)} 处缺 alt(含空 alt)" if noalt else "", level="WARN")
|
|
1209
1236
|
data_imgs = [t for t in imgs if re.search(r'src\s*=\s*["\']\s*data:', t)]
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1237
|
+
data_sizes = [(_data_uri_bytes(t), t) for t in data_imgs]
|
|
1238
|
+
max_bytes = max((b or 0 for b, _ in data_sizes), default=0)
|
|
1239
|
+
inline_bytes = sum(b if b is not None else len(t) for b, t in data_sizes)
|
|
1240
|
+
chk("单图 data: 内联体积在上限内", all((b or 0) <= IMAGE_MAX_INLINE for b, _ in data_sizes),
|
|
1241
|
+
f"最大 {max_bytes // 1024}KB > 上限 {IMAGE_MAX_INLINE // 1024}KB(按解码后字节计)",
|
|
1213
1242
|
level="WARN")
|
|
1214
1243
|
chk("报告内联图片总量在上限内", inline_bytes <= IMAGE_MAX_TOTAL,
|
|
1215
1244
|
f"{inline_bytes // 1024}KB > 上限 {IMAGE_MAX_TOTAL // 1024}KB(改用相对路径)",
|
|
@@ -1610,7 +1639,14 @@ def main():
|
|
|
1610
1639
|
if not path.exists():
|
|
1611
1640
|
print(f"文件不存在: {path}")
|
|
1612
1641
|
return 2
|
|
1613
|
-
|
|
1642
|
+
try:
|
|
1643
|
+
txt = path.read_text(encoding='utf-8')
|
|
1644
|
+
except UnicodeDecodeError as e:
|
|
1645
|
+
print(f"文件不是合法 UTF-8: {path}({e})")
|
|
1646
|
+
return 2
|
|
1647
|
+
except OSError as e:
|
|
1648
|
+
print(f"无法读取文件: {path}({e})")
|
|
1649
|
+
return 2
|
|
1614
1650
|
|
|
1615
1651
|
v = Struct()
|
|
1616
1652
|
v.feed(txt)
|
|
@@ -4,6 +4,16 @@
|
|
|
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.1.0** (same tag as `@topmindspace/tms-skills@0.3.5`)
|
|
8
|
+
|
|
9
|
+
## Style gallery
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
<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" />
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
8 styles (viral dry-goods / giant-type manifesto / brand launch / tutorial steps / fun IP / news flash / minimalist / editorial magazine): use cases, palette stories, abstract design principles, and Chinese+English prompt recipes in [`references/cover-styles.md`](./references/cover-styles.md); full-size per-style shots in [`assets/examples/`](./assets/examples/).
|
|
16
|
+
|
|
7
17
|
## Install
|
|
8
18
|
|
|
9
19
|
```bash
|
|
@@ -12,7 +22,7 @@ npx @topmindspace/tms-skills install topmind-cover
|
|
|
12
22
|
|
|
13
23
|
## Usage
|
|
14
24
|
|
|
15
|
-
0. **Pick a style (3 steps, required)**: choose 1 of
|
|
25
|
+
0. **Pick a style (3 steps, required)**: choose 1 of 8 styles from `references/cover-styles.md` by topic
|
|
16
26
|
→ check `assets/examples/<style>.png` to confirm the visual language
|
|
17
27
|
→ compose the prompt from that style's recipe (replace `{TITLE}` with the real title).
|
|
18
28
|
1. Input: article title + 3 theme keywords + platform (x / wechat / both, default both).
|
|
@@ -26,12 +36,6 @@ python3 scripts/crop-cover.py <main-image> --out-dir <package>/images/
|
|
|
26
36
|
# produces 00-封面.png (1200×675) + 00-封面-公众号.png (900×383, center crop)
|
|
27
37
|
```
|
|
28
38
|
|
|
29
|
-
## Style library & examples
|
|
30
|
-
|
|
31
|
-
- **Style library** `references/cover-styles.md`: 6 styles (bold poster / futuristic tech / editorial magazine / minimalist / guochao illustration / cyber glitch art), each with use cases, hex palettes, font suggestions, Chinese+English prompt recipes, and pitfalls.
|
|
32
|
-
- **Example images** [assets/examples/](./assets/examples/): 12 (6 styles × 1200×675 master + 900×383 WeChat center-crop, ~6.4MB), shipped with the package, free to reuse or adapt (manifest + safe-zone notes + reuse terms in [assets/examples/README.md](./assets/examples/README.md)).
|
|
33
|
-
- **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.
|
|
34
|
-
|
|
35
39
|
## Sizes
|
|
36
40
|
|
|
37
41
|
| Platform | Size | Aspect |
|
|
@@ -41,7 +45,7 @@ python3 scripts/crop-cover.py <main-image> --out-dir <package>/images/
|
|
|
41
45
|
|
|
42
46
|
## Design rules
|
|
43
47
|
|
|
44
|
-
One image, one theme; subject fills 40%+ of the frame; big title ≤ 10 chars, high contrast; avoid clutter, tiny dense text, and competing subjects.
|
|
48
|
+
One image, one theme; subject fills 40%+ of the frame; big title ≤ 10 chars, high contrast; avoid clutter, tiny dense text, and competing subjects. **Safe-zone rule**: title text and key subject must stay inside the central vertical 60% safe zone.
|
|
45
49
|
|
|
46
50
|
## Development
|
|
47
51
|
|
package/topmind-cover/README.md
CHANGED
|
@@ -4,6 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
为 X 长文和公众号文章生成封面图的可复用技能。目标:**震撼、醒目、主题突出**。
|
|
6
6
|
|
|
7
|
+
- 版本:**v0.1.0**(与 `@topmindspace/tms-skills@0.3.5` 同 tag)
|
|
8
|
+
|
|
9
|
+
## 风格样张
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
<img src="https://github.com/topmindspace/tms-skills/raw/main/topmind-cover/assets/examples/overview.png" alt="topmind-cover · 8 封面风格总览" width="960" />
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
8 种风格(爆款干货 / 巨字宣言 / 品牌发布 / 教程步骤 / IP 趣味 / 资讯快报 / 极简留白 / 杂志编辑):适用场景、配色故事、抽象设计原则、中英 prompt 配方见 [`references/cover-styles.md`](./references/cover-styles.md);单风格大图在 [`assets/examples/`](./assets/examples/)。
|
|
16
|
+
|
|
7
17
|
## 安装
|
|
8
18
|
|
|
9
19
|
```bash
|
|
@@ -12,8 +22,8 @@ npx @topmindspace/tms-skills install topmind-cover
|
|
|
12
22
|
|
|
13
23
|
## 用法
|
|
14
24
|
|
|
15
|
-
0. **选风格(三步,必做)**:按题材从 `references/cover-styles.md` 选 1 种风格(
|
|
16
|
-
→ 看 `assets/examples/<风格>.png`
|
|
25
|
+
0. **选风格(三步,必做)**:按题材从 `references/cover-styles.md` 选 1 种风格(8 选 1)
|
|
26
|
+
→ 看 `assets/examples/<风格>.png` 示例图确认视觉语言
|
|
17
27
|
→ 按该风格的 prompt 配方组 prompt(把 `{TITLE}` 换成实际标题)。
|
|
18
28
|
1. 输入文章标题 + 3 个主题关键词 + 平台(x / wechat / both,默认 both)。
|
|
19
29
|
2. 用 agent 的图片生成能力出图(横构图 16:9,四周留白 8%)。
|
|
@@ -26,12 +36,6 @@ python3 scripts/crop-cover.py <主图> --out-dir <包>/images/
|
|
|
26
36
|
# 产出 00-封面.png (1200×675) + 00-封面-公众号.png (900×383,中央裁剪)
|
|
27
37
|
```
|
|
28
38
|
|
|
29
|
-
## 风格库与示例图
|
|
30
|
-
|
|
31
|
-
- **风格库** `references/cover-styles.md`:6 种风格(震撼大字报 / 科技未来感 / 杂志编辑风 / 极简留白 / 国潮插画 / 赛博故障艺术),每种含适用场景、配色 hex、字体建议、中英 prompt 配方、避坑。
|
|
32
|
-
- **示例图** [assets/examples/](./assets/examples/):12 张(6 风格 × 1200×675 主图 + 900×383 公众号中央裁剪版,约 6.4MB),随包发布,可直接拿去用/改(清单 + 安全区说明 + 复用声明见 [assets/examples/README.md](./assets/examples/README.md))。
|
|
33
|
-
- **安全区铁律**:标题字与关键主体必须落在画面中央垂直 60% 安全区内(上下各预留 13%+ 不放标题字),否则公众号中央裁剪会切掉标题。
|
|
34
|
-
|
|
35
39
|
## 尺寸
|
|
36
40
|
|
|
37
41
|
| 平台 | 尺寸 | 比例 |
|
|
@@ -41,7 +45,7 @@ python3 scripts/crop-cover.py <主图> --out-dir <包>/images/
|
|
|
41
45
|
|
|
42
46
|
## 设计铁律
|
|
43
47
|
|
|
44
|
-
一图一主题;主体占画面 40%+;大标题 ≤10
|
|
48
|
+
一图一主题;主体占画面 40%+;大标题 ≤10 字高对比;忌元素堆砌、小字密排、多主体打架。**安全区铁律**:标题字与关键主体必须落在画面中央垂直 60% 安全区内。
|
|
45
49
|
|
|
46
50
|
## 开发
|
|
47
51
|
|
package/topmind-cover/SKILL.md
CHANGED
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: topmind-cover
|
|
3
3
|
version: 0.1.0
|
|
4
|
-
description: "文章封面配图生成:X 长文与公众号共用。震撼、醒目、主题突出;平台尺寸规范、风格模板、命名落盘、成图检查全流程覆盖。Use when
|
|
4
|
+
description: "文章封面配图生成:X 长文与公众号共用。震撼、醒目、主题突出;平台尺寸规范、风格模板、命名落盘、成图检查全流程覆盖。Use when 文章封面、封面图、头图、题图、cover。Do NOT use for 正文插图、PPT/报告封面。"
|
|
5
5
|
action_category: write
|
|
6
6
|
triggers:
|
|
7
7
|
- 封面
|
|
8
8
|
- 封面图
|
|
9
9
|
- 头图
|
|
10
|
+
- 题图
|
|
11
|
+
- 首图
|
|
10
12
|
- 配图
|
|
11
13
|
- 缩略图
|
|
14
|
+
- banner
|
|
12
15
|
- cover
|
|
13
16
|
- thumbnail
|
|
14
17
|
triggers_cn:
|
|
15
18
|
- 公众号封面
|
|
19
|
+
- 公众号题图
|
|
16
20
|
- X 封面
|
|
21
|
+
- X 首图
|
|
17
22
|
- 文章封面
|
|
18
23
|
author: TopMindspace
|
|
19
24
|
license: MIT
|
|
@@ -23,12 +28,31 @@ updated: 2026-09-29
|
|
|
23
28
|
|
|
24
29
|
# topmind-cover · 封面配图生成
|
|
25
30
|
|
|
26
|
-
为 X
|
|
31
|
+
为 X 长文和公众号文章生成封面图。目标:**震撼、醒目、主题突出**。
|
|
27
32
|
|
|
28
33
|
```
|
|
29
34
|
标题/主题 → 风格模板 → 生成 → 检查 → 裁剪双尺寸 → 落盘命名
|
|
30
35
|
```
|
|
31
36
|
|
|
37
|
+
## 风格索引
|
|
38
|
+
|
|
39
|
+
风格总览图见 `assets/examples/overview.png`(8 宫格,离线可看)。
|
|
40
|
+
|
|
41
|
+
| 风格 | 首选题材 |
|
|
42
|
+
|------|----------|
|
|
43
|
+
| 爆款干货 `gan-huo` | 干货清单、评测、盘点、实测筛选 |
|
|
44
|
+
| 巨字宣言 `big-type` | 观点评论、深度长文、发布宣言 |
|
|
45
|
+
| 品牌发布 `brand-launch` | 产品发布、版本更新、官方白皮书 |
|
|
46
|
+
| 教程步骤 `tutorial-steps` | 教程、上手指南、分步实操 |
|
|
47
|
+
| IP 趣味 `ip-fun` | 实战案例、数据战报、复盘、连载 |
|
|
48
|
+
| 资讯快报 `news-flash` | 资讯快讯、热点解读、揭秘类选题 |
|
|
49
|
+
| 极简留白 `minimal` | 随笔、书评、轻观点 |
|
|
50
|
+
| 杂志编辑 `magazine` | 深度访谈、人物特写、商业分析 |
|
|
51
|
+
|
|
52
|
+
适用场景细则、配色故事、prompt 配方见 `references/cover-styles.md`;单风格大图 `assets/examples/<style>.png`。
|
|
53
|
+
|
|
54
|
+
> 示例图为原创演示:只学设计原则,不临摹第三方版式(详见 `references/cover-styles.md` 顶部"原创铁律")。
|
|
55
|
+
|
|
32
56
|
## 尺寸表
|
|
33
57
|
|
|
34
58
|
| 平台 | 尺寸 | 比例 | 备注 |
|
|
@@ -40,29 +64,18 @@ updated: 2026-09-29
|
|
|
40
64
|
|
|
41
65
|
## 工作流
|
|
42
66
|
|
|
43
|
-
0.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
③ 按该风格的 prompt 配方组 prompt(把 `{TITLE}` 换成实际标题)。
|
|
47
|
-
示例清单见 `assets/examples/README.md`。
|
|
48
|
-
1. **输入**:文章标题、3 个主题关键词、平台(`x` / `wechat` / `both`,默认 both)、
|
|
49
|
-
风格(默认按题材自动选,见 `references/cover-styles.md`)。
|
|
50
|
-
平台只影响生成 prompt 的侧重;裁剪落盘永远产出双尺寸。
|
|
51
|
-
2. **组 prompt**:按 `references/cover-styles.md` 对应风格的配方组装
|
|
52
|
-
(标题 ≤10 字逐字写明,防 AI 自造错别字)。
|
|
67
|
+
0. **选风格(三步,必做)**:① 按题材从 `references/cover-styles.md` 选 1 种(8 选 1)→ ② 看 `assets/examples/<style>.png` 确认视觉语言 → ③ 按该风格配方组 prompt(`{TITLE}` 换实际标题)。
|
|
68
|
+
1. **输入**:文章标题、3 个主题关键词、平台(`x` / `wechat` / `both`,默认 both,平台只影响 prompt 侧重;裁剪落盘永远产出双尺寸)。
|
|
69
|
+
2. **组 prompt**:按风格配方组装(标题 ≤10 字逐字写明,防 AI 自造错别字)。
|
|
53
70
|
3. **生成**:`media.generate_image`,`name` 用 `<slug>-cover`。
|
|
54
|
-
4.
|
|
55
|
-
- 标题字逐字正确,无错别字、无多字少字
|
|
56
|
-
- 主体完整不被裁切,画面不杂乱
|
|
57
|
-
- 一眼能说出主题;说不出就重生成
|
|
58
|
-
- 900×383 版复查:标题字、关键主体不被中央裁剪裁掉(见风格库"安全区铁律")
|
|
71
|
+
4. **检查**(必做,肉眼看一遍):标题字逐字正确无错别字;主体完整不杂乱;一眼能说出主题;900×383 版标题字与关键主体不被中央裁剪裁掉(风格库"安全区铁律")。
|
|
59
72
|
5. **裁剪落盘**:
|
|
60
73
|
```bash
|
|
61
74
|
python3 scripts/crop-cover.py <主图> --out-dir <包>/images/
|
|
62
75
|
```
|
|
63
76
|
产出 `00-封面.png`(1200×675,X/公众号共用主文件)与 `00-封面-公众号.png`(900×383)。
|
|
64
77
|
公众号包规约:正文引用 `images/00-封面.png`,`图片上传清单.md` 登记两版。
|
|
65
|
-
6.
|
|
78
|
+
6. **系列感**:同一系列固定色系 + 版式语言,prompt 复用同一风格模板。
|
|
66
79
|
|
|
67
80
|
## 设计铁律
|
|
68
81
|
|
|
@@ -73,9 +86,8 @@ updated: 2026-09-29
|
|
|
73
86
|
|
|
74
87
|
## 外部依赖 / 规约来源
|
|
75
88
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
不阻塞核心流程。
|
|
89
|
+
"公众号包规约"(正文引用 `images/00-封面.png`、`图片上传清单.md` 登记两版)来自用户侧
|
|
90
|
+
workbuddy 环境,仓库内无此文件;缺失时仍按固定命名落盘,不阻塞核心流程。
|
|
79
91
|
|
|
80
92
|
## When NOT to use
|
|
81
93
|
|
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
# 封面风格示例图
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
8 种风格 × 2 种尺寸 = 16 张示例(随 npm 包发布,npx 安装即得),
|
|
4
|
+
另附 `overview.png`(8 宫格总览,2260×806)。
|
|
4
5
|
|
|
5
6
|
- `<style>.png`(1200×675,X 长文封面 / 公众号共用主尺寸)
|
|
6
|
-
- `<style>-wechat.png`(900×383
|
|
7
|
+
- `<style>-wechat.png`(900×383,公众号封面大图,中央裁剪版)
|
|
8
|
+
- `overview.png`(8 宫格总览:2 行 × 4 列缩略图 + 风格名标注,选风格时先看它)
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
| `tech-future.png` / `tech-future-wechat.png` | 科技未来感 | AI/大模型/智能体/前沿技术题材,X 长文科技类默认风格 |
|
|
12
|
-
| `magazine.png` / `magazine-wechat.png` | 杂志编辑风 | 深度访谈、人物特写、商业分析,需要质感与信任感时用它 |
|
|
13
|
-
| `minimal.png` / `minimal-wechat.png` | 极简留白 | 随笔、书评、轻观点,给版面"呼吸感"的穿插封面 |
|
|
14
|
-
| `guochao.png` / `guochao-wechat.png` | 国潮插画 | 传统文化、历史、节气、非遗、国货品牌,节日特辑首选 |
|
|
15
|
-
| `cyber-glitch.png` / `cyber-glitch-wechat.png` | 赛博故障艺术 | 网络文化、赛博朋克、前沿实验,年轻化/亚文化话题 |
|
|
10
|
+
8 种风格(爆款干货 `gan-huo` / 巨字宣言 `big-type` / 品牌发布 `brand-launch` / 教程步骤
|
|
11
|
+
`tutorial-steps` / IP 趣味 `ip-fun` / 资讯快报 `news-flash` / 极简留白 `minimal` /
|
|
12
|
+
杂志编辑 `magazine`):适用场景索引与配方见 `../references/cover-styles.md`。
|
|
16
13
|
|
|
17
|
-
|
|
14
|
+
## 原创与虚构声明(重要)
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
本目录 16 张示例图均为**原创设计**(只演示抽象设计原则,不临摹任何第三方封面的
|
|
17
|
+
版式与配色;复用本库设计时亦不得与第三方封面构成实质相似——只学原则,不学版式)。
|
|
18
|
+
图中标题文案、数字、品牌名、署名均为**虚构演示内容**(如"深蓝 OS 2.0"、
|
|
19
|
+
"@阿狐画画")——直接复用前请换成自己的真实标题;凡封面上的数字必须在正文中有
|
|
20
|
+
出处,严禁编造数据。
|
|
24
21
|
|
|
25
22
|
## 复用声明
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
**示例图可直接拿去用/改,作封面底图或风格参考。**拿去用时按 `scripts/crop-cover.py`
|
|
25
|
+
的流程重新裁剪双尺寸并按包规约命名落盘;改图时保留原风格的配色与版式语言,
|
|
26
|
+
只换主体与标题字,以维持系列感。
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|