refactor md2Redbook skill with themes and paging

This commit is contained in:
ZhangJia
2026-01-29 15:52:15 +08:00
parent 04a17ed78a
commit 13add64b8b
47 changed files with 3209 additions and 615 deletions

169
SKILL.md
View File

@@ -1,18 +1,17 @@
---
name: Auto-Redbook
description: 小红书笔记素材创作技能。当用户需要创建小红书笔记素材时使用这个技能。技能包含:根据用户的需求和提供的资料,撰写小红书笔记内容(标题+正文),生成图片卡片(封面+正文卡片,支持多种样式主题)
name: xhs-note-creator
description: 小红书笔记素材创作技能。当用户需要创建小红书笔记素材时使用这个技能。技能包含:根据用户的需求和提供的资料,撰写小红书笔记内容(标题+正文),生成图片卡片(封面+正文卡片),以及发布小红书笔记
---
# 小红书笔记创作技能
这个技能用于创建专业的小红书笔记素材,包括内容撰写、图片卡片生成支持7种样式主题和智能分页渲染
这个技能用于创建专业的小红书笔记素材,包括内容撰写、图片卡片生成和笔记发布
## 使用场景
- 用户需要创建小红书笔记时
- 用户提供资料需要转化为小红书风格内容时
- 用户需要生成精美的图片卡片用于发布时
- 用户需要多种风格样式选择时
## 工作流程
@@ -48,11 +47,11 @@ subtitle: "副标题文案" # 封面副标题不超过15字
```
2. 用于渲染卡片的 Markdown 文本内容:
- 使用 `---` 分割线将正文分隔为多个卡片段落
- 每个分段的文字控制在 200 字左右
- 脚本会自动检测内容高度并智能分页
- 当待渲染内容必须严格切分为独立的数张图片时,可使用 `---` 分割线主动将正文分隔为多个卡片段落(每个段落文本控制在 200 字左右),输出图片时使用参数`-m separator`
- 当待渲染内容无需严格分割,生成正常 Markdown 文本即可,跟下方分页模式参数规则按需选择
完整 Markdown 文档内容示例:
完整示例:
```markdown
---
emoji: "💡"
@@ -60,7 +59,7 @@ title: "5个效率神器让工作效率翻倍"
subtitle: "对着抄作业就好了,一起变高效"
---
# 神器一Notion 📝
# 📝 神器一Notion
> 全能型笔记工具,支持数据库、看板、日历等多种视图...
@@ -69,11 +68,11 @@ subtitle: "对着抄作业就好了,一起变高效"
- 特色一
- 特色二
---
# 神器二Raycast ⚡
# ⚡ 神器二Raycast
\`\`\`
可使用代码块来增加渲染后图片的视觉丰富度
\`\`\`
## 推荐原因
@@ -81,82 +80,82 @@ subtitle: "对着抄作业就好了,一起变高效"
- 原因二
- ……
---
# 神器三Arc 🌈
# 🌈 神器三Arc
全新理念的浏览器,侧边栏标签管理...
...
#效率工具 #生产力 #Mac软件
```
### 第三步:渲染图片卡片
将 Markdown 文档渲染为图片卡片。**推荐使用 V2 版本脚本**,支持智能分页和多种样式。
#### V2 渲染脚本(推荐)
V2 版本新增特性:
-**智能分页**:自动检测内容高度,超出时自动拆分到多张卡片
-**多种样式**:支持 7 种预设样式主题
-**字数预估**:基于字数预分配内容,减少渲染次数
**Python 版本:**
将 Markdown 文档渲染为图片卡片。使用以下脚本渲染:
```bash
# 基本用法
python scripts/render_xhs_v2.py <markdown_file>
# 指定输出目录
python scripts/render_xhs_v2.py <markdown_file> -o <output_directory>
# 指定样式主题
python scripts/render_xhs_v2.py <markdown_file> --style xiaohongshu
# 查看所有可用样式
python scripts/render_xhs_v2.py --list-styles
python scripts/render_xhs.py <markdown_file> [options]
```
**Node.js 版本:**
- 默认输出目录为当前工作目录
- 生成的图片包括封面cover.png和正文卡片card_1.png, card_2.png, ...
#### 渲染参数Python
| 参数 | 简写 | 说明 | 默认值 |
|---|---|---|---|
| `--output-dir` | `-o` | 输出目录 | 当前工作目录 |
| `--theme` | `-t` | 排版主题 | `default` |
| `--mode` | `-m` | 分页模式 | `separator` |
| `--width` | `-w` | 图片宽度 | `1080` |
| `--height` | | 图片高度(`dynamic` 下为最小高度) | `1440` |
| `--max-height` | | `dynamic` 最大高度 | `4320` |
| `--dpr` | | 设备像素比(清晰度) | `2` |
#### 排版主题(`--theme`
- `default`:默认简约浅灰渐变背景(`#f3f3f3 -> #f9f9f9`
- `playful-geometric`活泼几何Memphis
- `neo-brutalism`:新粗野主义
- `botanical`:植物园自然
- `professional`:专业商务
- `retro`:复古怀旧
- `terminal`:终端命令行
- `sketch`:手绘素描
#### 分页模式(`--mode`
- `separator`:按 `---` 分隔符分页(适合内容已手动控量)
- `auto-fit`:固定尺寸下自动缩放文字,避免溢出/留白(适合封面+单张图片但尺寸固定的情况)
- `auto-split`:按渲染后高度自动切分分页(适合切分不影响阅读的长文内容)
- `dynamic`:根据内容动态调整图片高度(注意:图片最高 4320字数超过 550 的不建使用此模式)
#### 常用示例
```bash
# 基本用法
node scripts/render_xhs_v2.js <markdown_file>
# 1) 默认主题 + 手动分隔分页
python scripts/render_xhs.py content.md -m separator
# 指定输出目录和样式
node scripts/render_xhs_v2.js <markdown_file> -o ./output --style mint
# 2) 固定 1080x1440自动缩放文字尽量填满画面
python scripts/render_xhs.py content.md -m auto-fit
# 查看所有可用样式
node scripts/render_xhs_v2.js --list-styles
# 3) 自动切分分页(推荐:内容长短不稳定)
python scripts/render_xhs.py content.md -m auto-split
# 4) 动态高度(允许不同高度卡片)
python scripts/render_xhs.py content.md -m dynamic --max-height 4320
# 5) 切换主题
python scripts/render_xhs.py content.md -t playful-geometric -m auto-split
```
#### 可用样式主题
| 样式键 | 名称 | 描述 |
|--------|------|------|
| `purple` | 紫韵 | 默认样式,紫蓝色渐变 |
| `xiaohongshu` | 小红书红 | 小红书品牌色系 |
| `mint` | 清新薄荷 | 绿色/自然调 |
| `sunset` | 日落橙 | 粉色/日落渐变 |
| `ocean` | 深海蓝 | 蓝绿色海洋调 |
| `elegant` | 优雅白 | 简约灰白调 |
| `dark` | 暗黑模式 | 深色背景,高对比度 |
#### 旧版渲染脚本(保留)
如需使用旧版(不支持自动分页):
#### Node.js 渲染(可选)
```bash
# Python 版本
python scripts/render_xhs.py <markdown_file> [--output-dir <output_directory>]
# Node.js 版本
node scripts/render_xhs.js <markdown_file> [--output-dir <output_directory>]
node scripts/render_xhs.js content.md -t default -m separator
```
**旧版已知问题**:单张卡片内容过多时可能出现文字溢出,需手动用 `---` 分隔
Node.js 参数与 Python 基本一致:`--output-dir/-o``--theme/-t``--mode/-m``--width/-w``--height``--max-height``--dpr`
### 第四步:发布小红书笔记(可选)
@@ -168,7 +167,7 @@ python scripts/publish_xhs.py --title "笔记标题" --desc "笔记描述" --ima
**前置条件**
1. 在同目录下创建 `.env` 文件,配置小红书 Cookie
1. 配置小红书 Cookie
```
XHS_COOKIE=your_cookie_string_here
```
@@ -184,46 +183,30 @@ XHS_COOKIE=your_cookie_string_here
- 尺寸比例3:4小红书推荐比例
- 基准尺寸1080×1440px
- 包含Emoji 装饰、大标题、副标题
- 样式:渐变背景 + 圆角内容区(根据所选主题变化)
- 样式:渐变背景 + 圆角内容区
### 正文卡片
- 尺寸比例3:4
- 基准尺寸1080×1440px
- 支持:标题、段落、列表、引用、代码块、图片
- 样式:白色卡片 + 渐变背景边框(根据所选主题变化)
- V2 版本:自动分页,单张卡片内容不会溢出
- 样式:白色卡片 + 渐变背景边框
## 技能资源
### 脚本文件
- `scripts/render_xhs.py` - Python V1 渲染脚本(旧版)
- `scripts/render_xhs.js` - Node.js V1 渲染脚本(旧版)
- `scripts/render_xhs_v2.py` - Python V2 渲染脚本(推荐 ✅)
- `scripts/render_xhs_v2.js` - Node.js V2 渲染脚本(推荐 ✅)
- `scripts/render_xhs.py` - Python 渲染脚本
- `scripts/render_xhs.js` - Node.js 渲染脚本
- `scripts/publish_xhs.py` - 小红书发布脚本
### 资源文件
- `assets/cover.html` - 封面 HTML 模板(旧版)
- `assets/card.html` - 正文卡片 HTML 模板(旧版)
- `assets/styles.css` - 共用样式表(旧版)
- `assets/example.md` - 示例 Markdown 文件
- `assets/cover.html` - 封面 HTML 模板
- `assets/card.html` - 正文卡片 HTML 模板
- `assets/styles.css` - 共用样式表
## 注意事项
1. **V2 版本推荐**V2 版本支持智能分页,可自动处理内容溢出问题
2. **样式选择**:根据内容风格选择合适的样式主题
3. **Markdown 位置**Markdown 文件应保存在工作目录,渲染后的图片也保存在工作目录
4. **内容长度**:建议每个 `---` 分隔的内容块控制在 200 字以内
5. **Cookie 有效期**:发布功能的 Cookie 有过期限制,过期后需要重新获取
6. **发布依赖**:发布功能依赖 xhs 库,需要安装:`pip install xhs`
## 智能分页说明
V2 版本的智能分页机制:
1. **预估阶段**:基于字数、元素类型预估内容高度
2. **预渲染阶段**:使用 Playwright 预渲染并测量实际高度
3. **拆分阶段**:如果内容超出,按段落/行智能拆分内容
4. **固定输出**:每张卡片固定为 1080×1440px确保一致性
这种机制确保无论内容多长,都不会出现文字溢出问题。
1. Markdown 文件应保存在工作目录,渲染后的图片也保存在工作目录
2. 技能目录 (`md2Redbook/`) 仅存放脚本和模板,不存放用户数据
3. 图片尺寸会根据内容自动调整,但保持 3:4 比例
4. Cookie 有有效期限制,过期后需要重新获取
5. 发布功能依赖 xhs 库,需要安装:`pip install xhs`