mirror of
https://github.com/PenglongHuang/chinese-novelist-skill.git
synced 2026-03-27 14:39:26 +08:00
refactor: 结构化skill
This commit is contained in:
155
README.md
155
README.md
@@ -1,5 +1,5 @@
|
|||||||
<div align="center">
|
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
# 🎭 chinese-novelist skill
|
# 🎭 chinese-novelist skill
|
||||||
|
|
||||||
### 让 AI 为你写一部完整的中文小说
|
### 让 AI 为你写一部完整的中文小说
|
||||||
@@ -7,8 +7,7 @@
|
|||||||
[](https://claude.com/claude-code)
|
[](https://claude.com/claude-code)
|
||||||
[](LICENSE)
|
[](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 问逐一确认
|
||||||
|
|
||||||

|
AI 逐一询问问题,你用上下箭头选择选项:
|
||||||
|
|
||||||
### 第二步:疯狂创作,等待全稿完成
|
```
|
||||||
|
📝 问题 1/5:你想要创作什么题材的小说?
|
||||||
|
○ 悬疑推理(侦探、破案、解谜)
|
||||||
|
○ 现代言情(都市、职场、恋爱)
|
||||||
|
○ 古代言情(宫廷、江湖、穿越)
|
||||||
|
● 奇幻玄幻(魔法、异世界、修真) ← 你选择这个
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
### 第二步:查看规划并确认
|
||||||
|
|
||||||
|
AI 生成完整大纲和人物档案后,展示给你确认:
|
||||||
|
|
||||||
|
```
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
规划完成!请确认以下内容:
|
||||||
|
|
||||||
|
基本信息
|
||||||
|
题材:奇幻玄幻
|
||||||
|
主角:女性主角(修真者)
|
||||||
|
核心冲突:成长突破
|
||||||
|
章节数:30章
|
||||||
|
|
||||||
|
章节规划(前 5 章)
|
||||||
|
第1章:天降异象 - 灵根觉醒仪式
|
||||||
|
第2章:拜入仙门 - 踏入修真界
|
||||||
|
第3章:初次试炼 - 迷幻森林试炼
|
||||||
|
第4章:遭遇强敌 - 面对宗门刁难
|
||||||
|
第5章:突破瓶颈 - 顿悟筑基期
|
||||||
|
...
|
||||||
|
|
||||||
|
主要角色
|
||||||
|
主角:林雨 - 天灵根,坚韧不拔
|
||||||
|
反派:赵天 - 嫉妒主角天赋
|
||||||
|
关键配角:白师姐 - 宗门导师
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
回复"确认"或"开始" → 立即进入疯狂创作模式
|
||||||
|
```
|
||||||
|
|
||||||
|
### 第三步:疯狂创作,等待全稿完成
|
||||||
|
|
||||||
确认后立即进入创作模式,AI 一章接一章地输出:
|
确认后立即进入创作模式,AI 一章接一章地输出:
|
||||||
|
|
||||||

|
```
|
||||||
|
✅ 第1章完成(3247字)
|
||||||
|
✅ 第2章完成(3582字)
|
||||||
|
✅ 第3章完成(3412字)
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||

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