v0.13 baseline · git 初始化 + 仓库瘦身
把所有本地 demo / 测试 / 上传图 / 调试脚本搬入 local-tests/,写 .gitignore 忽略整个测试目录与 node_modules/。本次起 skill 仓库 只跟踪:SKILL.md / HANDOFF.md / PRODUCT.md / assets/(3 模板)/ references/(15 规则文档)/ agents/openai.yaml / validate-social-deck.mjs / package.json + lock。 历次版本(v0.1-v0.12)的全部实质改动已包含在当前文件状态中—— HANDOFF.md 的版本历史段保留作为时间轴文字记录,但代码层面以 此 commit 为唯一基线,后续逐次 commit 对应 HANDOFF.md 新增段落。 HANDOFF/PRODUCT/category-cookbook/components/style-system 中的 demo 路径引用已加 local-tests/ 前缀。SKILL.md Step 5 line 190 的 'social-card-<slug>/' 是下游用户工作区的命名约定,未改动。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
commit
82d221bb90
26 files changed
+6329
No files matched your search
+370
@@ -0,0 +1,370 @@
|
||||
# Handoff — guizang-social-card-skill
|
||||
|
||||
最后更新:2026-05-27 · 版本:v0.13(git 初始化 + 仓库瘦身:本地测试归集到 `local-tests/` 并 gitignore)
|
||||
|
||||
这份文档只记录**事实**:当前 skill 由哪些文件组成、每个文件管什么、本轮更新改了什么、怎么验证它还能跑。想读"为什么这样做"或"未来要怎么走",去看 `PRODUCT.md`。
|
||||
|
||||
> **v0.13 路径约定**:本文件 v0.12 及更早版本历史段落里的 `demo-*` / `social-card-*` / `smoke-*` / `test-*` 目录已统一搬入 `local-tests/`。读历史时请在脑中前缀 `local-tests/`。
|
||||
|
||||
---
|
||||
|
||||
## 1. 目录结构(事实版)
|
||||
|
||||
```
|
||||
guizang-social-card-skill/
|
||||
├── SKILL.md # 266 行 · 7 步工作流入口
|
||||
├── HANDOFF.md # 本文件
|
||||
├── PRODUCT.md # 产品思考
|
||||
├── assets/
|
||||
│ ├── template-editorial-card.html # 585 行 · 杂志风种子
|
||||
│ ├── template-swiss-card.html # 740 行 · 瑞士风种子(v0.6 已硬化)
|
||||
│ └── magazine-bg-webgl.js # WebGL 墨流背景
|
||||
├── references/ # 12 份子规范,按需读取
|
||||
│ ├── platform-specs.md (122) 平台 × 分辨率 × 命名
|
||||
│ ├── style-system.md (182) 两种风格的硬规则与反模式
|
||||
│ ├── theme-presets.md (212) 6 套杂志 palette(含 1 套暗色 Midnight Ink)+ 4 套 Swiss accent
|
||||
│ ├── layout-recipes.md (667) 27 个版式骨架(M01-M15 + S01-S12)
|
||||
│ ├── components.md (226) 字体 / 卡片 / 间距 / 图标 / 标题字数表
|
||||
│ ├── background-systems.md (108) 墨流 / 网格 / 纸纹层
|
||||
│ ├── portrait-fill.md (85) 3:4 板的留白对策
|
||||
│ ├── content-planning.md (138) 钩子 / 拆页 / 文案压缩
|
||||
│ ├── production-workflow.md (172) 渲染管线与命令
|
||||
│ ├── image-overlay.md (150) 文字压图:蒙版 + 主体映射
|
||||
│ ├── category-cookbook.md (232) 小红书 11 个品类的版式路由
|
||||
│ └── qa-checklist.md (67) 交付前 checklist
|
||||
├── agents/
|
||||
│ └── openai.yaml # 子代理配置(备用)
|
||||
├── validate-social-deck.mjs # 6 条规则的渲染后校验器
|
||||
├── package.json / package-lock.json / node_modules # 仅 playwright
|
||||
├── .gitignore # v0.13 新增
|
||||
└── local-tests/ # 本地测试与素材(git 忽略,不随 skill 分发)
|
||||
├── demo-* # 各次设计案例(kyoto / yading / wukong / kit-* / zzz-* / m16-camping / eyeliner / showcase / smoke-editorial-travel / map-component / screenshot-treatment / multi-platform)
|
||||
├── social-card-* # 历史与 Codex 外部测试产物(含 codex-remote-* / wukong-breakout / kyoto-guide / moon-eyes-lip-mud)
|
||||
├── smoke-ai-tools/ # v0.6 冒烟测试样例
|
||||
├── test-dark-theme-elden-ring/ # v0.12 Midnight Ink 验证
|
||||
├── Image/ # 用户上传的测试图
|
||||
├── 全图封面参考/ # v0.10 杂志封面参考图
|
||||
├── .codepilot-uploads/ # 历史上传缓存
|
||||
└── *.cjs # 旧的 debug / probe / render 脚本
|
||||
```
|
||||
|
||||
v0.13 起:git 仓库。`local-tests/` 整目录在 `.gitignore` 中,commit 只跟踪 skill 内容。
|
||||
|
||||
---
|
||||
|
||||
## 2. 数据规模与覆盖面
|
||||
|
||||
| 维度 | 数量 |
|
||||
| --- | --- |
|
||||
| 工作流步骤 | 7 步(Intake → Extract → Style → Plan → Seed → Build → Image → Deliver) |
|
||||
| 风格模式 | 2 个(Editorial Magazine × E-ink / Swiss International) |
|
||||
| 主题色 | Editorial 6 套(5 浅 + 1 暗 Midnight Ink)+ Swiss 4 套 = 10 套 |
|
||||
| 版式骨架 | Editorial 16 个(M01-M16)+ Swiss 12 个(S01-S12)= 28 个 |
|
||||
| 平台 × 比例 | 小红书 3:4 / 1:1,微信 21:9 + 1:1 配对,方封面 1:1 |
|
||||
| 小红书品类覆盖 | 11 个品类中 7 个完整支持,4 个需用户提供素材,4 个明确不接 |
|
||||
| 种子模板 | 2 份(Editorial / Swiss),单文件即含全部 class 与字体 |
|
||||
| 已交付案例 | 7 个 demo(2 个 image-cover + 5 个 kit) |
|
||||
|
||||
---
|
||||
|
||||
## 3. 版本历史
|
||||
|
||||
仅记录"什么时候新增/变更了哪些可见资产",不记录文风调整。
|
||||
|
||||
### v0.13 · 2026-05-27(本轮)
|
||||
|
||||
主题:**git 初始化 + 仓库瘦身**。把所有本地测试 / demo / 上传图 / 旧脚本统一搬到 `local-tests/`,写 `.gitignore` 忽略整个测试目录与 `node_modules/`。skill 本身只保留:`SKILL.md` / `HANDOFF.md` / `PRODUCT.md` / `assets/` / `references/` / `agents/` / `validate-social-deck.mjs` / `package.json` 与锁文件。
|
||||
|
||||
**改动事实**:
|
||||
- 新建 `local-tests/`,搬入 28 个测试目录(demo-* 16 个 / social-card-* 6 个 / smoke-* 1 个 / test-* 1 个 / Image / 全图封面参考 / .codepilot-uploads)以及 3 个旧脚本(`render.cjs` / `debug-bg.cjs` / `probe-webgl.cjs`)
|
||||
- 新增 `.gitignore`:忽略 `local-tests/` / `node_modules/` / `.DS_Store` / `*.log` / `.vscode/` / `.idea/`
|
||||
- `HANDOFF.md` 目录结构段同步更新,列入 `local-tests/` 子目录视图
|
||||
- skill 自身文件结构未变,模板与规则文档一律未改
|
||||
|
||||
**重要约定**:`local-tests/` 不进 git,不分发,不放入 skill 包。`demo-showcase/editorial.html` 和 `demo-showcase/swiss.html` 仍然是字号/字距/版式还原的 source-of-truth——它们移到了 `local-tests/demo-showcase/`,路径变了但作用未变。所有后续 demo / 冒烟测试都应在 `local-tests/` 下新建子目录。
|
||||
|
||||
### v0.12 · 2026-05-27(上一轮)
|
||||
|
||||
主题:**Editorial 美学回退 + 第 6 个杂志主题 Midnight Ink + 图片裁切策略 + 交付工作流调整**。本轮起因是用户对 v0.11 冒烟测试的"质量回退"反馈——v0.10/v0.11 在把 showcase 模板化进 seed 的过程中,把 Editorial 的字重/字距/正文字族无意中改成了"信息图横幅"风(900 字重 / 负字距 / sans 正文),与 `demo-showcase/editorial.html` 的"克制磁带感"完全偏离。同时 Codex 外部测试 `social-card-wukong-breakout` 暴露了缺暗色主题、自造 `wukong-night` 不合规的问题。
|
||||
|
||||
**新增**
|
||||
- `assets/template-editorial-card.html` 增加 `[data-theme="midnight-ink"]` 暗色 palette + 三段必随覆盖(`.grain` 翻成 screen-mode 暖光斑 / `.paper-wash` 改成金辉 + 阴影 vignette / `.frame-img` 加深底色 + 1px 暖边)。Editorial palette 从 5 套变 6 套。
|
||||
- `references/theme-presets.md` 增 **Midnight Ink** 段,含色值 + 必随覆盖代码 + 使用场景(游戏 key art / 夜景 / 影调封面)。明确"暗色 Editorial 只有这一套,不要自造第二套"。
|
||||
- `test-dark-theme-elden-ring/` — Midnight Ink 验证 deck(4 张 1080×1440,《艾尔登法环》新手指南)。图源 Steam 官方 8 张截图,记录在 `assets/`。验证 P1 全幅 hero-bleed + 黄金 accent、P2 M14 pipeline 4 步 + 21:9 atmosphere、P3 M07 ledger 4 行 + 战斗 atmosphere、P4 quote-card + 4:3 静态时刻。
|
||||
|
||||
**修改:Editorial 美学回退(核心)**
|
||||
- `assets/template-editorial-card.html` 全部 Editorial 排版默认值恢复 showcase 美学:
|
||||
- `.h-display` 124px **weight 500** letter-spacing **+.04em**(v0.10/v0.11 误改为 900 / −.01em)
|
||||
- `.h-xl` 88px weight 500 +.03em(曾经 700 / −.01em)
|
||||
- `.h-md` 56px weight 500 +.02em
|
||||
- `.lead` 28px **font-family: var(--serif-zh)**(曾经被切到 sans-zh,是塌掉杂志感的主因)
|
||||
- `.body` 24px serif-zh(同上)
|
||||
- `.kicker` 21px letter-spacing **+.22em**
|
||||
- `.meta` / `.label` 18px +.20em
|
||||
- `.ledger-row .ledger-title` 42px weight 500,`.ledger-note` 22px serif-zh
|
||||
- `.pipeline-v .step-title` 40px weight 500,`.step-desc` 24px serif-zh
|
||||
- `references/components.md` Editorial 字号表完整改写为上述值,加一段 **Restored 2026-05-27** 警示,写明"v0.10/v0.11 错改值是什么,为何会塌掉,showcase 是 source-of-truth"。
|
||||
- `references/style-system.md` Mode A 加 **Typography stance — "the larger, the lighter"** 段:Editorial display 必须 500、serif body、宽字距;反模式(700-900 + sans + 负字距)= "infographic banner" 塌方。
|
||||
|
||||
**修改:图片裁切策略**
|
||||
- `assets/template-editorial-card.html` `.frame-img img` 默认 `object-position` 从 `center top` 改为 `center 50%`。Editorial 之前的 `center top` 是默认值意外,导致竖图主体被切掉;showcase 实际上是逐图 inline 覆盖。
|
||||
- `references/components.md` Image Containers 段加 **主体感知裁切表**(主体位置 → object-position 取值)+ 硬规则"每张图都要 inline 写 object-position,默认值是 fallback 不是推荐"。
|
||||
- `SKILL.md` Step 6 Image and Screenshot Handling **Crop discipline** 改写为强制每张图 inline 写 `object-position`,带具体取值示例(`center 25%` 天空多 / `center 50%` 居中 / `center 62%` 半身 / `center 70%` 前景物)。
|
||||
|
||||
**修改:交付工作流("show user first, ask before validating")**
|
||||
- `SKILL.md` Step 7 Deliver 重写:
|
||||
- 默认 **不再** 渲完自动跑 validator。
|
||||
- 渲完先把图给用户看,问一句"先你自己看,还是我先自动核查一遍?"。
|
||||
- 用户说"自己看"→ 停下来等反馈;说"你查吧"→ 才跑 `validate-social-deck.mjs`。
|
||||
- 起因:用户反馈每次渲完自动跑 validator 让交付窗口变得很长,用户大多数时候眼睛比脚本更快。
|
||||
- 代价:自动校验的"安全网"被撤掉一格——但脚本仍然可用、用户随时可调。
|
||||
|
||||
**修改:已有 demo 同步**
|
||||
- `demo-kyoto-trip/index.html` — 字号回退到 showcase 值,P4 ledger 去掉 03(岚山)解决 3:4 溢出,title 改"四条建议"。
|
||||
- `demo-smoke-editorial-travel/index.html` — 字号回退到 showcase 值。P1 hero 从 `r-16x10` 改 `r-3x2` + `object-position:center 62%`(hero-grassland 主体在画面中下)。P5 camp-tarp 加 `center 55%`。两份 demo 都 4-5 张 1080×1440 重渲过,无溢出。
|
||||
|
||||
**Codex `social-card-wukong-breakout` 诊断**
|
||||
- 状态:未由本 skill 修复。Codex 在 v0.11 规则下做的测试。
|
||||
- 根因:Codex 实际**遵守**了规则——错的是规则本身。`components.md` 当时还在写 900/700/sans-body 默认值,Codex 照搬出来必然塌;Codex 自造的 `wukong-night` 是"规则没暗色"的合理外推。
|
||||
- 修复路径:v0.12 已落地 Midnight Ink 官方暗色 + 美学回退;后续 Codex 任务直接 `data-theme="midnight-ink"` 即可,无需自造。
|
||||
|
||||
**未做**
|
||||
1. 截图美化资产 port(仍在短期清单)
|
||||
2. 地图组件(同上)
|
||||
3. 1:1 短标题生成器(同上)
|
||||
4. 多平台一次出包(同上)
|
||||
5. `social-card-wukong-breakout` 未重新生成——v0.12 是规则修复,不回灌历史 Codex 测试
|
||||
|
||||
### v0.11 · 2026-05-27
|
||||
|
||||
主题:**短期规划 Phase A 收口 — validator + Editorial 冒烟测试**。短期规划 6 件事完成第 1、2 件,把 v0.10 留下的 Editorial 长内容欠债(M11/M14 在 3:4 上从未单独验证)也清掉。
|
||||
|
||||
**新增**
|
||||
- `validate-social-deck.mjs` — 单文件 Node 脚本,接受 task-dir 或 index.html,对每个 `<section class="poster …">` 跑 6 条规则:R1 overflow / R2 footer 碰撞 / R3 Swiss 粗体 display / R4 字号下限 / R5 4 横带密度(pixel-row union 覆盖率)/ R6 `.h-xl` 行/字 cap。`--style=swiss|editorial` 可显式指定,默认按 `data-theme/data-accent` 或 serif 字族 fallback 自动判断。退出码 1 仅在 FAIL 时;WARN 是 advisory。
|
||||
- `package.json` `scripts.validate` — 把 `node validate-social-deck.mjs` 包到 `npm run validate <task-dir>`。
|
||||
- `demo-smoke-editorial-travel/` — Editorial 冒烟测试 5 张 1080×1440:M01 cover + M11 Marginalia Essay(3 段正文 + 7 行 marginalia)+ M07 Field Ledger(5 行账本)+ M14 Vertical Pipeline(5 步)+ M16 Image-Led Cover 收束。全部 PASS validator。
|
||||
- `references/components.md` § Editorial `.h-xl` Hard Caps — 实测表:xhs 92px / square 78px / wide 96px;附 M11/M14/M07 各自的 ledger / paragraph / step 数硬上限。
|
||||
|
||||
**修改**
|
||||
- `SKILL.md` Step 5 Build And Render 加:每次 render 后必须跑 validator,FAIL 必修。Step 7 Deliver 加:交付前再跑一次;WARN 在交付消息里报告让用户决定。
|
||||
- `validate-social-deck.mjs` 修两轮 false positive:
|
||||
- R2 footer collision:原版把 `.content` 容器 + 全幅 `.mag-bg` 误判碰底;改成只看 leaf text/media + 跳过 ≥95% 全幅 absolute 节点。
|
||||
- R4 min font:原版按 class 选择器命中所有 `.lead`,但 Swiss `.role-card .lead` 是子组件文本。改成只查 leaf text 节点的角色。
|
||||
- `references/components.md` § Image Containers 加:figcaption 类名硬规则——Editorial 用 `.img-cap`、Swiss 用 `.swiss-img-caption`、**没有共享 `.cap`**。冒烟测试中我把它写成 `.cap` 触发 R4,已固化为警示。
|
||||
|
||||
**回归测试**(在 5 个 demo 上跑过 validator)
|
||||
- `demo-smoke-editorial-travel`:5 pass / 0 fail / 0 warn
|
||||
- `demo-zzz-miyabi`:4 pass / 1 R5 warn(p4 H-Bar 底部 trailing whitespace,可接受)
|
||||
- `demo-eyeliner`:3 pass / 1 R5 warn(xhs-03 底带 13%,可接受)
|
||||
- `smoke-ai-tools`:发现一处历史 R1 overflow(xhs-03 +101px)—— 之前漏看,已暴露
|
||||
- `demo-showcase/swiss.html` + `editorial.html`:共暴露 39 + 46 条 R4/R5/R6 warn,主要是 lead/body/caption 在数据密集页里被压到 18-22px、几条 h-statement 行数超 cap。下一轮可逐张回修。
|
||||
|
||||
**未做(同短期规划清单)**
|
||||
1. 截图美化资产 port(下一件)
|
||||
2. 地图组件
|
||||
3. 1:1 短标题生成器
|
||||
4. 多平台一次出包
|
||||
|
||||
### v0.10 · 2026-05-26
|
||||
|
||||
主题:**内容密度硬规则 + 风格-内容类型解绑 + 全版式 showcase**。两件事并轨:(1) 解决 3:4 卡内容欠填——把"杂志留白逻辑"和"社交卡逐张刷"这两件事在文档层面拆清;(2) 把"Editorial 只接生活类 / Swiss 只接产品类"的隐含绑定明确解除,让用户用同一篇内容自由选风格。
|
||||
|
||||
**新增**
|
||||
- `demo-eyeliner/` — 4 张 3:4 美妆类 Editorial 案例(kraft-paper),P1 M16 全幅产品图,P2 M03 翻车叙事,P3 M01 双头机制,P4 M07 收束。验证密度规则在"图+文+ledger"混合卡上的落地。
|
||||
- `demo-showcase-editorial/` — 16 张 1080×1440 案例,逐张覆盖 M01-M16,循环用 5 套杂志 palette。
|
||||
- `demo-showcase-swiss/` — 12 张 1080×1440 案例,逐张覆盖 S01-S12,循环用 4 套 Swiss accent。两套 showcase 演示「内容类型与风格脱钩」——美食内容也可走 Swiss、AI 工具也可走 Editorial。
|
||||
|
||||
**修改**
|
||||
- `SKILL.md` Step 3 重写:"Editorial 用于 / Swiss 用于" 的硬绑定改成"两种风格是 visual stance,不是 content category;任何内容都可走任一风格;选风格按 editorial intent(feature story 还是 release note),不按 topic lookup。"
|
||||
- `SKILL.md` Non-Negotiables 增加 **3:4 内容密度硬规则**:内容 ≥75% 画布高度;>15% 空白带需"留白理由";禁用 `<div style="flex: 1"></div>` 上下夹击;杂志留白逻辑不适用于社交卡。
|
||||
- `references/style-system.md` 顶部增 **"Style ↔ content type are decoupled"** 段;Mode A / Mode B 的"Use for"硬列表改成"Good fits"软建议(含明确反例:workplace essay 也可走 Editorial、travel ledger 也可走 Swiss)。
|
||||
- `references/layout-recipes.md`:
|
||||
- Editorial 和 Swiss recipe 总览段都加了"这些结构适用于任何 topic"的前言。
|
||||
- **新增 Content density rule (hard)** 段,写在 Editorial recipe 列表前。
|
||||
- **M03 / M04 / M07 / M13 各加 Minimum density 段**:
|
||||
- M03:title + 3 段 或 title + 2 段 + 编号 footer 列表。title 单独是 M04 不是 M03。
|
||||
- M04:唯一允许 ≤60% 内容的 recipe,但必须有 3 个 anchor(source row / kicker / hairline)。
|
||||
- M07:title + ≥4 ledger items with sub-lines + closing block。"3 短 ledger 行"是已知失败模式。
|
||||
- M13:必备 anchor(top kicker + bottom prompt + bottom metadata + 可见 WebGL bg)。
|
||||
- `references/qa-checklist.md`:新增 **4 横带密度检查**(Filled / Justified empty / Under-filled 分类,>15% 画布的 under-filled 带判失败;通过门槛:Filled+Justified ≥100%、Filled ≥75%、相邻两带不能都 justified)。
|
||||
- `PRODUCT.md` 决策 1 重写:风格不再绑定内容品类。删除"Editorial × 人文/Swiss × 工程"的硬对应;明确"两种风格是视觉立场不是内容门"。
|
||||
|
||||
**修复路径(落到代码)**
|
||||
- 杂志留白逻辑→社交卡的对策:用 `flex-grow: 1` + `justify-content: space-between` 让"内容块本身撑开",禁用空 `<div style="flex:1"></div>` 作为占位。`demo-eyeliner` P2/P4 两次重渲染后通过 4 横带检查。
|
||||
- M07 spec 从 "2-3 rules" 改成 "4-6 ledger items with sub-lines",每行 100-140px 垂直。
|
||||
|
||||
**未变动**
|
||||
- Recipe 计数:仍是 M01-M16 + S01-S12 = 28 个。
|
||||
- Theme palette 计数:5 + 4 = 9 套。
|
||||
- 工作流步数仍 7 步;种子模板未动。
|
||||
- 小红书品类能力圈未变;只是不再把"风格-品类"硬绑定。
|
||||
|
||||
**对比验证**
|
||||
- 旧 P2/P4(v0.9 demo-eyeliner 第一版):内容散在画布中段,底部 25%-35% 是空白带,缩略图刷过去像 PPT 漏排。
|
||||
- 新 P2/P4(v0.10):内容撑满到 ~92% 画布高度,引语+footer 紧贴底缘;FALLOUT 四条 a-d 均匀分布到引语之上。
|
||||
- showcase 两套:28 个 recipe 每个出 1 张 1080×1440,全部通过 4 横带检查、覆盖全 9 调色、内容类型故意打散(户外 / AI / 食谱 / 数据 / 节气 / 影评等都既出现在 Editorial 也出现在 Swiss)。
|
||||
|
||||
### v0.9 · 2026-05-26
|
||||
|
||||
主题:**M16 编辑杂志化重写**。v0.8 的 M16 借了"游戏 key art"那套(全幅黑色 vertical falloff + 132px 黑体感字 + 纯白文字),出来像旅游海报、不像 Kinfolk / Cereal。本轮按 8 张参考的共同语言推倒重来:**选图是主要杠杆,遮罩是兜底;字小、字细、字色偏纸**。
|
||||
|
||||
**修改**
|
||||
- `references/image-overlay.md` **Rule 1 重写**:"选图先,遮罩后,禁全幅 falloff"四步法。Step 1 选图门(quiet-zone 测试 + light 测试),Step 2 默认不加 mask 直接验,Step 3 兜底用 localized + image-toned 软渐变(peak α ≤ 0.30),Step 4 缩略图测试。Banned 段把"全幅 vertical falloff"和"纯黑 mask 色"明确点名禁掉。
|
||||
- `references/image-overlay.md` Rule 2 增 **Composition discipline** 段:4 条编辑杂志构图硬规(非对称、≥60% 留白、标题只占一个 quiet zone、绝不跨越主体轮廓)。
|
||||
- `references/image-overlay.md` Checklist 重写:把"≥60% → 强制 mask"翻成"先看选图通不通过,mask 仅在 Step 4 失败时"。
|
||||
- `references/layout-recipes.md` **M16 重写**:
|
||||
- 顶部加 **Photo qualification gate**——quiet-zone test + light test 都过才能走 M16,否则退回 M01。
|
||||
- Modes A/B/C/D 表里"Mask"列改成"Tint (only if Step 4 fails)",明确"先无 mask、不行再局部图调色软渐变"。
|
||||
- **字号字色字体彻底改**:标题 88-108px(v0.8 是 108-132px),Noto Serif SC 400-500(v0.8 没限制字重,default 700+),色 `#f5f1e8` 纸米(v0.8 是 var(--paper) 容易跑成 #fff),letter-spacing 0.10-0.15em。
|
||||
- 加 **Forbidden in M16 type** 段:禁 inline 700+ 字重、禁纯白 `#fff`、禁标题 > 120px、禁拉丁 sans 作主标题、禁 D 模式标题居中。
|
||||
- HTML skeleton 两段重写:默认不加 mask、用 `Noto Serif SC weight 500 + #f5f1e8`,全 inline 字号(不依赖 `.h-display`,因为种子模板 `.h-display` 强制 `color: var(--ink)` 在暗背景上失效)。
|
||||
- `demo-m16-camping/index.html` **P1 封面重做**:Mode A(顶 kicker + 底标题),无全幅 mask,仅底部 22%x84% 苔绿色 (`rgba(20,32,22,...)`) 软 radial 在标题区,标题 92px Noto Serif SC weight 500 / tracking 0.12em / 色 `#f5f1e8`。HTML 注释加 photo qualification 记录。
|
||||
|
||||
**未变动**
|
||||
- Editorial recipe 计数:仍是 M01-M16。
|
||||
- Swiss recipe / theme / 工作流 / 种子模板没动。
|
||||
- demo-m16-camping P2 (ledger) / P3 (field notes) 没动——它们用的是 M05/M02 文字主导版式,没踩 M16 的坑。
|
||||
|
||||
**对比验证**
|
||||
- 旧 P1(v0.8):黑色 78% 侧栏 scrim + 132px 字 + 整页压重。读起来像旅游打卡。
|
||||
- 新 P1(v0.9):林荫透出、字小克制、底部苔绿软渐渍只够支撑标题对比。读起来像 Kinfolk camping 专题。
|
||||
- 缩略图测试(360px wide):标题 / kicker / 底部 mono strip 全部可读,无糊。
|
||||
|
||||
### v0.8 · 2026-05-26
|
||||
|
||||
主题:**图先序列 + 满图封面 recipe**。给"生活化、吃图片"的内容一个明确的 P1 图占满 + P2-3 数据的版式。
|
||||
|
||||
**新增**
|
||||
- `references/layout-recipes.md` 新增 **M16 Image-Led Cover (Full-Bleed Hero)**:填补 M01"图+文分块"到"图占满 + 文字压上"的空白。含 4 种文字位置(顶压底沉 / 侧栏立柱 / 角落徽章 / 下沉条带,按 subject map 选)、字号 spec 表、标题长度上限表、1:1 / 21:9 适配、两段完整 HTML 骨架(Mode A + Mode D)。Editorial 模式专用,Swiss 不用。Editorial recipe 数:15 → 16。
|
||||
- `references/content-planning.md` 新增 **Image-Led Sequence** 段:P1 M16 满图 → P2 文字数据卡(S11/M05/M10)→ P3 M02 副图 → … 硬规则"绝不连续两张 M16"。
|
||||
|
||||
**修改**
|
||||
- `references/category-cookbook.md`:
|
||||
- 旅行 / 家居 / 美食(食谱)路由首选改为 M16 → S11/数据卡 → M02 的图先序列。
|
||||
- 情感不强推图先序列(M16 不适合 quiet documentary 的 "窗 / 椅 / 手"——继续走 M04/M09/M11 文字主导)。
|
||||
- `SKILL.md` Seed 引用范围 `M01-M15` → `M01-M16`。
|
||||
|
||||
**未变动**
|
||||
- 工作流步数与种子模板。
|
||||
- Swiss 12 个 recipe / 9 套 palette / image-overlay 规则。
|
||||
- M16 强依赖既有 image-overlay.md(mask + subject map + crop),没有放宽任何安全检查。
|
||||
|
||||
### v0.7 · 2026-05-26(上一轮)
|
||||
|
||||
主题:**Editorial 图源扩展**。没有新增 layout,没有改种子。
|
||||
|
||||
**修改**
|
||||
- `SKILL.md` Step 6 web-sourced 图源从 3 条扩到 5 条:新增 **Pexels**(#2,原生支持中文搜索,补 Unsplash 在国内场景的缺口)与 **Flickr CC**(#3,`license=2,3,4,5,6,9` 过滤,补"纪实感真实感"的缺口)。加了取图顺序:Pexels(中文/国内)→ Unsplash → Flickr CC(纪实)→ direct search。明确"全部免版权图库,不接 视觉中国 / Getty / 站酷海洛 等付费源"。Swiss 模式继续不走图库。
|
||||
- `references/category-cookbook.md`:
|
||||
- 旅行:Pexels 优先用于国内目的地(中文关键词);Flickr CC 用于"真实旅程"的纪实质感。
|
||||
- 美食:Pexels 用于中式菜品 / 国内餐厅;Unsplash 标注为"西式 stock 感",仅做兜底。
|
||||
- 情感:Flickr CC 升为主推(窗 / 椅 / 手这类纪实质感最契合);Pexels 补国内语境;Unsplash 仍然可用但避开"moodcore" gradient-light stock。
|
||||
- `references/qa-checklist.md`:图源 checklist 改为枚举 Pexels / Unsplash / Flickr CC / Wallhaven / direct search,并提示 Flickr CC 在用户同意标注时要保留作者署名。
|
||||
|
||||
**新增**
|
||||
- `SKILL.md` Step 1 Intake 加"三选一"入口:用户只给文字时问一次(A. 自己提供照片 推荐 / B. 我帮你找 / C. AI 生成),按选择走 Step 6,不二次劝导。
|
||||
- `SKILL.md` Step 6 "When the user has no images" 改为依赖 Step 1 gate,明确不再自动跳到 B/C。
|
||||
|
||||
**未变动**
|
||||
- 工作流步数(仍为 7 步,三选一是 Step 1 内的子项)与种子模板。
|
||||
- 9 套 palette 与 27 个 recipe。
|
||||
- 不接付费图库(视觉中国 / Getty)是产品边界(见 `PRODUCT.md` 决策 4)。
|
||||
|
||||
### v0.6 · 2026-05-26(上一轮)
|
||||
|
||||
主题:**冒烟测试 + 种子模板硬化**。没有新增 layout,没有改工作流。
|
||||
|
||||
**新增**
|
||||
- `smoke-ai-tools/` — 完整冒烟测试样例。主题"程序员一周 AI 工具使用周记"。用 5 张 1080×1440 跑通 S01/S07/S10/S11/S12 五个 recipe。Klein Blue accent。
|
||||
- `HANDOFF.md` · `PRODUCT.md`(本文件 + 产品文档)
|
||||
|
||||
**修改**
|
||||
- `assets/template-swiss-card.html`:为 `.poster.xhs` 补全 display 字号 override。
|
||||
- `.h-hero` 168px · `.h-statement` 124px · `.h-xl` 96px · `.num-mega` 168px · `.num-xl` 120px
|
||||
- `.matrix-fill` 改为 `grid-auto-rows: min-content`、`min-height: 0`、`gap: var(--sp-4)`
|
||||
- `.matrix-cell .cell-title` 在 xhs 下降到 24px
|
||||
- `.hero-stat-bottom` 在 xhs 下紧凑 margin / padding,`num-mega` 128px
|
||||
- `references/components.md`:新增两张实测对照表。
|
||||
- "Swiss `.h-xl` Hard Caps per Board" — 每板最多几行、单行最多几字、超限会怎样
|
||||
- "Matrix + hero-stat-bottom on `.poster.xhs`" — cell 数对应的搭配建议
|
||||
|
||||
**已知遗留**
|
||||
- Editorial 模板(`template-editorial-card.html`)**未做同样的冒烟测试**。M14 纵向 Pipeline 5 步在 3:4 板上是否溢出,未验证。
|
||||
- 冒烟测试只覆盖 5 个 Swiss recipe(S01/S07/S10/S11/S12)。其余 S02-S06/S08/S09 未跑过真实小例子。
|
||||
|
||||
### v0.5 · 2026-05-26 早些时候
|
||||
|
||||
主题:**image-overlay 规则上线 + 文字压图验证**。
|
||||
|
||||
**新增**
|
||||
- `references/image-overlay.md` — 文字压图规则:蒙版强制 + 多模态主体映射 + 缩略图测试
|
||||
- `demo-image-02-wukong/` — 用《黑神话:悟空》主视觉验证 image-overlay 规则
|
||||
|
||||
**修改**
|
||||
- `SKILL.md` Step 6 加入文字压图小节
|
||||
- `references/style-system.md` 新增 Anti-Pattern D(封面照片裸跑无蒙版)
|
||||
|
||||
### v0.4 · 之前
|
||||
|
||||
主题:**模板种子 + 9 个新版式补全**(对齐已成熟的 PPT skill)。
|
||||
|
||||
**新增**
|
||||
- `assets/template-editorial-card.html` · `assets/template-swiss-card.html` 两份种子
|
||||
- `references/components.md` 字体/卡片/间距/Lucide token 表
|
||||
- `layout-recipes.md` 加 M12-M15(Editorial 缺失节奏型)+ S08-S12(Swiss 5 个 port from PPT)
|
||||
|
||||
**修改**
|
||||
- `SKILL.md` 加 Step 4.5(拷贝种子模板)
|
||||
- Required References 加 `components.md`
|
||||
|
||||
### v0.3 及更早
|
||||
|
||||
`SKILL.md` + 9 份 reference 的初始体系。小红书品类能力圈(`category-cookbook.md`)。Editorial 11 个版式 + Swiss 7 个版式。
|
||||
|
||||
---
|
||||
|
||||
## 4. 如何验证 skill 还能跑
|
||||
|
||||
最快的验证路径,不要发明新需求。
|
||||
|
||||
```bash
|
||||
cd /Users/guohao/Documents/code/HyperFrames-test/guizang-social-card-skill/local-tests/smoke-ai-tools
|
||||
node render.mjs
|
||||
ls output/ # 应该看到 xhs-01.png ... xhs-05.png
|
||||
sips -g pixelWidth -g pixelHeight output/xhs-01.png # 应为 1080×1440
|
||||
```
|
||||
|
||||
5 张图都能渲染、尺寸都对 → Swiss 种子模板 + 5 个 recipe 工作正常。
|
||||
|
||||
视觉验收:用 `Read` 工具读 `output/xhs-04.png`,确认大数字 "8" 在右下角完整可见、未被截断。
|
||||
|
||||
更全的 demo:`local-tests/demo-image-02-wukong/index.html` 用 Playwright 渲染,验证 image-overlay 规则下文字与人物未冲突。
|
||||
|
||||
---
|
||||
|
||||
## 5. 工作流要点(给接手者的极简版)
|
||||
|
||||
按 `SKILL.md` 第 7 步走,**不要跳步**。最易踩坑的两步:
|
||||
|
||||
- **Step 3 不要混风格**:Editorial 用 serif + ledger/marginalia;Swiss 用 Inter + card-fill/matrix。两套 class 命名空间隔离,模板间不能跨用。
|
||||
- **Step 4.5 必须拷种子**:从零写 HTML 是 v0.4 之前的工作流,已废弃。
|
||||
|
||||
文字压图的页(封面 / 大图位 / 全幅图)三步:先 `Read` 图、再写 HTML 注释记录主体位置、再选 `object-position`。蒙版是强制的。
|
||||
|
||||
---
|
||||
|
||||
## 6. 已知风险与限制(事实层面)
|
||||
|
||||
- **没有自动校验脚本**。所有"标题超过几个字会溢出"目前靠 components.md 的硬上限表 + 人工渲染 + 视觉判断。
|
||||
- **没有跨平台一次出包工具**。一篇文章要同时出小红书 3:4 + 微信 21:9+1:1 + 方封面 1:1,目前要手工开两个任务文件夹。
|
||||
- **品类能力圈未硬编码**。`category-cookbook.md` 写明了 4 个不接的品类,但 skill 不会主动拒绝;需要执行者在 Step 1 自己读到并主动告知用户。
|
||||
- **图片来源签名机制是"用户决定"**。`SOURCES.md` 总会写,但是否在图上加标注由用户回答。这不是技术限制是产品决策(见 `PRODUCT.md`)。
|
||||
|
||||
---
|
||||
|
||||
## 7. 不要做的事
|
||||
|
||||
- 不要改 PPT skill(在 `~/.claude/skills/guizang-ppt-skill/`)。本 skill 借了它的视觉原则但**独立维护**。
|
||||
- 不要把 demo 文件夹删掉来"清理"。它们是回归测试样本。
|
||||
- 不要在两份种子模板里塞动效系统、键盘翻页、ESC 索引——那是 PPT 的需求,社交卡是静态 PNG。
|
||||
- 不要把 components.md 的硬上限表"调宽"以接更长的标题。先压文案。
|
||||
Reference in new issue
Block a user