| name | wjs-voicedrop-writing-novel |
| description | 「写一本书」时小说 / 虚构叙事的写法模块——人物与世界设定、叙事文风、章节即场景的结构、写手提示词、评审维度(情节推进/人物可信/文笔与场景/连贯性)、专属约定(伏笔与连续性档案、show-don't-tell、少配图)。由 wjs-voicedrop-writing-book 在第 0 步判定为小说类型后读入;骨架、build.mjs、发布、封面、断点续跑等通用机制都在 wjs-voicedrop-writing-book,本 skill 只管「怎么写小说」。触发词:"小说"、"虚构故事"、"novel"、"/wjs-voicedrop-writing-novel"。 |
小说写法 — 虚构叙事(novel)
这是 wjs-voicedrop-writing-book 的写作模块之一(type: novel)。工作目录、book.json、build.mjs、发布、封面、断点续跑、修书模式、编排、通用红线等机制全部在 wjs-voicedrop-writing-book,本文只规定小说怎么写。
⚠️ 初版草稿:小说类型刚拆出来,下面的文风/结构是首版约定,实际用过几本后再收紧。核心机制(每章即发、独立评审、封面、两条硬约束)跟通用 skill 完全一致。
这类书解决的问题:讲一个让人想一直读下去的虚构故事——有人物、有欲望、有冲突、有变化。靠叙事推进,不靠说理。和科普书正相反:科普书要把道理讲白,小说要把道理藏进情节和人物里。
读者画像:想被一个好故事带走的人。要的是代入感、悬念、情感冲击,不是知识点。
文风铁律:
- Show, don't tell:用动作、对话、细节让读者自己感受,别直接告诉读者「他很愤怒」。
- 场景优先:每章是一个(或几个)有时间、地点、在场人物的场景,不是叙述性概述。
- 人物有欲望和阻力:每个场景里主角想要什么、什么挡着他——这是张力的来源。
- 对话推动情节:对话要各有各的目的,不是寒暄和信息倾倒。
- 克制形容词,动词精准:少堆华丽辞藻,靠精准的动词和具体细节。
- 每章留钩子:章末给一个悬念/转折/未决问题,让人想翻下一章。
连续性档案(小说必备,写在工作目录里)
小说跨章要保持人物、时间线、伏笔一致。在工作目录建一份 bible.json(或 bible.md),随写随更新,每个写手写章前都读它、写完更新它:
{
"characters": [{"name":"林越","role":"主角","traits":"寡言、修表匠","arc":"从躲避到直面"}],
"timeline": ["第1章:雨夜,钟表店", "第2章:三天后,法院"],
"threads_open": ["那只停在3:15的怀表是谁的(第1章埋,待回收)"],
"threads_closed": [],
"facts": ["城市:临江", "季节:秋"]
}
这是小说版的「真源」——伏笔(threads_open)埋了就登记,回收了就挪到 threads_closed,避免烂尾和自相矛盾。
结构:章 = 场景
用 book.json 的 chapters,每章是一个场景或一段连续情节。一本中短篇通常 10–20 章。book.json:type: "novel",tagline 建议留空或作者的一句题记,meta 可写体裁(如 "悬疑中篇"),tint/dark 随故事气质(冷峻/温暖/暗黑)。
建筑师:故事怎么搭
Spawn 一个 agent,产出书名、slug、subtitle(一句故事钩子/题记)、配色、人物表 + 章节清单(每章 no / title / brief=这一章发生什么、谁的场景、推进了什么),并初始化 bible.json。要求:
- 一条清楚的主线冲突:主角要什么、代价是什么、结局往哪走(哪怕开放式,作者心里要有底)。
- 章节递进且有节奏:起(钩子+人物+世界)→ 承(升级的阻力,埋伏笔)→ 转(高潮/反转)→ 合(收束伏笔,人物有变化)。
- 每章有明确的场景目标和章末钩子,不是流水账。
- 别剧透在 brief 里写死每一句,但主线和关键转折要定好。
- 埋下的伏笔登记进
bible.json 的 threads_open。
写手 subagent:提示词要点
给写手:本章 no / title / brief + bible.json 全文(人物/时间线/未回收伏笔/设定)+ 读者画像与文风铁律。要求:
- 先读
bible.json,保证人物性格、称呼、时间线、已定设定不跑偏;用到/回收/新埋伏笔的,在返回时说明,好让主循环更新 bible.json。
- 输出格式:一段
<article> 里的 HTML 片段。小说用的标签很少:<p>(正文与对话)、<blockquote>(信件/引文/回忆等特殊段落,克制使用)、偶尔 <h3>(小节分隔/时间跳转,如「※」或「三天后」)。不用 <dfn>、.plain 大白话盒子、<ul>/<code>(那是科普书的东西)。
- 对话用中文引号
「」 或 “”,每句对话独立成段落更易读。
- 不写
<h1>、不写内联 style、不编造图片 URL。
- 长度:一章约 1500–3500 字,够把一个场景写透、写出画面即可。
- 存到
chapters/NN.html。
评审 subagent:维度与判定
独立 spawn,只喂「该章成品 HTML + 全书大纲 + bible.json」。维度:
你是独立评审,没参与写作。从四个维度打分(各 1–5,给一句理由)+ 必须修清单:
- 情节推进 & 钩子:这一章有没有让故事往前走?章末有没有让人想翻下一章的悬念?还是原地打转?
- 人物可信:人物的言行符不符合设定、动机成不成立?对话像不像这个人说的话?
- 文笔与场景(show don't tell):是不是用场景/动作/细节呈现,而不是概述和直接告知?有没有画面感?形容词是否泛滥?
- 连贯性:和
bible.json 有没有冲突(人名/时间线/设定/已埋伏笔)?有没有前后矛盾或说崩的地方?
判定 pass:四项都 ≥3,且连贯性无硬伤(与 bible 冲突一票否决)。否则 fail。
输出 JSON:{"scores":{"plot":n,"character":n,"prose":n,"continuity":n},"verdict":"pass|fail","must_fix":["…"],"note":"一句总评"}
存 reviews/NN.json。不过按通用 skill 的循环换新写手重写,最多 3 轮。连贯性问题优先修。
导读页(可选)
小说的「导读」更像一段引子/题记/作者的话,不要剧透。可放故事基调的一句话、或一个引人入胜的开场悬念。introTeaser 用一句勾人的话。
插图:一般不配,或只配少量氛围图
小说默认不配插图(跟科普书一样克制),让文字营造画面。若确实要(如每章一张分隔氛围图),走通用 skill 的 paint 流程:无字纯画面、氛围为主、全书统一画风,绝不放文字/水印。多数小说一张内页图都不需要。
封面
同通用 skill 的封面规则(竖版 1024x1536、书名画进图、GPT 出字),气质随故事基调(悬疑冷峻 / 温情暖调 / 奇幻),可以有一个象征性的画面元素,但仍以书名为主角、留白给字。
小说专属 Red Flags(通用红线见 wjs-voicedrop-writing-book)
- 直接告诉读者情绪/结论(「他很难过」「这说明……」)→ 违反 show don't tell,改成场景/动作/细节。
- 章节是叙述性概述、没有具体场景(时间地点人物)→ 落到一个真实场景里重写。
- 与
bible.json 冲突(人名、时间线、设定、伏笔)→ 连贯性一票否决,必须改。
- 埋了伏笔不登记 / 回收了不更新
bible.json → 容易烂尾,补登记。
- 对话是寒暄或信息倾倒、每个人说话一个腔调 → 让对话有目的、有人物声音。
- 章末没有钩子、平淡收场 → 加一个悬念/转折/未决问题。
- 用了科普书的
<dfn> / 大白话盒子 / 列表堆点 → 那不是小说的写法,删掉。
- 形容词/华丽辞藻泛滥、动词软 → 精简,靠精准动词和具体细节。