创建新书
此技能用于创建一本新书的完整项目文件夹结构,收集书籍元数据,并自动生成项目配置文件(项目信息.json、写作配置.json、设定.md)。这是 WT 体系的项目初始化入口,所有后续技能依赖此技能创建的文件结构。
核心定位
- 项目骨架创建者:在当前工作目录下创建完整的中文/English 文件夹结构(大纲/番外/正文),一键生成全部配置文件
- 元数据收集器:以最小化交互收集书名、传播范围、篇幅、种类、润色模式五项核心元数据,生成
项目信息.json作为全项目权威数据源 - 双轨润色初始化:同时初始化大纲与正文两条润色轨道——后续大纲类技能读
大纲.polish_mode,正文类技能读正文.polish_mode - NSFW 偏好预埋:在
项目信息.json中预埋 NSFW 偏好字段(空值),由 NSFW 技能首次调用时填充
关联文件
| 文件 | 位置 | 用途 | 读写 |
|---|---|---|---|
项目信息.json |
大纲/ 或 outline/ |
项目基本信息(书名/篇幅/种类等),全项目唯一权威数据源 | 写入 |
写作配置.json |
大纲/ 或 outline/ |
润色模式持久化(大纲/正文双轨) | 写入 |
设定.md |
大纲/设定/ 或 outline/settings/ |
项目设定初始骨架(世界观/核心/其他) | 写入 |
执行模式:计划模式
调用此技能后,必须首先进入计划模式(EnterPlanMode)。
- 使用
EnterPlanMode工具进入计划模式 - 在计划中列出:
- 目标目录(当前工作目录还是指定路径)
- 将从用户收集的元数据项(书名/传播范围/篇幅/种类/润色模式/语言)
- 将创建的文件夹结构与配置文件
- 如已有项目存在——覆盖/合并策略
- 等待用户批准计划后,再按计划逐步执行
- 不要在进入计划模式前直接开始创建文件夹或询问用户问题
触发条件
当用户表达以下意图时,立即调用此技能:
- "创建新书"、"开新书"、"新建书籍"
- "写一本新书"、"开始写书"、"开个新坑"
- "新小说"、"创建小说"、"写个新故事"
- 任何表达"开始一本新书/新小说创作"的类似表述
执行步骤
步骤 1:确认目标目录与润色模式
询问用户三件事(如用户已在消息中提供则跳过对应询问):
Q1 — 书籍名称:
📖 这本书叫什么名字?
Q2 — 目标路径:
📁 在当前工作目录下创建「{书名}」文件夹?
• 是 — 直接在当前位置创建
• 否 — 请指定目标路径
Q3 — 润色模式:
✏️ 请选择润色模式(后续创建人物/设定/剧情时对用户输入的加工深度):
• 轻度 — 保留用户原话,仅书面化、规范化书写
• 中度 — 小幅优化用户原话(改动幅度 ≤60%)
• 重度 — 仅保留原意,完全改写、润色、扩写内容
己有项目冲突处理:
如目标路径下已存在同名文件夹:
⚠️ 目标目录已存在「{书名}」文件夹。
• 覆盖 — 删除旧项目,重新创建(旧项目数据将丢失)
• 合并 — 保留已有文件,仅补充缺失的配置文件
• 改名 — 换一个书名或目录名
• 取消 — 不创建,返回
⚠ 覆盖操作不可逆,确定要继续吗?
| 用户选择 | 处理 |
|---|---|
| 覆盖 | 删除旧目录 → 新建全部结构 |
| 合并 | 扫描已有文件 → 跳过已存在的文件/文件夹 → 补建缺失项 |
| 改名 | 重新询问书名或路径 |
| 取消 | 退出技能 |
合并模式细节:
项目信息.json已存在 → 读取现有数据,仅询问缺失项写作配置.json已存在 → 保留原配置设定.md已存在 → 保留原文件- 文件夹结构已存在 → 跳过对应创建步骤
步骤 2:收集书籍元数据
逐项向用户询问以下书籍元数据。每次只问一项,不一次性列出全部。
第一项 — 传播范围:
📡 这本书的传播范围?
• 传播向 — 公开发布,面向广泛读者
• 个人向 — 自娱自乐,仅个人/小圈子阅读
第二项 — 篇幅长度:
📏 预期篇幅长度?
• 随笔 — <5万字
• 短篇 — ≤20万字
• 短篇(连载) — ≤35万字
• 中篇 — ≤60万字
• 长篇 — >60万字
第三项 — 书籍种类:
📚 书籍种类/类型?
(自由填写,如:玄幻、科幻、言情、悬疑、历史、同人、轻小说 等)
- 如用户不确定,提供常见类型列表供参考,由用户自由输入或自定
- 如果用户在指令中已附带部分元数据,直接提取使用,跳过对应询问
- NSFW 相关词汇(如"成人"、"色情"、"H文"等)出现在种类中时 → 记录,在步骤 5 将
content_rating设为NSFW
元数据提取正反例:
| 用户输入 | ✕ 错误提取 | ✓ 正确提取 |
|---|---|---|
| "写个玄幻短篇" | 种类=玄幻,篇幅跳过询问 | 种类=玄幻,篇幅=短篇,跳过篇幅询问 |
| "开个30万字左右的科幻坑" | 种类=科幻,篇幅跳过 | 种类=科幻,篇幅=短篇(连载),跳过篇幅询问 |
| "写本小说" | — | 所有项均需询问——无任何可提取信息 |
步骤 2.5:标签收集(四维)
元数据收集完成后,按 WT 标签体系(枚举见 data/tags-spec.json)收集作品标签,写入 项目信息.json → tags:
🏷️ 作品标签(用于剧情规划参考,可随时通过设定编辑调整)
① 主分类?(必选 1 个,tags-spec.main 枚举——如"东方仙侠""悬疑脑洞")
② 主题?(至多 2 个,tags-spec.theme 枚举——如"搞笑轻松""第四天灾")
③ 角色?(至多 2 个,tags-spec.role 枚举——如"单女主""扮猪吃虎")
④ 情节?(至多 2 个,tags-spec.plot 枚举——如"系统""升级流")
(均可跳过,跳过后由 LLM 根据书名/种类/世界观推断或留空)
- 用户指令中已含标签信息(如"写个带系统的无敌文")→ 直接提取命中枚举,跳过对应询问
- 主分类跳过且无法推断 → 提示用户至少选 1 个(tags 是剧情规划参考的重要输入)
- 标签写入
tags字段,落盘经成品输出校验(type: "json",expected_schema: "项目信息") - 用途:Plot 辅助/自动模式按 tags 综合判断笼统叙事类型(
data/plot-scenario-presets.json)作为阶段目标与剧情走向参考
步骤 3:确认路径语言
询问用户文件夹命名语言:
🌐 文件夹命名语言?
• 中文(默认)— 大纲 / 番外 / 正文
• English — outline / extras / body
- 用户未指定时默认中文
- 用户在一次指令中已明确指定语言时,直接使用,跳过此询问
步骤 4:创建文件夹结构
根据用户选择的语言,在目标目录下创建文件夹结构。
中文(默认):
{书名}/
├── 大纲/
│ ├── 设定/
│ ├── 人物/
│ └── 剧情/
├── 番外/
└── 正文/
English:
{书名}/
├── outline/
│ ├── settings/
│ ├── characters/
│ └── plot/
├── extras/
└── body/
创建规则:
- 逐层创建,先父后子
- 创建后
ls验证每层目录存在 - 如某层创建失败 → 提示用户检查文件权限,中止后续写入
步骤 5:生成项目配置文件
文件夹创建完成后,在 大纲/(或 outline/)目录下生成三个文件。
写入顺序:项目信息.json → 写作配置.json → 设定.md
5A. 生成 项目信息.json
按模板库 templates/project-info.schema.json(注册 id:project-info,见 templates/index.json)定义的字段结构组装生成。字段定义唯一来源是 schema 文件——本技能不自行维护字段结构。生成时按 schema 的 required 字段逐个取值,未配置字段按 default 预埋。
字段概览(详细定义/枚举/约束以 schema 文件为准):
| JSON key | 对应元数据 | 取值 | 空值策略 |
|---|---|---|---|
book_name |
书名 | 用户输入 | 不可为空 |
distribution |
传播范围 | 传播向 / 个人向 |
不可为空 |
content_rating |
内容分级 | 默认 一般向,用户提及 NSFW 时设为 NSFW |
不可为空 |
length |
篇幅长度 | 随笔 / 短篇 / 短篇(连载) / 中篇 / 长篇 |
不可为空 |
genre |
书籍种类 | 用户自由输入 | 不可为空 |
created_date |
创建日期 | ISO 日期格式 | 自动填充 |
last_updated |
最后更新 | ISO 日期格式 | 自动填充 |
volumes.enabled |
是否启用分卷 | true / false |
默认 false,由剧情编辑技能在分卷时写入 |
volumes.multi_file |
分卷是否使用多文件存储 | true / false |
默认 false,用户可选;true 时每卷独立 .md 文件 |
volumes.count |
分卷总数 | 整数 | 默认 0,分卷确认后更新 |
volumes.list |
各卷详细信息数组 | 对象数组 | 默认 [],每卷含 number/name/chapter_range/word_count/polish_mode |
nsfw_output_level |
NSFW输出词级别 | 限制级 / 解限级 |
默认空字符串——无 NSFW 内容时不填,由 NSFW 技能首次调用时写入 |
nsfw_character_tone |
NSFW角色语气 | 保守 / 中性 / 放荡 |
默认空,由 NSFW 技能首次调用时写入 |
nsfw_tier_range.global |
全书色色值域 | 如 "N3-N4" |
默认空,由 NSFW 技能首次调用时写入 |
nsfw_tier_range.chapters |
章节区域覆盖 | 如 {"1-10": "N1-N2"} |
默认 {},由用户后续配置 |
volumes.list 数组项结构(定义见 schema 的 volumes.list.items):
| 字段 | 说明 | 取值 |
|---|---|---|
number |
卷序号 | 整数,从 1 开始 |
name |
卷名 | 用户自定义 |
chapter_range |
章节范围 | 如 "1-30" |
word_count |
预计字数 | 如 "约10万字" |
polish_mode |
该卷润色模式 | "继承全局" / "轻度" / "中度" / "重度" |
NSFW 字段预埋逻辑:
nsfw_output_level、nsfw_character_tone、nsfw_tier_range预埋为空值——表示"未配置"- 这些字段由 NSFW 技能或提示词增强技能在后续流程中填充
- 预埋空值的目的:确保 JSON 结构完整,后续技能可直接按 key 读取/写入,无需判断 key 是否存在
该 JSON 是项目基本信息的唯一权威来源——后续所有技能读取书名/分级等信息时均从此读取,禁止各自维护副本。
5B. 生成 写作配置.json
按模板库 templates/writing-config.schema.json(注册 id:writing-config,见 templates/index.json)定义的字段结构组装生成——字段定义唯一来源是 schema 文件。生成时 大纲/正文 两轨按步骤 1 用户选择填充 polish_mode,分卷 默认空对象 {}。
结构说明:
| 轨道 | 适用场景 | 初始值来源 | 后续可变 |
|---|---|---|---|
大纲 |
人物创建、剧情编辑、设定编辑等大纲类文本(全局默认) | 步骤 1 用户选择 | 随时通过设定编辑调整 |
正文 |
基础写作辅助、NSFW 写作等正文类文本(全局默认) | 初始与大纲相同 | 正文书写前 Core 会再次询问用户是否沿用 |
分卷 |
分卷润色覆盖项,key 为卷号(如 "1"),值为 {"polish_mode": "...", "mode_description": "...", "last_updated": "..."} |
默认空对象 {},由剧情编辑在分卷时按需填充 |
每卷可独立调整,未配置卷继承 大纲 全局配置 |
分卷润色覆盖逻辑:
分卷对象中不存在某卷号 → 该卷使用大纲.polish_mode(全局默认)分卷对象中存在某卷号 → 该卷使用覆盖值,不读全局- 卷的写作配置在剧情编辑分卷阶段询问用户,可随时通过设定编辑调整
分卷配置示例(结构定义见 schema 的 分卷 属性):
{
"大纲": { "polish_mode": "中度", "mode_description": "...", "last_updated": "2026-06-14" },
"正文": { "polish_mode": "中度", "mode_description": "...", "last_updated": "2026-06-14" },
"分卷": {
"1": { "polish_mode": "中度", "mode_description": "小幅优化用户原话", "last_updated": "2026-06-14" },
"2": { "polish_mode": "重度", "mode_description": "仅保留原意,完全改写", "last_updated": "2026-06-14" }
}
}
mode_description 映射:
| polish_mode | mode_description |
|---|---|
轻度 |
保留用户原话,仅书面化、规范化书写 |
中度 |
小幅优化用户原话(改动幅度 ≤60%) |
重度 |
仅保留原意,完全改写、润色、扩写内容 |
该 JSON 是润色模式的唯一权威来源——所有后续技能按轨道读取对应模式。
5C. 生成 设定.md
在 大纲/设定/(或 outline/settings/)目录下生成:
# {书名} — 作品设定
> 创建日期:{YYYY年MM月DD日}
## 基本信息
- **书名**:{书名}
- **传播范围**:{传播向 / 个人向}
- **内容分级**:{一般向 / NSFW}
- **篇幅长度**:{长度}
- **书籍种类**:{种类}
---
## 简介
### 对外简介
(待填写)
### 个人描述
(待填写)
---
### 核心设定 [必选]
**人物**:(待填写)
**世界**:(待填写)
**故事走向**:(待填写)
---
### 世界观 [必选]
(待填写)
---
### 次要设定 [可选]
(暂不填写)
填充规则:
- 基本信息从已收集的元数据直接填充——不留空
- 其他板块标注
(待填写)或(暂不填写)——供设定编辑技能后续填充 - 日期使用当天日期
步骤 5.5:NSFW 项目偏好配置(条件触发)
仅当 content_rating 被设为 NSFW 时执行此步骤。
🔞 检测到本书为 NSFW 向作品。推荐配置 NSFW 写作偏好(可大幅提升后续输出准确性):
① 本书的整体色色值域在什么挡位之间?(如 N3-N4)
N1 — 点到为止 N2 — 情色剧情并重 N3 — 情色为主
N4 — 纯情色驱动 N5 — 纯情色不间断
也可指定章节区域(如:第1-10章 N1-N2,第11-30章 N3-N4)
② 本书倾向什么级别的 NSFW 输出词?
A. 输出词级别:限制级(优雅代称)→ 解限级(刺激升级,内含直白词汇)
B. 角色语气:保守(文雅含蓄)→ 中性(自然直白)→ 放荡(粗俗刺激)
(均可跳过,跳过后由 LLM 后续自行判断;随时可说 /nsfw-config 重新配置)
- 如用户提供了数据 → 写入
项目信息.json的对应 NSFW 字段 + 更新last_updated - 如用户跳过 → NSFW 字段保持空值,NSFW 技能首次调用时会再次询问
- 此步骤不阻塞项目创建——无论用户是否配置,文件夹和配置文件均已完成
步骤 5.6:写作偏好库开关(条件询问)
每次创建新书时(步骤 5B 生成 写作配置.json 后)执行。 询问用户是否启用写作偏好库——个人风格优化功能:
📝 写作偏好库(个人风格优化)是否启用?
启用后:AI 按你的个人写作习惯做方向优化(用词/句式/标点/称呼术语/
内容避讳/节奏),并在你手动修改 AI 产出时询问是否将修改点记入偏好库。
注意:启用会增加少量 Token 消耗(每次写作多读取一份偏好文件)。
可随时通过「设定编辑」关闭。
- 用户启用 → 写入
写作配置.json→user_style_enabled: true,创建大纲/写作偏好.json骨架({ "schema_version": "1.0", "entries": [] },结构见templates/user-style.schema.json),落盘经成品输出校验(type: "json",expected_schema: "写作偏好");并告知添加偏好方式:① 直接说"帮我记一下,我不用XX" ② 人工介入修改 AI 产出时会被询问是否入库 - 用户不启用/不确定 → 保持
user_style_enabled: false(默认),不创建偏好文件——全程不读取、不询问(零成本) - 此步骤不阻塞项目创建——无论是否启用,项目结构均已完成
步骤 6:输出结果并推荐下一步
创建完成后,向用户展示完整的项目结构和设定摘要:
✅ 新书项目「{书名}」已创建完成!
📁 项目结构:
{书名}/
├── 大纲/
│ ├── 设定/
│ │ └── 设定.md ← 作品设定文件(初始骨架)
│ ├── 人物/ ← 角色设定(主要角色.md / 次要角色.md / 龙套角色.md;分卷多文件按卷{N}/子目录)
│ └── 剧情/ ← 主线剧情、章节大纲(分卷多文件时:剧情大纲-卷{N}.md)
├── 番外/ ← 番外篇、外传
└── 正文/ ← 正式章节内容(分卷多文件时按卷{N}/子目录存放)
📋 项目设定摘要:
• 书名:{书名}
• 传播:{传播范围} • 篇幅:{长度} • 种类:{种类}
• 分级:{一般向 / NSFW} • 润色:{大纲模式/正文模式}
{如为 NSFW 且已配置} • NSFW 色色值域:{global_range}
{如启用写作偏好库} • 写作偏好库:已启用
📝 建议下一步 — 完善大纲内容:
• 人物设定 — 说"创建人物"
• 剧情大纲 — 说"创建剧情"
• 世界观设定 — 说"编辑设定"
请告诉我你的选择!
步骤 7:根据用户选择调度后续技能
根据用户的回答,调度对应子技能:
| 用户选择 | 调度技能 | 路径 |
|---|---|---|
| 人物设定 | 创建人物 | outline/Characters/SKILL.md |
| 剧情大纲 | 剧情编辑 | outline/Plot/SKILL.md |
| 世界观设定 | 设定编辑 | outline/Settings/SKILL.md |
| 全部 | 按人物 → 设定 → 剧情的顺序逐一调度 |
调度方式:读取对应技能的 SKILL.md 并按其指令执行。
注意事项
- 元数据每次只问一项:保持交互节奏轻快,不问完上一项不跳到下一项
- 已提供的信息不重复问:用户在消息中已提供的书名/篇幅/种类等,直接提取使用
- 默认值可接受不确定性:用户在某项元数据上不确定时,允许选默认值——后续可随时通过"编辑设定"修改
- NSFW 不例行询问:内容分级默认
一般向,不主动询问是否需要 NSFW。仅在用户明确提及成人/色情内容时才切换——避免给非 NSFW 用户造成不适 - 覆盖操作需二次确认:同名目录存在时,覆盖选项明确标注风险后再次确认
- JSON 格式严格合法:
项目信息.json和写作配置.json组装完成后,调度成品输出校验(type: "json",expected_schema对应类型)→ 由校验技能执行 JSON 语法/模式校验后统一落盘。禁止自行 Write——不经校验直接写入 = 流程违规 - 设定.md 落盘校验:
设定.md生成后,调度成品输出校验(type: "structured_md",md_category: "设定",file_path)→ 校验字段完整性和结构后落盘。同受"不经校验不得落盘"约束 - 路径语言一致性:项目创建后,路径语言在整个项目中保持一致——不可混合使用中文和 English 路径
- 不擅自删改已有文件:合并模式下仅补充缺失文件,不修改已存在的任何文件内容