Install
openclaw skills install @horisony/snapdesign-rednote将话题或文章转化为小红书知识型图文(3:4 竖版图片组)。专为企业主、创业者、知识型 IP 设计。 首图以大字标题 + 数字/反问/反常识/信息差策略吸引停留;内容图文字密度高,传递实质干货。 设计风格:纸张浅色背景 + 深咖前景色系,高级感强,区别于生活博主审美。 凡用户提到以下任何情形,必须立即调用本技能: - 帮我做小红书图文 / 帮我做知识卡片 / 帮我做内容图 - 把这篇文章/话题/干货做成小红书 - 做几张小红书图片 / 做一组图文 - 企业主/创业者内容 / 知识型小红书 / 干货图文 - 帮我出图 / 帮我排版成小红书格式 不适用于:生活方式/美食/旅游类博主内容(请用 rednote-image-layout skill)。
openclaw skills install @horisony/snapdesign-rednote将话题或文章转化为适合企业主/创业者 IP 的小红书知识型图文组。 输出:多张 3:4(1080×1440px)PNG 图片,直接发送给用户。
重要:直接输出 PNG 图片,不输出 HTML 文件。
所有幻灯片使用同一套配色,无深色背景幻灯片。
:root {
/* 背景:全部统一用暖纸白 */
--bg: #FAF7F2; /* 唯一背景色,所有幻灯片一致 */
--ink: #2A1508; /* 页面底色(body 背景) */
/* 文字 */
--brown: #482E28; /* 主前景色:深咖,标题/正文 */
--mocha: #6B3D30; /* 次级文字:中咖,副文字/说明 */
--muted: rgba(72,46,40,0.45); /* 弱化文字:眉注、页码 */
/* 装饰色(克制使用,不超过每张幻灯片 10–15% 面积) */
--orange: #EE8136; /* 主装饰色:关键词高亮、分割线、序号、CTA 按钮 */
--orange-lt: rgba(238,129,54,0.12); /* 淡橙:卡片背景、callout 底色 */
--orange-bd: rgba(238,129,54,0.30); /* 橙边框 */
}
背景规则:每张幻灯片背景统一为 #FAF7F2,不交替、不使用深色背景。
视觉节奏通过装饰线、序号圆圈、callout 色块、标题粗细来区分层次,而非背景色变化。
点阵纹理(每张幻灯片必须有):
.tex-dots {
position: absolute; inset: 0; pointer-events: none; z-index: 1;
background-image: radial-gradient(circle, rgba(72,46,40,0.055) 1.2px, transparent 1.2px);
background-size: 30px 30px;
}
<link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@300;400;600;700
&family=Noto+Sans+SC:wght@300;400;500
&family=Cormorant+Garamond:ital,wght@0,400;0,600;1,400;1,600
&display=swap" rel="stylesheet">
封面大标题: Noto Serif SC 700 118–128px letter-spacing: 8–12px line-height: 1.20–1.28
章节标题: Noto Serif SC 700 72–86px letter-spacing: 4–7px
数字/数据: Cormorant Garamond 600 90–110px (强调时可更大)
正文: Noto Serif SC 300 30–33px line-height: 1.85–2.00
要点标题: Noto Serif SC 600 36–40px letter-spacing: 2px
要点正文: Noto Serif SC 300 28–30px line-height: 1.80
眉注/英文: Cormorant Garamond italic 28–30px letter-spacing: 7–9px
底栏: Cormorant Garamond 22–24px letter-spacing: 2–4px
标签药丸: Noto Sans SC 400 24–26px letter-spacing: 3px
禁止使用:任何手写体、马善政、ZCOOL XiaoWei、装饰字体。
封面是决定用户是否停留的关键。必须包含以下钩子之一:
钩子类型(从内容中选最强的一种):
92% 的老板不知道… / 做到这 3 点,利润翻倍你的团队真的在执行吗? / 为什么降价反而亏更多?越努力越穷,问题出在这 / 不做品牌反而更赚钱行业内部都在用这个方法 / 2024 最新政策,90% 老板没看到封面布局:
[点阵纹理(.tex-dots)]
[幽灵字 —— 单个大汉字,~480px,opacity 3%,右上角,置于内容层之下,颜色 --brown]
[左侧竖向装饰线 —— --orange色,渐变至透明,opacity 35%]
[四角定位框 —— 仅封面有,颜色 --orange,opacity 40%]
[内容区:padding 120px 96px 96px,flex column]
- 眉注 (Cormorant italic, 28px, letter-spacing 9px, --orange)
- 主标题 (Noto Serif SC 700, 118–128px, --brown;关键词/数字用 .accent → color: --orange)
- 分割线 (68px 宽, 2px, --orange)
- 副标题 (Noto Serif SC 300, 31px, line-height 2.00, --mocha, 2–3 行)
- 标签行 (2–3 个药丸标签,margin-top auto,padding-bottom 100px)
[底栏]
封面标题字数控制:主标题控制在 8–16 字,宁短勿长。 不在封面堆砌内容,封面只做一件事:让人想看下一张。
适合列举观点、步骤、对比、解析。文字密度高,每张传递 3–5 个实质信息点。
[点阵纹理(.tex-dots)]
[内容区:padding 100px 88px 88px]
- 眉注 (Cormorant italic, 28px, --orange)
- 章节标题 (76–86px, Noto Serif SC 700, --brown)
- 分割线 (52px, 2px, --orange)
- 要点列表 (每条:序号圆圈 + 要点标题 36px + 要点正文 28–30px,3–5 条)
- 引用框 (可选:左侧 4px --orange 竖线,背景 --orange-lt,padding 24px 36px)
[底栏]
序号圆圈样式:
.num-circle {
width: 52px; height: 52px; min-width: 52px; border-radius: 50%;
background: rgba(238,129,54,0.10); border: 1px solid rgba(238,129,54,0.28);
font-family: 'Cormorant Garamond', serif; font-size: 26px; color: #EE8136;
display: flex; align-items: center; justify-content: center;
}
当内容包含数据对比、前后对比、行业均值 vs 目标值时使用此布局。
[点阵纹理(.tex-dots)]
[内容区:padding 96px 80px 80px]
- 章节标题 (76px, Noto Serif SC 700, --brown)
- 大数字展示区:
数字本体 (Cormorant Garamond 600, 100–120px, --orange)
单位/说明 (Noto Sans SC 400, 28px, --mocha)
- 对比行 (两列并排:左侧"普通做法" vs 右侧"正确做法",右侧用 --orange-lt 底色 + --orange-bd 边框)
- 结论句 (引用框,Noto Serif SC 300, 32px, line-height 1.90)
[底栏]
每组图文最后一张,引导关注/保存/评论。背景同样是 #FAF7F2,用装饰元素拉开层次。
[点阵纹理(.tex-dots)]
[内容区:padding 104px 96px 96px]
- 眉注 (Cormorant italic, 28px, --orange)
- 分割线 (48px, 2px, --orange)
- 结语标题 (76px, Noto Serif SC 700, --brown)
- 总结正文 (30px, Noto Serif SC 300, line-height 1.90, --mocha, 3–4 句)
- 行动号召 (药丸按钮:background #EE8136, color #FAF7F2, 32px, border-radius 48px, padding 18px 52px)
- 品牌签名 (BaoAI,Cormorant Garamond 600, 36px, --orange, 右对齐,margin-top auto)
[底栏]
所有幻灯片背景相同,只需一套标签样式:
/* 统一标签 —— 在 #FAF7F2 背景上 */
.tag-a { background: rgba(238,129,54,0.10); color: #C45E10; border: 1px solid rgba(238,129,54,0.30); }
.tag-b { background: rgba(72,46,40,0.07); color: #482E28; border: 1px solid rgba(72,46,40,0.20); }
.tag-c { background: rgba(72,46,40,0.04); color: #6B3D30; border: 1px solid rgba(72,46,40,0.14); }
/* 通用基础样式 */
.tag { display: inline-flex; align-items: center; padding: 10px 22px; border-radius: 40px;
font-family: 'Noto Sans SC', sans-serif; font-size: 24px; letter-spacing: 3px; }
所有幻灯片底栏颜色一致(浅色背景上统一用深咖透明色):
.btm {
position: absolute; bottom: 0; left: 0; right: 0;
height: 84px;
display: flex; align-items: center; justify-content: space-between;
padding: 0 80px; z-index: 30;
}
.btm-num, .btm-brand { font-family: 'Cormorant Garamond', serif; letter-spacing: 3px; }
.btm-num { font-size: 23px; color: rgba(72,46,40,0.28); }
.btm-brand { font-size: 22px; font-weight: 600; color: rgba(72,46,40,0.28); }
<div class="slide s1">
<div class="slide-inner">
<!-- 内容 -->
</div>
</div>
.slide { width: 100%; max-width: 540px; position: relative; overflow: hidden; border-radius: 3px; }
.slide-inner { width: 1080px; height: 1440px; position: relative; transform-origin: top left; }
function scaleSlides() {
document.querySelectorAll('.slide').forEach(slide => {
const inner = slide.querySelector('.slide-inner');
if (!inner) return;
const s = slide.clientWidth / 1080;
inner.style.transform = `scale(${s})`;
slide.style.height = (1440 * s) + 'px';
});
}
scaleSlides();
window.addEventListener('resize', scaleSlides);
不依赖外部图片 URL(沙盒网络封锁)。所有装饰图形用内联 SVG 绘制。
常用图标(stroke-width 2–2.5,颜色 #C8956A):
✓:<path d="M5 12l5 5L19 7"/><polyline points="9 18 15 12 9 6"/><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><circle> + <text> 组合禁止使用 emoji 作为图标,一律用 SVG stroke 路径或 Unicode 纯文本符号(①②③ 等)。
每张幻灯片必须填满整页,不能留白下半页。
每张内容图要求:章节标题 + 5-8 个要点(含小标题 + 详细正文)+ 底部可加标签
from playwright.sync_api import sync_playwright
import os, zipfile, shutil
TOPIC = "topic-name" # 替换为实际话题关键词
HTML_PATH = f"/mnt/user-data/outputs/rednote-{TOPIC}.html"
PNG_DIR = f"/home/claude/slides_{TOPIC}"
ZIP_PATH = f"/mnt/user-data/outputs/rednote_{TOPIC}.zip"
LABELS = {
"slide_01.png": "01_封面.png",
"slide_02.png": "02_内容.png",
# 自动按 slide 数量导出
}
shutil.rmtree(PNG_DIR, ignore_errors=True)
os.makedirs(PNG_DIR)
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page(viewport={"width": 1080, "height": 900}, device_scale_factor=2)
page.goto(f"file://{HTML_PATH}")
page.wait_for_timeout(4000) # 等待 Google Fonts 加载
for i, slide in enumerate(page.query_selector_all(".slide")):
slide.screenshot(path=f"{PNG_DIR}/slide_{i+1:02d}.png")
browser.close()
# 直接发送图片,不需要打包 ZIP
# 用 message 工具逐一发送每张图片
if f.endswith(".png"):
zf.write(f"{PNG_DIR}/{f}", LABELS.get(f, f))
print(f"ZIP ready: {ZIP_PATH}")
完成后:用 message 工具发送所有 PNG 图片给用户
关键参数(不可改动):
device_scale_factor=2 → 物理分辨率 1080×1440wait_for_timeout(4000) 最低 4 秒(深色背景 + 多字体).slide 元素,不是 .slide-innerHTML:
#FAF7F2,无深色背景幻灯片#482E28,次级文字 #6B3D30#EE8136 克制使用(分割线、序号、.accent 高亮、CTA 按钮),不超过每张 15% 面积.accent 用在关键词/数字上(颜色 #EE8136).tex-dots)01 / N;右:BaoAI 水印;颜色 rgba(72,46,40,0.28)PNG 导出:
device_scale_factor=2