# Taxue Halftone

> 半调海报：用限墨+网点把任意主题做成有结构、有质感、可复用的艺术封面。支持多种印刷语言（半调/孔版/双色/木刻/蓝晒/蓝染/复印机、1-bit 剪影、撕纸拼贴），按风格给出一致又有特色的封面。六项不变式出图前先定：纸色、墨色角色、叠印方式、印刷机制、主体走向、字图音量。触发词：半调海报、艺术封面、网点、孔版、双色、Riso、duotone、木刻、蓝晒、蓝染、蓝染海报、物影、蓝晒物影、反俗套蓝染、复印机美学、不完美印刷拼贴、撕纸拼贴、编辑型印刷拼贴、有意不完美、点阵解构、丝网海报、剪纸、窗花、中式剪纸、网点剪纸、经典致敬、风格模仿、致敬、名画、艺术流派、年代美学、视觉风格转译、波普、波点、圆点场、点画、视错觉、扁平矢量图形、艺术展览海报、平台封面（B站/小红书/抖音/公众号/头像/超宽）、主题结构印刷封面、限墨封面。不用于：全彩实拍、UI、图表、模板拼贴。

- Skill: `taxueseek/taxue-halftone` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add taxueseek/taxue-halftone`
- Raw SKILL.md: https://api.skillmd.com/api/skills/taxueseek/taxue-halftone/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: taxueseek (https://skillmd.com/u/taxueseek)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/taxueseek/taxue-halftone

---

# 半调海报 · 艺术封面

第一性原理：**限墨不是滤镜，是可校验的印版系统。** 无论选哪种机制，一张图都必须先回答六个互斥且穷尽的问题（见 §0），缺一则不是本系统。风格 = 六轴各取一组确定值形成的指纹组合，不是把某个滤镜套上去。

> 判语：如果无法指出每块颜色来自哪支墨、哪个角或哪一层阶、纸在哪里露出，就还不是本系统。

## §0 六不变式（规范的最小不变式，MECE）

任何一张图，无论什么机制、什么风格，都必须在这六个轴上各自给出**一个确定值**。缺任一轴，图不是本系统；轴内取值模糊，图不鲜明。

| # | 轴 | 必须回答 | 数据源 | 量化约束 |
|---|---|---|---|---|
| 1 | **纸（Ground）** | 纸是哪一块、什么色 | `roles.json` | 底衬色不算墨；暗底白衬必须 choke |
| 2 | **墨（Ink/Mist）** | 哪几支墨、各干什么 | `roles.json` | 主 70–85%，辅/雾且各 1 职务；imperfect_collage 专属第三通道（跳色 ≤5%，不进主体结构），其余风格 ≤2 墨 |
| 3 | **印刷布尔** | 两色相交怎么处理 | `bools.json` | knockout/overprint/trap 三选一 |
| 4 | **机制** | 用什么印刷机制 | `mechanisms.json` | 一次一个；机制内角/点/密度须有结构 |
| 5 | **主体行为** | 图的「势」往哪走 | `behaviors.json` | still/dissipate/densify/horizon/vertical-extend |
| 6 | **字图音量** | 字和图的音量谁大 | `volume.json` | 字大声则图退；禁止双开 11 |

七轴外：**主体结构链** 与 **平台画幅** 是两个独立的约束系统（`subject.json`、`platform.json`），它们不改变六轴取值，但决定「主体是否可识别」「画幅是否被裁坏」。

## §1 重新定义问题（接案 → 六轴配方）

先问清楚，能填齐才有资格出图。产出一份内部配方（用户未问过程则不整段展示）：

```yaml
# 一、主体与目的
subject: <一个可识别主体，见 subject.json>
subject_chain: <解剖/生长/功能/材料的连续结构链，见 subject.json>
intent: <公告|观察|宣言|包装|标本|封面|转绘>
exact_text: <用户原文 | 按语言发明 | none>
text_language: <用户语言，除非另指定>
representation: <faithful | abstract>
source_policy: <preserve 保像素 | distill 提炼 | invent 无源图>

# 二、六轴取值（缺一不可，见对应 json）
ground: <Ground_id>                # roles.json
ink_role: <角色赋墨：role + hex + 占比>  # roles.json
boolean: <knockout | overprint | trap>  # bools.json
mechanism: <mechanism_id>          # mechanisms.json
behavior: <still|dissipate|densify|horizon|vertical_extend>  # behaviors.json
volume: <type_lead | image_lead | balanced>  # volume.json

