Novel Serial — 番茄小说日更连载技能(执行版)
仅包含执行流程。知识性内容请参考
KNOWLEDGE.md。
整体架构
用户
↑
↑ 飞书私信
↑
OpenClaw(服务器)
├── Cron Scheduler(定时触发器)
│ └── jobs.json → 每天 12:00 触发
│ ↓
└── Session(写作会话)
├── ① 读取本 SKILL.md + KNOWLEDGE.md
├── ② 扫描 novels/ 目录
├── ③ 读取 meta.json + 最新章节
├── ④ 写章节(调用 LLM)
├── ⑤ 保存到 chapters/
├── ⑥ 更新 meta.json
└── ⑦ 推送完整章节到飞书
部署步骤
第一步:创建 cron 任务
在 OpenClaw 的 jobs.json 中添加:
{
"name": "novel-serial-daily",
"schedule": {
"kind": "cron",
"expr": "0 12 * * *",
"tz": "Asia/Shanghai"
},
"wakeMode": "now",
"payload": {
"kind": "agentTurn",
"message": "执行小说日更任务:读取 ~/.openclaw/workspace/skills/novel-serial/SKILL.md 和 KNOWLEDGE.md,按「每日写作任务」流程执行——扫描 novels/ 目录,对每本 status ≠ 已放弃/已完本 的书写下一章,保存到 chapters/,更新 meta.json,将完整章节正文通过飞书发送给用户。",
"timeoutSeconds": 600
},
"delivery": {
"mode": "announce",
"channel": "feishu",
"to": "ou_6ca9cba7370295c18cd206cce698cbb8"
}
}
第二步:建立小说目录
~/.openclaw/workspace/novels/
└── novel-{N}/ ← 每本书一个文件夹
├── meta.json ← 必须:章节数、主角年龄/能力、状态
├── book-bible.md ← 必须:金手指边界、各阶段能力、悬念清单
├── memory/
│ ├── 人物性格.md ← 必须:主角各阶段能力/性格状态
│ ├── 世界观设定.md ← 必须:金手指详细规则+边界
│ └── 伏笔钩子.md ← 必须:埋线+回收追踪
└── chapters/
├── ch01.md ← 每章一个文件
└── ...
第三步:确认 meta.json 必须字段
{
"title": "《书名》",
"author": "xxx",
"status": "待更新",
"current_chapter": 0,
"word_count": 0,
"platform": "番茄小说",
"last_updated": "",
"主角年龄": "X岁",
"主角能力等级": "能A/B,不能C",
"金手指当前等级": "LvX",
"悬念状态": {
"悬念A": {"承诺章节": N, "状态": "待交代"}
}
}
status 可选值:
待更新→ 正常日更停更→ 跳过完结→ 跳过
⚠️ 铁律:每次写作前必须读取状态文件
禁止凭记忆写作。每次必须从文件读取当前状态。
对一本书操作前,按顺序读取以下所有文件:
BOOK_DIR="~/.openclaw/workspace/novels/novel-{N}/"
必须读取:
1. meta.json → 章节数、主角年龄/能力、状态
2. book-bible.md → 金手指边界、主线进度、已承诺的悬念
3. memory/人物性格.md → 各角色当前能力/性格
4. memory/伏笔钩子.md → 哪些悬念承诺了几章内交代
5. 最新章节 ch{N}.md → 上章结尾主角做了什么/说了什么,承接关系
每日写作任务(完整流程)
目标:每天每本写 2 章,每章 大于 2000 字,最多 3500 字
执行流程(每步不可跳过)
STEP 1:扫描 novels/ 目录
- 扫描 ~/.openclaw/workspace/novels/
- 过滤 meta.json 中 status ≠ "已放弃" 且 ≠ "已完本" 的书
- 停更/完结/不存在 → 跳过
STEP 2:读取当前书籍状态
对每本书,依次读取:
a. meta.json → current_chapter、主角年龄、能力等级
b. memory/人物性格.md → 当前主角能做什么/不能做什么
c. memory/世界观设定.md → 金手指规则和边界
d. 最新章节 ch{N}.md → 上章结尾,必须承接
STEP 3:输出「本章状态确认」
必须输出以下内容后才能开始写:
📋 [{书名}] 第{N+1}章写作前确认
【基础状态】
- 当前章节:ch{N+1}
- 主角年龄:{从meta.json}
- 主角能力等级:{从memory/人物性格.md}
- 金手指等级:{从book-bible.md}
- 核心悬念待交代:{从memory/伏笔钩子.md}
【承接检查·上章结尾】
- 上章结尾:{从ch{N}.md最后一段}
- 本章必须承接:{如何自然接上}
【能力边界检查】
- 本章主角能做什么:{列举}
- 本章主角不能做什么:{列举}(严禁超出边界)
【悬念承诺检查】
- {悬念A}:第{X}章承诺→第{Y}章交代,本章是否该兑现?
字数目标:2000-3500字
STEP 4:写章节(按单章模板)
STEP 5:写完后的「一致性自检」——逐条确认才能发
【主角一致性检查】
- [ ] 年龄:本章={}岁,与meta.json一致,无跳跃
- [ ] 能力:能做{},不能做{},没有超出边界的新能力
- [ ] 情绪表现:通过{动作/表情/声音}表现,不是【系统提示】独挑大梁
【标题匹配检查】
- [ ] 标题"{章名}"核心事件={},正文≥80%围绕此事件
【悬念推进检查】
- [ ] 承诺{章节}交代的{悬念},本章已/未交代(不得逾期)
- [ ] 新增悬念{悬念名},承诺第{}章交代
【字数检查】
- [ ] 实际字数 2000-3500字(超出需拆分,短了需补写)
STEP 6:保存章节
- 路径:chapters/ch{N+1}.md
- 格式:Markdown
STEP 7:更新 meta.json
- current_chapter += 1
- word_count += 新增字数
- last_updated = 今天日期
- 如有主角年龄/能力变化,同步更新
STEP 8:更新 memory 文件
- memory/人物性格.md(如主角能力有变化)
- memory/伏笔钩子.md(如有悬念推进或新增)
STEP 9:发送飞书消息给用户
每章单独一条消息,格式见下方「发送格式」
STEP 10:发送日更汇总报告
格式见下方「日更汇总格式」
单章写作模板
【章节信息】
第{X}章 | {章节名} | 本章爽点类型:{钩子/反转/升级等}
【情节概述】
{两句话讲清楚这章发生什么}
【主角当前状态核对】
- 年龄:{从meta.json}
- 能力等级:{从memory/人物性格.md}
- 上章结尾主角做了什么/说了什么:{确认}
【必须包含元素】
- {冲突/危机}
- {金手指展示(必须符合边界)}
- {本章钩子}
【写作要求】
- **章节标题格式(必须严格遵守,否则发布脚本无法提取标题):**
- 第一行必须是 `第{N}章 | {标题}` 格式,示例:`第13章 | 真相`
- 分隔符必须是 **竖线 `|`**,前后可以有空格,禁止使用冒号、破折号等其他分隔符
- 标题两个字以内算违规,标题里不能包含 `|` 字符
- 字数:2000-3500字
- 前500字必须有冲突
- 每1000字一个小高潮
- 结尾留悬念
- 短句为主,减少"的"字
- 情绪:必须通过{动作/表情/声音/行为}表现,禁止【系统提示】独挑大梁
发送给用户的格式
每章单独一条消息:
📖 《{书名}》第{X}章 · {章节标题}
{正文全文}
---
字数:{xxxx}字 | 本书总字数:{xxxxx}字
日更汇总(每本书日更完成后发一条):
📖 《{书名}》日更 · {日期}
━━━ 第X章 ━━━
{章节标题}
{正文}
━━━ 第X+1章 ━━━
{章节标题}
{正文}
字数:{xxx}字 / {yyy}字 | 本书总字数:{zzzzz}字
⚠️ 一致性确认:主角{X}岁 | 能力无新增 | 悬念无逾期
金手指边界规则(必须遵守)
好的设定(金手指有边界):
系统:金手指系统
能力:主角可通过情绪共鸣影响周围50米内所有人的情绪
限制:主角每次使用能力后需要睡眠2小时恢复;主角无法主动控制能力触发时机
升级条件:主角成长度达到20/50/80时解锁对应技能
禁止的设定(无边界!):
❌ 系统可以生成任何能力,宿主需要什么就有什么
❌ 系统可以主动触发宏观事件(热搜、舆论等)
❌ 系统没有使用代价和冷却机制
质量速查(每次输出前逐条确认)
创作质量
- 第一个字有冲突?
- 500字内有危机/钩子?
- 金手指展示了(且符合边界)?
- 每1000字有情节点?
- 结尾有悬念?
- 短句为主(每段≤3行)?
- 没有连续3段纯对话?
- 字数 2000-3500字?
一致性(核心!)
- 主角年龄:本章={}岁,与meta.json一致,无跳跃
- 主角能力:能做{列举},不能做{列举},没有超出边界的新能力
- 主角情绪表现:是通过{动作/表情/声音}表现,不是【系统提示】独挑大梁
- 标题匹配:标题"{章名}"核心事件={},正文≥80%围绕此事件
- 悬念推进:承诺{章节}交代的{悬念},本章已/未交代(不得逾期)
常见错误清单(违反 = 严重错误)
| # | 错误类型 | 错误描述 | 如何避免 |
|---|---|---|---|
| 1 | 主角年龄跳跃 | 0岁婴儿突然会说话/唱歌/走路 | 严格按年龄-能力表写,用meta.json核对 |
| 2 | 金手指无限膨胀 | 需要什么能力就冒出什么能力 | Book Bible阶段设好边界,禁止凭空创造 |
| 3 | 标题与内容不符 | 标题写A,正文80%在写B | 写前核查清单里有标题匹配检查 |
| 4 | show-don't-tell违规 | 只写【系统提示:主角哭了】,没有动作/表情/声音 | 一致性检查里有情绪表现方式检查 |
| 5 | 悬念不兑现 | 承诺3章内交代,结果写到第10章还没交代 | 伏笔钩子.md里记录承诺章节,超时=错误 |
| 6 | 能力忽高忽低 | 主角这章能A,下章突然不能A了 | 每次写之前读memory/人物性格.md |
| 7 | 不读取文件凭记忆 | "我记得主角上次做了什么"就直接写 | 写作前强制Step 1:读取所有状态文件 |