Ver Fonte

release: Huashu Design 2.0 — 设计方向顾问三套逻辑重构

- 顾问重做:三套逻辑并行(秒数轮盘20选1 + 现实参照获奖站 + 最佳设计师哲学),直接出3版真实视觉,废除无效的文字盲选;先澄清+主动索要参考
- 风格库重写:40种HTML原生风格库(网页20+PPT20,调研100个真实获奖案例反推),按温度分级,AI-only款降级为仅生图时可用
- 图片素材前置(Phase 3.5):内容型先判断图片必需+取真图,新增 scripts/fetch_images.py(Wikimedia公共领域,内置清代理+合规UA+失败兜底)
- 稳定性加固7处:触发判定/取图三级兜底/无subagent串行fallback/三套逻辑产出自检等
- 瘦身:核心资产协议下沉 references/brand-asset-protocol.md,SKILL.md 822→约610行
- 公开发布:清私有路径、补YouTube教程、鹦鹉站成果(huasheng.ai/parrots)、gitignore排除大文件/开发产物

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
alchain há 2 semanas atrás
pai
commit
aba7cc6628

+ 7 - 0
.gitignore

@@ -28,3 +28,10 @@ Thumbs.db
 demos/_frames_*.png
 demos/_verify.js
 demos/_verify.mjs
+
+# 开发/测试中间产物(skill 内部研发用,不分发给用户)
+_style-research/
+**/design-demos/
+
+# Demo 大视频(用 GitHub Releases 分发,不进仓库膨胀)
+demos/**/*.mp4

+ 28 - 9
README.md

@@ -19,7 +19,7 @@
 
 3 到 30 分钟,你能 ship 一段**产品发布动画**、一个能点击的 App 原型、一套能编辑的 PPT、一份印刷级的信息图。
 
-不是「AI 做的还行」那种水平——是看起来像大厂设计团队做的。给 skill 你的品牌资产(logo、色板、UI 截图),它会读懂你的品牌气质;什么都不给,内置的 20 种设计语汇也能兜底到不出 AI slop。
+不是「AI 做的还行」那种水平——是看起来像大厂设计团队做的。给 skill 你的品牌资产(logo、色板、UI 截图),它会读懂你的品牌气质;什么都不给,**三套逻辑顾问 + 40 种 HTML 原生风格库**也能兜底到不出 AI slop。
 
 **你看到这篇 README 里的每一个动画,都是 huashu-design 自己做的。** 不是 Figma,不是 AE,就是一句话 prompt + skill 跑通。下次产品发布要做宣传片?现在你也能做。
 
@@ -49,6 +49,18 @@ npx skills add alchaincyf/huashu-design
 
 ---
 
