Generate Xiaohongshu (XHS / RedNote) cover images using GPT Image 2 / Codex image generation first, with the legacy Gemini CLI as fallback. Triggers for cover generation: "生成封面", "小红书封面", "xhs封面", "制作封面", "帮我做张图", "XHS cover", "RedNote cover". Triggers for cover editing: "修改封面", "改一下封面", "上一张图基础上", "基于这张图调整", "不要重新做", "edit this cover". Triggers for style learning: "学习这个风格", "提取风格", "我想自定义风格", "这张图的风格", "learn this style", "extract style". Always trigger this skill when user mentions 小红书/XHS/...
Scanned 9/1/2026
Install to Claude Code
npx -y skills add Vivixiao980/xhs-cover-skill --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of xhs-cover?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vivixiao980-xhs-cover)More formats (shields.io, HTML) on the badges page.
---
name: xhs-cover
description: >
Generate Xiaohongshu (XHS / RedNote) cover images using GPT Image 2 / Codex image generation first, with the legacy Gemini CLI as fallback.
Triggers for cover generation: "生成封面", "小红书封面", "xhs封面", "制作封面",
"帮我做张图", "XHS cover", "RedNote cover".
Triggers for cover editing: "修改封面", "改一下封面", "上一张图基础上",
"基于这张图调整", "不要重新做", "edit this cover".
Triggers for style learning: "学习这个风格", "提取风格", "我想自定义风格",
"这张图的风格", "learn this style", "extract style".
Always trigger this skill when user mentions 小红书/XHS/RedNote together
with 封面/cover/图片, OR when user uploads a reference image and asks
about creating a similar style.
metadata:
openclaw:
requires:
bins:
- node
primaryEnv: OPENAI_API_KEY
emoji: "🎨"
---
# 小红书封面生成器
直接生成或修改小红书封面,优先使用 GPT Image 2 / Codex 图片生成能力。
- **官网**:https://xhscover.vivi.wiki(可在线预览所有风格效果图)
- **作者**:Vivi
- **支持风格**:18种预设风格 + 用户自定义风格
- **技术原理**:优先用 GPT Image 2 / Codex 图片生成或编辑,将你的人像照片/上一版封面 + 文字要求合成为封面图;Gemini 命令行脚本仅作为备用方案。
---
## 路径约定
本 Skill 的脚本位于 SKILL.md 所在目录。执行任何命令前,先确定 `SKILL_DIR`:
- **Codex(推荐)**:`~/.codex/skills/xhs-cover-skill`
- **Claude Code**:`~/.claude/skills/xhs-cover`
- **OpenClaw**:`~/.openclaw/skills/xhs-cover`
后续所有 `${SKILL_DIR}` 均指此路径,不要硬编码。
---
## 工作流入口
触发后,先判断用户意图:
- **生成封面**(默认):用户想用已有风格生成封面 → 进入下方「执行流程」
- **修改封面**:用户对已生成封面提出排版、文案、比例、人物大小、颜色或局部风格修改 → 必须以上一张封面图作为输入图进行编辑,保留原图主体风格和构图,只改用户点名的部分;不要从零重新创造一张封面。
- **学习/提取风格**:用户上传了参考图,或说了「学习/提取/自定义风格」→ 跳到「风格学习工作流」
- **使用自定义风格**:用户说「用 XX 风格生成」且 XX 不在内置列表中 → 检查 `styles/` 目录是否有对应 JSON;有则使用,无则建议先运行风格学习工作流
---
## 执行流程
### Step 0:优先使用 GPT Image 2
在 Codex 中,如果可以使用图片生成/编辑能力,默认使用 GPT Image 2 生成或编辑封面,不再优先调用 Gemini CLI。
输入要素:
- 人物照片:用户上传的图片,或给出的本地绝对路径。
- 上一版封面:当用户要求“修改/调整/在上一张基础上改”时,必须使用最近一次生成或用户明确指定的封面图作为编辑输入。
- 主标题:封面最大字。
- 副标题/小字:辅助说明,可拆成 1-3 行。
- 风格:映射到内置风格语义,例如 `hand-drawn-border` = 手绘边框/综艺活力感。
- 比例:默认小红书 3:4。
生成提示词模板:
```text
使用用户提供的人物照片生成一张小红书 3:4 竖版封面。保持人物脸部身份和五官特征真实自然,不改变发型、妆容和服装主体。
风格:{风格中文描述}。
主标题:{主标题}
副标题/小字:{副标题}
排版要求:主标题最大、最醒目;副标题作为小字分行排版;文字清晰可读,适合手机信息流;不要添加除主标题和副标题之外的任何文字。
```
封面修改提示词模板:
```text
基于用户指定或最近一次生成的小红书封面图进行局部修改,不要重新设计一张新图。保留原图的主体风格、构图、人物身份、边框、纹理、色彩气质和封面层次,只修改用户明确点名的内容。
本次修改要求:{用户修改要求}
如果涉及文字,必须严格使用用户给出的文案,中文准确、无错别字、无乱码;不要添加未要求的新文字。保持 3:4 竖版小红书封面比例,文字适合手机信息流阅读。
```
如果用户明确要求“xhs cover skill + GPT Image 2”,直接按本步骤生成。
以下 Gemini CLI 流程仅在 GPT Image 2 不可用、或用户明确要求命令行/API 生成时使用。
### Step 1:检查配置(首次使用 Onboarding)
```bash
cat ~/.config/xhs-cover/config.json 2>/dev/null
```
**如果文件存在且有 `apiKey` 字段 → 跳到 Step 2。**
否则进入 Onboarding:
#### 1a. 介绍 Skill
向用户展示以下介绍(用 markdown 格式输出,清晰美观):
```
🎨 欢迎使用小红书封面生成器!
这个工具让你直接在命令行生成小红书封面,无需打开网站。
你只需要:一张人物照片 + 标题文字 → 即可生成封面。
📖 官网:https://xhscover.vivi.wiki
(可在线预览18种风格的效果示例,帮你选择合适的风格)
👩💻 作者:Vivi
首次使用需要配置一次 API Key,之后每次直接生成。
```
#### 1b. 选择 API 类型
> 💡 **OpenClaw 用户**:可跳过 Onboarding,直接在 OpenClaw 配置文件中设置环境变量:
> ```yaml
> skills:
> entries:
> xhs-cover:
> env:
> XHS_COVER_API_KEY: "你的 API Key"
> XHS_COVER_BASE_URL: "https://generativelanguage.googleapis.com/v1beta/openai"
> XHS_COVER_MODEL: "gemini-2.0-flash-exp-image-generation"
> ```
> 设置后重启 OpenClaw 即可,无需走以下步骤。
用 AskUserQuestion 询问(**必须先问这个,再问 key**):
**问题**:"请选择 API 来源"
| 选项 | 说明 |
|------|------|
| Google AI Studio(官方) | 使用谷歌官方 API,有免费层级(无需绑卡),但图片生成是否免费请以官方定价页为准,需要科学上网 |
| 第三方 API 代理 | 使用兼容 OpenAI 格式的第三方代理服务,无需科学上网,需提供 Base URL、API Key 和模型名称 |
#### 1c. 根据选择收集 API 信息
**如果选择 Google AI Studio**:
向用户说明如何获取 API Key:
```
📝 获取 Google AI Studio API Key 步骤:
1. 访问 https://aistudio.google.com/apikey
2. 登录 Google 账号
3. 点击「Create API key」
4. 复制生成的 Key(以 AIza 开头)
注意:Gemini API 有免费层级,但图片生成功能是否免费以 https://ai.google.dev/gemini-api/docs/pricing 为准(Google 定价会随版本更新调整)。
```
用 AskUserQuestion 询问:
- **API Key**(必填,以 AIza 开头)
然后自动设定:
- `baseUrl` = `https://generativelanguage.googleapis.com/v1beta/openai`
- `model` = 当前支持图片生成的模型名(Google 会随版本迭代更新,可在 https://ai.google.dev/gemini-api/docs/models 查询最新名称)
**如果选择第三方 API**:
用 AskUserQuestion 一次性询问以下三项:
- **API Base URL**(必填,例如 `https://api.your-provider.com`)
- **API Key**(必填,由服务商提供)
- **模型名称**(必填,可向服务商确认支持的模型,推荐填写 `gemini-3-pro-image-preview`)
#### 1d. 询问输出目录
用 AskUserQuestion 询问(可跳过用默认值):
- **封面保存目录**(默认:`~/Desktop/XHS封面`)
#### 1e. 保存配置
先运行:
```bash
mkdir -p ~/.config/xhs-cover
```
再用 Write 工具写入 `~/.config/xhs-cover/config.json`:
```json
{
"apiType": "google 或 third-party",
"apiKey": "用户输入的key",
"baseUrl": "对应的URL",
"model": "对应的模型名",
"outputDir": "用户输入或默认值",
"defaultAspectRatio": "3:4"
}
```
写入后立即执行(保护 API Key 安全):
```bash
chmod 600 ~/.config/xhs-cover/config.json
```
#### 1f. 测试 API 连通性
```bash
node ${SKILL_DIR}/scripts/generate.mjs --test
```
- ✅ 成功 → 告知用户 Onboarding 完成,直接进入 Step 2
- ❌ 失败 → 告知错误原因,询问是否重新配置(Google 用户提示检查科学上网;第三方用户提示检查 URL 和 Key)
---
### Step 2:收集生成参数
读取当前配置:
```bash
cat ~/.config/xhs-cover/config.json
```
用 **一次** AskUserQuestion 收集所有必要参数(已在命令中提供的跳过):
#### 必问项
**① 封面图片路径**(必填)
- 支持直接拖拽文件到终端,或粘贴绝对路径
- 提示:`支持 JPG/PNG,手机照片会自动修正方向`
**② 主标题**(必填)
- 封面最显眼的大字,例如:`如何用3个月学会Python`
#### 选问项(用一个 AskUserQuestion,多选/可选)
**③ 副标题**(可选)
- 补充说明文字,例如:`零基础入门+项目实战`
**④ 其他备注**(可选)
- 对风格、构图的额外要求,例如:`人物占比大,标签加上:进阶虾、学习虾`
**⑤ 比例**(单选,默认 3:4)
| 选项 | 说明 |
|------|------|
| 3:4(默认) | 小红书标准竖版,最常用 |
| 1:1 | 正方形,适合头像或九宫格 |
| 9:16 | 全屏竖版,适合视频封面 |
| 4:3 | 横版,适合横构图人像 |
**⑥ 生成张数**(默认 1,最多 5)
---
### Step 3:风格选择
用 AskUserQuestion 询问风格选择方式:
**选项 A:自动匹配**(推荐,根据你的标题内容自动选择最合适的风格)
**选项 B:从列表选择**(展示18种风格说明)
**选项 C:打开官网预览**(用户可先访问 https://xhscover.vivi.wiki 查看视觉效果,再回来输入风格ID)
---
#### 如果选 A(自动匹配):
根据主标题和副标题内容,按以下规则推荐 **1-2种** 最合适的风格,并简要说明理由,然后 AskUserQuestion 让用户确认:
| 内容类型 | 推荐风格 |
|---------|---------|
| 职场/职业/工作/汇报/升职/面试 | `professional-clean`、`workplace-big-text`、`professional-woman` |
| 教程/干货/攻略/方法/步骤/指南 | `background-big-text`、`sticker-energy`、`multi-layer-layout` |
| 居家/生活/日常/厨房/家务 | `cozy-home`、`home-motivation`、`yellow-pink-banner` |
| 励志/正能量/突破/坚持/成长 | `dark-glow`、`home-motivation`、`dashed-decoration` |
| 旅行/户外/自由/清新 | `outdoor-handwriting`、`split-screen-tags` |
| 读书/知识/学习/智慧 | `study-room-intellectual`、`thinking-question` |
| 搞笑/综艺/有趣/年轻/网感 | `hand-drawn-border`、`sticker-energy`、`pink-yellow-playful` |
| 美妆/穿搭/女性/赋能 | `professional-woman`、`neon-contrast`、`pink-yellow-playful` |
| 科技/AI/播客/数字 | `background-big-text`、`dark-glow`、`workplace-big-text` |
| 其他/通用 | `hand-drawn-border`、`professional-clean` |
#### 如果选 B(列表选择):
展示风格表(**同时展示官网链接,提醒用户可以在官网看效果图**):
```
可在 https://xhscover.vivi.wiki 查看各风格效果图(点击风格卡片预览)
序号 | 风格ID | 名称 | 一句话描述
1 | hand-drawn-border | 手绘边框 | 黄色手绘描边,综艺活力感
2 | outdoor-handwriting | 户外手写 | 竖排毛笔黄字,清新自由感
3 | neon-contrast | 霓虹撞色 | 荧光粉绿大胆撞色,Y2K潮流
4 | multi-layer-layout | 多层排版 | 黑橙混排,杂志编辑风格
5 | study-room-intellectual | 书房知性 | 奶油色手写字,温暖智慧感
6 | professional-woman | 职场女性 | 奶黄大字+红色虚线,赋能感
7 | sticker-energy | 贴纸活力 | 人物抠图贴纸效果,闪电星星装饰
8 | dashed-decoration | 虚线装饰 | 白字橙副标,虚线半圆环绕
9 | background-big-text | 背景大字 | 超大橙字作背景,人物前景
10 | thinking-question | 思考提问 | 蓝灰毛笔字,问号设计
11 | split-screen-tags | 分屏标签 | 上图下色块,黄蓝配色
12 | cozy-home | 温馨居家 | 黄白渐变字+椭圆高亮
13 | workplace-big-text | 职场大字 | 白色超大字叠人物,冲击力
14 | dark-glow | 深色发光 | 深色背景+黄色发光文字
15 | home-motivation | 居家励志 | 亮黄大字,开放姿势场景
16 | yellow-pink-banner | 黄粉横幅 | 黄字顶部+粉色横幅底部
17 | pink-yellow-playful | 粉黄俏皮 | 波浪英文+手写中文,可爱
18 | professional-clean | 专业简洁 | 白字简洁,现代办公场景
```
请用户输入序号或风格 ID。
#### 如果选 C(官网预览):
```
请访问 https://xhscover.vivi.wiki 查看效果图。
每个风格卡片上都标有风格ID,看好后回来输入 ID 即可。
```
等待用户输入风格 ID 后继续。
---
### Step 4:运行生成
从配置文件读取 API 信息,构建命令:
```bash
node ${SKILL_DIR}/scripts/generate.mjs \
--image "图片绝对路径" \
--style "风格ID" \
--title "主标题" \
--subtitle "副标题(如有)" \
--extra "备注(如有)" \
--count 张数 \
--aspect-ratio "比例" \
--output-dir "输出目录"
```
API 凭证由脚本自动从 `~/.config/xhs-cover/config.json` 读取,无需手动传入。
**生成多种风格时**:依次执行,每次之间 sleep 8(避免并发导致 TLS 断开)。
---
### Step 5:展示结果
生成成功后,用 Read 工具读取并展示每张图片,让用户直接在对话中预览。
对每张图展示:文件路径 + 预览图。
---
## 配置管理
### 修改 API 配置
如果用户说「重新配置」「修改 API key」「切换到 Google API」等,直接跳到 Step 1b 重新走配置流程,**不要删除已有配置**,直接覆盖写入。
### 查看当前配置
```bash
cat ~/.config/xhs-cover/config.json
```
输出时隐藏 apiKey 中间部分(只显示前8位和后4位)。
---
## 常见问题处理
**API Key 错误(401/403)**:
- Google:检查 Key 是否以 `AIza` 开头,科学上网是否正常
- 第三方:检查 Key 和 Base URL 是否匹配
**连接超时/TLS 断开**:
- 第三方 API 偶发网络问题,重试即可
- 不要并发运行多个生成请求
**图片太大压缩后仍失败**:
- 尝试提供分辨率较低的照片(手机拍摄 → 微信压缩后发给自己再用)
**生成结果文字出错**(多出随机文字):
- 在 `--extra` 中加入:`严格只使用提供的标题,不要添加任何其他文字`
**Google API 不支持图片生成**:
- 确认模型是 `gemini-2.0-flash-exp-image-generation`,不是普通对话模型
---
## 风格学习工作流
让用户把喜欢的封面图「教」给 Skill,提取成可复用的风格模板,并可选择贡献到社区。
### Phase 1:上传与分析
1. 请用户上传 1-5 张参考图(支持 PNG / JPG / WebP)
- 0 张:提示「至少需要 1 张参考图」
- 超过 5 张:选取视觉差异最大的 5 张,说明原因
2. 用 Read 工具读取每张图片,分析以下维度:
- **配色**:主色、辅色、点缀色(尽量给出 hex 值)、整体色彩情绪
- **字体感**:粗细(轻/常规/粗)、风格(无衬线/衬线/手写/装饰)、大小层级
- **构图**:文字与人物的位置关系、文字占比、留白多少、对齐方式
- **装饰元素**:有无边框、贴纸、图标、几何图形、背景纹理
- **整体氛围**:用 2-3 个关键词概括(如「温暖、治愈、ins 风」)
3. 如果多张图风格冲突,明确指出冲突点,请用户选择方向,而不是取平均
4. 向用户展示分析结果(用自然语言,不要直接甩 JSON):
> 我从你的图片中提取了这些风格特征:
> - 配色:暖奶油底色,深棕文字,粉色点缀
> - 字体:标题超大粗体,副标题细小,对比强烈
> - 构图:人物居中,标题压在头顶,底部色块横幅
> - 氛围:温暖、生活感、小红书爆款风
>
> 你觉得这些对吗?有没有想调整的地方?
### Phase 2:确认与生成 Prompt
1. 用户确认分析结果(允许最多 3 轮调整)
- 「颜色再亮一点」→ 调整配色描述
- 「想要更简约」→ 减少装饰元素
- 「字体感觉不对」→ 进一步询问偏好
2. 请用户为这个风格起个名字(建议基于氛围关键词,如「暖橙励志」)
3. 根据分析结果,生成对应的风格 prompt,格式与内置风格完全一致:
```json
{
"name": "用户起的中文名",
"prompt": "根据分析结果撰写的图片生成提示词..."
}
```
Prompt 撰写要点:
- 明确【文字区域划分】(主标题在哪、副标题在哪)
- 明确【字体风格】(参考分析结果翻译成生图描述语言)
- 明确【背景/场景】
- 结尾加【禁止事项】(禁止多余文字、禁止修改人脸)
4. 把生成的 JSON 保存到 `styles/` 目录:
```bash
# 文件名用英文,与内置风格格式一致
# 例如:styles/warm-orange-motivation.json
```
用 Write 工具写入文件。
5. 确认:「✅ 风格『{name}』已保存!下次生成时直接选择这个风格就行。」
### Phase 3:测试生成
1. 询问用户:「要不要用这个风格试生成一张看看效果?」
2. 如果是,收集测试内容(或使用默认标题「5 个让生活变好的小习惯」)
3. 用 Bash 工具运行生成:
```bash
node ${SKILL_DIR}/scripts/generate.mjs \
--image "用户提供的照片路径" \
--style "刚才保存的风格ID(文件名去掉.json)" \
--title "测试标题" \
--aspect-ratio "3:4" \
--output-dir "/tmp/xhs-style-test"
```
4. 用 Read 工具展示生成结果,和原参考图放在一起让用户对比
5. 如果不满意:找出哪个维度有偏差,回到 Phase 2 修改 prompt,最多迭代 3 次
- 3 次后仍不满意:「可以先保存当前版本,之后随时再优化」
6. 满意后继续 Phase 4
### Phase 4:贡献到社区(可选)
1. 询问用户:
> 你的风格效果很棒!想不想把它分享给社区,让其他人也能用?
> 只需要提交一个 PR,你的名字会出现在贡献者列表里。
2. 如果愿意,收集以下信息:
- **贡献者名字**(显示在 PR 和文件注释中)
- **风格简介**(一句话,例如「暖橙色调,适合励志、职场内容」)
- **标签**(3-5 个,例如:励志、职场、暖色)
3. 在 `styles/` 目录里当前风格 JSON 文件顶部,追加 metadata 注释:
```json
{
"name": "暖橙励志",
"author": "贡献者名字",
"description": "暖橙色调,适合励志、职场内容",
"tags": ["励志", "职场", "暖色"],
"prompt": "..."
}
```
4. 把 Phase 3 生成的测试图保存为 `assets/styles/{风格ID}.jpg`(作为预览图)
5. 引导用户提交 PR:
**非技术用户**:
> 1. 打开 https://github.com/Vivixiao980/xhs-cover-skill
> 2. 进入 `styles/` 文件夹,点右上角「Add file」→「Upload files」
> 3. 上传你的 `{风格ID}.json` 文件
> 4. 同样操作,把预览图上传到 `assets/styles/` 文件夹
> 5. 在页面底部填写说明(如「新增风格:暖橙励志」),点「Propose changes」
> 6. 在下一页点「Create pull request」就完成了!
**技术用户**:
```bash
# fork 仓库后:
git checkout -b style/warm-orange-motivation
git add styles/warm-orange-motivation.json assets/styles/warm-orange-motivation.jpg
git commit -m "feat: add warm-orange-motivation style"
git push origin style/warm-orange-motivation
# 然后在 GitHub 上提交 PR
```
6. 如果不愿意贡献:
> 没问题!风格已保存在本地,随时可以用。想分享的时候再告诉我。
### 错误处理
- **参考图分辨率过低**(短边 < 500px):提醒用户分析精度可能下降,建议换高清图
- **参考图不是封面设计**(纯照片、无排版元素):说明此工作流需要有文字设计的封面图,纯人像照适合直接去生成封面
- **用户中途放弃**:告知当前进度已到哪一步,风格文件是否已保存,下次可以从哪里继续
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!