Generate a single-file industrial-archive product landing page (Nordic museum aesthetic, hash-routed detail pages). Takes a natural-language description of one or more "exhibit-style" products (objects, tools, hardware, watches, kitchenware, lighting, audio, instruments, anything with a designed/forged/restrained quality); outputs ONE working .html file. Visitors see a black-framed cover that flips between exhibits, sidebar index, side meta column (material/origin/year/dimension), and click a...
Scanned 9/8/2026
Install to Claude Code
npx -y skills add WyvernCW/Monich --skill industrial-archive --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Industrial Archive?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/wyverncw-industrial-archive-monich)More formats (shields.io, HTML) on the badges page.
---
name: industrial-archive
description: Generate a single-file industrial-archive product landing page (Nordic museum aesthetic, hash-routed detail pages). Takes a natural-language description of one or more "exhibit-style" products (objects, tools, hardware, watches, kitchenware, lighting, audio, instruments, anything with a designed/forged/restrained quality); outputs ONE working .html file. Visitors see a black-framed cover that flips between exhibits, sidebar index, side meta column (material/origin/year/dimension), and click any exhibit → full detail page (giant italic title, spec table, hero image, lead + 3 prose paragraphs, gallery, prev/next). Runs in BOTH Claude Code (writes to ~/Desktop) and GLM / online chat (outputs HTML inline). Trigger: "做个工业风产品落地页", "做克制之物风格的展品页", "industrial-archive-gen ...", or when user drags this skill folder into chat asking for a product page in the Nordic-industrial archive style.
visibility: public
mode: template
carrier: web-page
scenario: brand-landing
pattern_source: reference.html
source_priority: skill-first
triggers:
- "做个工业风产品落地页"
- "做克制之物风格的展品页"
- "北欧博物馆藏品风"
- "industrial archive"
- "策展感产品页"
related_patterns: portfolio-detail
legacy_gen: true
---
# industrial-archive — 工业风展品 / 产品落地页生成器
把"一段自然语言描述"变成一份单文件 HTML,效果是**北欧工业典藏 / 博物馆策展感**的产品落地页:
- 黑色画框中的产品大图,左右点击翻转切换
- 左侧带索引指示条的展品目录
- 右侧 4 个 meta 块(材料 / 产地 / 年代 / 尺寸)
- 顶栏跑马灯
- 点击画框或底部 CTA → 进入展品详情页(巨大斜体标题、规格表、主图、开篇大字 + 3 段散文、6 图画廊、上一件/下一件)
- 进入页有引言 splash
## 何时触发
用户说"做个工业风的产品落地页 / 克制之物风格的展品 / industrial-archive-gen ...",并提供:
- **产品描述**(必需):一段散文,描述 1—N 件展品的名字、年代、产地、材料、来历
- **图片 URL**(可选):每件展品至少 1 张主图、最好 3—6 张细节图。没有也能跑(用 picsum 占位灰图)
- **风格**(可选):默认是冷调钢蓝灰,可换成 styles.md 里的预设
如果用户**完全没给展品名/故事** → 必须问一次至少有哪几件展品要展示,以及大致是什么品类(容器 / 灯具 / 椅具 / 仪器 / 工具 / ...)。
如果用户**只给了名字**没给故事 → 自己编:每件展品都生成 1 句 lead + 3 段 prose + 4-6 行 spec。语气参考 `reference.html`:**博物馆 wall-text** 感 — 克制、具体、缓慢,不要 marketing 语言。
## 两种运行模式
### 模式 A · Claude Code / 本地(有文件系统)
- 输出:`~/Desktop/{slug}-archive.html`(**单文件**,所有图走 URL)
- 如果用户给了本地图,建议告知用户改用 URL 或自己拷到同目录后写相对路径
### 模式 B · GLM / 在线对话(无文件系统)
- **直接给一份完整 HTML 字符串**,包在 ` ```html ` 代码块里
- 用户没给图 URL → 全用 `https://picsum.photos/seed/{slug}-{nn}/{w}/{h}?grayscale` 占位
- 不要尝试访问本地文件
判断:如果你**无法 Read 看到本地图片** → 默认走 B。
## 文件分工
| 文件 | 角色 | 怎么用 |
|---|---|---|
| `reference.html` | **完整成品参考** — "克制之物" 4 件北欧工业藏品 | 看:lead 怎么写、prose 语气、spec 用词、tagline 格式、maker 命名 |
| `template.html` | **空骨架** — 同样的 CSS/JS/路由,2 件示例 + 17 个 SWAP 标记 | 在它的基础上改,输出最终 HTML |
| `styles.md` | 风格预设库 | 用户指定风格时查这份 |
| `README.md` | 用户视角的使用说明 | 模型不用看 |
| `SKILL.md` | 给模型看的工作流(本文件) | **必读** |
**核心规则**:所有改动基于 `template.html`;从 `reference.html` 学**怎么写**(语气、字数、词汇),但不要复制具体内容。
## 关键差别 — reference 用 SVG,template 用 `<img>`
- `reference.html` 的 4 件展品是**手绘 SVG**(铸铁壶 / 轴承灯 / 桦木椅 / 测距仪),那是定制内容
- `template.html` 已经把 SVG 系统替换成 `<img src="cover URL">`,用户给 URL 就用 URL,没给就用 picsum
- 你不需要写 SVG。如果用户特别要求"画出来",再考虑写一个 SVG 函数塞进 `coverHTML()`
## 工作步骤
### 1. 读两份 HTML
- 先读 `reference.html` 体会"完整后长什么样",特别是 `exhibits-data` JSON 的字段密度和 prose 语气(克制、具体、有时代背景)
- 再读 `template.html` 找 17 个 SWAP 标记(搜 `SWAP-`)
**不要改 JS / 不要改 CSS / 不要改详情页路由系统**。
SWAP 都在 HTML 文本和 JSON 数据里。
### 2. 解析用户输入抽信息
#### 全站层级(17 个 SWAP 中的 1-15、17)
- **COLLECTION_TITLE / COLLECTION_SUB** — 系列大标题 + 副标。如"克制之物 / 北欧工业典藏 1948—1988"。SWAP-1
- **INTRO_VOLUME_TAG** — 进入页顶部的 tag,如"北欧工业典藏 · Vol.01"。SWAP-2
- **INTRO_TITLE_HTML** — splash 页大标题,2-4 字 + 中间一个 `<span class="accent">·</span>` 分隔符。如 `克制<span class="accent">·</span>之物`。SWAP-3
- **INTRO_TITLE_EN** — splash 页英文副标,全大写 + em-dash,如 `Restrained Objects — A Nordic Industrial Archive 1948 — 1988`。SWAP-4
- **INTRO_QUOTE** — 一句策展引言,60—100 字,散文感。SWAP-5
- **INTRO_ATTRIBUTION** — 引言出处,如`— 策展前言 / Curatorial Note`。SWAP-6
- **HEAD_GLYPH** — 左上 logo 字符。1-2 个 serif 字符,建议带特殊感的字母如 `Æ` `Ø` `沉` `匠` `ʘ`。SWAP-7
- **HEAD_GLYPH_SUB** — logo 下一行说明,如`克制之物 / 编号 N°01—04`。SWAP-8
- **HEAD_CENTER_CN / HEAD_CENTER_EN** — 顶部中央两行小字。SWAP-9, 10
- **HEAD_RIGHT_TOP / HEAD_RIGHT_BOTTOM** — 顶右两行:日期/城市 + 坐标/编号。SWAP-11, 12
- **CURATOR_NAME / CURATOR_EMAIL** — 策展方名称 + 邮箱。SWAP-13, 14
- **CRUMB_ROOT / CRUMB_VOLUME** — 详情页面包屑两个固定项。SWAP-15
- **TICKER_TAIL** — 跑马灯尾巴的总标语。SWAP-17
#### 每件展品的字段(SWAP-16,最关键)
```json
{
"slug": "iron-kettle",
"num": "N°01",
"title": "铸铁壶",
"en": "IRON KETTLE",
"year": "1958",
"place": "丹麦 · 哥本哈根",
"maker": "Carl Hansen Værksted / 卡尔·汉森工坊",
"material": "灰口铸铁 · 山毛榉木柄<br/>黑釉烧结涂层",
"origin": "丹麦 · 哥本哈根<br/>Carl Hansen Værksted",
"dim": "高 18 cm · 容 1.2 L<br/>底径 14 cm",
"tagline": "FORGED ESSENTIAL / 锻造的必需品",
"lead": "一只为<em>沉默与水的低温</em>而设计的容器——壶身的厚度,是为了让热停留得久一点,而不是更快地变热。",
"spec": [
["编号", "1958 · K-04"],
["材料", "灰口铸铁 + 山毛榉"],
["工艺", "砂模铸造 / 黑釉烧结"],
["重量", "1.86 kg"],
["产量", "限量 240 件 · 现存 31"]
],
"prose": [
"段一 80—160 字。来源/语境/年份/工坊背景。",
"段二 80—160 字。工艺/手工细节/关键决定。",
"段三 80—160 字。今天的状态/影响/仍在用的事实。"
],
"cover": "https://example.com/kettle-cover.jpg 或 picsum URL",
"gallery": [
{"src": "...", "layout": "f-3", "caption": "壶身正立面"},
{"src": "...", "layout": "f-2", "caption": "山毛榉木柄"},
{"src": "...", "layout": "f-2", "caption": "壶嘴细部"},
{"src": "...", "layout": "f-2", "caption": "底部砂模印"},
{"src": "...", "layout": "f-4", "caption": "工坊蓝图"},
{"src": "...", "layout": "f-6", "caption": "陈列剖面"}
]
}
```
### 3. 替换 SWAP
把 `template.html` 里 17 个 `{{...}}` 占位符全部换成你抽出来的内容。
**注意**:`{{INTRO_TITLE_HTML}}` 是 HTML 不是纯文本,里面要带 `<span class="accent">·</span>`。
### 4. 写 exhibits-data JSON(最关键的一步)
把 `<script id="exhibits-data" type="application/json">` 里那 2 个示例对象**整个替换**成 N 个真展品对象。
#### 件数建议
- 最少 1 件(单品落地页也行 — JS 已处理 N=1 时不自动轮播)
- 最佳 3—6 件
- 超过 8 件展品索引会拥挤,建议拆分
#### 标题字数建议
- `title` 中文 2-4 字最好看("铸铁壶"、"轴承灯"、"测距仪")。如果产品名长,用副标,如 `"title": "测距仪"`、`tagline: "MARITIME RANGEFINDER / 海事测距仪"`
- `en` 全大写英文,2 词为佳
#### tagline 格式
固定:`英文短语 + 空格/空格 + 中文短语`,例:
- `FORGED ESSENTIAL / 锻造的必需品`
- `PIVOT & LIGHT / 旋转与光`
- `FOUR LEGS, NO MORE / 四只脚,仅此而已`
- `MEASURED HORIZON / 被丈量的地平线`
#### lead 写法
30—80 字。**必须在某一两个关键词上加 `<em>...</em>`**——CSS 会给这些字下面加一根钢蓝色细线。
反例:`这是一只很好的水壶。` ← 没有 em,没有具体细节
正例:`一只为<em>沉默与水的低温</em>而设计的容器——壶身的厚度,是为了让热停留得久一点。`
#### prose 写法
3 段,每段 80—160 字。语气:**博物馆 wall-text** — 克制、具体、有时代背景,不要 marketing 语言。
- 段一:来源 / 语境(产地、年份、工坊、那个时代)
- 段二:工艺 / 决定(关键设计、工艺细节、为什么要这么做)
- 段三:呈现 / 影响(今天的现存数量、是否仍在用、对后来的影响)
#### spec 写法
4-6 行,每行一个键值对。
- 第一行通常是 `["编号", "{年份} · {型号}"]`
- 最后一行通常是产量/现存:`["产量", "限量 240 件 · 现存 31"]`(JS 会把最后一行的值显示在详情页的"现存 / EXTANT"块)
#### gallery layout 必须四选一
- `f-3` — 横图,16:10,占 1/2 宽(占 6 列中的 3 列)
- `f-2` — 竖图,4:5,占 1/3 宽
- `f-4` — 横图,16:9,占 2/3 宽
- `f-6` — 全宽,21:8
**节奏建议**:1 张 f-3 + 3 张 f-2 + 1 张 f-4 + 1 张 f-6 = 6 张,刚好两行半。
#### 图片 URL
模式 A 用户给 URL → 用 URL;
模式 B 没给 → 用 picsum:`https://picsum.photos/seed/{slug}-{编号}/{w}/{h}?grayscale`
- cover 推荐 `1600/1000`
- f-3 推荐 `900/600`
- f-2 推荐 `600/750`
- f-4 推荐 `1200/675`
- f-6 推荐 `1600/610`
- 加 `?grayscale` 让占位图也保持工业灰调
### 5. 风格变体(可选)
如果用户指定风格,照 `styles.md` 改 `:root` 那 8 个 CSS 变量。默认是冷调钢蓝灰,最贴合"克制之物"原版。
### 6. 报告
**模式 A**:一句话报告。
> 已生成 `~/Desktop/{slug}-archive.html` — N 件展品,默认冷调钢蓝。双击打开,点击画框或底部 CTA 进入详情页。要换图把 cover/gallery 里的 picsum URL 换成你的图片地址。
**模式 B**:直接给完整 HTML 代码块 + 一行说明。
> 把上面这段保存成 `index.html` 双击打开。点画框看详情,键盘 ← → 切换展品。要换图把所有 picsum URL 换成你的图片地址。
## 强制保留(不能改)
- 全部 JS:translate / flip 翻转、`coverHTML()` 函数、`renderSidebar()`、`applyMeta()`、`renderDetail()`、键盘 / 自动轮播 / cursor
- 全部 CSS(除非走风格变体改 `:root`)
- `<script id="exhibits-data" type="application/json">` 节点必须保留
- `<div id="proj-list" class="proj-list">` 节点必须保留(但**不要**手写 li,让 `renderSidebar()` 生成)
- `<div id="cover-stage">` 内的 flipper 双面结构
- `<main class="stage">` 9 宫格
## JSON 易错速查
- **中文引号**:prose / lead 里如果要打"引号",必须用全角 `"..."` (U+201C / U+201D),**不能**用 ASCII `"`(会破 JSON)
- **真换行**:JSON 字符串里不要写真换行(直接按回车),也不要写 `\n`。要分段就用多个 prose 数组项;要换行就用 `<br/>`
- **`<em>` 标签**:在 lead 里**直接写 HTML 标签** `<em>...</em>`——会按 innerHTML 渲染,CSS 会给它加钢蓝下划线
- **slug 唯一**:每件展品的 slug 必须唯一,且小写英文连字符(`iron-kettle` 不是 `IronKettle` 也不是 `iron_kettle`)
- **gallery layout 拼写**:必须是 `f-3` `f-2` `f-4` `f-6` 之一,写错就不显示
- **picsum seed 唯一**:每张图给一个唯一 seed,否则不同图位会变成同一张
- **num 格式**:`N°01` 这个 N 加 ° 是必须的(°是 U+00B0),别打成 `No.01` 或 `N01`
- **maker 必须有"/"**:`"英文工坊名 / 中文工坊名"`,JS 会按 `/` 切左半边显示在右下角
## 字数 / 件数边界
- title ≤ 4 字,超过用 tagline 容纳更长副题
- lead ≤ 80 字(一行半)
- prose 每段 80—160 字(150 是甜区)
- spec 4-6 行
- gallery 3-6 图(少于 3 太空,多于 6 排版乱)
- 总展品数 1—8 件(最佳 3—6)
- ticker 不用手填件数 — JS 会自动遍历 DATA 拼
## 风格触发词速查
用户说→你照哪个风格:
- 没说 / "克制" / "北欧" / "工业" → 默认冷调钢蓝(已是 template 默认)
- "暖" / "复古" / "棕调" / "皮革" → styles.md `warm-leather`
- "暗" / "深色" / "夜色" → styles.md `night-iron`
- "纸张" / "印刷" / "report" → styles.md `paper-press`
- "纯色" / "海军蓝" → styles.md `navy-blueprint`
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!