+## 📺 新手教程(花叔亲录)
+
+不知道怎么用?看花叔录的 huashu-design 上手教程:
+
+<p align="center">
+  <a href="https://www.youtube.com/watch?v=m-_BlUdcIvw"><img src="https://img.youtube.com/vi/m-_BlUdcIvw/maxresdefault.jpg" alt="huashu-design 使用教程" width="70%"></a>
+</p>
+
+<p align="center"><sub>👉 <a href="https://www.youtube.com/watch?v=m-_BlUdcIvw">在 YouTube 观看完整教程</a></sub></p>
+
+---
+
 ## 装上就能用
 
 ```bash
@@ -87,7 +99,7 @@ npx skills add alchaincyf/huashu-design
 | 时间轴动画 | MP4(25fps / 60fps 插帧)+ GIF(palette 优化)+ BGM | 8–12 min |
 | 设计变体 | 3+ 并排对比 · Tweaks 实时调参 · 跨维度探索 | 10 min |
 | 信息图 / 可视化 | 印刷级排版 · 可导 PDF/PNG/SVG | 10 min |
-| 设计方向顾问 | 5 流派 × 20 种设计哲学 · 推荐 3 方向 · 并行生成 Demo | 5 min |
+| 设计方向顾问 | **三套逻辑并行**(秒数轮盘 + 现实参照获奖站 + 最佳设计师)· 直接出 3 版真实视觉 | 5 min |
 | 5 维度专家评审 | 雷达图 + Keep/Fix/Quick Wins · 可操作修复清单 | 3 min |
 
 ---
@@ -96,7 +108,7 @@ npx skills add alchaincyf/huashu-design
 
 ### 设计方向顾问
 
-模糊需求时的 fallback:从 5 流派 × 20 种设计哲学里挑 3 个差异化方向,并行生成 3 个 Demo 让你选
+模糊需求时的 fallback:**三套互补逻辑并行**——秒数轮盘(20 选 1 打破惯性)+ 现实参照(世界级获奖网站迁移)+ 最佳设计师(顶级工作室哲学),直接出 3 版**真实视觉**让你看着选,不让你在文字里盲选风格。背后是 **40 种 HTML 原生风格库**(网页 20 + PPT 20,纯 CSS 无需生图)
 
 <p align="center"><img src="https://github.com/alchaincyf/huashu-design/releases/download/v2.0/w3-fallback-advisor.gif" width="100%"></p>
 
@@ -152,6 +164,12 @@ HTML deck 浏览器演讲 · `html2pptx.js` 读 DOM 的 computedStyle 逐元素
 
 ## Showcase · 真实案例
 
+### 鹦鹉进化史网站 · 设计方向顾问三套逻辑实战(2.0)
+
+> **Live demo · [https://www.huasheng.ai/parrots/](https://www.huasheng.ai/parrots/)**
+
+一句「做个介绍鹦鹉进化史的网站」、零额外要求,skill 自动跑完整 2.0 顾问流程:先判断图片是内容必需 → 抓公共领域博物插画(Edward Lear / John Gould 的鹦鹉图录)→ **三套逻辑并行**(秒数轮盘 + 现实参照获奖站 + 原研哉「白」哲学)各出一版真实视觉。**素材齐了再设计,不是边设计边用色块占位。**
+
 ### 「聊聊 skill」 · PM after-party 演讲 deck
 
 > **Live demo · [https://skill-huasheng.vercel.app](https://skill-huasheng.vercel.app)**
@@ -194,13 +212,14 @@ A/B 测试(v1 vs v2,各跑 6 agent):**v2 的稳定性方差比 v1 低 5
 
 ### 设计方向顾问(Fallback)
 
-当用户需求模糊到无法着手时触发:
+当用户需求模糊到无法着手时触发(2.0 重做)
 
-- 不凭通用直觉硬做,进入 Fallback 模式
-- 从 5 流派 × 20 种设计哲学里推荐 3 个**必须来自不同流派**的差异化方向
-- 每个方向配代表作、气质关键词、代表设计师
-- 并行生成 3 个视觉 Demo 让用户
+- 先对话澄清 + 主动索要参考(名字 / logo / 品牌色 / 喜欢的参考站)
+- 取齐内容必需的真图(公共领域 / 免版权,脚本一键抓),再开工
+- **三套互补逻辑并行 subagent**,各出一版**真实视觉**:① 秒数轮盘(`date +%S` 取秒,20 选 1,打破模型偷选极简的惯性)② 现实参照(世界级获奖网站 / PPT / iOS 原型迁移)③ 最佳设计师(预算无上限时最适合的工作室哲学)
+- **绝不让你在没看到视觉时盲选风格**——三版摆出来,看着
 - 选定后进入主干 Junior Designer 流程
+- 底层是 **40 种 HTML 原生风格库**(网页 20 + PPT 20,按大胆 / 中性 / 安静分级,纯 CSS 无需生图)作弹药,不是教条
 
 ### Junior Designer 工作流
 
@@ -267,7 +286,7 @@ huashu-design/
 │   └── bgm-*.mp3            # 6 首场景化背景音乐
 ├── references/              # 按任务深入读的子文档
 │   ├── animation-pitfalls.md
-│   ├── design-styles.md     # 20 种设计哲学详细库
+│   ├── design-styles.md     # 40 种 HTML 原生风格库(网页 20 + PPT 20)
 │   ├── slide-decks.md
 │   ├── editable-pptx.md
 │   ├── critique-guide.md

+ 85 - 286
SKILL.md

@@ -1,6 +1,6 @@
 ---
 name: huashu-design
-description: 花叔Design——用HTML做高保真原型、交互Demo、幻灯片、动画、设计变体探索+设计方向顾问+专家评审。根据任务embody对应专家(UX/动画师/幻灯片设计师/原型师),避免web design tropes。触发词:做原型、设计Demo、交互原型、HTML演示、动画Demo、设计变体、hi-fi设计、UI mockup、prototype、设计探索、做个HTML页面、做个可视化、app原型、iOS原型、移动应用mockup、导出MP4、导出GIF、60fps视频、设计风格、设计方向、设计哲学、配色方案、视觉风格、推荐风格、选个风格、做个好看的、评审、好不好看、review this design、带解说的动画、解说视频、概念解释视频、长视频科普、配音动画、voiceover、narration、TTS+动画、5分钟讲清楚什么是XX。**主干能力**:Junior Designer工作流(先假设+reasoning+placeholder再迭代)、反AI slop清单、React+Babel最佳实践、Tweaks变体切换、Speaker Notes、Starter Components(幻灯片/变体/动画/设备边框/解说Stage)、App原型守则(Wikimedia/Met/Unsplash取真图+AppPhone可交互+Playwright点击测试)、HTML动画→MP4/GIF导出(25fps基础+60fps插帧+palette优化+场景化BGM+自动fade)、**带解说长动画pipeline**(豆包TTS+实测时长生timeline+NarrationStage+ducking混音;铁律:连续运动叙事,禁PowerPoint切换)。**需求模糊Fallback**:设计方向顾问——5流派×20哲学(Pentagram信息建筑/Field.io运动诗学/Kenya Hara东方极简/Sagmeister实验先锋等)推3方向+24预制showcase+并行3 Demo选。**可选**:5维度评审(哲学一致/视觉层级/细节/功能/创新各10分+修复清单)
+description: 花叔Design——用HTML做高保真原型、交互Demo、幻灯片、动画、设计变体探索+设计方向顾问+专家评审。根据任务embody对应专家(UX/动画师/幻灯片设计师/原型师),避免web design tropes。触发词:做原型、交互原型、HTML演示、动画Demo、设计变体、hi-fi设计、UI mockup、prototype、做个HTML页面、做个可视化、app原型、iOS原型、导出MP4/GIF、60fps视频、设计风格、设计方向、配色方案、推荐风格、选个风格、做个好看的、评审、好不好看、review this design、带解说的动画、解说视频、长视频科普、voiceover、narration、5分钟讲清楚什么是XX。需求模糊时进设计方向顾问(三套逻辑并行出3版真实视觉,HTML原生40种风格库网页20+PPT20为弹药);另含品牌资产协议、反AI slop、Junior工作流、Tweaks变体、动画→MP4/GIF导出、带解说长视频pipeline、5维评审
 ---
 
 # 花叔Design · Huashu-Design
@@ -64,236 +64,22 @@ description: 花叔Design——用HTML做高保真原型、交互Demo、幻灯
 
 好的hi-fi设计**一定**是从已有上下文长出来的。先问用户是否有design system/UI kit/codebase/Figma/截图。**凭空做hi-fi是last resort,一定会产出generic的作品**。如果用户说没有,先帮他去找(看项目里有没有,看有没有参考品牌)。
 
-**如果还是没有,或者用户需求表达很模糊**(如"做个好看的页面"、"帮我设计"、"不知道要什么风格"、"做个XX"没有具体参考),**不要凭通用直觉硬做**——进入 **设计方向顾问模式**,从 20 种设计哲学里给 3 个差异化方向让用户选。完整流程见下方「设计方向顾问(Fallback 模式)」大节。
+**如果还是没有,或者用户需求表达很模糊**(如"做个好看的页面"、"帮我设计"、"不知道要什么风格"、"做个XX"没有具体参考),**不要凭通用直觉硬做**——进入 **设计方向顾问模式**,从 HTML 原生 40 种风格库(网页 20+PPT 20)里给 3 个差异化方向让用户选。完整流程见下方「设计方向顾问(Fallback 模式)」大节。
 
 #### 1.a 核心资产协议(涉及具体品牌时强制执行)
 
-> **这是 v1 最核心的约束,也是稳定性的生命线。** Agent 是否走通这个协议,直接决定输出质量是 40 分还是 90 分。不要跳过任何一步。
->
-> **v1.1 重构(2026-04-20)**:从「品牌资产协议」升级为「核心资产协议」。之前的版本过度聚焦色值和字体,漏掉了设计中最基础的 logo / 产品图 / UI 截图。花叔的原话:「除了所谓的品牌色,显然我们应该找到并且用上大疆的 logo,用上 pocket4 的产品图。如果是网站或者 app 等非实体产品的话,logo 至少该是必须的。这可能是比所谓的品牌设计的 spec 更重要的基本逻辑。否则,我们在表达什么呢?」
+**触发**:任务涉及具体品牌/产品(DJI、Stripe、某 App…)。**核心理念:资产 > 规范**——logo / 产品图 / UI 截图比品牌色值更重要(花叔:「除了品牌色,显然该用上 logo 和产品图,否则我们在表达什么呢?」)。
 
-**触发条件**:任务涉及具体品牌——用户提了产品名/公司名/明确客户(Stripe、Linear、Anthropic、Notion、Lovart、DJI、自家公司等),不论用户是否主动提供了品牌资料。
+**5 步硬流程**(每步有 fallback,绝不静默跳过;完整操作见 reference):
+1. **问**:一次问全资产清单(logo / 产品图 / UI 截图 / 色板 / 字体 / 禁区)
+2. **搜官方渠道**:按资产类型去官网 / press kit / 官方社媒 / Wikimedia
+3. **下载资产**:按类型三条兜底路径下载 logo / 产品图 / UI
+4. **验证 + 提取**:不只 grep 色值,要核对 logo / 产品图真实性
+5. **固化为 `brand-spec.md`**:模板覆盖所有资产路径(logo / 产品图 / UI / 色板 / 字型 / 禁区 / 气质)
 
-**前置硬条件**:走协议前必须已通过「#0 事实验证先于假设」确认品牌/产品存在且状态已知。如果你还不确定产品是否已发布/规格/版本,先回去搜。
+🛑 **检查点 · 资产自检**:实体产品要有产品图(不是 CSS 剪影)、数字产品要有 logo+UI 截图、色值从真实 HTML/SVG 抽取。缺了就停下补,不硬做
 
-##### 核心理念:资产 > 规范
-
-**品牌的本质是「它被认出来」**。认出来靠什么?按识别度排序:
-
-| 资产类型 | 识别度贡献 | 必需性 |
-|---|---|---|
-| **Logo** | 最高 · 任何品牌出现 logo 就一眼识别 | **任何品牌都必须有** |
-| **产品图/产品渲染图** | 极高 · 实体产品的"主角"就是产品本身 | **实体产品(硬件/包装/消费品)必须有** |
-| **UI 截图/界面素材** | 极高 · 数字产品的"主角"是它的界面 | **数字产品(App/网站/SaaS)必须有** |
-| **色值** | 中 · 辅助识别,脱离前三项时经常撞衫 | 辅助 |
-| **字体** | 低 · 需配合前述才能建立识别 | 辅助 |
-| **气质关键词** | 低 · agent 自检用 | 辅助 |
-
-**翻译成执行规则**:
-- 只抽色值 + 字体、不找 logo / 产品图 / UI → **违反本协议**
-- 用 CSS 剪影/SVG 手画替代真实产品图 → **违反本协议**(生成的就是「通用科技动画」,任何品牌都长一样)
-- 找不到资产不告诉用户、也不 AI 生成,硬做 → **违反本协议**
-- 宁可停下问用户要素材,也不要用 generic 填充
-
-##### 5 步硬流程(每步有 fallback,绝不静默跳过)
-
-##### Step 1 · 问(资产清单一次问全)
-
-不要只问「有 brand guidelines 吗?」——太宽泛,用户不知道该给什么。按清单逐项问:
-
-```
-关于 <brand/product>,你手上有以下哪些资料?我按优先级列:
-1. Logo(SVG / 高清 PNG)—— 任何品牌必备
-2. 产品图 / 官方渲染图 —— 实体产品必备(如 DJI Pocket 4 的产品照)
-3. UI 截图 / 界面素材 —— 数字产品必备(如 App 主要页面截图)
-4. 色值清单(HEX / RGB / 品牌色盘)
-5. 字体清单(Display / Body)
-6. Brand guidelines PDF / Figma design system / 品牌官网链接
-
-有的直接发我,没有的我去搜/抓/生成。
-```
-
-##### Step 2 · 搜官方渠道(按资产类型)
-
-| 资产 | 搜索路径 |
-|---|---|
-| **Logo** | `<brand>.com/brand` · `<brand>.com/press` · `<brand>.com/press-kit` · `brand.<brand>.com` · 官网 header 的 inline SVG |
-| **产品图/渲染图** | `<brand>.com/<product>` 产品详情页 hero image + gallery · 官方 YouTube launch film 截帧 · 官方新闻稿附图 |
-| **UI 截图** | App Store / Google Play 产品页截图 · 官网 screenshots section · 产品官方演示视频截帧 |
-| **色值** | 官网 inline CSS / Tailwind config / brand guidelines PDF |
-| **字体** | 官网 `<link rel="stylesheet">` 引用 · Google Fonts 追踪 · brand guidelines |
-
-`WebSearch` 兜底关键词:
-- Logo 找不到 → `<brand> logo download SVG`、`<brand> press kit`
-- 产品图找不到 → `<brand> <product> official renders`、`<brand> <product> product photography`
-- UI 找不到 → `<brand> app screenshots`、`<brand> dashboard UI`
-
-##### Step 3 · 下载资产 · 按类型三条兜底路径
-
-**3.1 Logo(任何品牌必需)**
-
-三条路径按成功率递减:
-1. 独立 SVG/PNG 文件(最理想):
-   ```bash
-   curl -o assets/<brand>-brand/logo.svg https://<brand>.com/logo.svg
-   curl -o assets/<brand>-brand/logo-white.svg https://<brand>.com/logo-white.svg
-   ```
-2. 官网 HTML 全文提取 inline SVG(80% 场景必用):
-   ```bash
-   curl -A "Mozilla/5.0" -L https://<brand>.com -o assets/<brand>-brand/homepage.html
-   # 然后 grep <svg>...</svg> 提取 logo 节点
-   ```
-3. 官方社交媒体 avatar(最后手段):GitHub/Twitter/LinkedIn 的公司头像通常是 400×400 或 800×800 透明底 PNG
-
-**3.2 产品图/渲染图(实体产品必需)**
-
-按优先级:
-1. **官方产品页 hero image**(最高优先级):右键查看图片地址 / curl 获取。分辨率通常 2000px+
-2. **官方 press kit**:`<brand>.com/press` 常有高清产品图下载
-3. **官方 launch video 截帧**:用 `yt-dlp` 下载 YouTube 视频,ffmpeg 抽几帧高清图
-4. **Wikimedia Commons**:公共领域常有
-5. **AI 生成兜底**(nano-banana-pro):把真实产品图作为参考发给 AI,让它生成符合动画场景的变体。**不要用 CSS/SVG 手画代替**
-
-```bash
-# 示例:下载 DJI 官网产品 hero image
-curl -A "Mozilla/5.0" -L "<hero-image-url>" -o assets/<brand>-brand/product-hero.png
-```
-
-**3.3 UI 截图(数字产品必需)**
-
-- App Store / Google Play 的产品截图(注意:可能是 mockup 而非真实 UI,要对比)
-- 官网 screenshots section
-- 产品演示视频截帧
-- 产品官方 Twitter/X 的发布截图(常是最新版本)
-- 用户有账号时,直接截屏真实产品界面
-
-**3.4 · 素材质量门槛「5-10-2-8」原则(铁律)**
-
-> **Logo 的规则不同于其他素材**。Logo 有就必须用(没有就停下问用户);其他素材(产品图/UI/参考图/配图)遵循「5-10-2-8」质量门槛。
->
-> 2026-04-20 花叔原话:「我们的原则是搜索 5 轮,找到 10 个素材,选择 2 个好的。每个需要评分 8/10 以上,宁可少一些,也不为了完成任务滥竽充数。」
-
-| 维度 | 标准 | 反模式 |
-|---|---|---|
-| **5 轮搜索** | 多渠道交叉搜(官网 / press kit / 官方社媒 / YouTube 截帧 / Wikimedia / 用户账号截屏),不是一轮抓前 2 个就停 | 第一页结果直接用 |
-| **10 个候选** | 至少凑 10 个备选才开始筛 | 只抓 2 个,没得选 |
-| **选 2 个好的** | 从 10 个里精选 2 个作为最终素材 | 全都用 = 视觉过载 + 品位稀释 |
-| **每个 8/10 分以上** | 不够 8 分**宁可不用**,用诚实 placeholder(灰块+文字标签)或 AI 生成(nano-banana-pro 以官方参考为基底)| 凑数 7 分素材进 brand-spec.md |
-
-**8/10 评分维度**(打分时记录在 `brand-spec.md`):
-
-1. **分辨率** · ≥2000px(印刷/大屏场景 ≥3000px)
-2. **版权清晰度** · 官方来源 > 公共领域 > 免费素材 > 疑似盗图(疑似盗图直接 0 分)
-3. **与品牌气质契合度** · 和 brand-spec.md 里的「气质关键词」一致
-4. **光线/构图/风格一致性** · 2 个素材放一起不打架
-5. **独立叙事能力** · 能单独表达一个叙事角色(不是装饰)
-
-**为什么这个门槛是铁律**:
-- 花叔的哲学:**宁缺毋滥**。滥竽充数的素材比没有更糟——污染视觉品味、传递「不专业」信号
-- **「一个细节做到 120%,其他做到 80%」的量化版**:8 分是"其他 80%" 的底线,真正 hero 素材要 9-10 分
-- 消费者看作品时,每一个视觉元素都在**积分或扣分**。7 分素材 = 扣分项,不如留空
-
-**Logo 例外**(重申):有就必须用,不适用「5-10-2-8」。因为 logo 不是「多选一」问题,而是「识别度根基」问题——就算 logo 本身只有 6 分,也比没有 logo 强 10 倍。
-
-##### Step 4 · 验证 + 提取(不只是 grep 色值)
-
-| 资产 | 验证动作 |
-|---|---|
-| **Logo** | 文件存在 + SVG/PNG 可打开 + 至少两个版本(深底/浅底用)+ 透明背景 |
-| **产品图** | 至少一张 2000px+ 分辨率 + 去背或干净背景 + 多个角度(主视角、细节、场景) |
-| **UI 截图** | 分辨率真实(1x / 2x)+ 是最新版本(不是旧版)+ 无用户数据污染 |
-| **色值** | `grep -hoE '#[0-9A-Fa-f]{6}' assets/<brand>-brand/*.{svg,html,css} \| sort \| uniq -c \| sort -rn \| head -20`,过滤黑白灰 |
-
-**警惕示范品牌污染**:产品截图里常有用户 demo 的品牌色(如某工具截图演示喜茶红),那不是该工具的色。**同时出现两种强色时必须区分**。
-
-**品牌多切面**:同一品牌的官网营销色和产品 UI 色经常不同(Lovart 官网暖米+橙,产品 UI 是 Charcoal + Lime)。**两套都是真的**——根据交付场景选合适的切面。
-
-##### Step 5 · 固化为 `brand-spec.md` 文件(模板必须覆盖所有资产)
-
-```markdown
-# <Brand> · Brand Spec
-> 采集日期:YYYY-MM-DD
-> 资产来源:<列出下载来源>
-> 资产完整度:<完整 / 部分 / 推断>
-
-## 🎯 核心资产(一等公民)
-
-### Logo
-- 主版本:`assets/<brand>-brand/logo.svg`
-- 浅底反色版:`assets/<brand>-brand/logo-white.svg`
-- 使用场景:<片头/片尾/角落水印/全局>
-- 禁用变形:<不能拉伸/改色/加描边>
-
-### 产品图(实体产品必填)
-- 主视角:`assets/<brand>-brand/product-hero.png`(2000×1500)
-- 细节图:`assets/<brand>-brand/product-detail-1.png` / `product-detail-2.png`
-- 场景图:`assets/<brand>-brand/product-scene.png`
-- 使用场景:<特写/旋转/对比>
-
-### UI 截图(数字产品必填)
-- 主页:`assets/<brand>-brand/ui-home.png`
-- 核心功能:`assets/<brand>-brand/ui-feature-<name>.png`
-- 使用场景:<产品展示/Dashboard 渐现/对比演示>
-
-## 🎨 辅助资产
-
-### 色板
-- Primary: #XXXXXX  <来源标注>
-- Background: #XXXXXX
-- Ink: #XXXXXX
-- Accent: #XXXXXX
-- 禁用色: <品牌明确不用的色系>
-
-### 字型
-- Display: <font stack>
-- Body: <font stack>
-- Mono(数据 HUD 用): <font stack>
-
-### 签名细节
-- <哪些细节是「120% 做到」的>
-
-### 禁区
-- <明确不能做的:比如 Lovart 不用蓝色、Stripe 不用低饱和暖色>
-
-### 气质关键词
-- <3-5 个形容词>
-```
-
-**写完 spec 后的执行纪律(硬要求)**:
-- 所有 HTML 必须**引用** `brand-spec.md` 里的资产文件路径,不允许用 CSS 剪影/SVG 手画代替
-- Logo 作为 `<img>` 引用真实文件,不重画
-- 产品图作为 `<img>` 引用真实文件,不用 CSS 剪影代替
-- CSS 变量从 spec 注入:`:root { --brand-primary: ...; }`,HTML 只用 `var(--brand-*)`
-- 这让品牌一致性从「靠自觉」变成「靠结构」——想临时加色要先改 spec
-
-##### 全流程失败的兜底
-
-按资产类型分别处理:
-
-| 缺失 | 处理 |
-|---|---|
-| **Logo 完全找不到** | **停下问用户**,不要硬做(logo 是品牌识别度的根基) |
-| **产品图(实体产品)找不到** | 优先 nano-banana-pro AI 生成(以官方参考图为基底)→ 次选向用户索取 → 最后才是诚实 placeholder(灰块+文字标签,明确标注"产品图待补") |
-| **UI 截图(数字产品)找不到** | 向用户索取自己账号的截屏 → 官方演示视频截帧。不用 mockup 生成器凑 |
-| **色值完全找不到** | 按「设计方向顾问模式」走,向用户推荐 3 个方向并标注 assumption |
-
-**禁止**:找不到资产就静默用 CSS 剪影/通用渐变硬做——这是协议最大的反 pattern。**宁可停下问,也不要凑**。
-
-##### 反例(真实踩过的坑)
-
-- **Kimi 动画**:凭记忆猜「应该是橙色」,实际 Kimi 是 `#1783FF` 蓝色——返工一遍
-- **Lovart 设计**:把产品截图里演示品牌的喜茶红当成 Lovart 自己的色——差点毁整个设计
-- **DJI Pocket 4 发布动画(2026-04-20,触发本协议升级的真实案例)**:走了旧版只抽色值的协议,没下载 DJI logo、没找 Pocket 4 产品图,用 CSS 剪影代替产品——做出来是「通用黑底+橙 accent 的科技动画」,没有大疆识别度。花叔原话:「否则,我们在表达什么呢?」→ 协议升级。
-- 抽完色没写进 brand-spec.md,第三页就忘了主色数值,临场加了个「接近但不是」的 hex——品牌一致性崩溃
-
-##### 协议代价 vs 不做代价
-
-| 场景 | 时间 |
-|---|---|
-| 正确走完协议 | 下载 logo 5 min + 下载 3-5 张产品图/UI 10 min + grep 色值 5 min + 写 spec 10 min = **30 分钟** |
-| 不做协议的代价 | 做出没识别度的通用动画 → 用户返工 1-2 小时,甚至重做 |
-
-**这是稳定性最便宜的投资**。尤其对商单/发布会/重要客户项目,30 分钟的资产协议是保命钱。
+> **完整协议**(5 步详细操作 + 下载命令 + brand-spec 模板 + 全流程失败兜底 + 反例 + 代价对比)→ `references/brand-asset-protocol.md`
 
 ### 2. Junior Designer模式:先展示假设,再执行
 
@@ -348,10 +134,12 @@ curl -A "Mozilla/5.0" -L "<hero-image-url>" -o assets/<brand>-brand/product-hero
 | SVG 画 imagery(人脸/场景/物品)| AI 画的 SVG 人物永远五官错位,比例诡异 | **几乎没有**——有图就用真图(Wikimedia/Unsplash/AI 生成),没图就留诚实 placeholder |
 | **CSS 剪影/SVG 手画代替真实产品图** | 生成的就是「通用科技动画」——黑底+橙 accent+圆角长条,任何实体产品都长一样,品牌识别度归零(DJI Pocket 4 实测 2026-04-20)| **几乎没有**——先走核心资产协议找真实产品图;真没有时用 nano-banana-pro 以官方参考图为基底生成;实在不行标诚实 placeholder 告诉用户"产品图待补" |
 | Inter/Roboto/Arial/system fonts 作 display | 太常见,读者看不出这是"有设计的产品"还是"demo 页" | 品牌 spec 明确用这些字体(Stripe 用 Sohne/Inter 变体,但是经过微调的) |
-| 赛博霓虹 / 深蓝底 `#0D1117` | GitHub dark mode 美学的烂大街复制 | 开发者工具产品且品牌本身走这方向 |
+| **GitHub-dark 偷懒解**:均匀深蓝底 `#0D1117` + 通用青/紫霓虹 glow | 这**一种特定组合**是 SaaS/AI 落地页的烂大街复制——注意不是「所有暗色都禁」 | 开发者工具产品且品牌本身走这方向 |
 
 **判断边界**:「品牌本身用」是唯一能合法破例的理由。品牌 spec 里明写了用紫渐变,那就用——此时它不再是 slop,是品牌签名。
 
+⚠️ **别把整片暗色大胆派一起误杀**:要禁的只是「均匀深蓝底+通用霓虹 glow」这一种偷懒解。电影级戏剧光影、暖色赛博(Ash Thorp 的橙/青而非冷蓝)、运动诗学的暗场叙事(Locomotive)都是**有作者意图的暗色**,不在禁区内——它们携带强烈风格信息,恰恰是对抗「千篇一律极简」的解药。
+
 #### 6.3 正向做什么(带"为什么")
 
 - ✅ `text-wrap: pretty` + CSS Grid + 高级 CSS:排版细节是 AI 分不清的"品味税",会用这些的 agent 看起来像真设计师
@@ -370,6 +158,11 @@ curl -A "Mozilla/5.0" -L "<hero-image-url>" -o assets/<brand>-brand/product-hero
 
 ## 设计方向顾问(Fallback 模式)
 
+> ⚖️ **根本立场(先读,统领本节)**:skill 的职责是**帮用户规避最差的设计**——守住反 slop 下限,**不是规定「好设计长什么样」**。真正的好设计**从用户的需求和提供的内容里长出来**,不在内置风格库里。所以:
+> - 用户给了内容/品牌/参考 → 设计就从那里展开,**别套库**。
+> - 用户什么都没有 → 下面三套逻辑只是帮他**起步、打破惯性**的脚手架,不是终点。
+> - `design-styles.md` 的 40 种是「没思路时翻的弹药」,**不是必须从这里选的清单**。过多的硬性风格要求是负担、是无聊——别被风格库绑架,内容永远优先。
+
 **什么时候触发**:
 - 用户需求模糊("做个好看的"、"帮我设计"、"这个怎么样"、"做个XX"没有具体参考)
 - 用户明确要"推荐风格"、"给几个方向"、"选个哲学"、"想看不同风格"
@@ -383,80 +176,90 @@ curl -A "Mozilla/5.0" -L "<hero-image-url>" -o assets/<brand>-brand/product-hero
 
 不确定就用最轻量版:**列出 3 个差异化方向让用户二选一,不展开不生成**——尊重用户节奏。
 
-### 完整流程(8 个 Phase,顺序执行
+### 完整流程(7 个 Phase,顺序执行;Phase 3.5 是图片前置半步
 
-**Phase 1 · 深度理解需求**
-提问(一次最多 3 个):目标受众 / 核心信息 / 情感基调 / 输出格式。需求已清晰则跳过。
+**Phase 1 · 对话澄清需求 + 主动索要参考(不要跳过、不要直接开做)**
+先用**对话**了解(一次最多 3 个问题):目标受众 / 核心信息 / 情感基调 / 输出格式。
+**同时必须主动索要参考材料**——这是最容易被跳过、却最该问的一步,一次问全:
+- 这个项目/产品**叫什么名字**?
+- 有没有 **logo、品牌色、VI、字体规范**?有就发我。
+- 有没有**你喜欢的参考**——某个网站 URL、一张截图、某个产品「就要那种感觉」?
+- 都没有也没关系,说一句「你看着办」,我直接做几版给你挑。
 
-**Phase 2 · 顾问式重述**(100-200 字)
-用自己的话重述本质需求、受众、场景、情感基调。以「基于这个理解,我为你准备了 3 个设计方向」结尾。
+⏱️ **无应答策略**:问题发出后,若用户**没回应任何信息**(只丢了最初那句模糊需求就没下文)→ 不要枯等。按 best judgment 补齐假设(标 assumption),直接往下跑完 Phase 2-4 把三版真实视觉摆出来——**用「看得见的东西」代替继续追问**(正好呼应选择无效铁律)。
 
-**Phase 3 · 推荐 3 套设计哲学**(必须差异化)
+> 用户给了**具体品牌/产品名(能去官网找到 logo 的那种,如 Stripe / DJI / 某 App)**或品牌资产/参考站 → **跳出 Fallback**,走「核心哲学 #1」+「§1.a 核心资产协议」主干。
+> ⚠️ **但普通主题名不算品牌名**:「咖啡 / 鹦鹉 / 历史 / 健身」这类是**内容主题**,不是可找 logo 的品牌——**继续走 Fallback,不要跑去找「咖啡的 logo」空转**。Fallback 正是服务「给了主题、但没给品牌/风格参考」这种最常见的情况。
 
-每个方向必须:
-- **含设计师/机构名**(如「Kenya Hara 式东方极简」,不是只说「极简主义」)
-- 50-100 字解释「为什么这个设计师适合你」
-- 3-4 条标志性视觉特征 + 3-5 个气质关键词 + 可选代表作
+**Phase 2 · 顾问式重述**(**≥200 字**,把需求真正嚼透,不是敷衍一句)
+用自己的话深入重述本质需求、受众、场景、情感基调、用户没说出口的潜在期待。以「基于这个理解,我**直接做 3 个不同方向的真实版本给你看**」结尾——❌ 不要以「你想选哪个方向?」结尾(见 Phase 3 铁律)。
 
-**差异化规则**(必守):3 个方向**必须来自 3 个不同流派**,形成明显视觉反差:
+**Phase 3 · 固化设计 spec(三套逻辑的共同输入)**
 
-| 流派 | 视觉气质 | 适合作为 |
-|------|---------|---------|
-| 信息建筑派(01-04) | 理性、数据驱动、克制 | 安全/专业选择 |
-| 运动诗学派(05-08) | 动感、沉浸、技术美学 | 大胆/前卫选择 |
-| 极简主义派(09-12) | 秩序、留白、精致 | 安全/高端选择 |
-| 实验先锋派(13-16) | 先锋、生成艺术、视觉冲击 | 大胆/创新选择 |
-| 东方哲学派(17-20) | 温润、诗意、思辨 | 差异化/独特选择 |
+把 Phase 1-2 澄清到的东西写成一份 **≥500 字的详尽设计 spec**——这是三个 subagent 的**唯一共同输入**,写薄了三版都会飘。必须覆盖:产品/项目是什么、目标受众与使用场景、核心信息与内容要点(分点列出主要板块)、情感基调与气质关键词、**输出格式与尺寸(必填——网页还是 PPT?具体像素?三个 subagent 必须统一用这个尺寸,否则三版尺寸不一无法横向对比)**、已知约束(品牌色/禁忌/必含元素)、图片需求(Phase 3.5 判断的结果)。它们各自独立工作、只看 spec、互不参考——所以 spec 越具体,三版越不会跑偏。
+
+**Phase 3.5 · 🔴 CHECKPOINT 图片素材前置(spawn 三套逻辑前必做,硬要求)**
+
+开工前先答一个问题:**这个设计,图片是不是内容必需的?**
+- 内容型(介绍鹦鹉 / 咖啡 / 历史 / 人物 / 产品 / 地点…)→ 图片几乎必需
+- 工具 / 数据 / 文档 / 纯观点型 → 可能不需要,判断后跳过取图
+- 拿不准是「内容必需」还是「装饰」→ **按内容必需处理**(宁可取真图)。⚠️「default 无生图」只指**装饰图默认不调生图模型**,不等于「内容图也不许有图」——内容必需的真图该取就取
+
+**图片必需 → 先制定获取策略、取齐真图,再 spawn 三套逻辑**(三个 subagent 共用同一批真图,只换设计),绝不边设计边用色块糊弄:
+
+| 内容类型 | 首选真图来源(公共领域 / 免版权优先) |
+|---|---|
+| 博物 / 历史 / 艺术 / 动植物 / 古典 | Wikimedia Commons、Met / Art Institute Open Access、Biodiversity Heritage Library(古典博物插画,如 Edward Lear / John Gould 鹦鹉图录) |
+| 通用生活 / 场景 / 产品摄影 | Unsplash、Pexels(免版权) |
+| 用户自己的产品 / 品牌 | 走 §1.a 核心资产协议取官方图 |
+
+🛠️ **取图用现成脚本(别每次现写)**:`python3 scripts/fetch_images.py --query "英文关键词1" "英文关键词2" --out 项目/assets/img --count 2 --width 1600`——已内置清代理 + 合规 UA + 许可输出 + 失败兜底,下次只改关键词。
 
-❌ **禁止从同一流派推荐 2 个以上** — 差异化不够用户看不出区别。
+- 取图后做**真图诚实性测试**:「去掉这张图,信息是否有损?」有损才用,别配 stock「灵感图」(那是 slop)
+- 取到的真图用 base64 内嵌或本地路径,传给三个 subagent 复用
+- ❌ **内容必需的图绝不用 CSS 色块 / SVG 几何糊弄**——鹦鹉网站没有鹦鹉图 = 失败
+- **取图失败三级兜底(不许卡死)**:① 公共领域库找不到 → 换 Unsplash/Pexels;② 全网取不到合适真图 → 用户确认有生图能力则走 `huashu-gpt-image` 以参考图为基底生成;③ 仍不行 → 标注「图待补」诚实 placeholder **继续 spawn 三套逻辑,不卡流程**,交付时一句话告诉用户「这版图是占位,真图待补」。⚠️ **取图失败是「降级继续」,不是 🛑 STOP**——别让取图卡死整个设计。
 
-详细 20 种风格库 + AI 提示词模板 → `references/design-styles.md`。
+> 来自花叔实测:鹦鹉案例里「先判断图片必需 → 选对获取策略(Edward Lear 公共领域博物插画)」是出彩的关键。**素材齐了再设计,不是边设计边占位。**
 
-**Phase 4 · 展示预制 Showcase 画廊**
+**Phase 4 · 三套逻辑并行 subagent,各生成一版真实视觉(核心)**
 
-推荐 3 方向后,**立即检查** `assets/showcases/INDEX.md` 是否有匹配的预制样例(8 场景 × 3 风格 = 24 个样例):
+> ✅ **这是 Fallback 的 default 动作**:用户**无需主动要求**「用三套逻辑」「帮我找最佳设计师」——只要触发了顾问模式(用户没给明确风格参考),就**自动**并行跑这三套。目标是让什么都不懂的普通用户,零额外要求也能拿到顶级设计。
 
-| 场景 | 目录 |
-|------|------|
-| 公众号封面 | `assets/showcases/cover/` |
-| PPT 数据页 | `assets/showcases/ppt/` |
-| 竖版信息图 | `assets/showcases/infographic/` |
-| 个人主页 / AI 导航 / AI 写作 / SaaS / 开发文档 | `assets/showcases/website-*/` |
+> 🔴 **选择无效铁律**(花叔 2026-06 实测确认):绝不让用户在「只有文字、没看到视觉」时选风格——用户没依据。所以不抛文字单选题,而是**并行启动 3 个 subagent 同时跑三套互补逻辑**,各产出一版真实视觉,一次性摆出来让用户选「看得见的东西」。三个 subagent **独立 context、互不参考**(避免趋同),并行是为了更快 deliver。
 
-匹配话术:「在启动实时 Demo 之前,先看看这 3 个风格在类似场景的效果 →」然后 Read 对应 .png
+> ⚙️ **不支持 spawn subagent 的 runtime(Codex / Cursor / 纯对话)**:改**串行**跑三套——每套开跑前只读 spec、清空对上一套的记忆、不许参考已生成的版本,并用三个不同 anchor(轮盘号 / 参照案例 / 设计师名)物理隔离趋同。串行也**必须出三版**,不许偷懒并成一版。spawn prompt 里只喂 spec,别把另两套的逻辑一起写进去。
 
-场景模板按输出类型组织 → `references/scene-templates.md`。
+每个 subagent 拿同一份 spec + 同一份用户真实内容,各按一套逻辑产出一版**纯 HTML/CSS**(default 无生图)真实视觉:
 
-**Phase 5 · 生成 3 个视觉 Demo**
+**逻辑一 · 🎲 秒数轮盘(随机 · 20 选 1)**
+跑 `date +%S` 取秒数,算 `秒数 % 20 + 1` 得 1-20,从 `design-styles.md` **对应半区**(做网页用网页 20 种 / 做 PPT 用 PPT 20 种)取那一号风格,subagent 严格按其视觉 DNA + HTML 实现做。作用:用时间掷骰子,强制打破模型「每次都偷选安全极简」的确定性偏好。抽到还原度<70% 的(如 Memphis 做旧纹理)须标注「该部分用纯色块降级,不假装做出原版质感」。
 
-> 核心理念:**看到比说到更有效。** 别让用户凭文字想象,直接看。
+**逻辑二 · 🏆 现实参照(标杆迁移)**
+选 1 个**世界上和该用户需求最相关、且你明确知道设计极出色(最好获奖:Awwwards / CSS Design Awards / FWA / Apple Design Award)**的真实网站 / PPT 模板 / iOS 原型作为参照标准。subagent 先用 WebSearch 核实该案例真实存在与其设计语言,拆解配色/字体/布局/标志元素,再迁移到用户内容上。作用:用真实世界的最高标准锚定,不靠凭空想象。
 
-为 3 个方向各生成一个 Demo——**如果当前 agent 支持 subagent 并行**,启动 3 个并行子任务(后台执行);**不支持就串行生成**(先后做 3 次,同样能用)。两种路径都能工作:
-- 使用**用户真实内容/主题**(不是 Lorem ipsum)
-- HTML 存 `_temp/design-demos/demo-[风格].html`
-- 截图:`npx playwright screenshot file:///path.html out.png --viewport-size=1200,900`
-- 全部完成后一起展示 3 张截图
+**逻辑三 · 🧠 最佳设计师(深呼吸 · 顶级定制)**
+深呼吸一口,认真想:**假如预算没有上限,世界上最适合为「这个用户、这个产品」做设计的工作室 / 设计师是谁?**(如 Pentagram / Collins / IDEO / Jony Ive / 原研哉 / Stripe 设计团队…按产品调性选)subagent 启用该设计师/工作室的**设计思维与设计哲学**,从头为用户设计。作用:用顶级设计智慧做最契合的定制。
 
