ソース情報
- リポジトリ
- cwjdong-design/novel
- ソースの最終更新活動
- 2026年8月12日 17:30
- 検出された SKILL.md の言語
- 中国語
- スター
- 0
- フォーク
- 0
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
SOC 職業分類に基づく
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/cwjdong-design/novel --skill novel-editing-patternsコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
SKILL.md を表示中
| name | novel-editing-patterns |
| description | 网文章节修复与质量提升模式——爽点追回、弧线植入、节奏调整、字数补全 |
| category | novel |
来源:实战项目验证过的可复用模式。以下方法论不绑定特定书籍,案例部分标注为示例。
当章节硬性要求约 2200 字,同时出现环境补字、动作碎片、重复确认、静态等待或爽点稀释时,必须先加载 references/2200-effective-content-standard.md。
核心纠偏: 不能以缩短章节解决节奏问题。应先保证剧情容量,再让 2200 字由冲突回合、人物决策、反方应对、结果兑现和反馈构成。该参考中的字数口径与内容密度双门槛,覆盖本技能后文所有宽松字数建议。
逐章检查 5 项(钱落地/震惊反应/打脸/收入对比/系统神秘化),零命中 = 荒漠章。连续 ≥3 章零爽点 = 沙漠段。
章节若硬性要求约 2200 字,还要检查内容密度:每 500 字是否发生局势、利益、关系或信息变化。不能因为“有转折”就给节奏高分;必须检查转折间隔、重复信息、静态动作和爽点兑现链。
策略 1:系统被动数据对比(破坏最小,≈150 字)
章末系统面板后插入一次性数据对比。系统不说话,只报数。灰色小字。
示例(仅作参考):
码头日均收虾一百七。大城市水产公司日均收虾八百六。收购价差百分之十二。
策略 2:算牌内心独白(≈400 字)
主角过资源/牌面 + 对手的牌。必须算完→行动暗示,不能算了就完。
示例:码头底座 / 冷库合伙人 / 系统日结 →「对手看不到第三张牌」。
策略 3:外部视角验证(≈300 字)
旁观者/对手的眼睛看主角成长。从别人嘴里说出来比主角自己说有力。
示例:旁观者/对手的视角——「这个码头跟以前不一样了」「照实说」。
策略 4:章末强钩子(破坏较大,≈150 字)
新信息打破平衡:电话/短信/突然出现的人/系统数据跳变。仅在章末钩子虚弱时用。
在角色早期出场的三个关键章中各植入一个 100-150 字的独立瞬间——不是帮主角,是她自己的生活:
| 节点 | 时机 | 内容方向 |
|---|---|---|
| 节点 1 | 首次出场后 | 她去哪?她有什么习惯?她有什么从来不去的? |
| 节点 2 | 决策/签约后 | 她停了一下的瞬间在想什么?在看什么? |
| 节点 3 | 独处场景 | 她一个人的时候做什么?什么东西她拿在手里没放下? |
串联:不停→停一秒→一个人黑暗中握着冻虾。不是一场大戏,是背景噪音。读者回头看时会自己连起来。
保留 A 线(核心情感),注入一条平行 B 线(主线压力)。B 线视角从外部切入——对手/旁观者。
示例:A 线 = 人情/家庭线。B 线 = 主线压力(对手的视角)——他们看到主角地盘变了,报告「无异常」得到回复「继续盯着」。
效果:人情不砍、压迫感注入、章末双线收束。
自动扫描 → 诊断报告 → 文档修复(delegate_task) →
字数补全(Claude Code CLI sonnet) → 爽点注入(Claude Code CLI sonnet) →
读者审查(Claude Code CLI sonnet) → 验证扫描
分工铁律:
分卷细纲/ 为准。references/2200-effective-content-standard.md用户要求「控字数」「轻微删改」时,必须严格遵循以下规则:
实战信号:用户说「为什么改那么多」「这样不行吧」= 已经越界。立即恢复原版重新来过,减少删减量。
番茄后台显示字数为纯正文无空格字符数(含标点、数字、字母,不含空格/换行):
import re
lines = open('第N章.md').read().strip().split('\n')
body = '\n'.join(lines[2:])
text = re.sub(r'\s', '', body)
print(f'番茄字数≈{len(text)}')
连续创作时,助理会跳过 novel-main 7 步流程中的步骤(跳 PLOT、缩 REVIEW、跳 TRACK)。纸面约束挡不住势头压力。
~/.hermes/skills/novel/scripts/novel_step.sh — 状态锁。每步执行前 check,完成后 done。
novel_step.sh check DRAFT # ⚠️ BLOCKED 如果缺 PLOT
novel_step.sh done DRAFT # 标记完成
详见 novel-writing → references/general/workflow-lock.md
来源:实战项目中行政层级错误(虚构市/县/镇层级不一致)+ 同名实体地理位置冲突排查。
发现一个错误 → 先全局搜索,再修复。
不要只改发现的那一处。用 search_files 以错误关键词在所有章节中搜索同类模式。只有确认「仅此一处」才能只改一处。
| 执行顺序 | 扫描维度 | 搜索策略 | 示例 |
|---|---|---|---|
| 1 | 错误关键词级联 | 用发现的错误词搜全部章节 | 发现层级用词错误→搜所有相关行政区名 |
| 2 | 同类模式 | 思考错误属于哪类模式,搜同类 | 行政层级错误→搜所有上级+下级行政区名 |
| 3 | 关联实体 | 与错误相关的其他实体是否也有问题 | 某区错→检查其他区/镇是否正确 |
案例1:行政层级错误
发现:某个虚构行政区的层级使用不一致(如将「市」误写为「县」,或将「镇」误写为「县」)。
扫描:
案例2:地名位置逻辑
发现:不同章对同一地点的地理定位矛盾(同一实体在不同章节出现在不同位置)。
扫描:
结论:跨章同名实体存在位置冲突。
修改地点参照时,必须核验角色的当前位置:
⚠️ 常见推理陷阱: 当发现某个地点参照错误时,不要只换地名,要重建场景的物理可行性。例如角色站在本地码头,距离大城市500km,不可能「看」到那边。正确做法是替换成本地可感知的参照物,同时更换视角动词。
核验方法:
一个命名实体(市场/机构/店面/大楼)在全书中只能有一个地理位置。如果它在不同章节出现在不同地方,处理方式:
来源:2026-07-27 1-30章全量逐章深度审查实践。用户三个纠正信号:
- 「你不会找?」= 不要问文件路径,主动 find
- 「怎么都是好话?」= 诚实审查,不要心软,不能说假话
- 「有没有逻辑问题 有没有坑 有没有上下剧情对不上的问题」= 三线检查:时间线一致性/人物行为一致性/线索闭环
诚实优先,具体优先,对抗心软。 用户花钱花时间,说假话就是浪费用户的钱。
每章三问必答:弃点?爽点?想看下一章?
| 维度 | 检查内容 | 输出要求 |
|---|---|---|
| 开头吸引力 | 前300字能不能抓住人?第一句有没有信息量? | 评级+理由 |
| 弃书点排查 | 哪里想划走?具体到段落 | 评级+具体段落原因 |
| 爽点落实 | 至少1个实爽点,连续3章零爽点=沙漠段 | 评级+具体爽点描述 |
| 章尾钩子 | 看完想不想点下一章 | 评级+钩子类型 |
每次全量审查必须额外检查:
出现以下任意一条,立即停止,重新逐字阅读:
见 references/case-studies/读者审查标准.md——包含审查人设、四维框架、全量审查输出格式、评审纪律、对抗心软检查清单、分批审查策略。
来源:2026-07-27 全量审查修复(14项,12章,约1800字增补)。
深度审查报告产出后,按以下顺序分阶段执行:
| 阶段 | 内容 | 派发方式 | 典型件数 |
|---|---|---|---|
| S级(紧急) | 机械清洁(删残留/补标题/修格式)+ 关键爽点注入 | 机械→主Agent patch;创作→Claude Code (sonnet) | 3-5项 |
| A级(核心) | 结构性重写(拆PPT式独白/压缩科普/加爆点尾钩) | Claude Code (sonnet)(≥100字创作) | 2-4项 |
| A级(核心) | 结构性重写(拆PPT式独白/压缩科普/加爆点尾钩) | Claude Code (sonnet)(≥100字创作) | 2-4项 |
问题:当 prompt 较长/复杂时,模型可能只输出变更摘要("三个修改完成"),而非完整章节。
症状:终端输出以描述性文字开头,如「三个修改已全部完成。修改1…修改2…」,没有以 ## 第X章 开头的完整正文。
防御:
## 第 或 # 第)。如果不是 → 摘要模式。任何对 01-正文存稿/ 的修改必须先行备份:
python3 ~/.hermes/skills/novel/scripts/backup_chapter.py <path>
多章可批量:
for f in 第17章 第18章; do
python3 ~/.hermes/skills/novel/scripts/backup_chapter.py \
~/novels/books/<书名>/01-正文存稿/$f.md
done
consistency_check.py --book <书名> → 7/7review_scan.py 各章 → 零 Level 2来源:实战项目中方言过量(每章15-22行→3-5处)系统性修正经验。适用于任何方言类型。
审查清单中「方言检查」连续多章不通过,或用户指出「滥用方言」。
扫描 → 分类 → 决定保留/替换 → 批量patch → 验证 → 更新书配置
# 通用方言特征字扫描(以粤语为例,其他方言替换特征字即可)
canto_chars = ['嘅','唔','佢','咗','喺','哋','冇','咩','睇','啲','嘢','嚟','乜','係','俾','咁']
# 按章节统计含方言行数,标准由书配置定义(如≤5行/章)
| 类型 | 保留条件 | 替换条件 |
|---|---|---|
| 该地域角色对话(有方言背景的角色) | 身份标识,1-2句/章 | 长段叙述或非角色特质对话 |
| 地域风味(当地老渔民/老居民) | 极简一两句地域风味 | 连续多句、信息性对话 |
| 情感动敌高潮 | 关键时刻1句 | 普通汇报/分析性对话 |
| 主角对话 永不保留 | — | 主角说方言破坏叙事视角一致性 |
| 叙述性文字 永不保留 | — | 叙述混方言不伦不类 |
# 1. 备份所有要改的章
python3 ~/.hermes/skills/novel/scripts/backup_chapter.py 第20章.md
# ...(可并行多个)
# 2. 逐章patch:先读完整上下文,再决定保留哪些
# 核心方法:保留的句子整句不动,其他全部替换为普通话等效表达
# 3. 验证:重新扫描确认粤语行数≤5
修完正文后,必须更新opus prompt/书配置中的方言规则,防止新章节重复犯同样的错。具体做法:
来源:2026-07-28 第10-30章全量扫描发现38处
---分割线+1处反引号代码块,跨11个章节。
opus在生成正文时倾向用---做场景分隔线。番茄小说平台不渲染Markdown,---会直接显示为三个减号,破坏阅读体验。同理**加粗**、`代码块`、> 引用也不应出现在正文中。
# 扫描所有章节
grep -rn '^---$' ~/novels/books/<书名>/01-正文存稿/
grep -rn '\*\*' ~/novels/books/<书名>/01-正文存稿/
grep -rn '`' ~/novels/books/<书名>/01-正文存稿/
清理方式:直接删除---行(场景之间空行衔接即可),删除反引号(保留文字内容),删除**(保留文字内容)。
DRAFT prompt铁律第3条已增加「禁止任何Markdown语法」明确禁止。REVIEW审查清单第6项已增加Markdown残留检查。新章节产出后扫描确认零残留。
来源:2026-08-04 第34章创作。opus 连续两次超时(300s+180s)零输出,用户发出 frustrateion 信号「怎么这么久,很不正常」。
单章 DRAFT 派发 claude -p --model sonnet 时,有时 模型会卡住完全无输出。background 重试不是解决方案——只是让用户多等一次。用户对等待时间极度敏感。
--model sonnet(deepseek-v4-pro),不用 opus(glm-5.2 长prompt卡死)每次扫描都产生 15-25 条 level1 误报,浪费审查时间。
review_scan.py 把白名单内地名与相邻标点/引号拼在一起,整个字符串去白名单匹配,自然不中。如 「码头、,穗城、。码头、色,穗城 都报 level1。
# 扫描后过滤:去掉首尾标点/引号后,检查剩余词是否在白名单内
hits = [h for h in scan_result['hits']
if h['type'] == '地名白名单外: 疑似地名']
false_positives = [h for h in hits
if h['word'].strip('「」。,;:!?、…— \n') in PLACE_WHITELIST]
real_issues = [h for h in hits if h not in false_positives]
来源:2026-08-07 第43章创作。两个独立问题连续出现。
现象:claude_runner.py 执行成功(exit_code=0),但 --target-file 指定的路径下没有文件。正文内容只在 JSON 的 result 字段中。
原因:claude_runner 的 --target-file 参数在 claude_code 未调用 Write 工具时(模型直接输出文本而非调用工具写文件)不会自动落盘。
防御:
--target-file 路径是否存在--output-file 的 JSON 中提取 result 字段,手动写入目标文件:import json, os
with open(output_json_path) as f:
r = json.load(f)
content = r.get('result', '')
if content and not os.path.exists(target_path):
with open(target_path, 'w') as f:
f.write(content)
现象:DRAFT 产出 3200+ 字(超标),POLISH prompt 要求压缩到 2200-2400,结果压到 ~1800 字(低于下限)。
原因:Claude Code 在收到「压缩到 N 字」指令时倾向激进删减——删掉所有描写层、合并对话回合、砍过渡段。
防御:
| 指令 | 实际产出 | 偏差方向 | 补救 |
|---|---|---|---|
| 「写 2200-2400 字」 | 2800-3300 字 | 偏长 20-40% | POLISH 压缩(可能压过头) |
| 「压缩到 2200-2400 字」 | 1700-1900 字 | 压过头 15-25% | 主 Agent patch 补有效剧情 |
| 「补字数到 2200」 | 2100-2200 字 | 略短 | 1-2 处 patch 微调 |
结论:Claude Code 对字数目标的控制不稳定。主 Agent 必须在 Claude Code 产出后跑 review_scan 验证,并准备好直接 patch 修正——不要反复派发 Claude Code 调字数。
出现“偏短→扩写过长→精简仍略超”的振荡时,按剩余偏差切换工具,禁止继续全文重写:
| 与合格区间的偏差 | 处理方式 |
|---|---|
| ≥300 字 | Claude Code 仅恢复/删除骨架中已列明的有效回合;prompt 同时给保留清单、禁增清单和目标窄区间 |
| 50—299 字 | 先备份,用段落级定点 Edit;每处指定原文、替换方向和不可动项 |
| <50 字 | 停止创作式 POLISH;只做 1—3 个精确替换,优先删重复解释或冗余修饰,不碰核心对白 |
每轮都必须:备份 → review_scan.py → 对话占比 → diff 对照授权范围。若目标文件已修改但 runner 非零退出,先读 result/events 和文件 diff;确认修改完整落盘时,不因退出码盲目重跑。
涉及“满两周、连续若干月、N 天后”等结果型章节,PREP 前必须做锚点算术:
细节见 references/timeline-and-wordcount-repair.md。
当用户明确说「如果只有 X 问题,可以通过」时:
Claude Code 的退出码、status=success、target_file_modified=true、stdout 自述和 --allowed-tools 都不能单独证明任务合规完成。DRAFT/POLISH 后必须同时验收:目标文件、events JSONL、result JSON、正文指标和写入范围。
review_scan.py 零命中后仍须人工审计隐性数量/时长、系统数据来源和法律/资本结论来源。backup_chapter.py 的时间戳文件仅是修改前保护副本;正式归档仍须生成 第N章_vK.md、设定快照、备份日志并校验哈希。完整检查表与判断矩阵见 references/claude-code-artifact-audit.md。
| 工具 | 用途 |
|---|---|
review_scan.py | 零容忍扫描(地名/系统词/禁用词) |
novel_scan.py --book <名> --chapters N | 违禁词扫描 |
consistency_check.py --book <路径> | 7维跨文档一致性 |
backup_chapter.py <路径> | 修改前备份 |
novel_step.sh check <步骤> | 流程锁——进入步骤前校验 |
claude --model sonnet --max-turns N -p \"...\" | 创作派发 |
delegate_task | 文档维护(非创作) |