156
12
In review
Synced today
What it does
>
Skill profile
Claude Code · Codex · OpenClaw
Keep exploring
More options in Design Presentations.
JavaScript
Updated 5/26/2026
Agent compatibility
Compatibility has not been reviewed for this listing yet. Check the publisher documentation before installing.
Installation
npx skills add https://github.com/Vivixiao980/xhs-cover-skill --skill rootReview source code and installation permissions before adding third-party tools to an agent.
xhs-cover is organized in the Design Presentations category. Compare its source, install method, and compatibility before adding it to your workflow.
Third-party agent tools may access source code, credentials, or browser sessions. Read the source documentation and use the minimum permissions needed.
npx skills add https://github.com/Vivixiao980/xhs-cover-skill --skill rootSKILL.md
---
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):提醒用户分析精度可能下降,建议换高清图
- **参考图不是封面设计**(纯照片、无排版元素):说明此工作流需要有文字设计的封面图,纯人像照适合直接去生成封面
- **用户中途放弃**:告知当前进度已到哪一步,风格文件是否已保存,下次可以从哪里继续
skill
mattpocock
An AI tool that rigorously questions and evaluates plans or decisions by constructing and exploring a branching design tree of user decisions to achieve thorough understanding and stress-test thinking.