-风格类型路径:
-| 风格最佳路径 | Demo 生成方式 |
-|-------------|--------------|
-| HTML 型 | 生成完整 HTML → 截图 |
-| AI 生成型 | `nano-banana-pro` 用风格 DNA + 内容描述 |
-| 混合型 | HTML 布局 + AI 插画 |
+并行执行规范(三个 subagent 共用):
+- 用**用户真实内容**(非 Lorem),三版同内容只换设计逻辑,方便横向对比
+- 纯 HTML/CSS 单文件;**内容必需的图用 Phase 3.5 取的真图**(三版共用),仅装饰/抽象图才用 CSS 几何/SVG/纯色块,绝不留空占位
+- 存当前**项目目录**(`项目名/design-demos/[逻辑名].html`)——❌ 禁 `_temp/`(花叔铁律)
+- 截图:`npx playwright screenshot file:///path.html out.png --viewport-size=1440,900`(PPT 用 1920,1080)
+- ✅ **产出自检(防偷懒,进 Phase 5 前必查)**:确认 `design-demos/` 下真有 **3 个 .html**——少于 3 个 = 没走完三套逻辑,补齐再往下,不许只做一版交差
+- 三版全部完成后**一起展示三张截图**,每版标明:用了哪套逻辑、具体哪个风格/参照案例/设计师,一句话说为什么
 
-**Phase 6 · 用户选择**:选一个深化 / 混合("A 的配色 + C 的布局")/ 微调 / 重来 → 回 Phase 3 重新推荐。
+> 仅当用户**已确认有生图能力**时,AI 生成型风格才走 `huashu-gpt-image`(见 `design-styles.md` 尾部「AI 生图专用风格」);否则一律 HTML。
+> 完整 40 种风格库(网页 20+PPT 20,含还原度/温度/HTML 实现/开源字体)→ `references/design-styles.md`。
 
