ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

OpenClaw技能实战:一键搞定小红书热点追踪与笔记草稿生成

OpenClaw技能实战:一键搞定小红书热点追踪与笔记草稿生成 简介这是一款面向 OpenClaw 用户的小红书自动化技能包支持通过 Chrome DevTools Protocol 实现内容自动发布、素材检索、笔记详情抓取与评论区互动并兼容 2026 年发布页 DOM 变动适合需要批量运营、多账号管理与无头运行的开发者或内容运营者。压缩包共 68 个文件以 Python 脚本为主体46 个 .py辅以 Markdown 文档、Shell 安装脚本及配置文件整体仅 167KB目录结构清晰便于直接集成或二次修改。已有 104 人学习下载。资源提供了登录状态缓存、二维码扫码导出、多图上传等待、话题标签自动写入等实用细节尤其适用于远程 CDP 连接与后台自动化发布场景同时附带完整的安装/卸载脚本、环境变量模板与 README 中文说明使用者可参照快速搭建从登录、发布到抓取、互动的完整流程并针对自身账号体系进行扩展。1. 小红书自动化技能装进 OpenClaw它到底帮你省掉哪段手工活一个做小红书运营的朋友跟我抱怨过每天打开 App 看热点、抄选题、憋文案三个小时就没了。后来我把自己在 OpenClaw 上跑通的一套 Xiaohongshu (小红书) automation skill 分享给他他第一次用它拉当天热门话题、生成笔记草稿只花了不到十分钟。这套技能的核心不是“代替你思考”而是把“盯热点 → 找选题 → 起草稿”这条链路变成可复用的命令。要理解它的价值你得先知道 OpenClaw 的 skill 机制和边界然后照着本文的路径落地。适合谁个人博主、内容运营、想批量做账号矩阵的团队都能从这套方案里拿到可复现的流程。2. 先拆开技能包看原理OpenClaw 的 skill 机制与小红书自动化的三个边界2.1 OpenClaw 的 skill 不是插件是“带自述文件的工具箱”OpenClaw 是我近期一直在用的 AI agent 运行时它和传统插件的最大区别是一个 skill 本质上是“一个目录 一份 SKILL.md 自述文件 若干脚本”。OpenClaw 在运行时会先读技能的 description判断当前任务要不要调用这个技能一旦决定用再读完整的 SKILL.md 获取使用说明。也就是说技能是动态加载的不需要像插件那样常驻后台。这种设计对小红书自动化特别合适。因为小红书的热点话题、接口返回格式、文案风格都在变如果写死在主程序里每次改动都要重启。而技能包是独立目录你只改脚本OpenClaw 下次调用自动生效。我看过很多人在网上搜 “openclaw skill” 的用法其实核心动作就三类放对目录、写对自述文件、给出可执行的脚本入口。先验证你的 OpenClaw 环境能识别多少技能openclaw skills list正常情况下会输出你已经安装的技能名和描述。如果这个命令报错说明 OpenClaw 运行环境本身没就绪后面讲技能装进去也白搭。常见的做法是先确认 openclaw 核心安装无误再谈技能包。等运行正常你才能在输出里看到类似xiaohongshu-trending这样的技能条目。2.2 小红书自动化技能的三个核心模块trending、draft、publish“Xiaohongshu automation skill for OpenClaw — trending, AI.zip” 这个标题其实已经把拆解逻辑写明白了trending 管热点采集AI 管文案生成技能包整体封装成一个 zip 分发包。我一般会把技能切三层每一层做成一个独立脚本而不是一个大而全的入口模块输入输出依赖collect-trending热门页面或榜单 APIout/trending.json网络请求、解析规则draft-notetrending.json 中的话题out/draft/*.md大模型调用publish-state草稿目录发布状态记录小红书开放平台可选为什么这样拆因为 OpenClaw 的 agent 在做事时不可能一次把“抓取、写作、发布”全做完。你给它一个大任务它会通过 prompt 拆分步骤但如果脚本耦合太紧中间一旦出错就得整条链重跑。拆成三个独立脚本后每个脚本都对应 SKILL.md 里的一条 commandagent 能按顺序调用单步失败也可以单独重试。这里有个必须画出来的边界发布publish不要做成全自动。小红书对机器发文有明确限制官方开放平台也只对认证开发者开放。你硬把登录态、签名算法写进技能里轻则限流重则封号。这个技能更稳妥的定位是“半自动”机器负责采集和生成草稿人工确认后用官方创作者后台或合规 API 发布。这是我的血泪经验第 4 章还会展开。2.3 为什么“热门抓取”必须做成可被按需调用的数据处理链很多人会把热门抓取写成 OpenClaw 主配置里的一个定时任务定时拉数据推到群里。但这样做有两个问题一是你没法临时换关键词、换时间窗口二是 agent 在别的工作流里想参考今天的热点却不知道去哪个目录找数据。技能化的正确姿势是给 agent 一个明确的调用命令。我在 SKILL.md 里这样定义openclaw run --skill xiaohongshu-trending collect --days 1 --top 50 --out ./data参数不贪多就三个--days控制回溯天数--top控制取前多少条--out控制结果落盘位置。参数越多agent 越容易传错。OpenClaw 的 agent 在调用时如果拿不准会读 SKILL.md 里的参数说明所以你必须在自述文件里写清楚每个参数的可选范围。技能包的目录结构常见做法长这样xiaohongshu-trending/ ├── SKILL.md ├── config.json ├── scripts/ │ ├── collect-trending.js │ ├── draft-note.js │ └── publish-state.js ├── templates/ │ └── note.md.tpl └── out/ # 运行后生成 ├── trending.json └── draft/SKILL.md 负责告诉 agent “什么时候用、怎么用”config.json 放数据源地址、请求间隔、超时时间脚本只做一件事。把数据落盘到out/目录而不是直接返回给对话流是为了让后续脚本和人工审阅都能复用同一份中间结果。这套结构不挑语言理论上用 Python 也能写但 OpenClaw 原生对 Node.js 支持最顺所以我选 JavaScript。3. 把 AI.zip 落到本地解压、配置、跑通第一条小红书自动化命令3.1 解压到技能目录并让 OpenClaw 识别拿到 “Xiaohongshu automation skill for OpenClaw” 的 AI.zip 后第一件事不是解压到桌面而是看清楚你的 OpenClaw 技能目录在哪。不同操作系统路径不一样常见的是Linux / macOS~/.openclaw/skills/Windows%USERPROFILE%\.openclaw\skills\AndroidTermux 环境$HOME/.openclaw/skills/我一般会先建目录再解压避免 zip 里自带一层同名文件夹导致路径嵌套错误mkdir -p ~/.openclaw/skills unzip Xiaohongshu-automation-skill-AI.zip -d ~/.openclaw/skills/xiaohongshu-trending解压后必须让 OpenClaw 重新扫描技能它默认不会实时监听目录变化openclaw skills scan openclaw skills list | grep xiaohongshu如果输出里没有这个技能多半是 SKILL.md 的 frontmatter 写错或目录层级不对。你可以在解压目录下执行ls确认结构再打开SKILL.md检查name和description两个字段是否存在。OpenClaw 对技能名的匹配是精确的目录名、frontmatter 里的 name、调用时的--skill参数三者要保持一致。提示如果解压出来目录变成xiaohongshu-trending/xiaohongshu-trending/把内层目录整个挪到外层再删掉空壳。3.2 模型接入配置用 Ollama 跑 qwen2.5:3b还是走在线 API技能本身不携带大模型它的文案生成能力来自 OpenClaw 背后接的模型。网上常有人问 “openclaw 只能用接入 api 的方式使用算力吗”其实不是。本地部署一个 Ollama把模型指向 qwen2.5:3b完全够跑“话题摘要、文案初稿”这类任务。先配置模型接入openclaw config set model.provider ollama openclaw config set model.baseURL http://127.0.0.1:11434 openclaw config set model.name qwen2.5:3b这三个参数的含义分别是用什么协议访问模型、模型服务的地址、具体模型名。改完后重启 OpenClaw 让它生效。如果你的机器没有本地模型也可以把 provider 改成兼容 OpenAI 的服务商填对应的 API Key但那样每次生成草稿都有成本热门数据量大时可能不划算。接下来配置小红书相关环境变量。技能里的脚本不直接读 OpenClaw 的配置而是通过process.env拿环境变量这样访问密钥不会写进技能文件里方便多环境切换export XHS_APP_ID你自己的应用ID export XHS_APP_SECRET你自己的应用密钥 export XHS_ACCESS_TOKEN申请后分配的访问令牌XHS_APP_ID和XHS_APP_SECRET用于开放平台接口签名XHS_ACCESS_TOKEN是调用具体接口的凭证。注意只有你打算接小红书官方开放平台时才需要配这三项如果只是本地采集热门思路可以留空技能会自动降级到公开数据源模式。3.3 用最小命令拉回当天小红书热门话题并落盘配置完成后先跑一条最简命令验证整条链路通不通openclaw run --skill xiaohongshu-trending collect --days 1 --top 30这条命令会让 OpenClaw 调用技能里的collect-trending.js。技能脚本实际做的事情是我在部署时会放进去的一个最小实现结构大致如下// scripts/collect-trending.js const fs require(fs); const path require(path); const days processArg(--days, 1); // 回溯天数 const top processArg(--top, 30); // 返回条数 async function collect() { const feedUrl process.env.XHS_TRENDING_URL || ; const res await fetch(feedUrl, { headers: { User-Agent: Mozilla/5.0 }, signal: AbortSignal.timeout(10000) }); if (!res.ok) throw new Error(抓取失败 HTTP ${res.status}); const topics parseTopics(await res.text()).slice(0, top); const outDir path.join(process.cwd(), out); fs.mkdirSync(outDir, { recursive: true }); const fileName trending-${new Date().toISOString().slice(0, 10)}.json; fs.writeFileSync(path.join(outDir, fileName), JSON.stringify(topics, null, 2)); return topics; }这段代码有四个关键点。第一XHS_TRENDING_URL由你配置它指向一个公开可读的热点数据源我这里故意不内置死地址因为公开源会变写死在代码里每次改都要动技能包。第二AbortSignal.timeout(10000)是防止某个接口卡死OpenClaw 的任务会一直挂着。第三结果按日期落盘而不是直接返回是为了后续多个脚本能复用同一份数据。第四--top的截断放在解析之后而不是先请求 30 条因为很多源一次返回几百条先拉全量再在本地筛选更稳。跑完这一步打开out/目录下的 JSON 文件能看到话题名、热度值、来源链接这几类字段。如果 JSON 是空的多半是数据源的反爬策略拦住了你的请求我在第 4 章会讲怎么处理。3.4 把话题转成小红书笔记草稿实际调一次模型热门话题到手下一步是生成草稿。OpenClaw 的 agent 会根据 SKILL.md 里的说明调用draft-note.js由脚本向模型发起一次补全请求// scripts/draft-note.js const { complete } require(openclaw/sdk); const topic processArg(--topic, 春日通勤穿搭); const prompt [ 请把下面这个小红书热门话题写成一篇笔记草稿。, 要求标题 25 字内正文 800 字段落之间要有换行结尾带 5 个话题标签。, 话题${topic} ].join(\n); const note await complete({ messages: [{ role: user, content: prompt }], temperature: 0.85 }); const slug topic.replace(/\s/g, -); fs.writeFileSync(out/draft/${slug}.md, note.data.content);注意这里我用temperature: 0.85。小红书文案需要表达差异温度太低会千篇一律但超过 0.9 很容易跑偏成发疯文学0.85 是我反复试出来的中间值。如果你接的是 qwen2.5:3b 这类本地小模型效果会明显弱于在线大模型它有概率把“种草”写成“说明书”所以我的应对是让本地模型只负责生成 5 个候选标题和 3 条开头金句正文主结构由人工补齐。这就是“多 AI 协作”的落地用法用一个小模型批量筛选热门话题用另一个较强的模型写正文再让 OpenClaw 做调度。技能包里的templates/note.md.tpl就是干这个的它定义好固定框架脚本只负责往里面填内容。4. 小红书自动化技能避坑清单部署 24 小时内最容易翻车的 5 件事4.1 OpenClaw Windows 端启动报错“无法安全验证 WSL 环境”在 Windows 上用 OpenClaw 跑这套技能最容易遇到的不是小红书接口报错而是 OpenClaw 本身起不来。报错信息里通常带一段提示大意是“无法安全验证 WSL 环境。请在 PowerShell 中运行 wsl --status”。我同事遇到这个报错时还以为是技能包有问题折腾了半天才发现是 WSL 子系统没就绪。现象启动 OpenClaw Windows 端直接退出日志停在 WSL 检测这一行。原因OpenClaw 的 Windows Companion 依赖 WSL2 环境运行核心服务而系统里 WSL 内核版本过旧或根本没初始化。解决用管理员权限打开 PowerShell依次执行wsl --status wsl --update wsl --set-default-version 2wsl --status先看当前状态如果是 “默认版本1” 或 “未安装”就执行后面两条。第三条把默认版本固定为 2避免未来新装的发行版又退回 WSL1。改完重启 OpenClaw这条链路基本就通了。4.2 热门数据抓到一半返回 403 或空数组现象技能前几天跑得好好的突然某天collect返回空数组或直接抛HTTP 403。原因热门数据源的反爬风控。你第一次请求是正常的但连续高频请求后来源识别出非浏览器特征就拒了。很多人第一反应是改 headers 里的 Referer实际治标不治本。解决把请求间隔拉长并把数据源地址放到配置里方便切换。{ feedUrl: https://example.com/xhs/hot.json, requestIntervalMs: 3000 }我在脚本里加一句await sleep(requestIntervalMs)把相邻两次请求间隔设为 3 秒以上。同时明确一点不要跑去破解平台的签名或验证码这是职业道德问题也会直接封号。正确做法是优先用公开的热点聚合页面或者换一个能合法访问的数据源抓到的数据只当创作参考不当榜单用。4.3 本地小模型写出来的笔记像“AI 味合成大礼包”现象用 qwen2.5:3b 生成的草稿一眼就能看出是机器写的发出去没互动甚至标题被系统折叠。原因3B 参数量的小模型缺乏小红书语感它只会把信息点填进模板写不出“人味”的转折和口语化表达。解决调整分工。让技能里的draft-note.js不再直接产出全篇而是产出三个关键部分20 字以内的标题候选、开头两句话、正文大纲。然后在提示词里给一段真实的小红书文案作为参考风格比如参考语感“这个春天别再乱买了我整理了 5 个通勤单品最后一个是真香警告。” 要求开头 25 字内出现具体场景正文每段不超过 3 行语气口语化。这是我自己反复调整后的经验小模型做摘要和结构化非常靠谱做文采不行所以把最需要灵感的句子留给人工其他部分让模型完成。想全自动出文的团队至少也要接一个中等规模的在线模型。4.4 同一技能被自动调用多次重复抓取覆盖了已保存的草稿现象一个话题生成了草稿第二次跑同一话题草稿文件被覆盖或者out/trending.json被新数据覆盖前面的记录找不回来。原因脚本把输出文件写成了固定名称没有加入时间戳或话题标识。OpenClaw 的 agent 在对话流里可能多次触发同一个技能如果脚本是同步覆盖式写入前面的结果自然丢。解决文件命名加日期草稿按话题 slug 分目录。out/trending-2025-06-10.json out/draft/春日通勤穿搭-2025-06-10.md脚本里用new Date().toISOString().slice(0, 10)生成日期段再拼接到文件名里。顺手加一层去重读trending.json时按话题 hash 去重重复出现的话题只更新热度值不新增条目。4.5 access_token 过期和网页登录态失效别混为一谈现象采集正常但调用发布相关接口时报错有时是 401有时是 403。日志里都带 “auth” 字样让人分不清到底哪个凭证出了问题。原因这是两类完全不同的鉴权。access_token是开放平台颁发的过期会明确返回 401而网页里的 Cookie 登录态失效接口一般返回 403 或业务错误码。把两者混在一个配置里排查时相当痛苦。解决先看状态码再找原因。我总结的排查表如下状态码大概率原因处理方式401access_token 过期用 app_id app_secret 重新换取403数据源风控或签名无效检查请求头、频率、数据源地址200 但数据为空解析规则过期检查返回 HTML/JSON 结构这个技能只把开放平台当可选能力默认情况下草稿停留在本地out/draft/不直接触达平台接口。你确认自己具备开放平台调用权限后再配置XHS_ACCESS_TOKEN别一上来就把所有凭证都填上。5. 进阶玩法多账号、定时简报与结果验证一套带走5.1 多账号配置环境变量前缀比复制技能更省事做账号矩阵的人通常有多个小红书号。最蠢的做法是把技能目录复制三份改三套配置。OpenClaw 里更干净的做法是一套技能按账号前缀加载环境变量。export XHS_ACCOUNT_A_APP_IDaaa export XHS_ACCOUNT_A_ACCESS_TOKENtoken_a export XHS_ACCOUNT_B_APP_IDbbb export XHS_ACCOUNT_B_ACCESS_TOKENtoken_b脚本里解析process.env时统一写一个getAccountConfig(prefix)函数按--account参数决定读哪一组的变量。这样新增账号只加环境变量不动技能代码。我实测这种模式下管理 5 个账号的运行开销比复制五个技能小一个量级。5.2 定时跑 trending 并生成简报一条 cron 就够OpenClaw 本身支持计划任务但最简单的是直接用系统 crontab 调 openclaw 命令。每天上午 9 点抓一次热门、下午 6 点再跑一次生成草稿0 9 * * * cd ~/.openclaw/skills/xiaohongshu-trending openclaw run --skill xiaohongshu-trending collect --days 1 --top 50 0 18 * * * cd ~/.openclaw/skills/xiaohongshu-trending openclaw run --skill xiaohongshu-trending draft --from out/trending-*.json跑完的验证方法很简单打开out/trending-2025-06-10.json看话题数量和非空字段比例。正常情况 50 条中至少有 45 条带完整的话题名和热度数值命中率低于 80% 就得检查数据源解析规则了。我自己现在的习惯是每周五把七天的trending-*.json合并算一次词频看哪些话题在反复出现再让技能基于周报生成下周选题清单。这个小技巧花不了几分钟却能让运营决策从拍脑袋变成看数据。希望以上这些安装、配置、避坑和进阶方法能帮你在 OpenClaw 上真正跑通小红书自动化。这方向值不值得投入关键就看你愿不愿意先花半天把最小链路跑起来然后让技能替你盯住那些每天重复的采集和草拟工作。本文还有配套的精品资源点击获取
返回列表