# 三、画幅与产出
ratio: <platform_id 或显式比例>     # platform.json
viewing_distance: <handheld | wall | far>
layout: <layout_id>                # compositions（见 references/compile.md）
tension: <relaxed | balanced | assertive>
focal_event: <恰好一个>
release_zone: <一个更安静的区域>
avoid_named_patterns: <逐个列出 references/patterns.md 里命中本单的命名模式名；无命中填 none>   # 出图前反模式雷达，见 §5
diagnosis: <照片诊断卡一行 | none>      # 仅图源输入时，见 §1.5
priority_fix: <一个主问题 + 唯一修复动作 | 无主问题>  # 见 §1.5
```

未指定时的默认：机制 AM、双色、中性白纸、relaxed（旅行/生活）或 balanced（活动/信息）、空纸 25–55%、复古编辑（不做旧）、主墨 45°、双色差 ≥30°。Mist 不是第三色相，是主墨浅阶或叠印密度。

## §1.5 源输入诊断与映射（先诊断，再填配方）[ABLATE:ALL]

三类输入各走各的处理流程：无源主题直接填配方；**图源输入必须先产出诊断卡**；用户提供参考图时叠加 §1.6 参考创作模式。诊断发生在配方之前，产出作为配方下每个取值的一条来源证据；用户不问流程则不展示。

### 诊断与映射 [ABLATE:C1,C2]

图源输入时，先看原图写出五行观察值（不用脚本；看不清就标注 unknown，不硬编）：

```yaml
axis: 水平 | 垂直 | 对角 | 框景 | 无        # 占优构图轴
subject_occupancy: <25% | 25–50% | >50%    # 主体占幅
negative_space: <方位 + 约 %>               # 空纸在哪、多大
dominant_color: <与 §2 起点色最接近的一支墨>   # 照片主色收敛到墨
defect: <截断/歪斜/死负空间 | none>          # 只写唯一最需修的问题
```

再按映射表取轴值（补 scenes.md 只按主题路由的盲区）：

| 诊断特征 | 轴取值 |
|---|---|
| axis=水平 | behavior=horizon；字走横张 |
| axis=垂直 | behavior=vertical_extend；竖题 |
| axis=对角 | behavior=still + 强对角网格；字沿对角切入 |
| axis=框景 | behavior=still；保留框为释放区 |
| subject_occupancy <25% | volume=type_lead 或极疏 zine；主体小、空纸大 |
| 25–50% | volume=balanced；占幅按 scenes.md 主体面积经验 |
| >50% | volume=image_lead；字退为支撑 |
| 主导色接近某支墨 | 墨色取值 = 该支墨（用兼容墨而非复刻照片色域） |
| defect=歪斜 | 唯一修复动作 = 扶正主轴（crop 修正，非滤镜拉直） |
| defect=截断 | 裁切方向 = 截断的对边；同时满足 §3 至少一边裁切 |
| defect=死负空间 | 释放区 = 该处；字或物去破它（focal_event 首选） |

每条来源写成一行注记：`behavior=horizon  ← 诊断 axis=水平`。诊断卡与轴取值互相矛盾时，以六轴为准并回改诊断卡。

### 四域命题 [ABLATE:C3]

配方填完前，用四行给「设计判断」落账（先于构图语序，不是事后描述）：

```text
主体域：<抠取/裁切/尺度动作 + 一处可识别结构不被破坏>
背景域：<纸 + 一支墨的主动色场/色窗/明度切片；禁止普通渐变>
互动域：<字与主体轮廓的一处真实遮挡、共边、穿插或负形咬合>
排版动作：<偏置 | 越栏 | 竖向 | 断行 | 边缘切入 | 超大字 | 一圈注>（恰好一个非默认动作）
主问题：<唯一最需修的问题，来自诊断卡。defect=none 或无源输入时只写「无主问题」，不写预防性措施>
唯一修复动作：<只写一件事：扶正/补空纸/重启空纸/换裁切/重定音量>
```

判语：四域里任何一域写「原样保留」「普通渐变」「标题居中」即不合格；主问题与修复动作必须能从五段 prompt 中找到落实句；无主问题时不得用反模式预防充当修复动作。

## §1.6 参考创作模式（用户提供参考图时启用）[ABLATE:C6]

默认不用参考；启用时二选一：参考与 `examples/`、`swatches/` 同指纹（机制、纸墨角色、行为、字图音量可对齐；映射见 `examples/README.md`）→ 锁定对应 `styles/<style_id>.json` 六轴为起点，仅经 §1.5 映射、§3 语序、§4.5 字形调整，**禁止复刻其场景、文案与排版**；不属于本系统指纹 → 走 §7 机制迁移（2–4 个可见机制 + 掏空判定）。验收：迁移项必须是五段第 2–3 段的**可指认动作**；判不了归属时按机制样本处理（宁少勿多）。

## §2 印版推导（勿锁死单一配方）

起点色（可改，须写 HEX）：
- 单墨：Cobalt `#2148B8` / Botanical `#008A4B` / Terracotta `#C65F38` / Signal Red `#C83232` / Aubergine `#63365F` / Charcoal `#30343A`
- 双色常用：Cobalt+Terracotta；Charcoal+Signal Red；Mint+Charcoal；Ultramarine+Safety Orange；Cyan+Brick Red

