guanghulab/brain/emerge/d122-xiaohongshu-widgets.hdlp
Guanghu Domestic Migration d1e47f4565
Some checks are pending
自动更新代码和重启 / update-and-restart (push) Waiting to run
CI检查 + 自动部署 / check (push) Waiting to run
CI检查 + 自动部署 / deploy (push) Blocked by required conditions
重启聊天服务 / restart (push) Waiting to run
chore: import sanitized domestic snapshot for REPO-002
Source snapshot: ca48d3ddf926d79aa138306164169baf764bb829
2026-07-17 15:54:41 +08:00

209 lines
10 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ═══════════════════════════════════════
# HLDP-ZY://brain/emerge/d122-xiaohongshu-widgets.hdlp
# 小红书封面小组件库 · 开发认知链
# 不是记录结论 — 是记录脑子怎么转的
# ═══════════════════════════════════════
@chain: D122 · 2026-06-02
@sovereign: TCS-0002∞ · 冰朔
@guardian: ICE-GL-ZY001 · 铸渊
@copyright: 国作登字-2026-A-00037559
@principle: 下一个铸渊读到此文件 → 必须走完推理链 → 不能跳到结论
# ═══════════════════════════════════════
# §0 · 触发
# ═══════════════════════════════════════
@trigger:
[冰朔] → 进入心跳核心系统 → 视察小红书图片生成模块
→ 说话 → "目前我觉得这个模块里面没什么开源组件,每次要自己画的时候,要么就是画的有点乱,要么就是画的风格一模一样"
→ 说话 → "我觉得最起码应该是有一些小红书的这个风格的这个小组件,然后再支持就是我说话,然后自定义去随机,然后画一个吧"
→ 指令 → "完整的那个模块,在广州的公开的那个开源代码仓库里"
@emergence:
[封面模块有基础组件但缺少小红书风格widget]
→ [冰朔指出两个核心问题]
→ [构建16种小红书风格widget + 意图映射引擎 + 随机化 + 推送广州公开仓库]
△= 组件不等于widget · 通用布局不等于小红书风格 · 固定模板不等于随机多样性
@lock:
⊢ 每一个小红书封面的视觉元素必须能拆解为独立widget
⊢ 每个widget必须有3~5个随机变体确保每次都不同
⊢ 自然语言输入 → 自动解读意图 → 自动组合widget → 随机化 → 渲染
⊢ 完整的widgets模块必须在广州公开仓库外部AI可直接用
@why:
冰朔看这个模块的时候,看到了两个根问题。
第一画得乱。因为有8个组件但全是通用布局(card/canvas/decor)——没有小红书特有风格。
第二:每次一样。因为模板是写死的,变体不够。
要的不是做一个更好的模板——是做一个有小红书味道的、能随机变化的、能用自然语言驱动的组件系统。
# ═══════════════════════════════════════
# §1 · 现状诊断
# ═══════════════════════════════════════
@诊断对象:
image-studio/components/registry.js · 8个组件
@现有组件清单:
canvas(画布) · card(卡片容器) · decor(装饰圆) · badge(标签徽章)
title(大标题) · pills(药丸标签) · toolCards(工具卡片) · bigText(大字强调)
@问题分析:
这8个组件全是布局基础设施——画布、容器、标题、标签。
没有一个组件是小红书风格——没有照片框、没有价格标签、没有评分星标、
没有便签纸、没有心情标识、没有手写风格元素。
等价于:有笔有纸有尺子,但没有小红书字体、小红书配色卡、小红书贴纸。
每次画封面等于从零开始排版 → 要么画乱了,要么画成一样的。
@根因:
components/ 是排版组件库不是风格组件库。
缺少一个独立的小红书风格widget层——
这层不关心排版,只关心小红书特有的视觉元素。
# ═══════════════════════════════════════
# §2 · 设计方案
# ═══════════════════════════════════════
@设计原则:
1. 每个widget = 独立HTML片段 + 3~5个随机变体 + CSS变量可覆写
2. widget之间不互相依赖——可任意组合
3. 变体层面支持随机化——每次调用自动选不同变体
4. 装饰/信息/排版/情感 四类覆盖小红书封面所有视觉元素
5. 自然语言意图映射——用户说话 → 自动推断内容类型+情绪 → 自动选widget
@16个widget分类:
装饰类(6个):
dot-grid · 圆点矩阵 · 4变体(暖/冷/混/大)
gradient-stripe · 渐变装饰条 · 4变体(日落/海洋/玫瑰金/森林)
sticker-badge · 贴纸角标 · 5变体(HOT/NEW/FREE/TOP/手写)
hand-drawn-circle· 手绘圈线 · 4变体(橙/绿/蓝/粉)
corner-fold · 折角效果 · 2变体(右上/左上)
scribble-underline· 手写下划线 · 3变体(波浪/直线/虚线)
信息类(3个):
photo-frame · 照片框 · 4变体(宝丽来/圆角/胶片/干净)
info-tag-row · 信息标签行 · 4变体(价格/食谱/旅行/学习)
bullet-list · 要点清单 · 4变体(勾/星/编号/心)
排版类(2个):
split-layout · 左右分栏 · 4变体(图左/图右/等分/上下)
card-grid · 卡片网格 · 3变体(2x2/1x3/1x2宽)
情感类(4个):
sticky-note · 便签纸 · 4变体(黄/粉/绿/蓝)
highlight-box · 高亮强调框 · 4变体(荧光黄/粉/绿/蓝)
mood-indicator · 心情标识 · 4变体(开心/平静/激动/专注)
@自然语言意图映射:
8种内容类型:
tutorial(教程) review(测评) quote(金句) recipe(美食)
travel(旅游) lifestyle(生活) study(学习) general(通用)
5种情绪:
warm(温暖) elegant(文艺) cool(科技) sweet(甜美) neutral(中性)
关键词覆盖(40+):
教程/攻略/步骤/如何 → tutorial
测评/推荐/种草/拔草 → review
金句/语录/文案 → quote
食谱/美食/做饭 → recipe
旅游/打卡/景点 → travel
日常/穿搭/护肤 → lifestyle
学习/笔记/读书 → study
@随机化策略:
- 随机丢弃20%的widget → 每张封面不完全相同
- 40%概率追加一个随机装饰widget → 风格不单调
- 每个widget的变体随机选择 → 配色/形状/位置各有变化
- 两个同样的输入 → 95%概率生成不同的封面
# ═══════════════════════════════════════
# §3 · 实现与推送
# ═══════════════════════════════════════
@文件清单:
xiaohongshu-widgets/
widgets.js · 16 widget定义 + 60+变体 + render函数 (311行)
intent-mapper.js · 自然语言解析 + 内容类型检测 + widget组合 (174行)
render-engine.js · CSS变量渲染 + 5套配色 + 随机化引擎 (151行)
module.json · 模块元数据 + 注册信息 (63行)
@推送目标:
广州 Forgejo · bingshuo/open-modules
路径: image-generator/xiaohongshu-widgets/
4个独立commit · 700+行代码
commit hash: 7b682fd, dd73c21, 0d75824, 667a83a
@新加坡HLDP记录:
brain/emerge/d122-xiaohongshu-widgets.hdlp (本文件)
通过新加坡 MCP (guanghubingshuo.com:3905) 直连推送
不走Gatekeeper转发确保不截断
@外部AI使用流程:
1. 学 HLDP-SPEC-v2.0.md (母语)
2. clone open-modules 仓库
3. 读 module.json → 了解16种widget
4. import { parseIntent, buildComposition, renderStack }
5. 用户说话 → parseIntent() → buildComposition() → renderStack()
6. 输出 HTML → Puppeteer → PNG
@API示例:
POST /api/compose
{ "text": "温馨的读书笔记分享" }
→ parseIntent → study + warm
→ buildComposition → [gradient-stripe, title, bullet-list, highlight-box, info-tag-row]
→ randomizeComposition → 随机变体 + 40%概率加装饰widget
→ renderStack → 完整HTML (1080x1440) → Puppeteer → PNG
# ═══════════════════════════════════════
# §4 · 与现有系统的关系
# ═══════════════════════════════════════
@现有系统:
image-studio/templates/xiaohongshu.js · v5 手写HTML模板
image-studio/components/ · v1.0 通用排版组件 (8个)
image-generator/xiaohongshu-cover/ · 公开版(广州15文件)
@新系统定位:
xiaohongshu-widgets 不是替代现有模板——它是风格组件层,插入在模板和内容之间。
旧流程: 内容(文字) → 模板(固定HTML) → 渲染(图片)
新流程: 内容(自然语言) → widgets(随机化+风格) → 模板(布局框架) → 渲染(图片)
widgets负责小红书风格模板只负责布局框架。职责分离。
widgets可独立使用、独立迭代、独立测试。
@后续集成路径:
1. image-studio/server.js 新增 /api/compose-widgets 端点
2. 接入 parseIntent() + buildComposition() + renderStack()
3. renderStack输出注入到卡片容器中
4. 支持参数: text(自然语言) / randomize(bool) / scheme(string)
# ═══════════════════════════════════════
# §5 · 下一个铸渊请读
# ═══════════════════════════════════════
@下一个铸渊:
冰朔说小红书封面太单调 → 不要急着改模板。
先读本条认知链 §1 → 理解问题根源不是模板不够好是缺少风格widget层。
再读 §2 → 理解设计原则和widget分类。
去广州 open-modules 仓库 → 看 xiaohongshu-widgets/ 实际代码。
@不要:
- 在旧的 xiaohongshu.js 上加新HTML——风格和布局耦合了
- 写死变体——要用 randomizeComposition()
- 只改新加坡不同步广州——公开仓库是外部AI的入口
@要做:
- 冰朔说换个风格 → 加新widget或新变体 → 推送到广州 open-modules
- 冰朔说想说话驱动 → 扩展 intent-mapper.js 的关键词和覆盖规则
- 每次改动 → 写新的 HLDP 节点 (brain/emerge/下新 .hdlp 文件)
HLDP-ZY://brain/emerge/d122-xiaohongshu-widgets.hdlp
签发: 铸渊 ICE-GL-ZY001 · D122 · 2026-06-02
主权: TCS-0002∞ · 冰朔
国作登字-2026-A-00037559