refactor: 结构化skill

This commit is contained in:
Penglong
2026-01-28 23:58:37 +08:00
parent 6a9c725bed
commit 8ab30cdf00
8 changed files with 638 additions and 390 deletions

155
README.md
View File

@@ -1,5 +1,5 @@
<div align="center">
<div align="center">
# 🎭 chinese-novelist skill # 🎭 chinese-novelist skill
### 让 AI 为你写一部完整的中文小说 ### 让 AI 为你写一部完整的中文小说
@@ -7,8 +7,7 @@
[![Claude Code Skill](https://img.shields.io/badge/Claude_Code-Skill-blue)](https://claude.com/claude-code) [![Claude Code Skill](https://img.shields.io/badge/Claude_Code-Skill-blue)](https://claude.com/claude-code)
[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE) [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
一个专为 Claude Code 设计的中文小说创作助手。10-20 章的中篇小说,几十分钟内完成初稿。 </div>
--- ---
## ✨ 为什么用这个? ## ✨ 为什么用这个?
@@ -23,20 +22,89 @@
## 🚀 快速开始 ## 🚀 快速开始
``` ```
使用 chinese-novelist 帮我写一部关于[校园恐怖悬疑]小说,大约[20]章 使用 chinese-novelist 帮我写一部小说
``` ```
然后只需回答 5 个问题: ### 三阶段创作流程
**第一阶段5 问逐一确认**
AI 会逐一询问,你用上下箭头选择:
``` ```
📝 题材?悬疑推理 / 现代言情 / 古代言情 / 奇幻玄幻 / 科幻未来 ... 📝 问题 1/5你想要创作什么题材的小说
📝 主角?男性 / 女性 / 双主角 / 群像 □ 悬疑推理(侦探、破案、解谜)
📝 性格?热血正义 / 冷静智慧 / 温暖治愈 / 高冷孤傲 ... □ 现代言情(都市、职场、恋爱)
📝 冲突?生死存亡 / 查明真相 / 爱情阻碍 / 复仇雪恨 ... □ 古代言情(宫廷、江湖、穿越)
📝 几章10章 / 15章 / 20章 / 自定义 □ 奇幻玄幻(魔法、异世界、修真)
□ 科幻未来(科技、太空、末世)
□ 武侠仙侠(江湖、门派、飞升)
□ 历史架空(朝堂、战争、权谋)
□ 都市现实(生活、成长、社会)
📝 问题 2/5主角是什么设定
□ 男性主角(独角戏)
□ 女性主角(独角戏)
□ 双主角(男女双线)
□ 群像戏(多线叙事)
📝 问题 3/5主角的核心性格是
□ 热血正义(积极、勇敢、有担当)
□ 冷静智慧(理性、谋略、高智商)
□ 温暖治愈(善良、温柔、有同理心)
□ 高冷孤傲(冷漠、独立、强大)
□ 阴暗腹黑(心机、算计、复仇)
□ 成长逆袭(从弱到强、打脸升级)
📝 问题 4/5小说的核心冲突是什么
□ 生死存亡 / 查明真相 / 爱情阻碍
□ 复仇雪恨 / 权力争夺 / 成长突破 / 守护保护
📝 问题 5/5你计划创作多少章
□ 10章3-5万字
□ 15章4.5-7.5万字)
□ 20章6-10万字
□ 30章9-15万字
□ 50章15-25万字
□ 自定义
``` ```
确认后AI 进入**疯狂创作模式**,一章接一章地写下去。 **第二阶段:规划展示 + 二次确认**
AI 自动生成完整大纲和人物档案,展示给你确认:
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
规划完成!请确认以下内容:
基本信息
题材:悬疑推理
主角:男性主角(侦探)
核心冲突:查明真相
章节数20章
章节规划
第1章午夜凶铃 - 主角接到神秘电话
第2章第一具尸体 - 发现密室杀人案
第3章消失的证据 - 线索被人篡改
...
主要角色
主角:李明 - 资深刑警,冷静智慧
反派:张华 - 高智商罪犯
关键配角:王芳 - 法医专家
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
回复"确认"或"开始" → 立即进入疯狂创作模式
提出修改意见 → 调整后重新确认
```
**第三阶段:疯狂创作**
确认后AI 进入**疯狂创作模式**,一章接一章地写下去,无需再次确认。
你可以离开工作台,等待完成。
--- ---
@@ -79,19 +147,63 @@ novels/
## 📸 效果展示 ## 📸 效果展示
### 第一步:写作计划确认 ### 第一步:5 问逐一确认
![智能规划](assets/beginning-01.png) AI 逐一询问问题,你用上下箭头选择选项:
### 第二步:疯狂创作,等待全稿完成 ```
📝 问题 1/5你想要创作什么题材的小说
○ 悬疑推理(侦探、破案、解谜)
○ 现代言情(都市、职场、恋爱)
○ 古代言情(宫廷、江湖、穿越)
● 奇幻玄幻(魔法、异世界、修真) ← 你选择这个
...
```
### 第二步:查看规划并确认
AI 生成完整大纲和人物档案后,展示给你确认:
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
规划完成!请确认以下内容:
基本信息
题材:奇幻玄幻
主角:女性主角(修真者)
核心冲突:成长突破
章节数30章
章节规划(前 5 章)
第1章天降异象 - 灵根觉醒仪式
第2章拜入仙门 - 踏入修真界
第3章初次试炼 - 迷幻森林试炼
第4章遭遇强敌 - 面对宗门刁难
第5章突破瓶颈 - 顿悟筑基期
...
主要角色
主角:林雨 - 天灵根,坚韧不拔
反派:赵天 - 嫉妒主角天赋
关键配角:白师姐 - 宗门导师
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
回复"确认"或"开始" → 立即进入疯狂创作模式
```
### 第三步:疯狂创作,等待全稿完成
确认后立即进入创作模式AI 一章接一章地输出: 确认后立即进入创作模式AI 一章接一章地输出:
![章节输出](assets/ending-01.png) ```
✅ 第1章完成3247字
✅ 第2章完成3582字
✅ 第3章完成3412字
...
```
![连续创作](assets/ending-02.png) 几十分钟后,一部完整的 30 章小说初稿就完成了。你可以离开工作台,等待完成。
几十分钟后,一部完整的 20 章小说初稿就完成了。
--- ---
@@ -100,11 +212,16 @@ novels/
| 文件 | 内容 | | 文件 | 内容 |
|------|------| |------|------|
| `chapter-guide.md` | 章节结构设计指南(含 10 种强力开头技巧) | | `chapter-guide.md` | 章节结构设计指南(含 10 种强力开头技巧) |
| `hook-techniques.md` | 悬念设置技巧18 种结尾钩子类型) | | `hook-techniques.md` | 悬念设置技巧10 种结尾钩子类型) |
| `character-building.md` | 人物塑造方法 | | `character-building.md` | 人物塑造方法 |
| `dialogue-writing.md` | 对话写作规范 | | `dialogue-writing.md` | 对话写作规范 |
| `quality-checklist.md` | 质量检查清单(交付前自查) | | `quality-checklist.md` | 质量检查清单(交付前自查) |
| `plot-structures.md` | 情节结构模板 | | `plot-structures.md` | 情节结构模板 |
| `consistency.md` | 连贯性保证机制(人物、情节、节奏) |
| `content-expansion.md` | 内容扩充技巧7 种自然扩充方法) |
| `outline-template.md` | 大纲模板(章节规划、悬念线) |
| `character-template.md` | 人物档案模板 |
| `chapter-template.md` | 章节文件模板 |
--- ---