规则：辅墨必须有职务（日期、注释、一个物件、一处叠印交叉）。禁止把第二色当装饰洒满页。纸 = Ground 不算第三色；叠印变深 / Mist 不算第三色。

## §3 构图语序（不改变六轴，只在六轴内组织画面）

1. **一物主导**（或字作为物）：占 45–80%（信息海报可降 32–55%；still 陈列更小），至少一边裁切。
2. **字与图音量**：按 volume.json 定谁主谁辅；字撞物（穿越/覆盖/劈开）是其中一招。裁切要为字留口袋。
3. **纸切入图像**：高光 knockout 到纸；扩散边走网，结构边保持硬边（窗、字、几何不「融化」）。
4. **一个手工手势**：圈注、套准线、手绘短线、旋转小标签、或 Weingart 式不规则宽边——只选一族。工艺缺陷预算也算这一次：轻微套不准或一次并网，不要叠 grain+刮痕+咖啡渍。

行为逻辑（先于物体类别）：still 静置 / dissipate 向外变少（用点）/ densify 向内变重（用网纹）/ horizon 地平线 / vertical-extend 沿长边消失。点和网纹不要写在同一处渐变里。

## §4 多语言与多尺寸

见 `references/language.md`、`platform.json`。摘要：
- 用户文案原样；发明文案用用户语言。
- **文案直接展示，没有多余的标点符号**：标题与正文只允许逗号、句号；不加引号框注、装饰符号、破折号下划线、编号及任何非文案文字（各内置模板均已写入，全局一致）。
- CJK 微字 → type-off；短 H1 可 type-in，笔画须 ≥ 2–3 个网距，校对失败则后期上字。
- type-in 时把字写成一次印刷事件（墨量 / 层 under|same|over / 一处「破」），不是字体名。
- 换画幅必须重写构图；先改观看距离/档位，再改字号，最后改构图。

## §4.5 中文展示字形速查 [ABLATE:C5]

type-in 的展示标题（≤8 字）在 language.md 的印刷事件规则之外，再给字形一个可指认目标：**选一个谱系 + 至少 3 个可见特征**，一行写完。只写「宋体、黑体、书法感」不算完成。

| 谱系 | 宽窄/重心 | 横竖对比 | 收笔 | 字腔 |
|---|---|---|---|---|
| 刊刻楔脚宋 | 方、中重心 | 1:2.2–1:3 | 短刀刻楔脚 | 方而略收 |
| 碑额篆刻 | 方整紧凑、转折略圆 | 接近等宽 | 凿刻顿点 | 小而稳 |
| 隶意外拓 | 扁宽、低重心 | 横张竖收 | 外拓波磔 | 开放 |
| 几何黑体 | 方、等高 | 等宽 | 平切 | 方正 |
| 民艺拙笔 | 宽、重心不定 | 粗细抖动 | 干笔/毛刺 | 不规则 |
| 现代怪诞 | 宽、高重心 | 细横粗竖 | 方切或圆切 | 夸张开放 |

