Kay XHS - 小红书全自动创作工作流
一站式小红书内容创作解决方案,从爆款研究到草稿发布。
⚠️ 必需依赖
1. 安装 kay-image Skill(AI 生图必备)
必须先安装,否则无法生成图片!
CODEBLOCK0
获取 KIE API Key:
- 1. 访问 https://kie.ai/
- 注册并登录账号
- 进入控制台 → API 管理
- 创建 API Key 并复制
验证安装:
CODEBLOCK1
2. 浏览器准备(自动发布用)
确保 OpenClaw 浏览器已配置,用于小红书网页操作。
确认以上步骤完成后,再开始创作工作流!
核心能力
- 1. 爆款研究 - 分析热门笔记风格、构图、文案套路
- AI 生图 - 生成封面、漫画、配图(支持 KIE 和 Gemini 双引擎)
- 自动发布 - 保存到小红书草稿箱
完整工作流
Phase 1: 账号准备
工具: browser (openclaw profile)
CODEBLOCK2
关键检查点:
Phase 2: 爆款研究
工具: INLINECODE1
提取高点赞笔记的:
-图片
-标题
-作者
-文案
-标签
方法 1: Performance API(⭐ 批量方法)
原理: 点击首图预览模式后,从浏览器 Performance API 获取所有已加载的网络资源,不受 DOM 移除影响。
适用场景: 需要采集完整图片列表,尤其是 10+ 张图片的笔记
前提条件:
- - ✅ 必须打开预览 modal(点击笔记封面图)
- ✅ 等待 2-3 秒让所有资源加载完成
- ❌ 不需要切换图片(懒加载会移除旧 URL,但 Performance API 保留记录)
代码:
CODEBLOCK3
优势:
- - ✅ 不需要切换图片,打开预览等待即可
- ✅ 获取所有历史加载记录,包括已移除的 DOM 元素
- ✅ 速度最快,单篇笔记 < 3 秒
- ✅ 可获取 20-30+ 张图片 URL(包含各种尺寸版本)
劣势:
- - ⚠️ 可能包含重复 URL(不同尺寸版本)
- ⚠️ 需要打开预览 modal 后等待 2-3 秒让资源加载
实际案例:
- - 笔记 8 (10 张图): 获取 27 个 URL → 筛选出 10 张正文图
- 采集时间:~3 秒
- 完整度:100%
方法 2: DOM 全量提取(⭐ 批量方法)
原理: 打开预览模式后,提取页面所有 <img> 标签,包括头像、评论图等,然后过滤出正文图片。
适用场景: Performance API 无效时,或需要快速获取少量图片
前提条件:
- - ✅ 必须打开预览 modal(点击笔记封面图)
- ✅ 等待页面完全加载
- ⚠️ 懒加载图片可能未出现在 DOM 中(需要切换或等预加载)
代码:
CODEBLOCK4
优势:
- - ✅ 简单直接,不需要切换图片
- ✅ 可获取 50+ 个图片资源(包含头像、评论图等)
- ✅ 过滤后得到完整正文图片列表
劣势:
- - ⚠️ 可能包含非正文图片(需要过滤)
- ⚠️ 懒加载图片可能未出现在 DOM 中(小红书会预加载部分图片)
实际案例:
- - 笔记 9 (5 张图): 获取 52 个 URL → 筛选出 5 张正文图
- 采集时间:~2 秒
- 完整度:100%
方法 3: 循环点击切换(保底方法)
原理: 手动切换每张图片,强制触发懒加载,确保所有图片 URL 加载到 DOM。
适用场景: 批量方法失效时,或需要确保 100% 完整度
完整操作步骤:
CODEBLOCK5
⚠️ 错误示范(会失败):
CODEBLOCK6
✅ 正确示范(完整采集):
CODEBLOCK7
提取图片 URL 的完整代码:
CODEBLOCK8
循环切换图片的完整代码:
CODEBLOCK9
实际采集案例:
- - 笔记:"我想拉屎" (2.5 万赞)
- 成功提取:13 张图片 URL
- 数据完整度:100%
- 图片 URL 格式: INLINECODE3
性能参考:
- - 打开搜索页:~2-3 秒
- 点击首图打开 modal: ~1-2 秒
- 浏览全部图片 (13 张): ~10-15 秒
- 提取数据:~1 秒
- 单篇笔记总时间:~15-20 秒
批量采集策略:
CODEBLOCK10
注意事项:
- - ✅ 点击的是【图片】不是【标题文字】
- ✅ 必须循环切换所有图片才能提取完整 URL 列表(懒加载!)
- ✅ Preview modal 中可以看到图片计数 (如 1/13)
- ✅ 建议间隔 2-3 秒再点击下一篇,模拟正常用户行为
- ⚠️ 不要直接访问笔记详情页(会 404)
研究维度:
| 维度 | 分析内容 |
|---|
| 视觉风格 | 色彩、构图、人物/场景类型 |
| 文案结构 |
标题公式、正文套路、互动引导 |
| 话题标签 | 高频标签、组合策略 |
| 发布时间 | 最佳发布时段 |
Phase 3: 内容策划
基于爆款研究,确定:
- 1. 内容类型
- 图文笔记
- AI 漫画(四格/条漫)
- 教程分享
- 情感故事
- 2. 风格定位
- 治愈系
- 搞笑/吐槽
- 知识科普
- 生活美学
- 3. 图片规划
- 数量(1-4 张)
- 尺寸(3:4 竖版优先)
- 风格统一性
Phase 4: AI 生图
工具: kay-image (KIE API)
生图引擎
| 引擎 | 工具 | 配置要求 | 适用场景 |
|---|
| KIE | INLINECODE5 | INLINECODE6 | 高质量 4K 输出,角色一致性 |
配置检查:
CODEBLOCK11
4.1 封面生成
CODEBLOCK12
4.2 四格漫画生成(关键!)
必须一次生成,不要分格生成!
CODEBLOCK13
4.3 图生图(风格迁移)
CODEBLOCK14
4.4 批量生图模式(推荐 ⭐)
场景: 需要生成多张图片(如 4 张 2 格漫画)
优势:
- - ✅ 批量提交: 一次性提交所有任务
- ✅ 统一轮询: 每 20 秒检查所有任务状态
- ✅ 并行下载: 所有完成后同时下载
- ✅ 效率提升: 4 张图从 8 分钟 → 3 分钟
使用方法:
CODEBLOCK15
批量模式参数:
- -
--poll-interval 20: 轮询间隔 20 秒(默认) - INLINECODE8 : 最多轮询 10 次(默认)
- INLINECODE9 : 并发下载数(默认)
执行流程:
CODEBLOCK16
生图原则:
- - ✅ 四格漫画 = 一次生成完整布局
- ✅ 明确角色特征确保一致性
- ✅ 色调随情绪变化
- ❌ 不要分开生成单格再拼接
- ✅ 多张图时优先使用批量模式
生图引擎
| 特性 | KIE (kay-image) |
|---|
| 配置难度 | ⭐ 需 API Key |
| 图片质量 |
⭐⭐⭐ 4K 高清 |
|
生成速度 | ⭐⭐ 中等 |
|
角色一致性 | ⭐⭐⭐ 优秀 |
|
批量生成 | ✅ 支持 (
kay-image-batch) |
|
图生图 | ✅ 支持 |
配置检查清单:
- [ ] 已设置 `KIE_API_KEY`
- [ ] 已安装 `kay-image` skill
Phase 5: 文案创作
结构模板:
CODEBLOCK18
Phase 6: 自动发布
工具: browser (xhs-browser-ops)
6.1 发布流程(browser 工具自动化)
完整操作步骤:
CODEBLOCK19
关键概念:
- - targetId: 浏览器页面的唯一标识(通过 browser open 或 browser tabs 获取)
- ref: 页面元素的引用标识(通过 browser snapshot 获取,如
e207, e216) - browser upload: 批量上传文件到文件选择框
- browser type: 在文本输入框中填写内容
- browser click: 点击按钮或元素
- browser act: 执行复合操作(包含 click/type/press 等)
6.2 按钮位置(关键!)
在发布页面底部右侧:
CODEBLOCK20
- - 暂存离开: 保存到草稿箱,不发布
- 发布: 立即发布笔记(需要用户明确确认)
6.3 用户指令对应操作
| 用户指令 | 操作 | 是否需要确认 |
|---|
| "保存到草稿" / "存草稿" / "暂存" | 点击"暂存离开" | ❌ 直接执行 |
| "发布" / "立即发布" / "确认发布" |
点击"发布"按钮 | ✅ 需二次确认 |
| "你看着办" / "随便" | 默认保存草稿 | ❌ 直接执行 |
⚠️ 重要: 用户明确说"保存草稿"时,不要问"要不要发布",直接执行保存!
6.4 关键操作详解
获取 targetId:
CODEBLOCK21
获取元素 ref:
CODEBLOCK22
完整发布代码示例:
CODEBLOCK23
常用操作速查:
| 操作 | 命令 | 示例 |
|---|
| 打开页面 | INLINECODE15 | 获取 targetId |
| 查看 tabs |
browser tabs | 列出所有页面 |
| 切换 tab |
browser focus --targetId "ID" | 切换到指定页面 |
| 上传文件 |
browser upload --paths "file1" "file2" | 批量上传 |
| 填写文本 |
browser type --ref "e207" --text "内容" | 在输入框填入文字 |
| 点击按钮 |
browser click --ref "e530" | 点击指定元素 |
| 获取页面 |
browser snapshot --timeMs 2000 | 查看元素和 ref |
| 复合操作 |
browser act --request '{...}' | 执行 click/type/press 组合 |
6.5 常见错误
| 错误 | 后果 | 正确做法 |
|---|
| 不熟悉 browser 工具 | 不会自动化发布 | 学习 upload/type/click/snapshot 基本用法 |
| 不知道用 INLINECODE23 |
无法批量上传图片 | 使用
browser upload --paths file1 file2 ... |
| 不知道如何定位元素 | 无法填写标题/正文 | 先用
snapshot 获取 ref,再用
type/click |
| 不知道 targetId 的作用 | 操作失败或错乱 | 每次操作都传入正确的 targetId |
| 用户说"存草稿"却问"要不要发布" | 用户困惑,流程拖沓 | 听清指令,直接执行 |
| 频繁切换tab | 页面状态丢失 | 保持焦点,一次完成 |
| 点击"发布"代替"暂存离开" | 笔记直接发布 | 确认按钮位置,左草稿右发布 |
6.6 学习路径
新手必学(按顺序):
- 1. browser open - 打开页面,获取 targetId
- browser tabs - 查看所有打开的页面
- browser snapshot - 获取页面元素和 ref
- browser upload - 批量上传文件
- browser type - 在输入框填写文本
- browser click - 点击按钮
- browser act - 执行复合操作
练习任务:
- [ ] 打开小红书创作平台,获取 targetId
- [ ] 使用 snapshot 查看页面元素
- [ ] 找到"上传图片"按钮的 ref
- [ ] 使用 upload 上传一张测试图片
- [ ] 找到标题输入框的 ref,使用 type 填写标题
- [ ] 找到"暂存离开"按钮的 ref,使用 click 点击
工具链整合
| 阶段 | 主要工具 | 辅助工具 |
|---|
| 账号准备 | browser | - |
| 爆款研究 |
browser, xiaohongshu-deep-research | web_search |
| 内容策划 | - | memory_search |
| AI 生图 |
kay-image-batch (批量) | image (分析) |
| AI 生图 | kay-image (单张,高质量) | - |
| 文案创作 | - | memory_get |
| 自动发布 | browser | - |
最佳实践
AI 漫画创作
- 1. 角色一致性 - 每个prompt有一致的详细人物特征描述
- 图上文字 - 每格配简短文案
- 批量生成 - 多张图时使用
kay-image-batch(轮询 20s/次,最多 10 次)
封面设计
- 1. 3 秒法则 - 一眼抓住注意力
- 情绪钩子 - 痛点/冲突/好奇
- 高对比 - 色彩/场景对比
- 真实感 - 像个人分享
文案套路
- 1. 标题 - emoji+ 卖点 + 互动引导
- 正文 - 钩子 + 内容 + 互动
- 标签 - 精准 + 热门组合
错误避免
| 错误 | 后果 | 正确做法 |
|---|
| 分开生成漫画格 | 角色不一致 | 一次生成完整 4 格 |
| 忽略爆款研究 |
风格不对标 | 先研究再创作 |
| 文案过长 | 阅读率低 | 简洁有力 |
| 标签太少 | 曝光不足 | 5-8 个精准标签 |
|
打开 modal 直接提取 |
只能采集 1-3 张 |
优先用 Performance API 或 DOM 全量提取 |
|
不用批量方法 |
效率低 |
优先批量方法,不行再循环点击 |
|
串行生成多张图 |
耗时 8 分钟+ |
使用 kay-image-batch 批量模式(3 分钟) |
|
误解漫画结构 |
把1组多图当多组单图 |
先查看图片,理解故事线再规划 |
|
发布流程混乱 |
用户要草稿却问是否发布 |
听清指令,直接执行 |
|
未配置生图引擎 |
无法生成图片 |
提前配置 KIEAPIKEY |
采集方法对比总结
| 方法 | 速度 | 完整度 | 推荐度 | 适用场景 |
|---|
| Performance API | ⚡⚡⚡ 最快 (~3 秒) | ✅✅✅ 100% | ⭐⭐⭐ 首选 | 10+ 张大图笔记 |
| DOM 全量提取 |
⚡⚡ 快 (~2 秒) | ✅✅✅ 100% | ⭐⭐⭐ 首选 | 5-10 张图笔记 |
|
循环点击切换 | 🐌 慢 (~15 秒/篇) | ✅✅✅ 100% | ⭐ 保底 | 批量方法失效时 |
决策流程:
CODEBLOCK25
关键提醒:
- - ⚠️ 所有方法都需要打开预览 modal - 不打开无法获取任何图片 URL
- ⚠️ 批量方法不需要切换图片 - 打开等待即可,切换反而可能触发懒加载移除
- ⚠️ 循环点击是保底方案 - 仅当批量方法失效时使用
漫画结构理解(关键!)
常见漫画类型
| 类型 | 结构 | 发布方式 | 示例 |
|---|
| 四格漫画 | 1张图 = 4格分镜 | 1篇笔记,1张图 | 传统四格,2x2布局 |
| 2格漫画 |
1张图 = 2格分镜 | 1篇笔记,1张图 | 上下/左右分镜 |
|
多图连载 | 多张图,每张2-4格 | 1篇笔记,多张图 | 完整故事分多张呈现 |
|
单图插画 | 1张图 = 1个画面 | 1篇笔记,1张图 | 封面、海报 |
关键判断原则
当用户说"这4张图是放到同一个漫画里"时:
- 1. ✅ 立即查看所有图片 - 不要假设,先看内容
- ✅ 理解每张图的结构 - 是2格?4格?单图?
- ✅ 理清故事线 - 4张图是否讲述同一个故事?
- ✅ 确认发布方式 - 1篇笔记含多张图,还是多篇笔记?
错误案例分析
❌ 错误理解:
CODEBLOCK26
✅ 正确理解:
CODEBLOCK27
发布前检查清单
CODEBLOCK28
.openclaw/workspace-xhs-manager/memory/prompts_warehouse --优秀prompt仓库
记忆归档
每次创作后更新:
- 1.
memory/daily/YYYY-MM-DD.md - 当日工作日志 - INLINECODE29 - 经验教训
- INLINECODE30 - 核心知识库
Kay XHS - 小红书全自动创作工作流
一站式小红书内容创作解决方案,从爆款研究到草稿发布。
⚠️ 必需依赖
1. 安装 kay-image Skill(AI 生图必备)
必须先安装,否则无法生成图片!
bash
安装 kay-image skill
clawhub install kay-image
配置 API Key
cp skills/kay-image/.env.example skills/kay-image/.env
编辑 .env 文件,填入从 https://kie.ai/ 获取的 API Key
nano skills/kay-image/.env
获取 KIE API Key:
- 1. 访问 https://kie.ai/
- 注册并登录账号
- 进入控制台 → API 管理
- 创建 API Key 并复制
验证安装:
bash
测试生图功能
kay-image -p 测试图片,一只可爱的猫咪 -o test.png --ar 1:1
2. 浏览器准备(自动发布用)
确保 OpenClaw 浏览器已配置,用于小红书网页操作。
确认以上步骤完成后,再开始创作工作流!
核心能力
- 1. 爆款研究 - 分析热门笔记风格、构图、文案套路
- AI 生图 - 生成封面、漫画、配图(支持 KIE 和 Gemini 双引擎)
- 自动发布 - 保存到小红书草稿箱
完整工作流
Phase 1: 账号准备
工具: browser (openclaw profile)
- 1. 打开浏览器访问 https://creator.xiaohongshu.com
- 检查登录状态(如未登录需短信验证)
- 确认当前账号名称
关键检查点:
Phase 2: 爆款研究
工具: browser
提取高点赞笔记的:
-图片
-标题
-作者
-文案
-标签
方法 1: Performance API(⭐ 批量方法)
原理: 点击首图预览模式后,从浏览器 Performance API 获取所有已加载的网络资源,不受 DOM 移除影响。
适用场景: 需要采集完整图片列表,尤其是 10+ 张图片的笔记
前提条件:
- - ✅ 必须打开预览 modal(点击笔记封面图)
- ✅ 等待 2-3 秒让所有资源加载完成
- ❌ 不需要切换图片(懒加载会移除旧 URL,但 Performance API 保留记录)
代码:
javascript
// 打开预览 modal 后,等待 2-3 秒,然后执行
function extractImagesFromPerformance() {
const entries = performance.getEntriesByType(resource)
.filter(e =>
e.name.includes(xhscdn.com) &&
(e.name.includes(spectrum) || e.name.includes(notesprepost)) &&
!e.name.includes(imageView2) // 排除缩略图
);
const urls = [...new Set(entries.map(e => e.name))];
return {
total: urls.length,
urls: urls.map((url, i) => ({ index: i+1, url }))
};
}
// 执行
extractImagesFromPerformance();
优势:
- - ✅ 不需要切换图片,打开预览等待即可
- ✅ 获取所有历史加载记录,包括已移除的 DOM 元素
- ✅ 速度最快,单篇笔记 < 3 秒
- ✅ 可获取 20-30+ 张图片 URL(包含各种尺寸版本)
劣势:
- - ⚠️ 可能包含重复 URL(不同尺寸版本)
- ⚠️ 需要打开预览 modal 后等待 2-3 秒让资源加载
实际案例:
- - 笔记 8 (10 张图): 获取 27 个 URL → 筛选出 10 张正文图
- 采集时间:~3 秒
- 完整度:100%
方法 2: DOM 全量提取(⭐ 批量方法)
原理: 打开预览模式后,提取页面所有
标签,包括头像、评论图等,然后过滤出正文图片。
适用场景: Performance API 无效时,或需要快速获取少量图片
前提条件:
- - ✅ 必须打开预览 modal(点击笔记封面图)
- ✅ 等待页面完全加载
- ⚠️ 懒加载图片可能未出现在 DOM 中(需要切换或等预加载)
代码:
javascript
// 打开预览 modal 后执行
function extractImagesFromDOM() {
const allImgs = document.querySelectorAll(img);
const urls = [];
allImgs.forEach(img => {
if (img.src && img.src.includes(xhscdn.com) && img.src.length > 50) {
const cleanUrl = img.src.split(?)[0]; // 移除查询参数
if (!urls.includes(cleanUrl)) {
urls.push(cleanUrl);
}
}
});
// 过滤出正文图片(排除头像、图标等)
const contentImages = urls.filter(url =>
url.includes(spectrum) || url.includes(notesprepost)
);
return {
total: contentImages.length,
urls: contentImages.map((url, i) => ({ index: i+1, url }))
};
}
// 执行
extractImagesFromDOM();
优势:
- - ✅ 简单直接,不需要切换图片
- ✅ 可获取 50+ 个图片资源(包含头像、评论图等)
- ✅ 过滤后得到完整正文图片列表
劣势:
- - ⚠️ 可能包含非正文图片(需要过滤)
- ⚠️ 懒加载图片可能未出现在 DOM 中(小红书会预加载部分图片)
实际案例:
- - 笔记 9 (5 张图): 获取 52 个 URL → 筛选出 5 张正文图
- 采集时间:~2 秒
- 完整度:100%
方法 3: 循环点击切换(保底方法)
原理: 手动切换每张图片,强制触发懒加载,确保所有图片 URL 加载到 DOM。
适用场景: 批量方法失效时,或需要确保 100% 完整度
完整操作步骤:
- 1. 访问搜索页:https://www.xiaohongshu.com/search_result?keyword=关键词&type=51
- 等待笔记列表加载完成
- 点击目标笔记的【首图/封面图】(不是标题文字)
- 这会打开预览 modal,显示笔记完整内容
- 无需进入详情页,避免反爬虫限制
- 4. 【关键步骤】循环切换所有图片:
- 读取图片计数(如 1/13 = 共 13 张)
- 点击下一张按钮 (右侧箭头) 12 次
- 每次切换后等待 1-2 秒让图片加载
- 确保所有图片都加载到 DOM 中
- 5. 提取数据:
- 使用 JavaScript 提取所有图片 URL
- 记录文案、标签、点赞/收藏/评论数
- 采集前 5 条评论
- 6. 点击 X 或外部区域关闭 preview modal
- 返回搜索列表,继续下一篇笔记
⚠️ 错误示范(会失败):
javascript
// ❌ 错误:打开 modal 后直接提取,只能拿到 1-3 张
click(firstImage);
extractImages(); // 只返回 3 张!
✅ 正确示范(完整采集):
javascript
// ✅ 正确:循环切换后再提取
click(firstImage); // 打开 modal
for (let i = 0; i < totalImages - 1; i++) {
click(nextButton); // 点击下一张
await sleep(1500); // 等待加载
}
// 现在所有图片 URL 都加载到 DOM 了
extractImages(); // 返回完整 13 张!
提取图片 URL 的完整代码:
javascript
// 在 preview modal 中执行
const extractNoteData = () => {
// 1. 提取所有图片 URL
const images = document.querySelectorAll(.swiper-slide img, .note-detail img);
const imageUrls = Array.from(images).map((img, index) => ({
index: index + 1,
url: img.src || img.getAttribute(src)
})).filter(item => item.url);
// 2. 提取基础信息
const title = document.querySelector([class*=title])?.textContent?.trim();
const author = document.querySelector([class*=author])?.textContent?.trim();
const likes = document.querySelector([class*=like])?.textContent?.trim