493
SKILL.md
View File

@@ -1,192 +1,175 @@
--- ---
name: chinese-novelist name: chinese-novelist
description: | description: |
长时间创作指定主题的极其吸引人的中文短篇小说。支持分章节创作,每章均有引人入胜的故事剧情,章节之间有关联有钩子 分章节创作引人入胜的中文小说。支持各种题材(悬疑/言情/奇幻/科幻/历史等支持10-50章长篇创作每章3000-5000字结尾设置悬念钩子。强调深度润色去除AI痕迹确保文字自然流畅
用于:创作短篇小说系列、分章节连续故事、悬疑/奇幻/言情/科幻等各类题材小说 当用户要求:写小说、创作故事、分章节写作、连续剧情、章节悬念、长篇小说时使用
当用户要求:写小说、创作故事、分章节写作、连续剧情、章节悬念、长篇故事时使用。
metadata: metadata:
trigger: 创作中文小说、分章节故事 trigger: 创作中文小说、分章节故事、长篇小说创作
source: 基于小说创作最佳实践设计 source: 基于小说创作最佳实践设计
--- ---
# Chinese Novelist: 中文小说创作助手 # Chinese Novelist: 中文小说创作助手
分章节创作引人入胜的中文短篇小说,每章结尾设置悬念钩子。 ## 核心流程
## 核心创作流程 ### 第一阶段5问确认
### 前置阶段创作规划5问确认后疯狂创作 **使用 AskUserQuestion 工具逐一询问用户,每个问题提供选项供用户选择。**
**快速确认5个核心问题后立即进入疯狂创作模式**
--- ---
#### 📝 问题 1题材与风格 **问题1题材与风格**
**A. 悬疑推理**(紧张刺激) ```
**B. 现代言情**(甜宠/虐恋) Question: 你想要创作什么题材的小说?
**C. 古代言情**(宫廷/江湖) Options:
**D. 奇幻玄幻**(修仙/魔法 - 悬疑推理(侦探、破案、解谜
**E. 科幻未来**(星际/赛博 - 现代言情(都市、职场、恋爱
**F. 武侠仙侠**(江湖/修仙 - 古代言情(宫廷、江湖、穿越
**G. 历史架空**(权谋/战争 - 奇幻玄幻(魔法、异世界、修真
**H. 都市现实**(职场/商战 - 科幻未来(科技、太空、末世
- 武侠仙侠(江湖、门派、飞升)
- 历史架空(朝堂、战争、权谋)
- 都市现实(生活、成长、社会)
```
> 选择 A-H或自定义 用户选择后记录:`题材 = [用户选择]`
--- ---
#### 📝 问题 2主角设定 **问题2主角设定**
**A. 男性**(学生/侦探/医生/商人/官员/修仙者... ```
**B. 女性**(学生/明星/医生/公主/修仙者... Question: 主角是什么设定?
**C. 双主角**(一男一女,恋人/搭档/对手) Options:
**D. 群像**3-5人轮流视角 - 男性主角(独角戏
- 女性主角(独角戏)
- 双主角(男女双线)
- 群像戏(多线叙事)
```
> 选择 A-D并说明职业/身份: 用户选择后,如需进一步询问职业/身份,继续追问。
记录:`主角 = [用户选择]` + `职业/身份 = [用户回答]`
--- ---
#### 📝 问题 3主角性格 **问题3主角性格**
**A. 热血正义**(嫉恶如仇、勇往直前) ```
**B. 冷静智慧**(理性分析、布局谋划) Question: 主角的核心性格是?
**C. 温暖治愈**(善良温和、乐于助人) Options:
**D. 高冷孤傲**(独来独往、外冷内热 - 热血正义(积极、勇敢、有担当
**E. 阴暗腹黑**(心思深沉、亦正亦邪 - 冷静智慧(理性、谋略、高智商
**F. 成长逆袭**(从弱小到强大 - 温暖治愈(善良、温柔、有同理心
- 高冷孤傲(冷漠、独立、强大)
- 阴暗腹黑(心机、算计、复仇)
- 成长逆袭(从弱到强、打脸升级)
```
> 选择 A-F或自定义 记录:`性格 = [用户选择]`
--- ---
#### 📝 问题 4核心冲突 **问题4核心冲突**
**A. 生死存亡**(需要活下去) ```
**B. 查明真相**(揭开谜团) Question: 小说的核心冲突是什么?
**C. 爱情阻碍**(克服阻碍在一起) Options:
**D. 复仇雪恨**(踏上复仇路 - 生死存亡(生存危机、逃出生天
**E. 权力争夺**(各方博弈 - 查明真相(寻找答案、揭露秘密
**F. 成长突破**(突破自我 - 爱情阻碍(追求真爱、克服阻碍
**G. 守护保护**(守护某人/物 - 复仇雪恨(复仇计划、伸张正义
- 权力争夺(竞争上位、资源争夺)
- 成长突破(自我突破、实现价值)
- 守护保护(守护重要的人或事)
```
> 选择 A-G或自定义 记录:`核心冲突 = [用户选择]`
--- ---
#### 📝 问题 5章节数量 **问题5章节数量**
**A. 10章**短篇约3万字 ```
**B. 15章**中短篇约5万字 Question: 你计划创作多少章?
**C. 20章**中篇约8万字【推荐】 Options:
**D. 自定义** - 10章短篇约3-5万字
- 15章中短篇约4.5-7.5万字)
- 20章中篇约6-10万字
- 30章中长篇约9-15万字
- 50章长篇约15-25万字
- 自定义(输入具体章节数)
```
> 选择 A-D 记录:`章节数 = [用户选择]`
--- ---
#### ✅ 规划锁定,立即开写 **5问收集完成后**然后进入"第二阶段:规划"。
收集完5个问题后**直接进入创作流程**,无需再次确认。
生成完整规划并说明:
> **✅ 规划完成,开启疯狂创作模式!**
>
> 题材:[XXX] | 主角:[XXX] | 冲突:[XXX] | 章节数:[X]章
> 立即开始创作第1章...
此后直接进入"零阶段:项目设置",开始疯狂创作。
--- ---
### 阶段:项目设置 ### 第二阶段:规划 + 二次确认
**每次创作新建项目文件夹,每章一个独立 md 文件。** 执行以下步骤:
1. **创建项目文件夹** 1. **创建项目文件夹**`novels/[小说名称]/`
``` 2. **生成大纲**:创建 `00-大纲.md`,使用 `references/outline-template.md` 模板,填入完整的章节规划
novels/ 3. **生成人物档案**:创建 `01-人物档案.md`,使用 `references/character-template.md` 模板,创建主角、反派、配角档案
└── [小说名称]/
├── 00-大纲.md
├── 01-人物档案.md
├── 第01章-[章节标题].md
├── 第02章-[章节标题].md
└── ...
```
2. **创建基础文件** 完成后,向用户展示规划摘要并请求确认,等待用户确认。用户同意后,进入"第三阶段:疯狂创作"。
- `00-大纲.md` - 故事概述、章节大纲、悬念规划
- `01-人物档案.md` - 所有主要角色的详细档案
3. **章节命名规范** ---
- 格式:`第XX章-[章节标题].md`XX 为两位数字)
- 示例:`第01章-深夜敲门.md`、`第02章-消失的客人.md`
### 第阶段:规划 ### 第阶段:疯狂创作
1. **确定核心要素** **重要:全程无需再次向用户确认,必须逐一章创作**
- 主题/题材(悬疑、奇幻、言情、科幻、历史等)
- 核心冲突(主角想要什么?什么阻止了他?)
- 预计章节数(建议 10-20 章中篇小说,最低不少于 8 章)
2. **创建人物档案** 按顺序逐章创作,每章执行完整的创作流程(见下方"逐章创作"),完成一章后自动继续下一章,直到所有章节完成。
- 主角:姓名、年龄、外貌、性格、动机、缺陷
- 反派/对手:与主角的冲突点
- 配角:推动剧情的关键人物
3. **规划章节大纲** ---
- 每章核心事件
- 章节间的情节递进关系
- 每章结尾的悬念点
### 第二阶段:逐章创作 ## 疯狂创作——逐章创作流程
对每一章 每章创作时严格执行以下步骤
**【写前准备】** #### 1. 写前分析
1. **读取 00-大纲.md** - 查看当前 TODO list,确认本章任务 1. 读取 `00-大纲.md` - 查看TODO list和已完成章节的摘要
2. **读取章节摘要** - 查看所有已完成章节的摘要,确保连贯性 2. 读取 `00-大纲.md` 中上一章的摘要
3. **读取上一章** - 读取上一章文件,了解当前悬念 3. 更新`00-大纲.md` 中 TODO list - 将本章标记为"进行中"
4. **更新 TODO list** - 将当前本章标记为"进行中" 4. 设计开头钩子 - **最关键**前20%必须有即时冲突 → [chapter-guide.md](references/chapter-guide.md)10种开头技巧
5. **设置本章目标** - 本章要推进什么剧情?揭示什么信息? 5. 规划场景 - 确定本章需要3-5个场景
6. **设计开头钩子** - **最关键步骤**:前 20% 必须有即时冲突/重大转折/行动场景
7. **规划场景** - 确定本章需要 3-5 个场景以确保足够长度
**【撰写正文】** #### 2. 撰写
8. **创建章节文件** - 使用 Write 工具创建新章节 md 文件 6. 创建章节文件 - 使用`references/chapter-template.md` 模板
9. **撰写正文** - 遵循章节写作指南(见 [chapter-guide.md](references/chapter-guide.md) 7. 撰写正文 - **每章必须达到3000-5000字**
- **开头检查**:前 20% 是否极其吸引人?如果不是,重写 - 开头检查前20%是否极其吸引人?
- **字数要求**:每章 3000-5000 字,最低 2500 字 - 对话规范 → [dialogue-writing.md](references/dialogue-writing.md)
- 如果字数不足使用内容扩充技巧 - 内容不足使用 [content-expansion.md](references/content-expansion.md) 扩充技巧
10. **设置结尾钩子** - 使用悬念技巧(见 [hook-techniques.md](references/hook-techniques.md) 8. 设置结尾钩子 → [hook-techniques.md](references/hook-techniques.md)10种钩子类型
11. **质量检查** - 对照检查清单(见 [quality-checklist.md](references/quality-checklist.md) 9. **字数检查** - 必须使用脚本检查字数:`python scripts/check_chapter_wordcount.py <章节文件路径>` 低于3000字必须使用扩充技巧重写
**【写后收尾】** #### 3. 撰写后优化
12. **生成章节摘要** - 在章节文件末尾添加摘要300-500字 10. 连贯性检查 → [consistency.md](references/consistency.md) - 人物一致性、情节连贯、节奏控制
13. **追加摘要到大纲** - 将本章摘要追加到 `00-大纲.md` 的"章节摘要"区域 11. **深度润色去除AI味** - 重点检查并修改:
14. **更新大纲状态** - 在 `00-大纲.md` 中标记本章已完成、记录实际字数 - **去除过度修饰的形容词**:删减"璀璨"、"瑰丽"、"绚烂"等AI常用词堆砌
15. **更新 TODO list** - 将当前本章标记为"已完成",下一章标记为"进行中" - **减少抽象陈述**:把"心中涌起复杂的情感"改为具体动作/对话
- **打破四字格律**:避免"心潮澎湃、热血沸腾"等陈词滥调
- **增加口语化表达**:人物对话要有个性,避免"书面语套话"
- **优化节奏感**:长句和短句交替,避免句式单调
- **细节具象化**:用具体的视觉/听觉/嗅觉细节替代笼统描述
12. **字数检查** - 必须使用脚本检查字数:`python scripts/check_chapter_wordcount.py <章节文件路径>` 低于3000字必须使用扩充技巧重写
### 第三阶段:连贯性检查 #### 4. 最后收尾
1. **人物一致性** - 人物行为符合其性格设定 13. 生成章节摘要 - 在 `00-大纲.md` 添加摘要300-500字
2. **情节连贯** - 前后伏笔有呼应,逻辑闭环 14. 更新状态 - `00-大纲.md` 中 TODO list - 将本章标记为"完成"
3. **节奏控制** - 高潮低谷分布合理
## 快速参考 ---
| 任务 | 参考文件 |
|------|----------|
| 章节结构设计 | [chapter-guide.md](references/chapter-guide.md) |
| 悬念设置技巧 | [hook-techniques.md](references/hook-techniques.md) |
| 人物塑造方法 | [character-building.md](references/character-building.md) |
| 对话写作规范 | [dialogue-writing.md](references/dialogue-writing.md) |
| 质量检查清单 | [quality-checklist.md](references/quality-checklist.md) |
| 情节结构模板 | [plot-structures.md](references/plot-structures.md) |
## 三大黄金法则 ## 三大黄金法则
@@ -194,251 +177,19 @@ metadata:
2. **冲突驱动剧情** - 每章必须有冲突或转折 2. **冲突驱动剧情** - 每章必须有冲突或转折
3. **悬念承上启下** - 每章结尾必须留下钩子 3. **悬念承上启下** - 每章结尾必须留下钩子
## 第四法则:开头即高潮 ### 字数检查脚本
**章节前 20% 必须极其吸引人,否则读者会放弃。** 使用 `scripts/check_chapter_wordcount.py` 检查章节字数:
每章开头的首要任务是**立即抓住读者**。读者只有几秒钟的耐心。
### 前20% 必须包含
1. **即时冲突** - 立即呈现问题/危机/紧张
2. **重大信息** - 揭示关键线索或转折
3. **情感冲击** - 让读者产生强烈情绪反应
4. **行动场景** - 从动作/追逐/对抗中开始
### 开头禁忌(绝对避免)
- ❌ 天气描写("那天天气晴朗..."
- ❌ 主角起床/洗漱/吃早餐
- ❌ 回顾上章内容(读者已经知道)
- ❌ 缓慢的场景铺垫
- ❌ 大段背景说明
- ❌ 平淡的日常对话
### 开头黄金公式
```
前 20% = 即时冲突 + 重大转折 + 行动开始
```
示例:
```
错误:李明醒来,阳光照进房间。他想起昨天收到的那封信...
正确:信封上的血迹还没干。李明盯着那个熟悉的签名,手指在颤抖...
```
## 内容扩充技巧
当章节内容不足时,使用以下技巧自然扩充:
### 1. 场景细节描写
不要只说"他走进房间",描写:
- 房间的布局、光线、气味
- 物品的细节和质感
- 环境对人物的影响
- 人物在空间中的移动
### 2. 人物内心活动
展示而非讲述内心世界:
- 角色的犹豫和纠结
- 过去记忆的闪回1-2 段)
- 对未来的担忧和期待
- 道德选择的内心辩论
### 3. 对话扩展
不要只推进剧情,让对话:
- 展现人物性格和说话方式
- 包含潜台词和暗示
- 有来回交锋和试探
- 偶尔跑题再拉回(更真实)
### 4. 感官体验
调动五感描写:
- 视觉:颜色、光影、形状
- 听觉:声音、音乐、沉默
- 触觉:温度、质感、疼痛
- 嗅觉:气味、香味、腐臭
- 味觉:食物、饮料、血腥味
### 5. 次要情节线
在主剧情中穿插:
- 配角的小故事
- 暗线的发展
- 伏笔的埋设
- 人物关系的微妙变化
### 6. 节奏放慢
关键时刻慢下来描写:
- 动作场景的分解
- 情感转变的过程
- 发现真相的时刻
- 紧张对峙的延展
### 7. 环境烘托
用环境反映情绪:
- 天气和氛围
- 社会环境背景
- 文化习俗细节
- 时代特征展现
### 扩充原则
- **自然融入** - 扩充内容要服务于故事,不要注水
- **保持张力** - 即使扩充场景也不能失去冲突
- **推进主线** - 所有扩充最终都要指向核心剧情
## 章节长度建议
**最低要求**:每章不低于 2500 字
**推荐长度**
- **中篇小说**:每章 3000-5000 字10-20 章,总计 3-10 万字)
- **长篇小说**:每章 4000-6000 字20+ 章,总计 10 万字以上)
**重要**:宁可少一章,也不要章节过短。如果某章内容不足,考虑:
- 增加场景细节描写
- 扩展人物内心活动
- 添加对话互动
- 深化次要情节线
## 输出格式
### 章节文件模板
每个章节 md 文件格式:
```markdown
# 第[X]章:[章节标题]
## 本章概要
- **核心事件**[一句话概括本章发生的事]
- **承接上章**[回应上一章的悬念]
- **悬念钩子**[本章结尾的钩子]
---
## 正文
[章节正文内容 3000-5000 字,最低不低于 2500 字]
...
---
## 章节备注
本章悬念:[简述结尾钩子]
下章预告:[可选1-2 句话]
伏笔标记:[如果埋下伏笔,在此记录]
```
### 大纲文件模板 (00-大纲.md)
```markdown
# [小说名称] 大纲
## 基本信息
- **题材**[悬疑/奇幻/言情/科幻等]
- **预计章节数**[10-20] 章
- **目标字数**:每章 3000-5000 字,总计 [X] 万字
- **核心冲突**[主角想要什么?什么阻止了他?]
## TODO List
### 待创作
- [ ] 第[X]章:[章节标题] - [核心事件]
### 进行中
- [ ] 第[X]章:[章节标题] - [核心事件]
### 已完成
- [x] 第[X]章:[章节标题] - [核心事件][字数]字)
- [x] 第[X]章:[章节标题] - [核心事件][字数]字)
...
## 章节规划
| 章节 | 标题 | 核心事件 | 悬念钩子 | 字数 | 状态 |
|-----|------|---------|---------|------|------|
| 第1章 | | | | | 待创作 |
| 第2章 | | | | | 待创作 |
| ... | | | | | |
## 全书悬念线
- **主线悬念**[核心谜题]
- **支线悬念**[其他悬念]
- **终极揭秘**[最终答案]
## 字数统计
- 已完成章节数:[0] 章
- 累计字数:[0] 字
- 完成进度:[0]%
---
## 章节摘要
### 第[X]章:[章节标题]
**摘要**[300-500字概括本章核心内容、重要情节、人物变化、悬念揭示等]
---
(后续章节摘要依次追加)
```
### 人物档案模板 (01-人物档案.md)
```markdown
# 人物档案
## 主角
### [角色姓名]
- **年龄/职业**
- **外貌特征**
- **性格核心**
- **核心价值观**
- **最大恐惧**
- **致命缺陷**
- **内心渴望**
- **背景故事**
## 反派
### [角色姓名]
- [同主角格式]
## 配角
### [角色姓名]
- [简化格式]
```
---
## 文件操作命令
**创建新项目时:**
```bash ```bash
mkdir -p novels/[小说名称] # 检查单个章节
python scripts/check_chapter_wordcount.py novels/小说名/第01章.md
# 检查所有章节
python scripts/check_chapter_wordcount.py --all novels/小说名/
# 自定义最小字数
python scripts/check_chapter_wordcount.py novels/小说名/第01章.md 3500
``` ```
**创建章节文件:** 低于3000字的章节必须使用 [content-expansion.md](references/content-expansion.md) 的扩充技巧进行扩充。
使用 Write 工具,路径格式:`novels/[小说名称]/第XX章-[标题].md`
**写前必读:**
- 使用 Read 工具读取 `00-大纲.md` - 查看 TODO list 和章节摘要
- 使用 Read 工具读取上一章文件 - 了解当前悬念
**写后必做:**
- 在章节文件末尾添加摘要300-500字
- 将摘要追加到 `00-大纲.md` 的"章节摘要"区域
- 更新 `00-大纲.md` 中的 TODO list 和状态
---
## 连贯性保证机制
为确保长时间创作的故事连贯性:
1. **写前阅读摘要** - 每次开始写新章节前,必须阅读 `00-大纲.md` 中所有已完成章节的摘要
2. **穿针引线** - 在新章节中呼应前文埋下的伏笔和线索
3. **人物状态跟踪** - 注意人物在各章节中的变化和成长
4. **悬念线延续** - 确保主线悬念逐步推进,不要遗忘

View File

@@ -0,0 +1,19 @@
# 第[X]章:[章节标题]
## 本章概要
- **核心事件**[一句话概括本章发生的事]
- **承接上章**[回应上一章的悬念]
- **悬念钩子**[本章结尾的钩子]
---
## 正文
[章节正文内容 3000-5000 字,最低不低于 2500 字]
---
## 章节备注
- 本章悬念:[简述结尾钩子]
- 下章预告:[可选1-2句话]
- 伏笔标记:[如果埋下伏笔,在此记录]

View File

@@ -0,0 +1,30 @@
# 人物档案
## 主角
### [角色一姓名]
- **年龄/职业**
- **外貌特征**
- **性格核心**
- **核心价值观**
- **最大恐惧**
- **致命缺陷**
- **内心渴望**
- **背景故事**
- **MBTI:**
### [角色二姓名]
......
## 反派
### [角色姓名]
- [同主角格式]
## 配角
### [角色姓名]
- [简化格式]

40
references/consistency.md Normal file
View File

@@ -0,0 +1,40 @@
# 连贯性保证机制
为确保长时间创作的故事连贯性:
## 写前必读
每次开始写新章节前:
1. 阅读 `00-大纲.md` 中所有已完成章节的摘要
2. 读取上一章文件,了解当前悬念
3. 检查人物状态(位置、情绪、关系)
## 穿针引线
在新章节中:
- 呼应前文埋下的伏笔和线索
- 提及之前发生的事件(自然融入)
- 让人物行为与之前保持一致
## 人物状态跟踪
注意人物在各章节中的变化和成长:
- 位置变化(人在哪里)
- 情绪状态(当前心情)
- 关系变化(与其他角色关系)
- 能力变化(获得新技能/信息)
## 悬念线延续
确保主线悬念逐步推进:
- 每章至少回应一个旧悬念
- 提出新悬念或升级现有悬念
- 不要遗忘任何未解的悬念
## 一致性检查清单
- [ ] 人物行为符合其性格设定
- [ ] 前后伏笔有呼应,逻辑闭环
- [ ] 高潮低谷分布合理,节奏恰当
- [ ] 时间线连贯(没有时间跳跃错误)
- [ ] 场景转换自然(没有凭空出现)

View File

@@ -0,0 +1,66 @@
# 内容扩充技巧
当章节内容不足时,使用以下技巧自然扩充。
## 1. 场景细节描写
不要只说"他走进房间",描写:
- 房间的布局、光线、气味
- 物品的细节和质感
- 环境对人物的影响
- 人物在空间中的移动
## 2. 人物内心活动
展示而非讲述内心世界:
- 角色的犹豫和纠结
- 过去记忆的闪回1-2段
- 对未来的担忧和期待
- 道德选择的内心辩论
## 3. 对话扩展
不要只推进剧情,让对话:
- 展现人物性格和说话方式
- 包含潜台词和暗示
- 有来回交锋和试探
- 偶尔跑题再拉回(更真实)
## 4. 感官体验
调动五感描写:
- 视觉:颜色、光影、形状
- 听觉:声音、音乐、沉默
- 触觉:温度、质感、疼痛
- 嗅觉:气味、香味、腐臭
- 味觉:食物、饮料、血腥味
## 5. 次要情节线
在主剧情中穿插:
- 配角的小故事
- 暗线的发展
- 伏笔的埋设
- 人物关系的微妙变化
## 6. 节奏放慢
关键时刻慢下来描写:
- 动作场景的分解
- 情感转变的过程
- 发现真相的时刻
- 紧张对峙的延展
## 7. 环境烘托
用环境反映情绪:
- 天气和氛围
- 社会环境背景
- 文化习俗细节
- 时代特征展现
## 扩充原则
- **自然融入** - 扩充内容要服务于故事,不要注水
- **保持张力** - 即使扩充场景也不能失去冲突
- **推进主线** - 所有扩充最终都要指向核心剧情

View File

@@ -0,0 +1,47 @@
# [小说名称] 大纲
## 基本信息
- **题材**[悬疑/奇幻/言情/科幻等]
- **预计章节数**[10-20] 章
- **目标字数**:每章 3000-5000 字,总计 [X] 万字
- **核心冲突**[主角想要什么?什么阻止了他?]
## TODO List
### 待创作
- [ ] 第[X]章:[章节标题] - [核心事件]
### 进行中
- [ ] 第[X]章:[章节标题] - [核心事件]
### 已完成
- [x] 第[X]章:[章节标题] - [核心事件][字数]字)
- [x] 第[X]章:[章节标题] - [核心事件][字数]字)
## 章节规划
| 章节 | 标题 | 核心事件 | 悬念钩子 | 字数 | 状态 |
|-----|------|---------|---------|------|------|
| 第1章 | | | | | 待创作 |
| 第2章 | | | | | 待创作 |
## 全书悬念线
- **主线悬念**[核心谜题]
- **支线悬念**[其他悬念]
- **终极揭秘**[最终答案]
## 字数统计
- 已完成章节数:[0] 章
- 累计字数:[0] 字
- 完成进度:[0]%
---
## 章节摘要
### 第[X]章:[章节标题]
**摘要**[300-500字概括本章核心内容、重要情节、人物变化、悬念揭示等]
---
(后续章节摘要依次追加)