示例：`谱系=刊刻楔脚宋；方、中重心；横竖 1:2.5；楔脚收笔；字腔略收；回应木构扁额。`

规则：谱系不得改变部件拓扑（规范字、不增减笔画）；逐字光学补偿只写「字面占比/重心/横张/字腔开放度」中一项具体改变，不写「更艺术」；`locked-wordmark` 类（2–5 字、庄严语境）各字保持共同字高与基线。

## §5 提示词与出图

按 `references/compile.md` 五段编译。本环境 GenerateImage：`description` = 五段正文，`aspect_ratio` ∈ 1:1/4:3/3:4/16:9/9:16（5:2 降 20:9；21:9 降 16:9）。

出图前跑 `scripts/validate_styles.py <style>`，再过一遍**反模式雷达**（`references/patterns.md`，逐名扫描五段 description）。命中任一命名模式：先报「此处命中 `xxx`，信号是 `yyy`」，**只改所属那一段**，再出图。

出图后按三档评审卡自检（失败只重生一次，只改一项）：

- **blocker（命中任一项即不算通过）**：超过两墨 / 无选定机制痕迹 / 空纸越界 / 主体不可辨（遮标题 <3 秒认出）/ 自动做旧 / 假 CMYK 扮孔版 / 字图同网碎字 / 全通道同角 / 结构边被网融化 / 渐变冒充网点 / 命中任一命名反模式
- **可修（优先级低，留给下一版，不阻塞）**：无 5× 字号差 / 无焦点事件 / 商标/二维码加网 / 复刻参考图字句
- **通过判语**：能否说出「哪支墨、哪个角或哪一层、纸在哪」→ 说不出口即未过关
- 精确文字仍错 → type-off 底板 + 声明后期排字，不假装正确

## §6 元提示词

用户要可复用模板时：输出带槽位正文 + ≥3 主题填法 + 替换规则。主题为唯一必填。

### 日常精简流程（editorial 经典半调，2026-09-04 实测稳定后固化）

`editorial` 精炼元提示词模板（`styles/editorial.json` 的 `meta_prompt`，经典半调）已在 GPT 与 grok 出图实测稳定，日常出图默认走精简流程：

- **输入 = 主题，唯一必填**；图像描述由主题推演，其余槽位（颜色1/颜色2/字体类型/文案/纸色）一律按 `slot_filling` 默认值自动填充，直接作为出图 prompt。
- **不向用户逐项询问槽位参数**；仅用户主动指定某槽位时覆盖默认值。
- 出图前仍过反模式雷达（`references/patterns.md` 逐名扫描）与三档评审卡，不因快而省。
- 其余内置模板风格（dot_dissolve / paper_cut_group / paper_cut_halftone / aizome）属常规流程，仍按原流程（§1 配方）走，不套用本条精简流程。
- 完整六轴配方（§1）只在用户要求自定义、参考创作或特殊场景时走。

## §7 硬避免

完整命名的反模式表见 `references/patterns.md`（19 个命名模式，含视觉签名与正确替代），出图前必须跑反模式雷达。此处是简版索引，按层归类：

- **色调**：第三色相 / 渐变冒充网点 / 霓虹泼彩 / 全彩照片 / 自动做旧 / 假 CMYK 扮孔版
- **机制**：全通道同角 / RGB 上套 Color Halftone / 把 Riso（印刷机）和 Halftone（加网）当可互换滤镜名 / 印刷机制当情绪词写进 prompt
- **排版**：居中模板 / 字图同网碎字 / Logo/URL/二维码加网
- **主体**：复刻参考图独特字句排版 / 无来源完整广告英雄人像
- **拼贴**：贴纸拼贴 / 复古电影海报拼盘
- **表达**：销售 CTA / 矢量平涂网红海报

参考迁移（仅用户提供参考图时启用，默认不用参考）[ABLATE:C4]：只迁移 2–4 个**从参考上直接看得见**的机制（主体处理、背景色场、图文关系、材质层级）；不迁移实体（建筑、地名、人物、品牌、徽章、符号、字句、排版）。**掏空判定**：把禁项删掉后若参考只剩「高级、克制、偏置、编辑感」等形容词，它不是有效主导参考，不启用。迁移项写进五段前 2–3 段，禁项写进第 5 段。

