nook-xhswrite · v2.1 · 2026-10-17 · sha256 5725aeaae627f6c9
nook-xhswrite v2.1A
Immutable. This exact content never changes and is served at /api/v1/blob/5725aeaae627f6c9.
---
name: nook-xhswrite
version: 2.1
description: 小红书图文的内容层。把粗糙素材(文章、逐字稿、新闻、一句话念头)提炼成事实清单、一句话核心、框架和逐页提纲,写出能交给 nook-xhspage 渲染的方案 JSON,并写图文下方的标题、标签和正文。流程有强制停止点:品牌要先设置,事实和核心要用户确认,截图和成果图必须由用户提供;交付前用脚本检查方案、正文和去 AI 味。图里只放标题、框架、事实、数据、流程,长文写进正文。用户要做小红书图文、把素材拆成小红书卡片、写小红书标题和正文时使用。不画图,不发布,不采集。
---
# 1 nook-xhswrite
小红书图文的内容层。上游是粗素材,下游是 `nook-xhspage`(把方案渲染成 3:4 图片)。本 skill 决定图上放什么、分几页、每页用哪种页型,并写图文下方的标题、标签和正文。
2.0 是重写,沿用旧名字。旧版的“一句话直出整篇成稿”和 5 类型爆款公式已移除;保留三条:每页是一个可单独收藏的信息单元,页数由内容决定,平台风控规则。
## 1.1 四条根本原则
1. **提炼框架,不压缩字数。** 图的任务是让读者看清结构。图上只放标题、框架、事实、数据、流程和逻辑;论述、背景、体会写进图文下方的正文。
2. **事实只来自素材。** 数字、引语、名称、步骤,素材里没有就不写。框架的位置可以推理,事实不可以编。
3. **图片只由用户提供。** 截图和成果图是事实类材料,agent 不自己找、不去本机翻、不用占位图、不用生成图冒充。
4. **每一步都要过检查。** 脚本查得出的(字数、素材 id、去 AI 味、正文格式)交给脚本;脚本查不出的(有没有锚点、节奏是不是太顺)按 1.8 的自检清单读一遍。
## 1.1b 用户只给一句话时怎么做(默认行为)
用户通常只会说“把这篇做成小红书图文”,不给路径,不提关卡。这时不要求用户补任何说明,按下面的默认来:
1. 先读本文件和 `nook-xhspage/SKILL.md`(1.5 硬规则)。两个 skill 在同一个 `skills/` 目录下。
2. 工作文件夹:在素材文件旁边新建 `xhs_<素材文件名里的期号或主要词,去掉空格,不超过 12 个字>/`(例如 `xhs_261016谷歌Pro`),所有关卡文件和 plan.json、post.md 都放这里。用户没指定位置就用它,不要问。
3. 关卡照常走,每个关卡写完文件就停下;停下时只说三件事:写好了什么、哪里是推理不是素材、请用户回复“继续”或提修改。不要一次问多个问题。
4. 用户的回复只有“好”“继续”“行”也算确认;用户直接提了修改,改完再停一次。
5. 用户问的是别的事(比如只要标题、只要封面),只做那一件,别拉出整套流程。
6. 如果环境里读不到本 skill(agent 没有注册它),用户只需把 skill 文件夹路径告诉 agent,其余按本节执行。
## 1.2 流程:关卡 0 加五个关卡,每关停下等用户
每个关卡的输出格式固定,见 `references/templates.md`,文件放在方案文件旁边。
**关卡 0:品牌设置(只在第一次)。**
运行 `nook-xhspage` 的 `python xhs.py setup --status`。未设置时,先问用户四件事:有没有自己的 IP 人物形象,有没有自己的 Logo,账号名叫什么,默认用哪种视觉风格;也可以用默认品牌。用户答完,按 `nook-xhspage` 的 1.3 节运行一次 `setup`。已经设置过的,不再询问,直接进关卡 1。没有人物形象的用户,封面不用 cover_person。
**关卡 1:事实清单加一句话核心。**
读素材,判断类型。长素材按 `references/extract.md` 分段抽。列事实清单(每条带原文位置)、一句话核心(给谁,获得什么)、1 到 4 个主题词。素材里没有可用事实时,直接告诉用户“这条素材只有观点,没有事实”,让用户决定是否补素材。输出 `facts.md`,停下,等用户确认。
**事实边界(弱模型最容易出错的地方)。**
- 每条事实写“素材原句”加“位置”,素材里的猜测单独标“推测”,图上带“可能”“据说”这类语气,不能写成定论,也不用“真相”“内幕”做标题。
- 素材没给具体日期和数字,就不写。时间轴的 time 字段只能用素材里出现的说法(如“2月”“八个月后”);素材里没有时间线,就改用 list、cycle、compare,不要编日期。
- 版面放不下,把原句缩短,不换内容;不能因为“压字”就把一个数字换成另一个数字。
- 一页上的每句话,包括脚注、页脚、小注,都必须能在事实清单里找到对应条目,找不到的整句删掉。脚本只能查数字和日期,没有数字的编造(比如“旗舰都换了两轮”)只能靠你自己逐句核对。
- 页面上的主语要和事实一致:断更的是 Pro,不是整个 Gemini;写之前回看事实原句。
- 每个关卡的确认只能来自用户,自己不能代为确认。
- 汇报只写命令真实的输出和退出码,不写没有逐项核对的“全部通过”。
**关卡 2:框架和逐页提纲。**
按 `references/frameworks.md` 选一个主框架。输出 `outline.md`:页序、页型、这一页的一句话、事实来源(事实清单的编号,或“推理,无数据”)、视觉元素(按 1.3 的判断,写“放:贴纸 id”或“不放:原因”)、风格建议和理由。
- **封面加第 2 页合起来必须回答:这是什么、给谁、得到什么。**主题词要出现在封面或第 2 页的文字里。图文靠封面决定点不点开,悬念留给正文。
- 风格:先看品牌的默认风格(`xhs.py setup --status`),没有特别理由就用默认;内容明显属于另一类时可以改,并说明理由。工具、技术、Agent 类可用深色(dark);人物、观点、清单、入门类可用手账(paper);船票风(ticket)是 nook 的品牌款。
- 相邻两页页型不同,一篇至少 3 种页型,3 到 9 页。
输出后停下,等用户确认。
**关卡 3:素材需求清单。**
输出 `needs.md`:每页需要用户提供的截图或成果图,写清哪一页、要什么、为什么、什么格式。没有需要时写“无”。**停下**,等用户把文件放进 `inputs/`,或明确说“这页换成不用图的页型”。没有收到之前,不继续,不替用户找,不填占位。
**关卡 4:封面候选。**
输出 `covers.md`:2 到 3 个封面方案(页型、封面字、钩子类型、风格),钩子类型从 `references/hooks.md` 选。让用户选一个。
**关卡 5:方案、正文包、交付。**
1. 按 `nook-xhspage` 的词表写 `plan.json`,`meta` 里写 `facts`(事实清单)和 `subject_terms`。示例见 `references/plans/`(12 个框架各一份)。
2. 写 `post.md`(标题 3 个、标签、正文、删除测试记录、事实对照,格式见 `references/templates.md`)。正文写完调用 `nook-alive` 做删除测试,只删不改,把删掉的内容记进“删除测试记录”。
3. 运行 `python xhs.py deliver plan.json post.md`。方案校验、正文检查、出图三项都过才算完成,缺一项就按报错改。
4. 逐页看图,把图和正文交给用户,按意见改。
## 1.3 贴纸放不放
贴纸不是必填,也不是越多越好。每一页按七步判断,任何一步答“不放”就停:
1. 页型没有贴纸位(toc、pyramid、stats、shots)→ 不放。
2. 页型自带贴纸(compare、cycle、matrix)→ 不再加。
3. 页面主体是用户的截图、成果图或数据图(step、result、bar、line、funnel)→ 不放。
4. 内容严肃或负面(风险、事故、损失、违规、隐私、健康、金融、法律)→ 不放。
5. 页面已经满(文字超过 70 字,或清单条目 4 个以上)→ 不放。
6. 素材库里找不到贴切的 → 不放,宁缺毋滥。
7. 都通过才放:每页最多 2 个,同一个贴纸全篇不重复,有贴纸的页不超过 60%。
`python xhs.py suggest-assets plan.json` 按这七步逐页给出结论和候选。候选只按关键词匹配,放之前自己判断是否贴切。
## 1.4 图上的文字
- 标题写内容本身,不写口号。“做封面,差在哪”可以,“一图看懂封面”不行。
- 清单项、步骤名、层名写名词或动宾短语,说明一行以内。
- 数字写真实数字,带单位;没有数据就不写,图表没有真实数据时写“示例数据”。
- 高亮词每个字段最多一处,用 `[[词]]` 标,选这一页最关键的词。
- 字数以版面放得下为准:`validate` 报超限就删,`render` 报“留白不足”或“贴纸压住文字”就删条目;不缩字号。
- 页面不画页码,平台界面自带。
## 1.5 正文、标题和标签
- 正文是第三人称,呈现事实和数据,不立人设,不写“我觉得”式的感悟,除非素材里本来就是作者的原话,原话原样保留。
- 400 到 800 字,自然段,不用粗体,不用列表;第一句直接说内容。
- 标题 3 个(搜索型、结果型、清单型),每个 15 到 25 字,写法见 `references/hooks.md`。
- 标签 5 到 8 个,写成 `#关键词`,不堆无关热词。
- 结尾用站内的收藏或评论钩子,见 `references/hooks.md` 第 4 节。
## 1.6 选题
选题不归本 skill。上游的选题由 `nook-topic` 等 skill 负责;用户给的一个选题或一句话,按“一句话念头”当素材走关卡 1,事实清单里写“素材只有选题,没有事实”,提纲里标“推理,无数据”,再由用户补事实。
## 1.7 平台规则(硬规则)
- 不放二维码、联系方式、站外指向;不做“扣 X 领 X”“加微信”式的诱导互动。
- 结尾用站内的评论或收藏钩子,不抽奖。
- 不使用任何自动发布、自动评论、自动采集小红书的工具,发布全人工。
- 不在图里使用他人品牌 Logo。
## 1.8 人工自检清单
脚本查不出来的几项,交付前读一遍:
1. 每页单独发出去,读者还知道它在讲什么吗?
2. 删掉任何一个词,这页会少信息吗?不会就删。
3. 每个数字、名称、步骤,能在事实清单里找到出处吗?
4. 有没有同义句凑页?
5. 有没有复述前文的结尾、号召式的假结尾?
6. 封面加第 2 页,读者能不能知道这是讲什么、给谁、得到什么?
7. 每个贴纸,和这一页的意思贴切吗?
8. 正文里有没有“没有锚点”的段落(只有概念,没有具体动作、数字、名称)?
## 1.9 文件
```
nook-xhswrite/
SKILL.md
references/
frameworks.md 12 个内容框架(选框架表、页序、页型、封面)
templates.md 关卡 1 到 5 的输出模板,包括 post.md
hooks.md 封面钩子、标题写法、结尾和评论钩子
extract.md 长素材怎么抽事实
plans/ 12 个框架各一份可校验的方案示例(含 inputs/)
agent-prompt.md 给 agent 的提示词:用户一句话版和验收用完整版
```