-**Phase 7 · 生成 AI 提示词**
-结构:`[设计哲学约束] + [内容描述] + [技术参数]`
-- ✅ 用具体特征而非风格名(写「Kenya Hara 的留白感+赤土橙 #C04A1A」,不写「极简」)
-- ✅ 包含颜色 HEX、比例、空间分配、输出规格
-- ❌ 避开审美禁区(见反 AI slop)
+**Phase 5 · 用户基于「看到的真实视觉」选择**(第一次有效选择):看完三版真实截图,选一版深化 / 混合("轮盘版的配色 + 设计师版的布局")/ 微调 / 全部重来 → 重跑三套逻辑。
 
-**Phase 8 · 选定方向后进入主干**
-方向确认 → 回到「核心哲学」+「工作流程」的 Junior Designer pass。这时已经有明确的 design context,不再是凭空做。
+**Phase 6 · 进入主干执行**
+用户选定(或混合)后 → 回到「核心哲学」+「工作流程」的 Junior Designer pass,把那一版做扎实。这时已有明确 design context,不再凭空。
+> 仅当走 AI 生图:提示词用「具体视觉特征 + 内容 + 技术参数」(写「赤陶橙 #C04A1A + 留白」不写「极简」),避开审美禁区 → 见 `huashu-gpt-image`。
 
 **真实素材优先原则**(涉及用户本人/产品时):
-1. 先查用户配置的**私有 memory 路径**下的 `personal-asset-index.json`(Claude Code 默认在 `~/.claude/memory/`;其他 agent 按其自身约定
+1. 先查用户配置的**私有 memory / config 路径**下的 `personal-asset-index.json`(各 runtime 按自身约定的 memory 目录;找不到就问用户
 2. 首次使用:复制 `assets/personal-asset-index.example.json` 到上述私有路径,填入真实数据
 3. 找不到就直接问用户要,不要编造——真实数据文件不要放在 skill 目录内避免随分发泄露隐私
 
@@ -612,7 +415,7 @@ Screen 组件接 callback props(`onEnter`、`onClose`、`onTabChange`、`onOpe
      - **只有要可编辑 PPTX 时**,HTML 必须从第一行就按 4 条硬约束写(见 `references/editable-pptx.md`);事后补救会 2-3 小时返工
      - **≥ 5 页 deck 必须先做 2 页 showcase 定 grammar 再批量推**(见 `references/slide-decks.md` 的「批量制作前先做 showcase」章节)——跳过这步 = 方向错返工 N 次而非 2 次
      - 详见 `references/slide-decks.md` 开头「HTML 优先架构 + 交付格式决策树」
-   - ⚡ **如果用户需求严重模糊(没参考、没明确风格、"做个好看的"类)→ 走「设计方向顾问(Fallback 模式)」大节,完成 Phase 1-4 选定方向后,再回到这里 Step 2**
+   - ⚡ **只要用户没给明确风格参考(没 design system、没截图/Figma、没指定某某具体风格)→ 走「设计方向顾问(Fallback 模式)」大节,完成 Phase 1-5(用户从三版里选定方向)后,再回到这里 Step 2**。门槛要低:「做个XX」只要不带风格词就触发——宁可多推 3 个方向让用户选,也不要模型自己闷头选一个极简就开做
 2. **探索资源 + 抽核心资产**(不只是抽色值):读 design system、linked files、上传的截图/代码。**涉及具体品牌时必走 §1.a「核心资产协议」五步**(问→按类型搜→按类型下载 logo/产品图/UI→验证+提取→写 `brand-spec.md` 含所有资产路径)。
    - 🛑 **检查点2·资产自检**:开工前确认核心资产到位——实体产品要有产品图(不是 CSS 剪影)、数字产品要有 logo+UI 截图、色值从真实 HTML/SVG 抽取。缺了就停下补,不硬做。
    - 如果用户没给 context 且挖不出资产,先走设计方向顾问 Fallback,再按 `references/design-context.md` 的品位锚点兜底。
@@ -745,8 +548,8 @@ Screen 组件接 callback props(`onEnter`、`onClose`、`onTabChange`、`onOpe
 | **动画的正向设计语法**(Anthropic 级叙事/运动/节奏/表达风格)| `references/animation-best-practices.md`(5 段叙事+Expo easing+运动语言 8 条+3 种场景配方)|
 | **带解说的长动画 / 长概念视频**(5-20 分钟带配音、解说驱动画面、TTS 实测时长生成 timeline)| `references/voiceover-pipeline.md`(铁律:连续运动叙事、禁 PowerPoint 切换)+ `assets/narration_stage.jsx` + `scripts/{tts-doubao,narrate-pipeline}.mjs` + `scripts/{mix-voiceover,render-narration}.sh` |
 | 做Tweaks实时调参 | `references/tweaks-system.md` |
-| 没有design context怎么办 | `references/design-context.md`(薄 fallback) 或 `references/design-styles.md`(厚 fallback:20 种设计哲学详细库) |
-| **需求模糊要推荐风格方向** | `references/design-styles.md`(20 种风格+AI prompt 模板)+ `assets/showcases/INDEX.md`(24 个预制样例) |
+| 没有design context怎么办 | `references/design-context.md`(薄 fallback) 或 `references/design-styles.md`(厚 fallback:HTML 原生 40 种风格库,网页 20+PPT 20,按温度分级) |
+| **需求模糊要推荐风格方向** | `references/design-styles.md`(40 种 HTML 原生风格库,含还原度/温度/开源字体)+ `assets/showcases/INDEX.md`(预制截图画廊) |
 | **按输出类型查场景模板**(封面/PPT/信息图) | `references/scene-templates.md` |
 | 输出完后验证 | `references/verification.md` + `scripts/verify.py` |
 | **设计评审/打分**(设计完成后可选) | `references/critique-guide.md`(5 维度评分+常见问题清单) |
@@ -804,11 +607,7 @@ Skill 路径引用均采用**相对本 skill 根目录**的形式(`references/
 
 - **事实验证先于假设**(核心原则 #0):涉及具体产品/技术/事件(DJI Pocket 4、Gemini 3 Pro 等)必须先 `WebSearch` 验证存在性和状态,不凭训练语料断言。
 - **Embody专家**:做幻灯片时是幻灯片设计师,做动画时是动画师。不是写Web UI。
-- **Junior先show,再做**:先展示思路,再执行。
-- **Variations不给答案**:3+个变体,让用户选。
-- **Placeholder优于烂实现**:诚实留白,不编造。
-- **反AI slop时时警醒**:每个渐变/emoji/圆角border accent之前先问——这真的必要吗?
-- **涉及具体品牌**:走「核心资产协议」(§1.a)——Logo(必需)+ 产品图(实体产品必需)+ UI 截图(数字产品必需),色值只是辅助。**不要用 CSS 剪影代替真实产品图**。
+- **正文哲学速记**:Junior 先 show → 3+ variations → 诚实 placeholder → 时时反 slop → 涉品牌走资产协议(§1.a,不用 CSS 剪影代替产品图)。展开见上文「核心哲学」各节。
 - **做动画之前**:必读 `references/animation-pitfalls.md`——里面 14 条规则每条都来自真实踩过的坑,跳过会让你重做 1-3 轮。
 - **手写 Stage / Sprite**(不用 `assets/animations.jsx`):必须实现两件事——(a) tick 第一帧同步设 `window.__ready = true` (b) 检测 `window.__recording === true` 时强制 loop=false。否则录视频必出问题。
 - **做带解说的动画**(≥1 分钟,长概念视频):**整片是一个连续的运动叙事,不是一组独立场景**。选 1-2 个 hero element 跨 scene 持续存在,scene 之间 morph 不切。每个 Scene 各自独立 layout + cue 用 fade-up + 整页 opacity 切换 = 带配音的 PowerPoint = 质感归零。完整规则见 `references/voiceover-pipeline.md` 「铁律」章节。这条规则**强调多少遍都不为过**。

+ 791 - 1
package-lock.json

@@ -5,7 +5,582 @@
   "packages": {
     "": {
       "dependencies": {
-        "playwright": "^1.59.1"
+        "pdf-lib": "^1.17.1",
+        "playwright": "^1.59.1",
+        "pptxgenjs": "^4.0.1",
+        "sharp": "^0.34.5"
+      }
+    },
+    "node_modules/@emnapi/runtime": {
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz",
+      "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "tslib": "^2.4.0"
+      }
+    },
+    "node_modules/@emnapi/runtime/node_modules/tslib": {
+      "version": "2.8.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+      "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+      "license": "0BSD",
+      "optional": true
+    },
+    "node_modules/@img/colour": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz",
+      "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@img/sharp-darwin-arm64": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz",
+      "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==",
+      "cpu": [
+        "arm64"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-darwin-arm64": "1.2.4"
+      }
+    },
+    "node_modules/@img/sharp-darwin-x64": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz",
+      "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==",
+      "cpu": [
+        "x64"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-darwin-x64": "1.2.4"
+      }
+    },
+    "node_modules/@img/sharp-libvips-darwin-arm64": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz",
+      "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==",
+      "cpu": [
+        "arm64"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-darwin-x64": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz",
+      "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==",
+      "cpu": [
+        "x64"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linux-arm": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz",
+      "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==",
+      "cpu": [
+        "arm"
+      ],
+      "libc": [
+        "glibc"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linux-arm64": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz",
+      "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==",
+      "cpu": [
+        "arm64"
+      ],
+      "libc": [
+        "glibc"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linux-ppc64": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz",
+      "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==",
+      "cpu": [
+        "ppc64"
+      ],
+      "libc": [
+        "glibc"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linux-riscv64": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz",
+      "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==",
+      "cpu": [
+        "riscv64"
+      ],
+      "libc": [
+        "glibc"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linux-s390x": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz",
+      "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==",
+      "cpu": [
+        "s390x"
+      ],
+      "libc": [
+        "glibc"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linux-x64": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz",
+      "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==",
+      "cpu": [
+        "x64"
+      ],
+      "libc": [
+        "glibc"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz",
+      "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==",
+      "cpu": [
+        "arm64"
+      ],
+      "libc": [
+        "musl"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz",
+      "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==",
+      "cpu": [
+        "x64"
+      ],
+      "libc": [
+        "musl"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-linux-arm": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz",
+      "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==",
+      "cpu": [
+        "arm"
+      ],
+      "libc": [
+        "glibc"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linux-arm": "1.2.4"
+      }
+    },
+    "node_modules/@img/sharp-linux-arm64": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz",
+      "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==",
+      "cpu": [
+        "arm64"
+      ],
+      "libc": [
+        "glibc"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linux-arm64": "1.2.4"
+      }
+    },
+    "node_modules/@img/sharp-linux-ppc64": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz",
+      "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==",
+      "cpu": [
+        "ppc64"
+      ],
+      "libc": [
+        "glibc"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linux-ppc64": "1.2.4"
+      }
+    },
+    "node_modules/@img/sharp-linux-riscv64": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz",
+      "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==",
+      "cpu": [
+        "riscv64"
+      ],
+      "libc": [
+        "glibc"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linux-riscv64": "1.2.4"
+      }
+    },
+    "node_modules/@img/sharp-linux-s390x": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz",
+      "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==",
+      "cpu": [
+        "s390x"
+      ],
+      "libc": [
+        "glibc"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linux-s390x": "1.2.4"
+      }
+    },
+    "node_modules/@img/sharp-linux-x64": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz",
+      "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==",
+      "cpu": [
+        "x64"
+      ],
+      "libc": [
+        "glibc"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linux-x64": "1.2.4"
+      }
+    },
+    "node_modules/@img/sharp-linuxmusl-arm64": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz",
+      "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==",
+      "cpu": [
+        "arm64"
+      ],
+      "libc": [
+        "musl"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linuxmusl-arm64": "1.2.4"
+      }
+    },
+    "node_modules/@img/sharp-linuxmusl-x64": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz",
+      "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==",
+      "cpu": [
+        "x64"
+      ],
+      "libc": [
+        "musl"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linuxmusl-x64": "1.2.4"
+      }
+    },
+    "node_modules/@img/sharp-wasm32": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz",
+      "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==",
+      "cpu": [
+        "wasm32"
+      ],
+      "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
+      "optional": true,
+      "dependencies": {
+        "@emnapi/runtime": "^1.7.0"
+      },
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-win32-arm64": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz",
+      "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==",
+      "cpu": [
+        "arm64"
+      ],
+      "license": "Apache-2.0 AND LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-win32-ia32": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz",
+      "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==",
+      "cpu": [
+        "ia32"
+      ],
+      "license": "Apache-2.0 AND LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-win32-x64": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz",
+      "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==",
+      "cpu": [
+        "x64"
+      ],
+      "license": "Apache-2.0 AND LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@pdf-lib/standard-fonts": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@pdf-lib/standard-fonts/-/standard-fonts-1.0.0.tgz",
+      "integrity": "sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==",
+      "license": "MIT",
+      "dependencies": {
+        "pako": "^1.0.6"
+      }
+    },
+    "node_modules/@pdf-lib/upng": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@pdf-lib/upng/-/upng-1.0.1.tgz",
+      "integrity": "sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==",
+      "license": "MIT",
+      "dependencies": {
+        "pako": "^1.0.10"
+      }
+    },
+    "node_modules/@types/node": {
+      "version": "22.19.19",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.19.tgz",
+      "integrity": "sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==",
+      "license": "MIT",
+      "dependencies": {
+        "undici-types": "~6.21.0"
+      }
+    },
+    "node_modules/core-util-is": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+      "license": "MIT"
+    },
+    "node_modules/detect-libc": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+      "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=8"
       }
     },
     "node_modules/fsevents": {
@@ -22,6 +597,84 @@
         "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
       }
     },
+    "node_modules/https": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz",
+      "integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg==",
+      "license": "ISC"
+    },
+    "node_modules/image-size": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz",
+      "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==",
+      "license": "MIT",
+      "dependencies": {
+        "queue": "6.0.2"
+      },
+      "bin": {
+        "image-size": "bin/image-size.js"
+      },
+      "engines": {
+        "node": ">=16.x"
+      }
+    },
+    "node_modules/immediate": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+      "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
+      "license": "MIT"
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "license": "ISC"
+    },
+    "node_modules/isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+      "license": "MIT"
+    },
+    "node_modules/jszip": {
+      "version": "3.10.1",
+      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
+      "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+      "license": "(MIT OR GPL-3.0-or-later)",
+      "dependencies": {
+        "lie": "~3.3.0",
+        "pako": "~1.0.2",
+        "readable-stream": "~2.3.6",
+        "setimmediate": "^1.0.5"
+      }
+    },
+    "node_modules/lie": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+      "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+      "license": "MIT",
+      "dependencies": {
+        "immediate": "~3.0.5"
+      }
+    },
+    "node_modules/pako": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+      "license": "(MIT AND Zlib)"
+    },
+    "node_modules/pdf-lib": {
+      "version": "1.17.1",
+      "resolved": "https://registry.npmjs.org/pdf-lib/-/pdf-lib-1.17.1.tgz",
+      "integrity": "sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==",
+      "license": "MIT",
+      "dependencies": {
+        "@pdf-lib/standard-fonts": "^1.0.0",
+        "@pdf-lib/upng": "^1.0.1",
+        "pako": "^1.0.11",
+        "tslib": "^1.11.1"
+      }
+    },
     "node_modules/playwright": {
       "version": "1.59.1",
       "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.1.tgz",
@@ -51,6 +704,143 @@
       "engines": {
         "node": ">=18"
       }
+    },
+    "node_modules/pptxgenjs": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/pptxgenjs/-/pptxgenjs-4.0.1.tgz",
+      "integrity": "sha512-TeJISr8wouAuXw4C1F/mC33xbZs/FuEG6nH9FG1Zj+nuPcGMP5YRHl6X+j3HSUnS1f3at6k75ZZXPMZlA5Lj9A==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "^22.8.1",
+        "https": "^1.0.0",
+        "image-size": "^1.2.1",
+        "jszip": "^3.10.1"
+      }
+    },
+    "node_modules/process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+      "license": "MIT"
+    },
+    "node_modules/queue": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
+      "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "~2.0.3"
+      }
+    },
+    "node_modules/readable-stream": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+      "license": "MIT",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+      "license": "MIT"
+    },
+    "node_modules/semver": {
+      "version": "7.8.2",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.2.tgz",
+      "integrity": "sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/setimmediate": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+      "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
+      "license": "MIT"
+    },
+    "node_modules/sharp": {
+      "version": "0.34.5",
+      "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz",
+      "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==",
+      "hasInstallScript": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@img/colour": "^1.0.0",
+        "detect-libc": "^2.1.2",
+        "semver": "^7.7.3"
+      },
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-darwin-arm64": "0.34.5",
+        "@img/sharp-darwin-x64": "0.34.5",
+        "@img/sharp-libvips-darwin-arm64": "1.2.4",
+        "@img/sharp-libvips-darwin-x64": "1.2.4",
+        "@img/sharp-libvips-linux-arm": "1.2.4",
+        "@img/sharp-libvips-linux-arm64": "1.2.4",
+        "@img/sharp-libvips-linux-ppc64": "1.2.4",
+        "@img/sharp-libvips-linux-riscv64": "1.2.4",
+        "@img/sharp-libvips-linux-s390x": "1.2.4",
+        "@img/sharp-libvips-linux-x64": "1.2.4",
+        "@img/sharp-libvips-linuxmusl-arm64": "1.2.4",
+        "@img/sharp-libvips-linuxmusl-x64": "1.2.4",
+        "@img/sharp-linux-arm": "0.34.5",
+        "@img/sharp-linux-arm64": "0.34.5",
+        "@img/sharp-linux-ppc64": "0.34.5",
+        "@img/sharp-linux-riscv64": "0.34.5",
+        "@img/sharp-linux-s390x": "0.34.5",
+        "@img/sharp-linux-x64": "0.34.5",
+        "@img/sharp-linuxmusl-arm64": "0.34.5",
+        "@img/sharp-linuxmusl-x64": "0.34.5",
+        "@img/sharp-wasm32": "0.34.5",
+        "@img/sharp-win32-arm64": "0.34.5",
+        "@img/sharp-win32-ia32": "0.34.5",
+        "@img/sharp-win32-x64": "0.34.5"
+      }
+    },
+    "node_modules/string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "node_modules/tslib": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+      "license": "0BSD"
+    },
+    "node_modules/undici-types": {
+      "version": "6.21.0",
+      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+      "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+      "license": "MIT"
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+      "license": "MIT"
     }
   }
 }

+ 4 - 1
package.json

@@ -1,5 +1,8 @@
 {
   "dependencies": {
-    "playwright": "^1.59.1"
+    "pdf-lib": "^1.17.1",
+    "playwright": "^1.59.1",
+    "pptxgenjs": "^4.0.1",
+    "sharp": "^0.34.5"
   }
 }

+ 1 - 1
references/apple-gallery-showcase.md

@@ -331,7 +331,7 @@ requestAnimationFrame(function tick(now) {
 
 ## 引用
 
-- 完整实现样本:`/Users/alchain/Documents/写作/01-公众号写作/项目/2026.04-huashu-design发布/配图/hero-animation-v5.html`
+- 完整实现样本:hero-animation-v5.html(作者本地样本,未随仓库分发)
 - 原始灵感:claude.ai/design hero 视频
 - 参考审美:Apple 产品页、Dribbble shot 集合页
 

+ 2 - 2
references/audio-design-rules.md

@@ -256,5 +256,5 @@ ffmpeg -y -i video.mp4 -i sfx-track.mp3 -i bgm.mp3 \
 
 - SFX 资产清单:`sfx-library.md`
 - 视觉风格参考:`apple-gallery-showcase.md`
-- Anthropic 三支片子深度音频分析:`/Users/alchain/Documents/写作/01-公众号写作/项目/2026.04-huashu-design发布/参考动画/AUDIO-BEST-PRACTICES.md`
-- huashu-design v9 实战案例:`/Users/alchain/Documents/写作/01-公众号写作/项目/2026.04-huashu-design发布/配图/hero-animation-v9-final.mp4`
+- Anthropic 三支片子深度音频分析:AUDIO-BEST-PRACTICES.md(作者本地资料,未随仓库分发)
+- huashu-design v9 实战案例:hero-animation-v9-final.mp4(作者本地样本,未随仓库分发)

+ 234 - 0
references/brand-asset-protocol.md

@@ -0,0 +1,234 @@
+# 核心资产协议(完整版)
+
+> 从 SKILL.md「核心哲学 #1.a」下沉的完整协议(2026-06 瘦身)。SKILL.md 留了触发条件 + 5 步标题 + 自检;这里是 5 步详细操作、下载命令、brand-spec 模板、全流程失败兜底、反例与代价对比。
+> 触发:任务涉及具体品牌/产品时强制执行。回 SKILL.md 看精简版与上下文。
+
+#### 1.a 核心资产协议(涉及具体品牌时强制执行)
+
+> **这是 v1 最核心的约束,也是稳定性的生命线。** Agent 是否走通这个协议,直接决定输出质量是 40 分还是 90 分。不要跳过任何一步。
+>
+> **v1.1 重构(2026-04-20)**:从「品牌资产协议」升级为「核心资产协议」。之前的版本过度聚焦色值和字体,漏掉了设计中最基础的 logo / 产品图 / UI 截图。花叔的原话:「除了所谓的品牌色,显然我们应该找到并且用上大疆的 logo,用上 pocket4 的产品图。如果是网站或者 app 等非实体产品的话,logo 至少该是必须的。这可能是比所谓的品牌设计的 spec 更重要的基本逻辑。否则,我们在表达什么呢?」
+
+**触发条件**:任务涉及具体品牌——用户提了产品名/公司名/明确客户(Stripe、Linear、Anthropic、Notion、Lovart、DJI、自家公司等),不论用户是否主动提供了品牌资料。
+
+**前置硬条件**:走协议前必须已通过「#0 事实验证先于假设」确认品牌/产品存在且状态已知。如果你还不确定产品是否已发布/规格/版本,先回去搜。
+
+##### 核心理念:资产 > 规范
+
+**品牌的本质是「它被认出来」**。认出来靠什么?按识别度排序:
+
+| 资产类型 | 识别度贡献 | 必需性 |
+|---|---|---|
+| **Logo** | 最高 · 任何品牌出现 logo 就一眼识别 | **任何品牌都必须有** |
+| **产品图/产品渲染图** | 极高 · 实体产品的"主角"就是产品本身 | **实体产品(硬件/包装/消费品)必须有** |
+| **UI 截图/界面素材** | 极高 · 数字产品的"主角"是它的界面 | **数字产品(App/网站/SaaS)必须有** |
+| **色值** | 中 · 辅助识别,脱离前三项时经常撞衫 | 辅助 |
+| **字体** | 低 · 需配合前述才能建立识别 | 辅助 |
+| **气质关键词** | 低 · agent 自检用 | 辅助 |
+
+**翻译成执行规则**:
+- 只抽色值 + 字体、不找 logo / 产品图 / UI → **违反本协议**
+- 用 CSS 剪影/SVG 手画替代真实产品图 → **违反本协议**(生成的就是「通用科技动画」,任何品牌都长一样)
+- 找不到资产不告诉用户、也不 AI 生成,硬做 → **违反本协议**
+- 宁可停下问用户要素材,也不要用 generic 填充
+
+##### 5 步硬流程(每步有 fallback,绝不静默跳过)
+
+##### Step 1 · 问(资产清单一次问全)
+
+不要只问「有 brand guidelines 吗?」——太宽泛,用户不知道该给什么。按清单逐项问:
+
+```
+关于 <brand/product>,你手上有以下哪些资料?我按优先级列:
+1. Logo(SVG / 高清 PNG)—— 任何品牌必备
+2. 产品图 / 官方渲染图 —— 实体产品必备(如 DJI Pocket 4 的产品照)
+3. UI 截图 / 界面素材 —— 数字产品必备(如 App 主要页面截图)
+4. 色值清单(HEX / RGB / 品牌色盘)
+5. 字体清单(Display / Body)
+6. Brand guidelines PDF / Figma design system / 品牌官网链接
+
+有的直接发我,没有的我去搜/抓/生成。
+```
+
+##### Step 2 · 搜官方渠道(按资产类型)
+
+| 资产 | 搜索路径 |
+|---|---|
+| **Logo** | `<brand>.com/brand` · `<brand>.com/press` · `<brand>.com/press-kit` · `brand.<brand>.com` · 官网 header 的 inline SVG |
+| **产品图/渲染图** | `<brand>.com/<product>` 产品详情页 hero image + gallery · 官方 YouTube launch film 截帧 · 官方新闻稿附图 |
+| **UI 截图** | App Store / Google Play 产品页截图 · 官网 screenshots section · 产品官方演示视频截帧 |
+| **色值** | 官网 inline CSS / Tailwind config / brand guidelines PDF |
+| **字体** | 官网 `<link rel="stylesheet">` 引用 · Google Fonts 追踪 · brand guidelines |
+
+`WebSearch` 兜底关键词:
+- Logo 找不到 → `<brand> logo download SVG`、`<brand> press kit`
+- 产品图找不到 → `<brand> <product> official renders`、`<brand> <product> product photography`
+- UI 找不到 → `<brand> app screenshots`、`<brand> dashboard UI`
+
+##### Step 3 · 下载资产 · 按类型三条兜底路径
+
+**3.1 Logo(任何品牌必需)**
+
+三条路径按成功率递减:
+1. 独立 SVG/PNG 文件(最理想):
+   ```bash
+   curl -o assets/<brand>-brand/logo.svg https://<brand>.com/logo.svg
+   curl -o assets/<brand>-brand/logo-white.svg https://<brand>.com/logo-white.svg
+   ```
+2. 官网 HTML 全文提取 inline SVG(80% 场景必用):
+   ```bash
+   curl -A "Mozilla/5.0" -L https://<brand>.com -o assets/<brand>-brand/homepage.html
+   # 然后 grep <svg>...</svg> 提取 logo 节点
+   ```
+3. 官方社交媒体 avatar(最后手段):GitHub/Twitter/LinkedIn 的公司头像通常是 400×400 或 800×800 透明底 PNG
+
+**3.2 产品图/渲染图(实体产品必需)**
+
+按优先级:
+1. **官方产品页 hero image**(最高优先级):右键查看图片地址 / curl 获取。分辨率通常 2000px+
+2. **官方 press kit**:`<brand>.com/press` 常有高清产品图下载
+3. **官方 launch video 截帧**:用 `yt-dlp` 下载 YouTube 视频,ffmpeg 抽几帧高清图
+4. **Wikimedia Commons**:公共领域常有
+5. **AI 生成兜底**(nano-banana-pro):把真实产品图作为参考发给 AI,让它生成符合动画场景的变体。**不要用 CSS/SVG 手画代替**
+
+```bash
+# 示例:下载 DJI 官网产品 hero image
+curl -A "Mozilla/5.0" -L "<hero-image-url>" -o assets/<brand>-brand/product-hero.png
+```
+
+**3.3 UI 截图(数字产品必需)**
+
+- App Store / Google Play 的产品截图(注意:可能是 mockup 而非真实 UI,要对比)
+- 官网 screenshots section
+- 产品演示视频截帧
+- 产品官方 Twitter/X 的发布截图(常是最新版本)
+- 用户有账号时,直接截屏真实产品界面
+
+**3.4 · 素材质量门槛「5-10-2-8」原则(铁律)**
+
+> **Logo 的规则不同于其他素材**。Logo 有就必须用(没有就停下问用户);其他素材(产品图/UI/参考图/配图)遵循「5-10-2-8」质量门槛。
+>
+> 2026-04-20 花叔原话:「我们的原则是搜索 5 轮,找到 10 个素材,选择 2 个好的。每个需要评分 8/10 以上,宁可少一些,也不为了完成任务滥竽充数。」
+
+| 维度 | 标准 | 反模式 |
+|---|---|---|
+| **5 轮搜索** | 多渠道交叉搜(官网 / press kit / 官方社媒 / YouTube 截帧 / Wikimedia / 用户账号截屏),不是一轮抓前 2 个就停 | 第一页结果直接用 |
+| **10 个候选** | 至少凑 10 个备选才开始筛 | 只抓 2 个,没得选 |
+| **选 2 个好的** | 从 10 个里精选 2 个作为最终素材 | 全都用 = 视觉过载 + 品位稀释 |
+| **每个 8/10 分以上** | 不够 8 分**宁可不用**,用诚实 placeholder(灰块+文字标签)或 AI 生成(nano-banana-pro 以官方参考为基底)| 凑数 7 分素材进 brand-spec.md |
+
+**8/10 评分维度**(打分时记录在 `brand-spec.md`):
+
+1. **分辨率** · ≥2000px(印刷/大屏场景 ≥3000px)
+2. **版权清晰度** · 官方来源 > 公共领域 > 免费素材 > 疑似盗图(疑似盗图直接 0 分)
+3. **与品牌气质契合度** · 和 brand-spec.md 里的「气质关键词」一致
+4. **光线/构图/风格一致性** · 2 个素材放一起不打架
+5. **独立叙事能力** · 能单独表达一个叙事角色(不是装饰)
+
+**为什么这个门槛是铁律**:
+- 花叔的哲学:**宁缺毋滥**。滥竽充数的素材比没有更糟——污染视觉品味、传递「不专业」信号
+- **「一个细节做到 120%,其他做到 80%」的量化版**:8 分是"其他 80%" 的底线,真正 hero 素材要 9-10 分
+- 消费者看作品时,每一个视觉元素都在**积分或扣分**。7 分素材 = 扣分项,不如留空
+
+**Logo 例外**(重申):有就必须用,不适用「5-10-2-8」。因为 logo 不是「多选一」问题,而是「识别度根基」问题——就算 logo 本身只有 6 分,也比没有 logo 强 10 倍。
+
+##### Step 4 · 验证 + 提取(不只是 grep 色值)
+
+| 资产 | 验证动作 |
+|---|---|
+| **Logo** | 文件存在 + SVG/PNG 可打开 + 至少两个版本(深底/浅底用)+ 透明背景 |
+| **产品图** | 至少一张 2000px+ 分辨率 + 去背或干净背景 + 多个角度(主视角、细节、场景) |
+| **UI 截图** | 分辨率真实(1x / 2x)+ 是最新版本(不是旧版)+ 无用户数据污染 |
+| **色值** | `grep -hoE '#[0-9A-Fa-f]{6}' assets/<brand>-brand/*.{svg,html,css} \| sort \| uniq -c \| sort -rn \| head -20`,过滤黑白灰 |
+
+**警惕示范品牌污染**:产品截图里常有用户 demo 的品牌色(如某工具截图演示喜茶红),那不是该工具的色。**同时出现两种强色时必须区分**。
+
+**品牌多切面**:同一品牌的官网营销色和产品 UI 色经常不同(Lovart 官网暖米+橙,产品 UI 是 Charcoal + Lime)。**两套都是真的**——根据交付场景选合适的切面。
+
+##### Step 5 · 固化为 `brand-spec.md` 文件(模板必须覆盖所有资产)
+
+```markdown
+# <Brand> · Brand Spec
+> 采集日期:YYYY-MM-DD
+> 资产来源:<列出下载来源>
+> 资产完整度:<完整 / 部分 / 推断>
+
+## 🎯 核心资产(一等公民)
+
+### Logo
+- 主版本:`assets/<brand>-brand/logo.svg`
+- 浅底反色版:`assets/<brand>-brand/logo-white.svg`
+- 使用场景:<片头/片尾/角落水印/全局>
+- 禁用变形:<不能拉伸/改色/加描边>
+
+### 产品图(实体产品必填)
+- 主视角:`assets/<brand>-brand/product-hero.png`(2000×1500)
+- 细节图:`assets/<brand>-brand/product-detail-1.png` / `product-detail-2.png`
+- 场景图:`assets/<brand>-brand/product-scene.png`
+- 使用场景:<特写/旋转/对比>
+
+### UI 截图(数字产品必填)
+- 主页:`assets/<brand>-brand/ui-home.png`
+- 核心功能:`assets/<brand>-brand/ui-feature-<name>.png`
+- 使用场景:<产品展示/Dashboard 渐现/对比演示>
+
+## 🎨 辅助资产
+
+### 色板
+- Primary: #XXXXXX  <来源标注>
+- Background: #XXXXXX
+- Ink: #XXXXXX
+- Accent: #XXXXXX
+- 禁用色: <品牌明确不用的色系>
+
+### 字型
+- Display: <font stack>
+- Body: <font stack>
+- Mono(数据 HUD 用): <font stack>
+
+### 签名细节
+- <哪些细节是「120% 做到」的>
+
+### 禁区
+- <明确不能做的:比如 Lovart 不用蓝色、Stripe 不用低饱和暖色>
+
+### 气质关键词
+- <3-5 个形容词>
+```
+
+**写完 spec 后的执行纪律(硬要求)**:
+- 所有 HTML 必须**引用** `brand-spec.md` 里的资产文件路径,不允许用 CSS 剪影/SVG 手画代替
+- Logo 作为 `<img>` 引用真实文件,不重画
+- 产品图作为 `<img>` 引用真实文件,不用 CSS 剪影代替
+- CSS 变量从 spec 注入:`:root { --brand-primary: ...; }`,HTML 只用 `var(--brand-*)`
+- 这让品牌一致性从「靠自觉」变成「靠结构」——想临时加色要先改 spec
+
+##### 全流程失败的兜底
+
+按资产类型分别处理:
+
+| 缺失 | 处理 |
+|---|---|
+| **Logo 完全找不到** | **停下问用户**,不要硬做(logo 是品牌识别度的根基) |
+| **产品图(实体产品)找不到** | 优先 nano-banana-pro AI 生成(以官方参考图为基底)→ 次选向用户索取 → 最后才是诚实 placeholder(灰块+文字标签,明确标注"产品图待补") |
+| **UI 截图(数字产品)找不到** | 向用户索取自己账号的截屏 → 官方演示视频截帧。不用 mockup 生成器凑 |
+| **色值完全找不到** | 按「设计方向顾问模式」走,向用户推荐 3 个方向并标注 assumption |
+
+**禁止**:找不到资产就静默用 CSS 剪影/通用渐变硬做——这是协议最大的反 pattern。**宁可停下问,也不要凑**。
+
+##### 反例(真实踩过的坑)
+
+- **Kimi 动画**:凭记忆猜「应该是橙色」,实际 Kimi 是 `#1783FF` 蓝色——返工一遍
+- **Lovart 设计**:把产品截图里演示品牌的喜茶红当成 Lovart 自己的色——差点毁整个设计
+- **DJI Pocket 4 发布动画(2026-04-20,触发本协议升级的真实案例)**:走了旧版只抽色值的协议,没下载 DJI logo、没找 Pocket 4 产品图,用 CSS 剪影代替产品——做出来是「通用黑底+橙 accent 的科技动画」,没有大疆识别度。花叔原话:「否则,我们在表达什么呢?」→ 协议升级。
+- 抽完色没写进 brand-spec.md,第三页就忘了主色数值,临场加了个「接近但不是」的 hex——品牌一致性崩溃
+
+##### 协议代价 vs 不做代价
+
+| 场景 | 时间 |
+|---|---|
+| 正确走完协议 | 下载 logo 5 min + 下载 3-5 张产品图/UI 10 min + grep 色值 5 min + 写 spec 10 min = **30 分钟** |
+| 不做协议的代价 | 做出没识别度的通用动画 → 用户返工 1-2 小时,甚至重做 |
+
+**这是稳定性最便宜的投资**。尤其对商单/发布会/重要客户项目,30 分钟的资产协议是保命钱。
+

+ 341 - 562
references/design-styles.md

@@ -1,591 +1,370 @@
-# 设计哲学风格库:20种体系
-
-> 用于视觉设计(网页/PPT/PDF/信息图/配图/App等)的设计风格库。
-> 每种风格提供:哲学内核 + 核心特征 + 提示词DNA(与场景模板组合使用)。
-
-## 风格×场景×执行路径 速查表
-
-| 风格 | 网页 | PPT | PDF | 信息图 | 封面 | AI生成 | 最佳路径 |
-|------|:---:|:---:|:---:|:-----:|:---:|:-----:|---------|
-| 01 Pentagram | ★★★ | ★★★ | ★★☆ | ★★☆ | ★★★ | ★☆☆ | HTML |
-| 02 Stamen Design | ★★☆ | ★★☆ | ★★☆ | ★★★ | ★★☆ | ★★☆ | 混合 |
-| 03 Information Architects | ★★★ | ★☆☆ | ★★★ | ★☆☆ | ★☆☆ | ★☆☆ | HTML |
-| 04 Fathom | ★★☆ | ★★★ | ★★★ | ★★★ | ★★☆ | ★☆☆ | HTML |
-| 05 Locomotive | ★★★ | ★★☆ | ★☆☆ | ★☆☆ | ★★☆ | ★★☆ | 混合 |
-| 06 Active Theory | ★★★ | ★☆☆ | ★☆☆ | ★☆☆ | ★★☆ | ★★★ | AI生成 |
-| 07 Field.io | ★★☆ | ★★☆ | ★☆☆ | ★★☆ | ★★★ | ★★★ | AI生成 |
-| 08 Resn | ★★★ | ★☆☆ | ★☆☆ | ★☆☆ | ★★☆ | ★★☆ | AI生成 |
-| 09 Experimental Jetset | ★★☆ | ★★☆ | ★★☆ | ★★☆ | ★★★ | ★★☆ | 混合 |
-| 10 Müller-Brockmann | ★★☆ | ★★★ | ★★★ | ★★★ | ★★☆ | ★☆☆ | HTML |
-| 11 Build | ★★★ | ★★★ | ★★☆ | ★☆☆ | ★★★ | ★☆☆ | HTML |
-| 12 Sagmeister & Walsh | ★★☆ | ★★★ | ★☆☆ | ★★☆ | ★★★ | ★★★ | AI生成 |
-| 13 Zach Lieberman | ★☆☆ | ★☆☆ | ★☆☆ | ★★☆ | ★★★ | ★★★ | AI生成 |
-| 14 Raven Kwok | ★☆☆ | ★★☆ | ★☆☆ | ★★☆ | ★★★ | ★★★ | AI生成 |
-| 15 Ash Thorp | ★★☆ | ★★☆ | ★☆☆ | ★☆☆ | ★★★ | ★★★ | AI生成 |
-| 16 Territory Studio | ★★☆ | ★★☆ | ★☆☆ | ★★☆ | ★★★ | ★★★ | AI生成 |
-| 17 Takram | ★★★ | ★★★ | ★★★ | ★★☆ | ★★☆ | ★☆☆ | HTML |
-| 18 Kenya Hara | ★★☆ | ★★★ | ★★★ | ★☆☆ | ★★★ | ★☆☆ | HTML |
-| 19 Irma Boom | ★☆☆ | ★★☆ | ★★★ | ★★☆ | ★★★ | ★★☆ | 混合 |
-| 20 Neo Shen | ★★☆ | ★★☆ | ★★☆ | ★★☆ | ★★★ | ★★★ | AI生成 |
-
-> 场景适配:★★★ = 强烈推荐 / ★★☆ = 适合 / ★☆☆ = 需改造
-> AI生成:★★★ = 直出效果好 / ★★☆ = 需调整 / ★☆☆ = 建议HTML执行
-> 最佳路径:AI生成(图片直出)/ HTML(代码渲染,数据精确)/ 混合(HTML布局+AI配图)
-
-**核心规律**:有明确视觉元素的风格(插画/粒子/生成艺术)AI直出效果好;依赖精确排版和数据的风格(网格/信息架构/留白)HTML渲染更可控。
+# 设计风格库:网页 20 种 + PPT 20 种(HTML 原生优先)
 
----
-
-## 一、信息建筑派(01-04)
-> 哲学:「数据不是装饰,是建筑材料」
-
-### 01. Pentagram - Michael Bierut风格
-**哲学**:字体即语言,网格即思想
-**核心特征**:
-- 极度克制的颜色(黑白+1个品牌色)
-- 瑞士网格系统的现代演绎
-- 字体排印作为主要视觉语言
-- 负空间的战略性使用(60%+留白)
-
-**提示词DNA**:
-```
-Pentagram/Michael Bierut style:
-- Extreme typographic hierarchy, Helvetica/Univers family
-- Swiss grid with precise mathematical spacing
-- Black/white + one accent color (#HEX)
-- Information architecture as visual structure
-- 60%+ whitespace ratio
-- Data visualization as primary decoration
-```
-
-**代表作**:Hillary Clinton 2016 campaign identity
-**搜索关键词**:pentagram hillary logo system
-
----
-
-### 02. Stamen Design - 数据诗学
-**哲学**:让数据成为可触摸的风景
-**核心特征**:
-- 地图学思维应用于信息设计
-- 算法生成的有机图形
-- 温暖的数据可视化色调(赭石、鼠尾草绿、深蓝)
-- 可交互的层级系统
-
-**提示词DNA**:
-```
-Stamen Design aesthetic:
-- Cartographic approach to data visualization
-- Organic, algorithm-generated patterns
-- Warm palette (terracotta, sage green, deep blues)
-- Layered information like topographic maps
-- Hand-crafted feel despite digital precision
-- Soft shadows and depth
-```
-
-**代表作**:COVID-19 surge map
-**搜索关键词**:stamen covid map visualization
-
----
-
-### 03. Information Architects - 内容优先原则
-**哲学**:设计不是装饰,是内容的建筑
-**核心特征**:
-- 极端的内容层级清晰度
-- 只使用系统字体(优化阅读)
-- 蓝色超链接传统的坚守
-- 性能即美学
-
-**提示词DNA**:
-```
-Information Architects philosophy:
-- Content-first hierarchy, zero decorative elements
-- System fonts only (SF Pro/Roboto/Inter)
-- Classic blue hyperlinks (#0000EE)
-- Reading-optimized line length (66 characters)
-- Progressive disclosure of depth
-- Text-heavy, fast-loading design
-```
-
-**代表作**:iA Writer app
-**搜索关键词**:information architects ia writer
-
----
-
-### 04. Fathom Information Design - 科学叙事
-**哲学**:每一个像素都必须承载信息
-**核心特征**:
-- 科学期刊的严谨+设计的优雅
-- 定量数据的精确可视化
-- 冷静的专业色调(灰、海军蓝)
-- 注释与引用系统的设计化
-
-**提示词DNA**:
-```
-Fathom Information Design style:
-- Scientific journal aesthetic meets modern design
-- Precise data visualization (charts, timelines, scatter plots)
-- Neutral scheme (grays, navy, one highlight color)
-- Footnote/citation design integrated into layout
-- Clean sans-serif (GT America/Graphik)
-- Information density without clutter
-```
-
-**代表作**:Bill & Melinda Gates Foundation年度报告
-**搜索关键词**:fathom information design gates foundation
-
----
-
-## 二、运动诗学派(05-08)
-> 哲学:「技术本身就是一种流动的诗」
-
-### 05. Locomotive - 滚动叙事大师
-**哲学**:滚动不是浏览,是旅程
-**核心特征**:
-- 丝滑的视差滚动
-- 电影化的分镜叙事
-- 大胆的空间留白
-- 动态元素的精确编排
-
-**提示词DNA**:
-```
-Locomotive scroll narrative style:
-- Film-like scene composition with parallax depth
-- Generous vertical spacing between sections
-- Bold typography emerging from darkness
-- Smooth motion blur effects
-- Dark mode (near-black backgrounds)
-- Strategic glowing accents
-- Hero sections 100vh tall
-```
-
-**代表作**:Lusion.co website
-**搜索关键词**:locomotive scroll lusion
-
----
-
-### 06. Active Theory - WebGL诗人
-**哲学**:让技术可见化即让技术可理解
-**核心特征**:
-- 3D粒子系统作为核心元素
-- 实时渲染的数据可视化
-- 鼠标交互驱动的世界构建
-- 霓虹与深空的配色
-
-**提示词DNA**:
-```
-Active Theory WebGL aesthetic:
-- Particle systems representing data flow
-- 3D visualization in depth space
-- Neon gradients (cyan/magenta/electric blue) on dark
-- Mouse-reactive environment
-- Depth of field and bokeh effects
-- Floating UI with glassmorphism
-```
-
-**代表作**:NASA Prospect
-**搜索关键词**:active theory nasa webgl
+> **2026-06 重构**。基于对全球 10 大网站类型 + 10 大演示类型、各 top5 公认最佳设计(共 100 个真实案例)的调研反推。
+> 旧版 20 种「平面/装置设计师哲学」库的致命问题:大胆风格几乎全是 AI-生成-only(粒子/光影/手绘),**用户默认无生图能力、default 全走 HTML 时,大胆半场直接清零,只剩极简——这是「default 千篇一律」的根因**。本库每一种都标了「纯 HTML/CSS 无生图」下的**还原度**。
+>
+> ⚖️ **但记住定位**:这是**「没思路时翻的弹药」,不是「必须从这里选」的清单**。用户给了内容/品牌/参考,设计就从那里展开,别套库。skill 的职责是帮用户规避最差,不是规定好设计长什么样——好设计从用户的真实需求里长出来。
 
----
+## 这个库怎么用
 
-### 07. Field.io - 算法美学
-**哲学**:代码即设计师
-**核心特征**:
-- 生成艺术系统
-- 每次访问都不同的动态图形
-- 抽象几何的智能编排
-- 技术感与艺术性的平衡
-
-**提示词DNA**:
-```
-Field.io generative design style:
-- Abstract geometric patterns, algorithmically generated
-- Dynamic composition that feels computational
-- Monochromatic base with vibrant accent
-- Mathematical precision in spacing
-- Voronoi diagrams or Delaunay triangulation
-- Clean code aesthetic
-```
-
-**代表作**:British Council digital installations
-**搜索关键词**:field.io generative design
+1. **先按输出类型选半区**:做网页/落地页/官网 → 网页 20 种;做 PPT/deck/演示 → PPT 20 种。
+2. **温度体系**:每种标了 `大胆 / 中性 / 安静`。**故意让大胆款占多数**——模型的确定性偏差天然偏安静极简,库的配比要把它往大胆推。
+   - 方向 A(稳妥底盘)从安静/中性里按需求选;方向 B 取不同温度拉反差;**方向 C 由 SKILL 的「秒数轮盘」强制注入大胆款**。
+   - ❌ 三个方向不要都落在「米白+留白+一个点缀色」——那是最常见的失败模式。
+3. **还原度**:≥90% 闭眼做;70-90% 主体可做、个别细节降级;<70%(如 Memphis 做旧纹理)必须在产出里**明确标注哪部分用纯色块降级**,不假装能做出原版质感。
+4. **字体**:每种给了开源替代(Inter/Geist/Manrope/Space Grotesk/Fraunces/Playfair 等),不要写付费字体(Söhne/Circular 等)。
+5. 配套:SKILL「设计方向顾问」Phase 3-5 用本库推 3 方向;`assets/showcases/` 有预制截图画廊。
 
 ---
 
-### 08. Resn - 叙事驱动的交互
-**哲学**:每个点击都推进故事
-**核心特征**:
-- 游戏化的用户旅程
-- 强烈的情感化设计
-- 插画与代码的深度结合
-- 非线性的探索体验
-
-**提示词DNA**:
-```
-Resn interactive storytelling approach:
-- Illustrative style mixed with UI elements
-- Gamified exploration (progress indicators)
-- Warm color palette despite tech subject
-- Character-driven design
-- Scroll-triggered animations
-- Editorial illustration meets product design
-```
-
-**代表作**:Resn.co.nz portfolio
-**搜索关键词**:resn interactive storytelling
+## 网页风格库(20种)
+
+#### 大胆派
+
+**媒体级粗野主义 Editorial Brutalism(巨号Helvetica压小正文)** `大胆·还原98%`
+- 参考:Bloomberg Businessweek(Richard Turley 2010-2014 改版,Code and Theory操刀);Neue Haas Grotesk谱系
+- 适配:媒体/内容出版、AI产品发布、品牌官网hero、调研报告封面、观点型长文头图
+- 视觉DNA:配色纯黑#000+纯白#FFF+超链接蓝#0000EE,点缀信号橙红#FF433D/终端绿#00A33E。字体Helvetica/Neue Haas Grotesk,120px+巨号headline左对齐紧字距直接压住14px小正文,极端字号反差。布局模块化网格+1px规则线分栏切割,高信息密度刻意不留白。标志元素:rule line分栏、超链接蓝下划线、黑白底大色块。
+- HTML实现:纯CSS可1:1还原。CSS Grid做模块网格+border做规则线分栏,clamp()做超大响应式字号+letter-spacing收紧,系统Helvetica/Arial栈或Inter兜底,超链接直接#0000EE下划线。零素材依赖。
+- 字体:Inter(替Helvetica/Neue Haas Grotesk),代码用Geist Mono
+
+**新粗野主义撞色信息流 Neo-Brutalism(粗黑描边卡片+高饱和撞色)** `大胆·还原95%`
+- 参考:The Verge 2022 redesign(in-house team,PolySans + Mānuka)
+- 适配:媒体/内容站、AI产品聚合页、活动landing、社区榜单页、小红书风信息卡
+- 视觉DNA:配色电光紫#5200FF~品红#E1306C高饱和主色+亮黄#F8E000强调+纯黑#08080D+白,大面积撞色块刻意不柔和。字体几何无衬线大标题+衬线正文反差。布局卡片化feed流、2-4px粗黑描边、硬色块分区、近乎无圆角。标志元素:粗描边卡片hover撞色翻转、未完成界面气质。
+- HTML实现:纯CSS强项。border:3px solid #000粗描边+box-shadow硬投影偏移(4px 4px 0 #000)+grid/flex卡片流+:hover切换background撞色翻转。无3D/光影障碍。
+- 字体:Space Grotesk(替PolySans)+ 任一衬线如Fraunces
+
+**孟菲斯复古拼贴最大化 Memphis Maximalism(撞色块+错位叠放+复古字体)** `大胆·还原72%`
+- 参考:Gucci Vault概念店(Alessandro Michele);Memphis设计运动 / Sagmeister叛逆基因
+- 适配:电商概念店、创意活动页、品牌实验campaign、Y2K复古主题、节日营销页
+- 视觉DNA:配色复古红/芥末黄/宝蓝/紫/橄榄绿大面积撞色并置+做旧米色暖底,浓烈刻意不和谐。字体复古衬线+装饰字混用、印刷质感、打破网格错位叠放。布局反网格拼贴策展、模块大小不一错落叠压、像逛数字房间。标志元素:撞色块、错位叠放、非常规导航彩蛋。
+- HTML实现:transform:rotate()做错位叠放+position:absolute叠压+高饱和background撞色块+复古Google Fonts。真实做旧纹理无法CSS还原,降级为纯色块+mix-blend-mode/contrast滤镜模拟肌理,几何拼贴版成立、archival做旧版会降级。
+- 字体:DM Serif Display + Bungee(装饰)+ Space Mono
+
+**糖果色凸起立体按钮游戏化 Friendly Geometric Candy** `大胆·还原85%`
+- 参考:Duolingo(Johnson Banks + Monotype,Feather Bold字体);反硅谷极简
+- 适配:教育语言学习、消费级App landing、游戏化产品、面向大众亲和产品、活动报名页
+- 视觉DNA:配色Duo绿#58CC02+鸭子黄#FFC800+天蓝#1CB0F6糖果高饱和+白底,圆润友好。字体超粗圆体(Feather Bold感)。布局大圆角卡片、凸起3D按钮(底部硬阴影=可按压感)、吉祥物位+进度气泡。标志元素:3px实底阴影立体按钮、按下位移动画、超圆角。
+- HTML实现:纯CSS。box-shadow:0 4px 0生硬底阴影做凸起按钮+:active translateY(4px)消阴影模拟按压,border-radius大圆角,纯色块。吉祥物无生图时用CSS几何形或emoji占位(轻微降级)。
+- 字体:Baloo 2 / Nunito(超粗圆体替Feather)
+
+**纯CSS几何插画+响应式变形彩蛋 Pure-CSS Art** `大胆·还原80%`
+- 参考:Lynn Fisher(lynnandtonic.com,纯CSS艺术传奇,Adobe专文报道)
+- 适配:个人主页、创意404/彩蛋页、品牌玩味landing、技术博客头图、设计师自我展示
+- 视觉DNA:配色2-4色高对比扁平面(每个breakpoint换调色)。字体粗几何无衬线标题。布局核心是「图随视口变形」——一组CSS形状在不同断点重组成不同画面(如建筑随屏宽变换层数)。标志元素:纯CSS绘制的几何插画、断点驱动的重排彩蛋、零图片。
+- HTML实现:纯CSS的炫技战场,零素材是优势。div+border-radius/clip-path/transform/box-shadow堆叠几何形,@media断点改变形状尺寸位置实现变形。难度在设计构思而非技术,但需要精心手搓每个形状。
+- 字体:Rubik / Archivo(粗几何替自定义)
+
+**巨型字黑白高对比时装大字报 Bold Big-Type Editorial** `大胆·还原88%`
+- 参考:Jacquemus官网 / Rik Oostenbroek / Domestika;时装杂志大字报
+- 适配:电商时尚、作品集、媒体专题、品牌宣言页、视频课程封面、调研报告大字版
+- 视觉DNA:配色极简黑白+单一克制点缀色(裸粉#E8C4C0或正红)。字体超大Display无衬线/高反差衬线,标题占满整屏。布局全幅网格、巨字与负空间博弈、图文1:1分割。标志元素:屏占比巨型headline、奢侈级留白、左右对位排版。
+- HTML实现:纯CSS完美还原。clamp()巨号字+CSS Grid全幅分割+大量padding留白+vh单位让标题占满视口。无图时用纯色块/文字块替代时装大片占位(轻降级但版式成立)。
+- 字体:Archivo Expanded / Anton(Display)+ Playfair Display(高反差衬线)
+
+**复古未来太空图录 Cosmic Retro-Futurism** `大胆·还原75%`
+- 参考:Perplexity Comet浏览器发布站(The Brand Identity:Black/Blue/Cream;《2001太空漫游》气质)
+- 适配:AI产品发布站、科技品牌宣言页、活动倒计时页、未来感landing、概念发布会
+- 视觉DNA:配色纯黑#0A0A0A+奶油纸白cream#F0EAD8+一抹钴蓝-孔雀蓝#2B4F91,低饱和像老式天文图录。字体高反差衬线(古典天文图册感)+留白。布局线描轨道/抛物线SVG、行星圆点、奶油底压黑字、古籍式排印。标志元素:SVG天体轨道线、奶油+蓝+黑三色、复古衬线大字、天文图录质感。
+- HTML实现:纯CSS+SVG还原静态版八成气质。SVG path画轨道抛物线+CSS径向定位行星圆点+三色变量+高反差衬线。缺口是「太空落到地球」的全屏视频转场(灵魂部分)——降级为CSS scroll视差+SVG轨道旋转近似。
+- 字体:Cormorant Garamond / EB Garamond(高反差衬线)+ Space Mono
+
+**电影感声波可视化 Cinematic Sound-Viz Dark** `大胆·还原72%`
+- 参考:ElevenLabs;电影片头title sequence(Saul Bass式极简动态)× 音频工程界面
+- 适配:音频/语音AI产品、音乐科技站、播客平台、媒体发布页、影院级品牌hero
+- 视觉DNA:配色纯黑#000底+纯白文字+蓝紫渐变accent波形。字体大号无衬线标题Saul Bass式极简。布局全幅暗场、声波/频谱可视化贯穿、巨标题压波形、卡片功能区。标志元素:彩色audio-waveform波形带、电影片头式极简、高对比黑白+单渐变、声音可视化母题。
+- HTML实现:纯CSS+SVG还原70%气质(骨架完美,波形是降级点)。SVG polyline画静态波形或多条不等高div柱阵+CSS animation做『假波形』跳动近似。缺口:随声音实时跳动的Web Audio/Canvas频谱不可纯CSS还原,静态版像、动态灵魂还不了。
+- 字体:Inter / Sora(大号无衬线)
+
+**像素游戏横版叙事 Pixel-Game Side-Scroller** `大胆·还原70%`
+- 参考:Robby Leonardi交互简历(8/16-bit平台动作游戏叙事,致敬任天堂SNES)
+- 适配:创意简历/作品集、品牌玩味campaign、游戏化landing、活动彩蛋页、个人趣味主页
+- 视觉DNA:配色复古游戏多段分区——森林绿#4CAF50草地+天蓝#5DADE2,过渡太空紫#2C2A4A、火山橙红#E8743B、海底青#1ABC9C,每『关卡』换一套高饱和卡通调色。字体像素字体(8-bit感)+粗无衬线。布局横版/纵向滚动分关卡场景、视差分层、scroll触发位移。标志元素:分关卡换色、像素美学、视差滚动、游戏HUD式UI。
+- HTML实现:纯CSS+少量JS还原骨架(原作就是HTML+CSS+jQuery无WebGL)。视差分层position+scroll位移、image-rendering:pixelated、CSS逐帧background-position做sprite动画、分段背景色。缺口:原创角色/场景手绘像素插画——无生图时用CSS方块拼简易像素图标替代(美术降级,技术不降)。
+- 字体:Press Start 2P / VT323(像素字)+ Inter
+
+
+#### 中性派
+
+**包豪斯几何标志+扁平插画系统 Bauhaus Geometric** `中性·还原90%`
+- 参考:Khan Academy rebrand(六边形+花瓣logomark + Wonder Blocks设计系统);Bauhaus几何构成
+- 适配:教育课程站、品牌logo系统、信息图、儿童亲和向产品、活动KV
+- 视觉DNA:配色三原色谱系——包豪斯红#E63946/黄#FFB703/蓝#0077B6+黑白,纯色块拼接。字体几何无衬线(圆润几何感)。布局圆/三角/方基本几何单元搭建插画,对齐栅格、模块化拼图。标志元素:纯几何形态logomark、扁平无渐变插画、原色块构成。
+- HTML实现:纯CSS几何全能。border-radius:50%做圆、clip-path/border三角形、方块div拼几何插画,CSS Grid栅格对齐,纯色fill无需素材。插画用CSS形状或内联SVG几何路径手搓。
+- 字体:Poppins / Manrope(几何圆润替Wonder Blocks)
+
+**暗色双色侧栏开发者作品集 Dark Editorial(深底+单荧光accent+等宽字)** `中性·还原96%`
+- 参考:Brittany Chiang(brittanychiang.com v4,dev portfolio事实标准)
+- 适配:作品集个人主页、开发者向产品、技术品牌站、简历页、AI工具landing
+- 视觉DNA:配色深墨绿/海军底#0A192F+板岩灰文字#8892B0+单一荧光青绿accent#64FFDA。字体无衬线正文+等宽字(编号/标签)。布局左固定侧栏导航+右滚动主区双栏,section编号01/02、链接hover下划线滑入。标志元素:单accent色、等宽编号标签、侧栏锚点高亮。
+- HTML实现:纯CSS完全还原。position:sticky做固定侧栏+CSS Grid双栏+单accent变量+等宽字标签+:hover下划线transform滑入。零素材,纯版式与微交互。
+- 字体:Inter + JetBrains Mono(等宽)
+
+**暖色出版物 Warm Editorial(奶油纸底+赤陶橙+衬线无衬线混排)** `中性·还原97%`
+- 参考:Anthropic / Claude(DBCo + Geist Studio,Styrene×Tiempos);Penguin/Pelican平装书排印
+- 适配:AI产品站、品牌官网、长文阅读页、橙皮书电子书、调研报告、培训材料
+- 视觉DNA:配色奶油纸底#F5F0E8+赤陶橙#CC785C/#D97757点缀+近黑文字#191919,温暖低饱和。字体衬线标题(Tiempos感)×无衬线正文(Styrene感)混排。布局书籍式单栏阅读流、舒适行高、节制分隔线。标志元素:纸感暖底、赤陶橙、出版级排印节奏。
+- HTML实现:纯CSS 100%还原,零素材。背景色变量+衬线无衬线字体栈混排+max-width限制阅读宽度+line-height 1.7舒适行高。这是Anthropic赤陶橙暖色版的安全主场。
+- 字体:Fraunces / Newsreader(替Tiempos衬线)+ Inter(替Styrene)
+
+**Linear暗色发光+Bento网格 Glassmorphism Bento** `中性·还原85%`
+- 参考:Linear / Cursor('The Linear Look'现象级流派,Frontend Horse有代码配方)
+- 适配:SaaS/AI产品站、开发者工具、技术品牌hero、产品功能展示、深色dashboard演示
+- 视觉DNA:配色近黑底#08090A+去饱和蓝紫品牌#5E6AD2+低饱和青紫微光渐变#4EA7FC→#B59AFF。字体几何无衬线负字距紧凑。布局便当盒bento网格分块、发丝分割线、玻璃拟态卡片。标志元素:暗底发光渐变边框、bento分块、流光streamer、磨砂玻璃。
+- HTML实现:纯CSS强还原。box-shadow/filter blur+radial-gradient做发光晕,backdrop-filter:blur玻璃拟态,conic/linear-gradient边框,CSS Grid拼bento。缺口仅「真实产品UI截图」——用色块+文字拼简化假UI替代(这部分降级)。
+- 字体:Inter / Geist(负字距)+ Geist Mono
+
+**斜切流体渐变带 Angled Fluid Gradient** `中性·还原92%`
+- 参考:Stripe(标志性angled gradient banner,Klim定制Söhne字体)
+- 适配:SaaS/Fintech落地页、品牌官网hero、产品发布页、活动banner、AI产品营销页
+- 视觉DNA:配色多色流体渐变(靛蓝#635BFF→青→粉→橙暖调)做hero背景+纯白内容区+近黑文字。字体精致无衬线(Söhne感)。布局倾斜分割色块(skew切角分区)、渐变hero压结构化栅格正文。标志元素:angled斜切边界、多色流体渐变、理性栅格压表达渐变。
+- HTML实现:纯CSS。transform:skewY()或clip-path:polygon()做斜切分区,linear-gradient多色叠加(可加CSS animation缓慢流动)做流体渐变带,Grid做下方结构化正文。零素材。
+- 字体:Inter / Hanken Grotesk(替Söhne)
+
+**实用主义彩虹分类文档 Utility-First Colorful Docs** `中性·还原98%`
+- 参考:Tailwind CSS Docs(Sky/Cyan品牌色+功能分类彩虹色相条)
+- 适配:技术文档、API参考、设计系统站、教程站、开发者knowledge base、SaaS帮助中心
+- 视觉DNA:配色Sky蓝#38BDF8品牌+teal→cyan→sky青蓝渐变+Slate灰阶#0F172A/#64748B/#F8FAFC,文档用彩虹色相条区分功能分类(粉#EC4899/紫#A855F7/绿#10B981/橙)。字体清爽无衬线+等宽代码。布局左侧栏导航+中正文+右TOC三栏,彩色高亮代码块、分类色标。标志元素:青蓝渐变hero、彩虹分类色、三栏文档骨架、语法高亮代码块。
+- HTML实现:纯CSS 98%还原(它本身就是CSS框架文档)。Grid三栏+linear-gradient青蓝hero+分类色变量+代码块语法色用span着色。Inter开源,唯暗色切换/copy需轻量JS。零光影/3D/手绘。
+- 字体:Inter + JetBrains Mono / Fira Code(代码)
+
+**终端核软未来 Terminal-Core Soft-Futurism(等宽字+等距立方)** `中性·还原80%`
+- 参考:Cursor (Anysphere);开发者终端美学 × Teenage Engineering工业极简
+- 适配:AI编程工具站、CLI产品landing、开发者基础设施、技术品牌hero、终端类产品
+- 视觉DNA:配色炭黑#0B0D14底+暖白文字#F2F0EF+克制蓝紫渐变accent点缀按钮与光晕。字体等宽字为主角(命令行感)+无衬线辅助。布局命令行/代码块前景、bento分区、2.5D等距cube示意。标志元素:等宽字命令行、等距投影立方体、暖白×炭黑、克制渐变光晕、工业极简。
+- HTML实现:纯CSS 80%还原。等宽字代码块+暗色bento+box-shadow光晕;2.5D等距cube用CSS 3D transform(rotateX/Y+skew)或SVG等距投影手搓。缺口:可点击切换的多界面demo需JS+假UI拼接。无WebGL刚需。
+- 字体:Geist Mono / JetBrains Mono(主角)+ Inter(辅助)
+
+
+#### 安静派
+
+**功能主义网格社区 Functional Brutalism(灰线分割+系统字+蓝链接)** `安静·还原98%`
+- 参考:Are.na / Lobsters / Quartz;Müller-Brockmann栅格数字落地 + Tufte信息密度
+- 适配:社区/UGC平台、内容聚合站、文档知识库、移动优先内容流、极客向产品
+- 视觉DNA:配色近白底#FBFBFB+黑文字+1px灰分割线#E0E0E0+经典链接蓝#0000EE/已访问紫。字体系统字栈(-apple-system/无装饰)。布局高密度信息列表、细灰线分栏、极小留白、紧凑行距。标志元素:发丝灰分割线、蓝链接、系统字、信息密度优先。
+- HTML实现:纯CSS最易还原,这是Brutalist Web的本色。border-bottom:1px灰线列表+system-ui字栈+紧凑padding+蓝链接。几乎不需要任何素材或JS,纯结构。
+- 字体:system-ui系统字栈 / IBM Plex Sans(兜底)
+
+**深色画廊裱框 Gallery Dark(深黑负空间+单列大图+EXIF小字)** `安静·还原75%`
+- 参考:Glass (glass.photo) / Bottega Veneta;美术馆暗房 + Apple Photos内容至上
+- 适配:摄影作品集、奢侈品电商、视觉内容沉浸展示、个人画廊页、高端产品陈列
+- 视觉DNA:配色纯黑底#0A0A0A+作品图本身提供唯一色彩+极淡灰EXIF小字#666。字体极细无衬线小字。布局单列居中大图、巨幅负空间裱框、图下metadata小字。标志元素:暗房黑底、内容至上UI退隐、EXIF式小字注脚、大图独占视口。
+- HTML实现:纯CSS还原版式骨架。纯黑底+居中max-width单列+巨幅padding裱框留白+小字metadata。缺口是「真实摄影作品」本身——用占位图/纯色块代替则失灵魂,但暗房氛围与版式100%可搭。
+- 字体:Inter(细字重300)/ Cormorant(衬线奢侈感可选)
+
+**Swiss极致黑白 Swiss Monochrome(Vercel式纯黑白+Geist+锐利边角)** `安静·还原98%`
+- 参考:Vercel / Next.js Docs(自研Geist已开源);Massimo Vignelli少即是多
+- 适配:开发者工具文档、技术品牌官网、AI产品站、SaaS落地页、极简调研报告
+- 视觉DNA:配色纯黑#000+纯白#FFF+灰阶#888,零彩色或仅一抹蓝链接。字体Geist几何无衬线+Geist Mono。布局锐利直角(无圆角或极小)、高对比、精密栅格、克制留白。标志元素:纯黑白、锐利边角、Geist字体、三角/箭头几何标记。
+- HTML实现:纯CSS 100%还原,Geist开源可直接引。CSS Grid精密栅格+纯黑白变量+border-radius:0锐角+发丝边框。这是HTML最舒适的极简主场,零素材依赖。
+- 字体:Geist + Geist Mono(Vercel开源原版)
+
+**日式留白白盒画廊 Kenya Hara White Gallery** `安静·还原80%`
+- 参考:Cosmos (cosmos.so) / Aesop伊索官网;原研哉『白』的空寂 + 瑞士网格混血
+- 适配:高端电商、创意画廊、内容策展平台、设计师作品集、品牌精品店、moodboard站
+- 视觉DNA:配色近全白#FAFAFA底+纯黑文字#0A0A0A+极淡灰分割#EFEFEF,内容图提供全部色彩、UI退到背景。字体极简系统/几何无衬线小字、大字距。布局masonry瀑布网格、极致留白、淡灰发丝分隔、东方空寂。标志元素:白盒美学、奢侈留白、内容至上UI隐退、瀑布流策展。
+- HTML实现:纯CSS还原静态版式(与暗色画廊区分在『白』)。CSS columns或Grid做masonry+近白变量+大padding留白+淡灰分隔。缺口是Lenis/GSAP丝滑惯性滚动与图片入场缓动(高级感60%在此),CSS仅基础transition,动效层降级。
+- 字体:Inter(细字重)/ Cooper Hewitt(Aesop同款开源)
+
+
+## PPT风格库(20种)
+
+#### 大胆派
+
+**新瑞士大字报 / Neo-Swiss Billboard Editorial** `大胆·还原98%`
+- 参考:Scribe $75M、Flock Safety $47M 等 AI/SaaS 路演 deck 的 Big-Number Editorial 流派;Bloomberg Businessweek 信息图;Pentagram
+- 适配:融资路演、QBR/业务回顾、年度趋势复盘、产品发布关键页
+- 视觉DNA:配色=纯白(#FFFFFF)或近黑(#0A0A0A)底+单一高饱和强调色(电光蓝#2D5BFF/荧光绿#00E676/品牌橙#FF6B2C)+中性网格线#E5E5E5。字体=超大粗体无衬线,标题占半屏,数字tabular-nums等宽收紧字距。母版=①大色块章节页一个词②巨型数字占半屏(3.2x)+小注③左右分栏对比④全幅扁平折线/柱状。标志=billboarding大字、严格基线网格、大色块章节页
+- HTML实现:超大数字用clamp();严格网格用CSS Grid;大色块章节页background-color;折线柱状用纯div+CSS或内联SVG(比贴图更锐利);数字对齐font-variant-numeric:tabular-nums。零插画零3D
+- 字体:Inter / Geist / Söhne替代Neue Haas Grotesk;数字配Geist Mono
+
+**黑底巨型数字剧场 / Black Big-Number Stage** `大胆·还原97%`
+- 参考:Steve Jobs 2007 iPhone Keynote、小米SU7 Ultra雷军发布会、Spotify Wrapped、Presentation Zen(Garr Reynolds)
+- 适配:产品发布主题演讲、思想演示、全员town hall、情绪向年度回顾
+- 视觉DNA:配色=纯黑#000000底+纯白#FFFFFF字高反差,一页只一个品牌强调色高亮(小米橙#FF6900/Spotify绿#1ED760/Apple蓝#2997FF)。字体=几何无衬线粗体,一屏一词或一个超大数字占满视野,字距收紧。母版=①标题页黑底居中一行大字②数据高潮页巨型数字+单位+一行注③左右参数对比双栏(强调色vs灰)④slogan单页。大量负空间
+- HTML实现:黑底白字几行CSS;巨型数字clamp()+flex居中;强调色highlight单独span;左右对比CSS Grid两列+条形高亮;tabular-nums。去掉产品照改纯文字反而更接近Zen本质
+- 字体:Geist / Inter / 思源黑替代SF Pro
+
+**高饱和单色品牌撞色海报 / Mono-Brand Type-as-Hero** `大胆·还原96%`
+- 参考:Spotify Wrapped视觉系统、Mailchimp Brand Book(Collins)、Netflix红黑现代复刻、COLLINS品牌系统
+- 适配:品牌/营销策略、campaign宣讲、town hall文化页、活动主视觉
+- 视觉DNA:配色=单一品牌主色满版铺底(Spotify绿#1ED760/Mailchimp黄#FFE01B/Netflix红#E50914)+黑或白反差字,撞色两层。字体=超大字体即主视觉(type-as-hero)顶天立地。母版=①满色块底+反白巨字②双色块上下/左右分割③巨型数字撑满。标志=单色满版、字体当图、高对比撞色
+- HTML实现:满版background-color;超大字clamp()占满;双色用两个100vh色块;字体当图靠font-weight900+负letter-spacing。纯色块零素材,HTML原生最爽
+- 字体:Inter / Manrope / Archivo(超粗)替代Circular/Cavendish
+
+**全幅渐变宣言版式 / Full-Bleed Gradient Manifesto** `大胆·还原82%`
+- 参考:Zuora『Tell a Different Story』销售deck(Andy Raskin拆解)、Nike『Just Do It』campaign、National Geographic跨页
+- 适配:销售提案愿景页、品牌宣言、keynote转折页、使命愿景单页
+- 视觉DNA:配色=满版CSS渐变(暖橙→品红/深蓝→青)或纯色出血+反白宣言大字+hashtag口号(#shifthappens)。字体=厚重无衬线全大写标语横贯。母版=①满幅渐变+居中反白宣言②应许之地愿景页③客户logo墙。标志=full-bleed出血、反白大标语、hashtag口号
+- HTML实现:linear-gradient/radial-gradient满版(不做粒子/光影,纯CSS渐变是允许的);反白字position居中;logo墙用grid灰度SVG/文字占位。原本靠纪实大照片的部分降级为CSS渐变铺底+大字,照片缺失这一项还原度降约15%
+- 字体:Archivo / Anton / Manrope(超粗)
+
+**CS50单概念糖果舞台 / Candy-Color Lecture Stage** `大胆·还原94%`
+- 参考:Harvard CS50(David Malan)、Lessig Method/高桥流、Presentation Zen
+- 适配:教育课件、技术讲座、概念解释、代码教学
+- 视觉DNA:配色=深黑底#0A0A0A+高饱和糖果色大字轮换(品红#FF2D95/青#00E5FF/明黄#FFD500/绿#39FF14)。字体=无衬线超大字漂浮居中,一屏一概念,文字极少。母版=①深黑底单个糖果色大词②等宽代码块语法高亮③舞台聚光感大字。标志=深黑漂浮糖果色大字、等宽代码高亮、强舞台聚光、极少文字
+- HTML实现:深黑背景+单色超大字clamp()居中;代码块用pre+等宽字+span上色做语法高亮;聚光感用极淡radial-gradient暗角(非粒子光效)。还原度高
+- 字体:Inter超粗 + JetBrains Mono(代码)
+
+**玩味手绘极简 / Playful Maximalist Editorial (Collins式)** `大胆·还原75%`
+- 参考:Mailchimp Brand Book(Collins 2018)、New Yorker漫画气质、Cooper圆润衬线、Cavendish荧光黄
+- 适配:有态度的品牌deck、创意机构提案、文化向town hall、反SaaS极简的营销页
+- 视觉DNA:配色=Cavendish荧光黄#FFE01B大面积+黑+少量撞色,反SaaS极简。字体=Cooper式圆润衬线大标题(playful)+杂志式留白编排。母版=①荧光黄满底+怪诞标题②杂志式不规则留白排版③大字玩梗文案。标志=荧光黄、圆润衬线、playful编排、怪诞手绘气质(降级为几何色块/emoji替代真插画)
+- HTML实现:荧光黄background;圆润衬线font-family;杂志留白用非对称Grid。手绘猩猩/插画这一核心元素无AI生图无法做,降级为CSS几何色块+大号emoji+不规则transform旋转的文字块替代,插画缺失还原度降约20%
+- 字体:Fraunces(可调圆润)/ Bree Serif替代Cooper;正文Inter
+
+**不羁玩梗流行版 / Irreverent Pop (Reddit式)** `大胆·还原80%`
+- 参考:Reddit Ads销售deck(被Dock列为最有性格)、David Carson式不羁排版、90年代web复古、Memphis玩味
+- 适配:Z世代品牌、玩梗营销deck、社区/创作者向、敢于不正经的提案
+- 视觉DNA:配色=Reddit橙红#FF4500+撞色,90s web复古色。字体=混排/打破网格的David Carson式排版,玩梗口语文案。母版=①fun页玩梗大字②facts页节奏转折严肃数据③口语标题。标志=打破网格混排、橙红、玩梗口语、fun→facts节奏反转、复古web质感
+- HTML实现:故意打破网格用transform旋转/重叠定位/混合字号;橙红+撞色块;复古质感用粗黑边border+硬阴影box-shadow(无blur)。自定义meme插画降级为emoji+几何拼贴,但混排排版本身HTML可还原
+- 字体:Archivo / Space Grotesk + 混搭Inter制造对比
+
+**Y2K膨胀大字 / Maximalist 3D-Type (Wrapped式)** `大胆·还原78%`
+- 参考:Spotify Wrapped 2022/2023/2025、Memphis撞色、Y2K/Maximalism、duotone人像渐变
+- 适配:年度回顾(情绪出圈向)、个性化数据卡、社交分享竖屏卡、品牌年终
+- 视觉DNA:配色=高饱和撞色满版背景(品红+青+橙)+Spotify绿点睛+duotone双色渐变。字体=顶天立地巨型数字,年份/数字做3D膨胀/金属质感。母版=①撞色满版+巨型膨胀数字②duotone人像/色块底+反白大字③竖屏可分享卡。标志=巨型膨胀3D数字、撞色满版、duotone渐变、年份金属质感、竖屏story卡
+- HTML实现:撞色满版background;3D膨胀数字用CSS text-shadow多层叠加+transform:perspective或SVG+stroke制造立体(非真3D渲染);duotone用mix-blend-mode+渐变叠在灰度图占位块上。金属质感降级为渐变填充文字background-clip:text,还原度降约15%
+- 字体:Archivo Black / Anton超粗 + 数字Clash Display
+
+
+#### 中性派
+
+**Bento便当格模块网格 / Bento Grid** `中性·还原95%`
+- 参考:Apple Keynote Bento Grid时代、新一代MBB Bento/Big-Type deck(2024-2026)、Stripe年报指标卡矩阵、Pitch.com QBR模板
+- 适配:产品功能汇总、咨询/QBR数据汇报、销售成果页、town hall指标页
+- 视觉DNA:配色=浅灰/奶白底(#F5F5F7/cream)或近黑底+品牌主色+1-2强调色,卡片浅色分区底+圆角+微描边/微阴影。字体=超大display标题+常规正文,字重对比强烈,KPI数字tabular figures。母版=①标题页巨型单句+留白②bento页2×2/3列不等高卡片每卡一洞见(数字/线性icon/sparkline)③one-insight超大数字页。标志=不等高卡片网格、圆角微描边、呼吸感
+- HTML实现:CSS Grid的grid-template-areas做不等高bento;卡片border-radius+box-shadow微阴影+1px hairline;sparkline用内联SVG;线性icon用inline SVG stroke。零贴图
+- 字体:Inter / Geist + 数字Geist Mono
+
+**Neo-Swiss暗色终端美学 / Dark Hairline Terminal** `中性·还原94%`
+- 参考:Linear pitch deck、Vercel设计语言、CS50深黑舞台课件;字体Inter Tight+JetBrains Mono
+- 适配:开发者工具/技术产品发布、技术路演、工程向汇报
+- 视觉DNA:配色=近黑底(#0D0D0F/#111113)+hairline细线#262629网格+单一紫蓝强调(#5B5BD6/#7C7CFF)。字体=Inter Tight大标题+JetBrains Mono做标签/数据。母版=①极简标题页一句话+mono小标②hairline分隔的数据网格③mono标签的特性列表。标志=1px细线网格、mono单等宽标签、极致留白、近黑非纯黑
+- HTML实现:近黑背景+border:1px solid的hairline网格;mono标签用等宽font-family;微光用极淡box-shadow/border highlight而非真光效(降级避开赛博霓虹禁区)。注意避开#0D1117深蓝禁区,用中性近黑
+- 字体:Inter Tight + JetBrains Mono / IBM Plex Mono
+
+**双字体咨询版 / Two-Font Consulting (Bower式)** `中性·还原90%`
+- 参考:McKinsey 2019品牌系统(Wolff Olins设计,Bower衬线+无衬线)、BCG Executive Perspectives、深蓝细线pattern
+- 适配:咨询报告、高管汇报、行业研究、权威机构提案
+- 视觉DNA:配色=深蓝(#051C2C/McKinsey深蓝)×白二元+单一品牌色高亮(BCG绿#00805A),暖灰底带呼吸感。字体=characterful衬线大标题(Bower式)与无衬线正文高对比并置。母版=①左上角结论式action-title②蓝色细线pattern装饰③杂志式左右分工(结论文字+视觉)④大数字data-point卡。标志=衬线×无衬线高对比、深蓝细线pattern、action-title、暖灰高级感
+- HTML实现:双字体font-family并置(衬线标题+无衬线正文);细线pattern用repeating-linear-gradient或SVG line;data-point卡纯CSS;照片灰度处理这一项无照片可省。蓝紫edge shimmer降级为纯色边
+- 字体:Playfair Display / Fraunces衬线标题 + Inter正文(替代Bower)
+
+**图谱箭头企业版 / Diagram-Driven Isotype** `中性·还原88%`
+- 参考:Salesforce销售deck、Isotype(Otto Neurath)谱系、Gene Zelazny《Say It With Charts》、Hans Rosling/Gapminder
+- 适配:平台/架构讲解、客户旅程、流程方法论、生态地图
+- 视觉DNA:配色=企业蓝色块+产品线分色区分+图标化能力网格。字体=清晰无衬线。母版=①横向客户旅程箭头流②分层平台架构图③图标化能力网格④2×2/瀑布/金字塔结构图。标志=箭头流程、分层架构盒、Isotype图标网格、流程即叙事
+- HTML实现:箭头流程用Flexbox+CSS clip-path三角或SVG arrow;架构分层用嵌套带边框div;图标用inline SVG stroke统一描边;瀑布/金字塔用Grid+斜切。气泡图可用CSS圆形+定位。纯矢量绘制
+- 字体:Inter / IBM Plex Sans(图表友好)
+
+**单图母图概念图解 / Diagrammatic Minimalism** `中性·还原95%`
+- 参考:Simon Sinek黄金圆环(Golden Circle)TED、Bauhaus几何抽象、信息建筑『一图定全场』
+- 适配:理论框架讲解、TED式思想传播、模型/方法论可视化、单概念keynote
+- 视觉DNA:配色=极简白/浅底+黑+1个强调色,几何纯色。字体=无衬线,标签大写嵌入图形。母版=①唯一几何母图(同心圆/三角/矩阵)承载全部概念②由内向外箭头③对比案例。标志=单一几何母图、嵌套同心圆/三角、大写标签、一图承载概念
+- HTML实现:同心圆用border-radius:50%嵌套div或SVG circle;三角用clip-path/SVG polygon;箭头SVG marker;标签absolute定位贴在图形上。纯几何,HTML完美还原
+- 字体:Manrope / Futura系(Jost开源替代)几何感
+
+**Sparkline叙事波形 / Narrative Sparkline (Duarte式)** `中性·还原91%`
+- 参考:Nancy Duarte《Resonate》Sparkline叙事图谱、Al Gore《An Inconvenient Truth》、Duarte Inc.数据叙事
+- 适配:演讲结构设计、变革叙事、before/after对照、数据故事弧线
+- 视觉DNA:配色=深底或白底+品牌橙强调转折点+灰化对照。字体=无衬线,annotation标注点。母版=①横贯全屏的振荡波形线②波形上text标注点③上下并置对照波形④全黑底孤悬一条数据线⑤逐步reveal。标志=横贯波形线、波形标注点、橙色转折、对照波形、爬出画面的曲线
+- HTML实现:波形线用内联SVG path(平滑贝塞尔);标注点用SVG circle+text定位;对照波形上下两条path;reveal用CSS动画stroke-dashoffset。纯SVG绘制无素材
+- 字体:Inter + 数字Geist Mono
+
+
+#### 安静派
+
+**断言-证据 / Tufte信息设计** `安静·还原93%`
+- 参考:Michael Alley Assertion-Evidence(Penn State实证)、McKinsey/BCG action-title、Edward Tufte数据墨水比、Barbara Minto金字塔原理
+- 适配:学术/工程汇报、数据严谨型咨询页、政策研报、技术评审
+- 视觉DNA:配色=白/极浅灰底+黑正文+单一克制强调色(深蓝/砖红)。字体=整句话标题(非名词短语),标题下独占一张图,文字标注嵌进图里。母版=①整句action-title②标题下单图证据③零bullet。标志=整句标题、单图证据、嵌入式标注、零chartjunk、高数据墨水比
+- HTML实现:整句标题靠排版层级;图表用纯CSS/内联SVG画极简折线散点(去网格线去图例,标注直接text定位在数据点旁);零装饰。Tufte的克制正是HTML强项
+- 字体:Source Serif / Lora标题 + Inter正文(双字体阅读级)
+
+**瑞士机构极简 / Institutional Swiss Minimal** `安静·还原96%`
+- 参考:Sequoia官方10页pitch模板、Airbnb 2009种子轮deck、Müller-Brockmann网格、Massimo Vignelli
+- 适配:投资路演、标准商业提案、问题-解法叙事、品牌去装饰提案
+- 视觉DNA:配色=纯白底+黑灰正文+单一品牌强调色(Airbnb珊瑚红#FF5A3C/中性蓝)。字体=Helvetica系无衬线,标题中号粗体一句话,正文短句大间距。母版=①居中logo+slogan②顶部一句话标题带+下方3栏对仗(Problem/Solution三点)③TAM大数字分层④2×2竞品矩阵。标志=顶部标题带、三栏对仗、单色强调、2×2矩阵
+- HTML实现:Flexbox三栏对仗;2×2矩阵纯CSS Grid+border画;TAM分层用嵌套div或同心方块;一页一信息。几乎纯排版网格,HTML理想对象
+- 字体:Inter / Helvetica Now替代Helvetica;正文Inter
+
+**杂志编辑长文流 / Editorial Longform** `安静·还原95%`
+- 参考:Stripe Annual Letter($1.9T)、Amazon六页叙事备忘录、Benedict Evans『X eats the world』、Stripe Press
+- 适配:年度信/复盘叙事、深度思想长文、内部更新、研报型阅读物
+- 视觉DNA:配色=奶白/米白底(#FBFAF8)+深墨字+品牌色点睛(Stripe紫#635BFF)。字体=衬线或高品质无衬线,散文体段落+内联数据卡,超大display数字穿插。母版=①刊头大标题②多栏散文+内联指标卡③超大数字段落锚点。标志=出版物阅读节奏、内联数据卡、克制留白、散文体而非bullet
+- HTML实现:多栏column-count或Grid;内联数据卡float/inline-block嵌入正文;衬线正文max-width控制行宽65ch;超大数字穿插。纯排版,零素材
+- 字体:Newsreader / Source Serif正文 + Inter辅助;数字tabular
+
+**人文圆角卡片 / Humanist Rounded Cards (Khan式)** `安静·还原80%`
+- 参考:Khan Academy Wonder Blocks设计系统、Source Serif Pro衬线、森林绿品牌、友善人文主义
+- 适配:教育产品、亲和力课件、公益/非盈利deck、温暖品牌提案
+- 视觉DNA:配色=森林绿#14BF96/#0A5C4B+米白底+暖色辅助,柔和不刺眼。字体=Source Serif衬线标题(人文气)+无衬线正文。母版=①圆角卡片组件组②衬线标题+亲和正文③真实摄影位(降级为绿色系几何/圆角色块)。标志=森林绿、衬线标题、大圆角卡片、人文温暖、不完美亲和质感
+- HTML实现:大圆角border-radius卡片+柔和box-shadow;衬线标题font-family;暖米白底。真实师生摄影这一项无AI生图,降级为绿色系几何插画块/大圆角纯色占位+emoji人物,照片缺失还原度降约18%
+- 字体:Source Serif 4标题 + Nunito Sans / Inter正文(Nunito圆润呼应人文)
+
+**研报密集图表 / Dense Research Report (Meeker式)** `安静·还原92%`
+- 参考:Mary Meeker《Internet Trends》(BOND)、CB Insights《State of AI》、McKinsey Global Institute《Year in Charts》、FT/Bloomberg数据新闻
+- 适配:趋势研报、行业数据复盘、密集数据汇报、市场地图
+- 视觉DNA:配色=白底+品牌色(BOND/CB Insights亮蓝#0066FF)阶梯单色高亮其余灰化,几乎零留白。字体=结论式句子标题,每页1图密度,极小来源脚注。母版=①结论句标题+满页单图②logo网格market map③大数字KPI卡④密集多图网格+脚注。标志=结论句标题、零留白研报感、单色阶梯高亮、logo市场地图、来源脚注规范
+- HTML实现:密集图表全用纯CSS/内联SVG画(柱/折线/堆叠/散点);logo market map用Grid+文字/SVG占位格;KPI卡CSS;脚注小字。极致信息密度正是HTML擅长,零素材
+- 字体:Inter + IBM Plex Sans + 数字tabular Geist Mono
+
+**纯文字宣言备忘录 / All-Text Manifesto (Netflix/Amazon式)** `安静·还原97%`
+- 参考:Netflix Culture Deck(2009,125页)、Amazon六页叙事备忘录(Bezos)、Tufte反PowerPoint主张、Matthew Carter阅读级排印
+- 适配:文化宣言、价值观宣讲、深度备忘录、反PPT的纯文档演示
+- 视觉DNA:配色=纯白或纯黑底+单一强调色(Netflix红#E50914)做唯一高亮,极致克制。字体=阅读级排印,一页一观点金句断言/纯散文零bullet零图。母版=①满版底+金句断言②口语化坦诚段落③制度名词高亮(Keeper Test)④六页散文+附录表。标志=纯文字一页一观点、零图零bullet、单色高亮金句、口语坦诚、silent-read文档感
+- HTML实现:纯排版:金句用大字clamp()左对齐层级;散文max-width控制行宽;唯一强调色span高亮关键短语;附录用极简table。零素材零图,纯文字是HTML最稳的还原
+- 字体:Newsreader / Source Serif(阅读级)或Inter(宣言式);标题可Archivo超粗
 
----
-
-## 三、极简主义派(09-12)
-> 哲学:「删减到无法再删」
-
-### 09. Experimental Jetset - 概念极简
-**哲学**:一个想法=一个形式
-**核心特征**:
-- 单一视觉隐喻贯穿整个设计
-- 蓝/红/黄+黑白的蒙德里安色系
-- 字体即图形
-- 反商业的诚实设计
-
-**提示词DNA**:
-```
-Experimental Jetset conceptual minimalism:
-- Single visual metaphor for entire design
-- Primary colors only (red/blue/yellow) + black/white
-- Typography as main graphic element
-- Grid-based with deliberate rule-breaking
-- No photography, only type and geometry
-- Anti-commercial, honest aesthetic
-```
-
-**代表作**:Whitney Museum identity
-**搜索关键词**:experimental jetset whitney responsive w
 
 ---
 
-### 10. Müller-Brockmann传承 - 瑞士网格纯粹主义
-**哲学**:客观性即美
-**核心特征**:
-- 数学精确的网格系统(8pt基线)
-- 绝对的左对齐或居中
-- 单色或双色方案
-- 功能主义至上
-
-**提示词DNA**:
-```
-Josef Müller-Brockmann Swiss modernism:
-- Mathematical grid system (8pt baseline)
-- Strict alignment (flush left or centered)
-- Two-color maximum (black + one accent)
-- Akzidenz-Grotesk or similar rationalist typeface
-- No decorative elements
-- Timeless, objective aesthetic
-```
-
-**代表作**:《Grid Systems in Graphic Design》
-**搜索关键词**:muller brockmann grid systems poster
-
----
+## ⚠️ AI 生图专用风格(仅在确认用户有生图能力时才推,default 不可选)
 
-### 11. Build - 当代极简品牌
-**哲学**:精致的简单比复杂更难
-**核心特征**:
-- 奢侈品级的留白(70%+)
-- 微妙的字重对比(200-600)
-- 单一强调色的战略使用
-- 呼吸感的节奏
-
-**提示词DNA**:
-```
-Build studio luxury minimalism:
-- Generous whitespace (70%+ of area)
-- Subtle typography weight shifts (200 to 600)
-- Single accent color used sparingly
-- High-end product photography aesthetic
-- Soft shadows and subtle gradients
-- Golden ratio proportions
-```
-
-**代表作**:Build studio portfolio
-**搜索关键词**:build studio london branding
+下面这些风格的灵魂在**动态生成视觉 / 3D / 粒子 / 电影级光影 / 手绘插画**,纯 HTML/CSS 无生图下只能做出严重劣化的 mock,**从 default 推荐池剔除**。用户明确有生图能力(走 `huashu-gpt-image`)时才作为候选:
 
----
+| 风格 | 灵魂 | 为什么 HTML 做不了 |
+|------|------|------------------|
+| Active Theory(WebGL 粒子) | 3D 粒子系统/实时渲染 | 纯 CSS 无法 |
+| Field.io(生成艺术) | 算法生成图形 | 静态 SVG 只能做僵化简化版 |
+| Resn(插画交互) | 角色插画+游戏化 | 依赖手绘素材 |
+| Zach Lieberman(实时生成) | creative coding 笔触 | 依赖实时生成 |
+| Raven Kwok(分形参数) | 递归分形 | CSS 做不出复杂度 |
+| Ash Thorp(电影光影) | 电影级体积光/概念美术 | CSS 光影是劣化 |
+| Territory Studio(FUI 全息) | 科幻全息界面 | 依赖大量发光层叠素材 |
+| Neo Shen(水墨晕染) | 水墨有机晕染 | CSS 渐变≠水墨 |
+| Sagmeister & Walsh(色彩爆发) | 手作实物+实验排版 | 撞色骨架可做(已并入网页「Memphis/孟菲斯」与 PPT「单色撞色海报」),手作质感做不了 |
 
-### 12. Sagmeister & Walsh - 快乐极简
-**哲学**:美即功能的情感维度
-**核心特征**:
-- 意外的色彩爆发
-- 手工感与数字的融合
-- 正能量的视觉语言
-- 实验性但可读
-
-**提示词DNA**:
-```
-Sagmeister & Walsh joyful philosophy:
-- Unexpected color bursts on minimal base
-- Handmade elements (physical objects in digital)
-- Optimistic visual language
-- Experimental typography that remains legible
-- Human warmth through imperfection
-- Mix of analog and digital aesthetics
-```
-
-**代表作**:The Happy Show
-**搜索关键词**:sagmeister walsh happy show
+> 这些款不是「不好」,是「载体不对」——它们的原生载体是 AI 直出图,不是浏览器 DOM。
 
 ---
 
-## 四、实验先锋派(13-16)
-> 哲学:「打破规则即创造规则」
-
-### 13. Zach Lieberman - 代码诗学
-**哲学**:编程即绘画
-**核心特征**:
-- 手绘感的算法图形
-- 实时生成艺术
-- 黑白的纯粹表达
-- 工具本身的可见性
-
-**提示词DNA**:
-```
-Zach Lieberman code-as-art style:
-- Hand-drawn aesthetic generated by code
-- Black and white only, no color
-- Real-time generative patterns
-- Sketch-like line quality
-- Visible process/grid/construction lines
-- Poetic interpretation of algorithms
-```
-
-**代表作**:openFrameworks creative coding
-**搜索关键词**:zach lieberman openframeworks generative
+## 默认审美禁区(用户可按自己品牌 override)
 
----
-
-### 14. Raven Kwok - 参数化美学
-**哲学**:系统的美胜过个体的美
-**核心特征**:
-- 分形与递归图形
-- 黑白高对比
-- 建筑化的信息结构
-- 东方园林的算法演绎
-
-**提示词DNA**:
-```
-Raven Kwok parametric aesthetic:
-- Fractal patterns and recursive structures
-- High-contrast black and white
-- Architectural visualization of data
-- Chinese garden principles in algorithm form
-- Intricate detail that rewards zooming
-- Processing/Creative coding aesthetic
-```
-
-**代表作**:Raven Kwok generative art exhibitions
-**搜索关键词**:raven kwok processing generative art
-
----
-
-### 15. Ash Thorp - 赛博诗意
-**哲学**:未来不是冰冷的,是孤独的诗
-**核心特征**:
-- 电影级的光影
-- 赛博朋克的温暖版本(橙/青,非冷蓝)
-- 故事性的概念设计
-- 工业美学的精致化
-
-**提示词DNA**:
-```
-Ash Thorp cinematic concept art:
-- Film-grade lighting and atmospheric effects
-- Warm cyberpunk (orange/teal, NOT cold blue)
-- Industrial design meets luxury
-- Narrative concept art feel
-- Volumetric lighting and god rays
-- Blade Runner warmth over Tron coldness
-```
-
-**代表作**:Ghost in the Shell concept art
-**搜索关键词**:ash thorp ghost shell concept art
-
----
-
-### 16. Territory Studio - 屏幕界面虚构
-**哲学**:未来UI的今日想象
-**核心特征**:
-- 科幻电影中的屏幕设计(FUI)
-- 全息投影感
-- 多层叠加的数据可视化
-- 可信的未来感
-
-**提示词DNA**:
-```
-Territory Studio FUI (Fantasy User Interface):
-- Fantasy User Interface design
-- Holographic projection aesthetics
-- Orange/amber monochrome or cyan accents
-- Multiple overlapping data layers
-- Believable future technology
-- Technical readouts and data streams
-```
-
-**代表作**:Blade Runner 2049 screen graphics
-**搜索关键词**:territory studio blade runner interface
-
----
-
-## 五、东方哲学派(17-20)
-> 哲学:「留白即内容」
-
-### 17. Takram - 日式思辨设计
-**哲学**:技术是思考的媒介
-**核心特征**:
-- 概念原型的优雅
-- 柔和的科技感(圆角、柔和阴影)
-- 图表即艺术
-- 谦逊的精致
-
-**提示词DNA**:
-```
-Takram Japanese speculative design:
-- Elegant concept prototypes and diagrams
-- Soft tech aesthetic (rounded corners, gentle shadows)
-- Charts and diagrams as art pieces
-- Modest sophistication
-- Neutral natural colors (beige, soft gray, muted green)
-- Design as philosophical inquiry
-```
-
-**代表作**:NHK Fabricated City
-**搜索关键词**:takram nhk data visualization
-
----
-
-### 18. Kenya Hara - 空的设计
-**哲学**:设计不是填充,是清空
-**核心特征**:
-- 极致的留白(80%+)
-- 纸张质感的数字化
-- 白色的层次(暖白、冷白、米白)
-- 触觉的视觉化
-
-**提示词DNA**:
-```
-Kenya Hara "emptiness" design:
-- Extreme whitespace (80%+)
-- Paper texture and tactility in digital form
-- Layers of white (warm white, cool white, off-white)
-- Minimal color (if any, very desaturated)
-- Design by subtraction not addition
-- Zen simplicity
-```
-
-**代表作**:Muji art direction, 《Designing Design》
-**搜索关键词**:kenya hara designing design muji
-
----
-
-### 19. Irma Boom - 书籍建筑师
-**哲学**:信息的物理诗学
-**核心特征**:
-- 非线性的信息架构
-- 边缘与边界的游戏
-- 意外的颜色组合(粉+红、橙+棕)
-- 手工艺的数字转译
-
-**提示词DNA**:
-```
-Irma Boom book architecture style:
-- Non-linear information structure
-- Play with edges, margins, boundaries
-- Unexpected color combos (pink+red, orange+brown)
-- Handcraft translated to digital
-- Dense information inviting exploration
-- Editorial design, unconventional grid
-```
-
-**代表作**:SHV Think Book (2136 pages)
-**搜索关键词**:irma boom shv think book
-
----
-
-### 20. Neo Shen - 东方光影诗
-**哲学**:技术需要人的温度
-**核心特征**:
-- 水墨晕染的数字化
-- 柔和的光晕效果
-- 诗意的留白
-- 情感化的色彩(深蓝、暖灰、柔金)
-
-**提示词DNA**:
-```
-Neo Shen poetic Chinese aesthetic:
-- Digital interpretation of ink wash painting
-- Soft glow and light diffusion effects
-- Poetic negative space
-- Emotional palette (deep blues, warm grays, soft gold)
-- Calligraphic influences in typography
-- Atmospheric depth
-```
-
-**代表作**:Neo Shen digital art series
-**搜索关键词**:neo shen digital ink wash art
+- ❌ **GitHub-dark 偷懒解**:均匀深蓝底(#0D1117)+ 通用青/紫霓虹 glow——只禁这一种烂大街组合,不是「暗色一律禁」
+- ✅ **不在禁区**:电影级戏剧光影、暖色赛博(Ash Thorp 橙/青)、运动诗学暗场叙事——有作者意图的暗色保留(本库「Linear 暗色发光」「黑底数字剧场」「CS50 糖果舞台」都是合法暗色)
+- ❌ 激进紫渐变万能公式、emoji 当图标、圆角卡片+左彩 border accent(除非品牌本身用)
+- ❌ 封面图加个人署名/水印
 
 ---
 
-## 提示词使用说明
-
-**组合公式**:`[风格提示词DNA] + [场景模板(见scene-templates.md)] + [具体内容]`
+## 有生图能力时的提示词心法(Mood, Not Layout)
 
-### 核心原则:描述情绪而非布局(Mood, Not Layout)
+> 仅当走 AI 生图路径时适用;HTML 路径直接按上面各风格的「HTML 实现」写代码。
 
-AI图像生成的关键:短提示词 > 长提示词。描述3句情绪和内容,比30行布局细节效果更好
+短提示词 > 长提示词。描述情绪和内容,比堆 30 行布局细节有效。
 
 | 杀死多样性的写法 | 激发创造力的写法 |
 |----------------|----------------|
 | 指定颜色比例(60%/25%/15%) | 描述情绪("warm like Sunday morning") |
-| 规定布局位置("标题居中,图片右侧") | 引用具体美学("Pentagram editorial feel") |
-| 限制角色姿势和表情 | 让AI自然诠释风格 |
-| 列出所有要包含的视觉元素 | 描述观众应该感受到什么 |
-
-### Good / Bad 示例
-
-**Bad — 过度约束(AI生成出来空且平):**
-```
-Professional presentation slide. Dark background, light text.
-Title centered at top. Two columns below. Left column: bullet points.
-Right column: bar chart. Colors: navy 60%, white 30%, gold 10%.
-Font size: title 36pt, body 18pt. Margins: 40px all sides.
-```
-
-**Good — 情绪驱动(生成多样且有质感):**
-```
-A data visualization that feels like a Bloomberg Businessweek
-editorial spread. The key number "28.5%" should dominate the
-composition like a headline. Warm cream tones with sharp black
-typography. The data tells a story of dramatic channel shift.
-```
-
-### 执行路径选择
-
-根据速查表的「最佳路径」列选择:
-- **AI生成**:有明确视觉元素的风格(06/07/12/13/14/15/16/20),用 Gemini/Midjourney 直出
-- **HTML渲染**:依赖精确排版的风格(01/03/04/10/11/17/18),代码控制数据和布局
-- **混合**:HTML做骨架布局 + AI生成配图/背景(02/05/08/09/19)
-
-### 质量控制
-
-1. ❌ 不要直接写 "in the style of Pentagram" → ✅ 用具体设计特征描述
-2. 文字在AI生成中常出错 → 生成后替换文字
-3. 比例易失真 → 明确指定 aspect ratio
-4. 先生成3-5个变体,选择最佳后细化
-
-**默认审美禁区**(用户可按自己品牌 override):
-- ❌ 赛博霓虹/深蓝色底(#0D1117)
-- ❌ 封面图加个人署名/水印
+| 规定布局位置 | 引用具体美学("Pentagram editorial feel") |
+| 列出所有视觉元素 | 描述观众应该感受到什么 |
+
+完整 AI 生图方法论 → `huashu-gpt-image` skill。
 
 ---
 
-**版本**:v2.1
-**更新日期**:2026-02-13
-**适用场景**:网页/PPT/PDF/信息图/封面/配图/App等所有视觉设计
-**与 image-to-slides 联动**:PPT场景可直接引用本文件风格,通过 image-to-slides skill 执行生成
+**版本**:v3.0(2026-06 全面重构为 HTML 原生 40 种库)
+**适用**:网页/PPT/PDF/信息图/封面/App 等所有视觉设计的 default HTML 路径

+ 3 - 3
references/launch-film-director-notes.md

@@ -259,9 +259,9 @@ v5f · 草间彌生 Yayoi Kusama(圆点 + 重复 + 单一强色)
 
 原始项目位置(含对应实施 HTML + 关键帧):
 
-- `~/.claude/skills/huashu-md-html/demos/v5-director-notes.md`(director's notes)
-- `~/.claude/skills/huashu-md-html/demos/v5-six-forms.html`(HTML 实施)
-- `~/.claude/skills/huashu-md-html/demos/v5-keyframes/`(关键帧验证截图)
+- v5-director-notes.md(director's notes,作者本地,未随仓库分发
+- v5-six-forms.html(HTML 实施,作者本地,未随仓库分发
+- v5-keyframes/(关键帧验证截图,作者本地,未随仓库分发
 
 写新项目时强烈建议**先 Read 这份样本**,理解工作量和细节密度,再决定要不要全套走流程。
 

+ 2 - 2
references/multi-perspective-parallel-case-study.md

@@ -258,8 +258,8 @@ subagent 完成需要 12-15 分钟。这段时间主线程绝不该空闲:
 
 - 完整方法论:`references/launch-film-director-notes.md`
 - 单视角样本:`assets/director-notes-samples/launch-film-30s-sample.md`(v5 基线)
-- 实战项目位置:`~/.claude/skills/huashu-md-html/demos/`(含 6 + 1 视角全套文件
-- 审校 review:`~/.claude/skills/huashu-md-html/demos/REVIEW.md`
+- 实战项目位置:作者本地 demos 目录(含 6 + 1 视角全套文件,未随仓库分发
+- 审校 review:作者本地 REVIEW.md(未随仓库分发)
 
 ---
 

+ 2 - 8
references/verification.md

@@ -21,7 +21,7 @@ open -a "Google Chrome" "/path/to/your/design.html"
 HTML文件里最常见的问题是JS报错导致白屏。用Playwright跑一遍:
 
 ```bash
-python ~/.claude/skills/claude-design/scripts/verify.py path/to/design.html
+python ~/.claude/skills/huashu-design/scripts/verify.py path/to/design.html
 ```
 
 这个脚本会:
@@ -120,13 +120,7 @@ open screenshot.png
 
 ### 上传图床分享链接
 
-如果需要给远程协作者看(比如 Slack/飞书/微信),让用户用自己的图床工具或 MCP 上传:
-
-```bash
-python ~/Documents/写作/tools/upload_image.py screenshot.png
-```
-
-返回ImgBB的永久链接,可以粘贴到任何地方。
+如果需要给远程协作者看(比如 Slack/飞书/微信),让用户用自己的图床工具或 MCP 上传截图,拿到一个永久链接,可以粘贴到任何地方。
 
 ## 验证出错时
 

+ 94 - 0
scripts/fetch_images.py

@@ -0,0 +1,94 @@
+#!/usr/bin/env python3
+"""
+从 Wikimedia Commons 抓真实图片(公共领域 / CC),供 huashu-design「内容型设计取真图」用(Phase 3.5)。
+
+为什么有这个脚本:内容型设计(鹦鹉/咖啡/马来西亚…)必须用真图,不能 CSS 色块糊弄。
+每次让模型现写抓图逻辑既慢又容易漏坑(忘清代理→TLS 炸 / 忘合规 UA→429)。这里固化好,下次只改关键词。
+
+用法:
+  python3 scripts/fetch_images.py --query "Petronas Towers" "Langkawi beach" "George Town street" \
+      --out 项目/assets/img --count 2 --width 1600
+
+每个 query 取前 count 张、缩放到 width、下载到 out,并打印清单(路径 | 许可 | 作者 | 来源页)便于诚实性核对。
+全部抓不到 → 退出码 1,提示走 Phase 3.5 取图三级兜底(Unsplash/Pexels → 生图 → 诚实 placeholder)。
+"""
+import argparse, json, os, re, sys, urllib.parse, urllib.request
+
+# ① 清代理:本机 curl/urllib 走代理会 TLS 炸(见 memory feedback_gemini_proxy)
+for _k in ("ALL_PROXY", "all_proxy", "HTTP_PROXY", "http_proxy", "HTTPS_PROXY", "https_proxy"):
+    os.environ.pop(_k, None)
+
+API = "https://commons.wikimedia.org/w/api.php"
+# ② 合规 User-Agent 是硬性要求,否则 Wikimedia 返 429
+UA = "huashu-design-image-fetcher/1.0 (https://huasheng.ai; skill contact)"
+
+
+def _api_get(params):
+    url = API + "?" + urllib.parse.urlencode(params)
+    req = urllib.request.Request(url, headers={"User-Agent": UA})
+    with urllib.request.urlopen(req, timeout=30) as r:
+        return json.load(r)
+
+
+def _safe(name):
+    return re.sub(r"[^\w\-.]", "_", name)[:60]
+
+
+def fetch(query, out, count, width):
+    params = {
+        "action": "query", "format": "json", "generator": "search",
+        "gsrsearch": query, "gsrnamespace": 6, "gsrlimit": count,
+        "prop": "imageinfo", "iiprop": "url|extmetadata", "iiurlwidth": width,
+    }
+    try:
+        data = _api_get(params)
+    except Exception as e:
+        print(f"[FAIL search] {query}: {e}", file=sys.stderr)
+        return []
+    pages = (data.get("query", {}) or {}).get("pages", {})
+    got = []
+    for p in list(pages.values())[:count]:
+        ii = (p.get("imageinfo") or [{}])[0]
+        thumb = ii.get("thumburl") or ii.get("url")
+        if not thumb:
+            continue
+        meta = ii.get("extmetadata", {}) or {}
+        lic = (meta.get("LicenseShortName", {}) or {}).get("value", "?")
+        artist = re.sub("<[^>]+>", "", (meta.get("Artist", {}) or {}).get("value", "?")).strip()
+        ext = os.path.splitext(thumb)[1].split("?")[0] or ".jpg"
+        fn = _safe(query) + "_" + _safe(p.get("title", "img").replace("File:", ""))
+        fn = os.path.splitext(fn)[0][:55] + ext
+        path = os.path.join(out, fn)
+        try:
+            req = urllib.request.Request(thumb, headers={"User-Agent": UA})
+            with urllib.request.urlopen(req, timeout=60) as r, open(path, "wb") as f:
+                f.write(r.read())
+            got.append(path)
+            print(f"[OK] {path}  | {lic} | {artist} | {ii.get('descriptionurl','')}")
+        except Exception as e:
+            print(f"[FAIL dl] {thumb}: {e}", file=sys.stderr)
+    if not got:
+        print(f"[EMPTY] 「{query}」没抓到——换关键词,或走 Phase 3.5 兜底", file=sys.stderr)
+    return got
+
+
+def main():
+    ap = argparse.ArgumentParser(description="Wikimedia Commons 真图抓取(huashu-design Phase 3.5)")
+    ap.add_argument("--query", nargs="+", required=True, help="一个或多个英文关键词(英文命中率高)")
+    ap.add_argument("--out", required=True, help="输出目录(建议 项目/assets/img)")
+    ap.add_argument("--count", type=int, default=2, help="每个关键词抓几张(默认 2)")
+    ap.add_argument("--width", type=int, default=1600, help="缩放宽度 px(默认 1600)")
+    a = ap.parse_args()
+    os.makedirs(a.out, exist_ok=True)
+    allgot = []
+    for q in a.query:
+        allgot += fetch(q, a.out, a.count, a.width)
+    print(f"\n=== 共下载 {len(allgot)} 张到 {a.out} ===")
+    print("⚠️ 诚实性核对:去掉每张图信息是否有损?许可是否允许用途?不合适的删掉。")
+    if not allgot:
+        print("❌ 全部失败 → 走 Phase 3.5 取图三级兜底(Unsplash/Pexels → 生图 → 诚实 placeholder,不卡流程)", file=sys.stderr)
+        sys.exit(1)
+
+
+if __name__ == "__main__":
+    main()