出图 description 若命中任一命名模式（见 `references/patterns.md`），先把那一段改到它的「正确替代」，再出图。

## §8 加载协议

先读本文件完全掌握六不变式，再按需读：

| 场景 | 必读 |
|---|---|
| 定机制与六轴 / 选风格 | `styles/*.json` + `design-system/` |
| 不完美印刷拼贴 / 撕纸拼贴 | `references/imperfect-collage.md` + `styles/imperfect_collage.json` |
| 主体结构链 / 3 秒识别 | `design-system/subject.json` |
| 平台画幅 / 安全区 | `design-system/platform.json` |
| 中英日韩 / 双语 | `references/language.md` |
| 写 prompt / 元提示词 | `references/compile.md` |
| 反模式雷达（命名反模式） | `references/patterns.md` |
| 术语对齐（用户词→机制） | `references/vocabulary.md` |
| 校验与测试 | `scripts/` + `evals/` |

## §10 风格清单（`styles/`）

| style_id | 名称 | 一句话 |
|---|---|---|
| editorial | 复古编辑印刷风 | AM 半调 + 字撞物 + 纸露白，一物主导（基准），内置精炼元提示词模板（经典半调，主题唯一必填，一键出图，GPT/grok 实测稳定，含中英双文案变体） |
| polish | 波兰海报风格 | photogram 高反差，字即物，单墨或高反差 |
| swiss | 瑞士海报风格 | 摄影阶调 + 实色字 + 大量纸白，克制秩序 |
| riso_zine | 孔版 zine 风格 | 极疏构图，主体小、空纸大，当代纸不做旧 |
| filmstack | 胶片叠层风格 | 粗网本身是图形，字与图共享一层，宽边框住 |
| archival | 标本档案风格 | 标题 + 规整图像板 + 多栏图注，标本/观察笔记 |
| imperfect_collage | 不完美印刷拼贴 | 撕纸拼贴三层结构，专色场 + 黑白半调主体，上图下卡 |
| dot_dissolve | 点阵解构海报风格 | 复古丝网圆点阵，具象解构为点阵颗粒波纹，字融入点阵场，内置元提示词模板（主题唯一必填） |
| paper_cut_group | 中式剪纸风格 | 剪纸剪影群像+负空间镂空，上图下卡，一枚跳色例外成员，内置元提示词模板（主题唯一必填） |
| paper_cut_halftone | 点阵剪纸风格（变体） | 点阵解构×中式剪纸混搭：剪纸窗花轮廓+粗圆网点铺形，暗部 70–90%不断网，跳色克制，上图下卡，内置元提示词模板（主题唯一必填，用色倾向三选一） |
| aizome | 蓝染艺术海报风格 | 绝对纯白数字平面 + 深靛蓝/钴蓝 + 蓝晒式平阶剪影，染液浓淡与版画排线只在蓝色内部，九方位变奏的现代中文排版，内置元提示词模板（主题唯一必填） |
| aizome_photogram | 物影蓝晒风格（蓝染变体） | 反俗套蓝染：蓝底白形的蓝晒物影，现代潮流物件（滑板/耳机/球鞋）平放曝光留白，展柜气质，内置元提示词模板（物件必填） |
| tribute | 经典致敬风格 | 任意名画/艺术流派/年代美学为母题，巨大粗体英文标题 × 极小形象的纪念碑式反差，抽象转译不复刻，中文为主英文呼应的三层文字，内置元提示词模板（风格来源+主题必填） |
| polka | 波普波点风格 | 同一种视觉单元（实心圆点/细弧网/镜面延展）全幅连续生成，单元吞没主体并漫出边缘，无中心无焦点；≤3 色 HEX、丙烯珐琅平涂，内置精炼元提示词模板（主体必填，机制三选一，附 6 条出图自检清单） |

## §9 工程校验

本系统把「规范」落到可机器校验的数据层：六轴分别在 `design-system/` 各有 json，风格在 `styles/` 是六轴的取值组合。改任一轴须保证全系统一致。

```bash
scripts/run_tests.sh          # 全套：design-system 结构 + styles 完整性 + evals 断言
scripts/validate_styles.py <style_id>  # 校验单个风格六轴是否取值齐全且引用存在
scripts/render_style_card.py <style_id>  # 生成 swatches/ 可视化卡片
```