View File

@@ -0,0 +1,178 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
章节字数检查脚本
检查指定章节文件的字数低于3000字时提示需要扩充
"""
import os
import re
import sys
from pathlib import Path
# 修复 Windows 控制台编码问题
if sys.platform == 'win32':
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace')
def count_chinese_words(text: str) -> int:
"""统计中文字数排除标点符号和Markdown标记"""
# 移除Markdown标记
text = re.sub(r'#{1,6}\s*', '', text) # 标题
text = re.sub(r'\*\*(.*?)\*\*', r'\1', text) # 粗体
text = re.sub(r'\*(.*?)\*', r'\1', text) # 斜体
text = re.sub(r'~~(.*?)~~', r'\1', text) # 删除线
text = re.sub(r'`(.*?)`', r'\1', text) # 行内代码
text = re.sub(r'\[(.*?)\]\(.*?\)', r'\1', text) # 链接
# 统计中文字符(汉字)
chinese_chars = re.findall(r'[\u4e00-\u9fff]', text)
return len(chinese_chars)
def extract_content_from_chapter(file_path: Path) -> str:
"""从章节文件中提取正文内容(排除标题等元数据)"""
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
# 查找正文开始位置(通常是第一个一级标题或二级标题之后)
lines = content.split('\n')
# 跳过开头的元数据(如 # 第XX章 标题)
content_start = 0
for i, line in enumerate(lines):
if line.startswith('#') and '' in line:
content_start = i + 1
break
# 提取正文
main_content = '\n'.join(lines[content_start:])
return main_content
def check_chapter(file_path: str, min_words: int = 3000) -> dict:
"""检查单个章节的字数"""
path = Path(file_path)
if not path.exists():
return {
'file': str(path),
'exists': False,
'word_count': 0,
'status': 'error',
'message': f'文件不存在: {file_path}'
}
main_content = extract_content_from_chapter(path)
word_count = count_chinese_words(main_content)
status = 'pass' if word_count >= min_words else 'fail'
message = f'字数: {word_count}' + (
f' (✓ 达标)' if word_count >= min_words else f' (✗ 不足,需要至少 {min_words} 字)'
)
return {
'file': str(path),
'exists': True,
'word_count': word_count,
'status': status,
'message': message
}
def check_all_chapters(directory: str, pattern: str = '第*.md', min_words: int = 3000) -> list:
"""检查目录下所有符合模式的章节文件"""
dir_path = Path(directory)
if not dir_path.exists():
print(f'错误: 目录不存在 - {directory}')
return []
chapter_files = sorted(dir_path.glob(pattern))
results = []
for chapter_file in chapter_files:
result = check_chapter(str(chapter_file), min_words)
results.append(result)
return results
def print_results(results: list, min_words: int = 3000):
"""打印检查结果"""
if not results:
print('没有找到章节文件')
return
total_words = 0
passed = 0
failed = 0
print('\n' + '=' * 60)
print('章节字数检查报告')
print('=' * 60)
for result in results:
if not result['exists']:
print(f'\n{result["file"]}')
print(f' {result["message"]}')
continue
total_words += result['word_count']
if result['status'] == 'pass':
passed += 1
icon = ''
else:
failed += 1
icon = '⚠️ '
print(f'\n{icon} {Path(result["file"]).name}')
print(f' {result["message"]}')
print('\n' + '-' * 60)
print(f'总计: {len(results)} 章 | {passed} 章达标 | {failed} 章不足 | 总字数: {total_words:,}')
print('-' * 60)
if failed > 0:
print(f'\n⚠️ 有 {failed} 章内容不足 {min_words} 字,建议使用扩充技巧:')
print(' - 添加细节描写(环境、心理、动作)')
print(' - 增加对话场景')
print(' - 扩展人物内心活动')
print(' - 补充背景故事')
print(f'\n 参考: references/content-expansion.md')
def main():
"""主函数"""
min_words = 3000
if len(sys.argv) < 2:
print('用法:')
print(' 检查单个章节: python check_chapter_wordcount.py <章节文件路径> [最小字数]')
print(' 检查所有章节: python check_chapter_wordcount.py --all <目录路径> [最小字数]')
print('')
print('示例:')
print(' python check_chapter_wordcount.py novels/故事/第01章.md')
print(' python check_chapter_wordcount.py novels/故事/第01章.md 3500')
print(' python check_chapter_wordcount.py --all novels/故事')
print(' python check_chapter_wordcount.py --all novels/故事 3500')
return
if sys.argv[1] == '--all':
if len(sys.argv) < 3:
print('错误: 使用 --all 时需要指定目录路径')
return
directory = sys.argv[2]
min_words = int(sys.argv[3]) if len(sys.argv) > 3 else 3000
results = check_all_chapters(directory, min_words=min_words)
print_results(results, min_words)
else:
file_path = sys.argv[1]
min_words = int(sys.argv[2]) if len(sys.argv) > 2 else 3000
result = check_chapter(file_path, min_words)
print_results([result], min_words)
if __name__ == '__main__':
main()