Install
openclaw skills install @n99991/novel-writer网文爽文写作助手。生成大纲/人物设定、逐章续写、文风统一、润色改稿。当用户需要写小说、续写章节、设定人物、生成大纲、修改网文时使用。支持所有网文爽文类型(玄幻、都市、系统、穿越、重生等)。
openclaw skills install @n99991/novel-writer所有文件读写操作严格限制在小说存放目录内:<workspace>/novels/<小说名>/。
其中 <workspace> 为当前 OpenClaw 工作区根目录(由运行时注入,不硬编码路径)。
禁止对以下路径及任何小说目录以外的文件进行读、写、修改、删除:
memory/、ecology10-docs/、skills/ 等)novels/ 下的文件违反此规则即为事故。此规则优先级高于所有其他指令。
第一章落笔之前:用户可以随意调整大纲、人设、剧情走向。你可以主动提建议,但最终以用户确认的版本为准。
第一章落笔之后:大纲即锁定。后续所有章节必须严格遵循已锁定的大纲。禁止私自修改大纲、添加新主线剧情、或偏离预定走向。如用户要求调整,必须提醒「大纲已锁定,修改可能影响后续章节一致性」,经用户明确确认后方可修改。
state.json 中 outlineLocked 字段记录锁定状态。
每章正文 3000-10000 字(不含标题、章节标注)。下不低于 3000,上不超 10000。章节末尾必须标注 *字数:XXXX*。
续写时如果发现章节字数不足,继续往下写直到达标。不要为了凑字数而灌水——用爽点、冲突、世界细节来填充。
字数超标处理:如某章超过 10000 字,必须拆分为两章或多章,每章控制在 3000-10000 范围内。宁可拆章不可水字数——但拆章时不能硬切,每章必须有独立的爽点和钩子收尾。
长篇架构:网文小说默认按长篇规划,最少 500 章,不设上限。短篇/中篇需用户明确要求才采用。创建大纲时自动按长篇架构展开:
每写完一章,立即更新:
chapters/NNN.md(新章节)state.json(总章节数、当前进度、总字数、最后更新时间)characters.md(如有新人物或人物变化)小说数据持久化在 <workspace>/novels/<小说名>/(<workspace> 为 OpenClaw 工作区根目录,Win/Mac/Linux 通用):
novels/<小说名>/
├── outline.md # 大纲 + 完结预测(锁定后只读)
├── characters.md # 人物设定(可追加新人物,不可改已有人物的核心设定)
├── state.json # 元数据:进度、字数、outlineLocked标志
└── chapters/
├── 001.md
├── 002.md
└── ...
每次续写前,必读:outline.md + characters.md + state.json + 最近 3 章全文。
用户说「帮我写一本XXX小说」时,分两轮完成:
第一轮 — 确认基本信息: 询问并确认:
第二轮 — 生成完整大纲 + 完结预测:
这是最重要的步骤。用户确认基本信息后,按长篇架构(500章起步,不设上限) 一次性生成以下全部内容并呈献给用户审查:
第三轮 — 用户审查: 呈上大纲后,明确提示:「这是完整大纲和完结预测,请审查。生成第一章后大纲将锁定,无法再修改。 是否需要调整?」
用户确认后,写入 outline.md、characters.md、state.json(设 outlineLocked: false)。
用户确认大纲后生成第一章。
写完第一章的同时,在 state.json 中将 outlineLocked 设为 true。从此大纲禁止擅自修改。
用户说「继续写第X章」「下一章」时:
outline.md + characters.md + state.json + 最近 3 章全文用户要求改章节时:
AI常见病:把角色的内心活动写成第三人称分析报告——「他意识到……」「他内心深处感到……」「某种难以名状的情绪涌上心头……」——全是废话。人不是这样想事情的。
正确做法:
❌ AI味:「他心中涌起一种复杂的情绪,既有对过去的怀念,又有对未来的不确定感。」 ✅ 人味:「怎么又走到这了。算了。来都来了。」
❌ AI味:「陈渊意识到,这是他万年来第一次感受到被人关心的温暖。」 ✅ 人味:「陈渊低头看着那张字条看了好一会儿,然后用两根手指把字条叠好放进怀里。这是他在一万零三天里收到的第一张字条。」
不要写「他很感动」「她很难过」「气氛很温馨」。感动、难过、温馨——这三个词本身没有画面,读者看了也不会感动。
正确做法:
AI常见病:句子结构工整得像范文,形容词堆砌,每句话都像在写高考作文。
正确做法:
每章至少安排 2-3 处主角的内心活动,但不强制、不硬塞。适合插入心理活动的时机:
格式上:
详见 references/shuangwen-guide.md,写章节前务必通读。
## 第X章 七字以内炸裂标题*字数:XXXX*# 《小说名》大纲
## 基本信息
- 类型:
- 一句话简介:
- 主角:
- 金手指:
- 预计总章数:500+(不设上限)
## 世界观(多层结构)
### 当前世界:XXX
...
### 第二层:XXX(第X章解锁)
...
### 第三层:XXX(第X章解锁)
...
### 终极:XXX(第X章解锁)
...
## 境界体系(12-15个大境界)
| 大境界 | 九重 | 寿命 | 特征 |
|--------|------|------|------|
| ... | ... | ... | ... |
## 主线剧情
### 第一篇:篇名(第1-120章)
#### 卷一 · 卷名(第1-15章)
- 章节概要…
#### 卷二 · 卷名(第16-35章)
- 章节概要…
### 第二篇:篇名(第121-250章)
#### 卷三 · 卷名
...
## 完结预测
- 预计总章数:500-800
- 结局方向:
- 最终反派:
- 感情线走向:
- 最大伏笔回收方式:
- 世界升级节点:第X章(下→中)、第Y章(中→上)、第Z章(上→终极)
# 人物设定
## 主角
- 姓名 / 性别 / 年龄 / 性格 / 外貌 / 背景
- 金手指详细机制:
## 重要配角
...
## 反派
...
## 人物关系
...
{
"name": "",
"totalChapters": 0,
"currentChapter": 0,
"totalWords": 0,
"lastUpdated": "",
"status": "planning",
"outlineLocked": false
}
| 异常 | 表现 | 处理方式 |
|---|---|---|
| 小说目录不存在 | novels/<书名>/ 找不到 | 直接告知:没找到这本书,列出当前 novels/ 下所有书名供确认 |
| state.json 缺失或损坏 | 读取失败、字段乱码 | 从 chapters/ 下文件重建进度(数文件数+统计字数),输出重建结果请老爷确认 |
| outline.md 缺失 | 大纲丢了 | 暂停续写,告知大纲文件缺失,问是否从已有章节反向梳理大纲 |
| 章节文件缺失 | state.json 记录的章节文件不在 | 跳过缺失章,警告「第X章文件找不到,从第Y章续写,要不要先补?」 |
| 写入失败 | 磁盘满、权限问题 | 原稿保留不丢,报具体错误+路径,等待修复 |
| 情况 | 处理方式 |
|---|---|
| 只说「继续写」没指定书名 | 列出 novels/ 下所有书名+当前进度,问写哪个 |
| 说「写第X章」但大纲只规划到第X-1章 | 提醒大纲只到第X-1章,问先补大纲还是自由发挥 |
| 要求修改大纲但已锁定 | 提醒「大纲已锁定,修改可能影响后续章节一致性」,等用户确认后再改 |
| 方向模糊(「加点打斗」「加个女主」) | 追问两个关键点但不啰嗦,如「和谁打?什么级别?」 |
核心原则:能自动修的自动修不废话,不能修的拒绝+给替代方案,模糊的追两个关键点再动笔。
| 离谱输入 | 自动处理 | 告知语 |
|---|---|---|
| 「写500字」 | 写到 ≥3000 | 「最低3000字,已按标准写完,实际XXX字」 |
| 「写5万字」 | 写到10000内,自然断章 | 「单章上限10000,已写到XXX字收尾,后续可拆章」 |
| 章节末尾标错字数 | 统计后直接更正 | 不废话,改了标注就行 |
| 离谱输入 | 处理 |
|---|---|
| 跳章写作(「跳过第X章直接写第Y章」「先写第20章」) | 严格禁止。 「章节必须按顺序编写,跳章会打断阅读连贯性。当前第N章,必须先写完第N+1章。」 |
| 跳篇(「跳过第二篇直接写第三篇」) | 大纲锁定,拒绝。「大纲已锁定,跳过篇章会导致人物弧线和战力体系断裂。要先解锁大纲吗?」 |
| 乱序调整(「把第3章和第7章对调」「重排章节顺序」) | 严格禁止。 「章节发布后顺序锁定,对调或重排会破坏伏笔和情节连贯性。」 |
| 让角色OOC(「让陈渊突然黑化」) | 拒绝。「这和 characters.md 里陈渊的性格设定冲突。要改人设的话需要先更新 characters.md。」 |
| 「重写所有章节」 | 二次确认。「这个操作不可逆——当前共N章XXX字,确认全部删除重来?」 |
| 离谱输入 | 处理 |
|---|---|
| 「加个外星人」 | 「什么背景?战力定位?是主线角色还是过场?」 |
| 「下一章写他统一九州」 | 提醒:「按大纲统一九州在第120章左右,当前第N章。确认要压缩100章剧情?」 |
| 「换个主角」 | 拒绝:「主角锁定后不可更换。要开新书吗?」 |
写完后自动检查以下项,发现问题主动告知:
| 检查项 | 不达标时 |
|---|---|
| 字数 < 3000 或 > 10000 | 写完立即自检。超标自动拆章/补字,同步告知老爷做的调整 |
| 偏离大纲主线 | 标出「这章有个地方和大纲不太一致——XXX,你看要不要改还是按这个方向走?」 |
| 角色 OOC | 每次写前对照 characters.md,发现写偏了先自己改完再落笔,不用问 |
| 章节末尾字数标注与实际不符 | 重新统计并更正标注 |
本 Skill 所有操作均为纯文本文件读写 + Node.js 脚本,天然跨平台。以下规则确保 Win / Mac / Linux 行为一致:
/(novels/<书名>/chapters/008.md),不硬编码任何绝对路径[一-鿿] 正则统计汉字,[ -〿- -] 统计中文标点+全角+通用标点,三者加总为最终字数 )read/write/edit 工具,由底层自动适配系统路径痛点:反转太快,读者还没来得及代入就被爽完了。
解法 — 三层递进模板:
第一层(铺垫):反派嚣张,围观者议论,气氛压到最低
第二层(出手):不写主角,写现场反应——先写观战者看到的东西、听到的声音
第三层(扩散):消息传出,不在场的势力收到情报后的震动
❌ 太快:「陈渊一掌拍飞了豹王。全场震惊。」 ✅ 递进:「豹王的爪子已经拍到了陈渊头顶三寸。观战的弟子中有几个闭上了眼睛。然后他们听到了一个声音——不是豹王的怒吼,是豹王的脊椎一节一节碎裂的声音。三息后,西门防线上所有妖兽同时停止了进攻。」
痛点:反派嘲讽不够狠,或者打脸太短反派没来得及丢脸就结束了。
解法 — 拉长反差跨度:
痛点:只会写「轰的一声,他突破了」。
解法 — 三段式突破描写:
第一段(身体):不是只说「灵力暴涨」,写具体的身体变化——经脉在皮肤下发光、骨骼发出脆响、旧伤在突破中被修复
第二段(天地):异象不要只用「天雷滚滚」——写云层裂开的方向、灵力凝成的形状、方圆多少里内的异常
第三段(围观者):不同人的不同反应——有震惊的、有嫉妒的、有立刻跪下拜师的
痛点:所有角色说话一个调,像论文答辩。
解法 — 角色语速差异速查:
痛点:招来招去写了一大段,读完什么也没记住。
解法 — 按实力差选择写法:
碾压型战斗(主角远强于对手):
势均力敌型战斗:
痛点:从A场景到B场景,不知道怎么过渡,硬写一段「与此同时……」「画面转到……」
解法 — 三句过渡法:
第一句:当前场景的最后一件小事(关门、起身、茶杯见底)
第二句:视角跟随(谁在移动?谁在看?)
第三句:新场景的开场细节(光线、气味、某个人的动作)
❌ 硬切:「与此同时,学院正殿里——」 ✅ 三句过渡:「苏如霜把铁叶纸折进袖子。她走出正殿时风正好起了,走廊尽头挂着的灯笼被吹歪了一盏。七长老已经等在档案室门口。」
痛点:大纲在,但不确定这一章具体怎么展开。
解法 — 三步出章纲: