迭代章纲
大致写清楚了卷纲后,可以开始用ai辅助迭代章纲了。
我使用的提示词是
第一卷不少于50章,每章不少于4000字,用两三句画来概括一下每一章发生的内容,给出每一章在故事中的作用。
ai给出了每一章的章纲后,会感觉”很水”,因为现在的世界书条目还不够多,后面十几章的内容缺少人物之间的交互,很多需要外部因素触发的事情都被主角等少数角色触发了,就显得平平淡淡。
多抽卡几次的话,前几张的章纲倒是能初步确立下来,然后就可以一边思考在哪些地方添加人物或者过渡事件,一边生成前几章试试有没有看头。
经过自己的修改后,完善了前5章的章纲。
以下内容是第一卷的章纲,前面的数字序号代表章节号。
1.诺斯替在布雷克的带领下进行传教宣讲,在宣讲之余听布雷克抱怨琐碎工作,在宣讲的时候遇到观众提问,诺斯替解答问题,在解答问题的时候体现出真理教会的鼓励批判思考,尊崇理性的特点。
2.诺斯替下班第二天接到第一项独立任务,调查城西小教堂“永恒烛台”失窃案,在介绍永恒烛台的时候,用临床体的文风介绍。诺斯替前往现场,观察被破坏的烛台底座、残留的蜡痕和门窗状况,记录细节。在和教堂司祭对话的时候体现出诺斯替玩世不恭的性格。
3.诺斯替继续查案,但发生某件事情让他查案进展受阻,诺斯替希望请求设备支持,<秘密>通常情况下会被拒绝,但审判长一直在暗中关注此事件,于是诺斯替的请求得到了她的暗中授意。</秘密>
4.诺斯替拜访神学研究院,寻求技术支援。研究员阿妮塔认出他,两人简短叙旧(提及曾为同学)。阿妮塔为他提供一副特制单片眼镜原型,初步解释其能解析物品表面微弱能量残留的功能。
5.诺斯替返回案发现场,使用单片眼镜仔细扫描,发现一种非蜡质的特殊油脂残留和几缕罕见的灰色纤维。布雷克对此线索不以为然,认为可能是无关人员留下的。
思考
继续这样迭代下去,还是太耗费脑细胞了,刷b站的时候看到网上有一个拆书教程,觉得很有意思,但是太繁琐了,要把一整本书全部拆完太耗费精力,于是打算让ai拆书。
尝试
想到用爬虫爬取小说网站内容,然后发给ai去拆书,很喜欢诡秘之主这本书,但是上次看的是盗版,正版网站没有充钱,于是找了个盗版网站拿去问ai爬数据,但是失败了,现在的网站都有反爬机制,不是我一个没接触过爬虫的人可以轻易搞定的。
社会工程学
思虑片刻,我的超级智慧告诉我该使用我的超级力量了,我在网上直接找到了诡秘之主的txt全文,并且格式化还做的不错,只要简单地处理就可以提取任意章节区间的内容。
批量化拆书
由于格式问题,文字提取部分的代码基本不具有可重复性,但还是在这里贴上吧。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| import re
def extract_chapters_by_index(file_path, start_index, end_index): """ 按章节出现的顺序索引提取小说内容
参数: file_path: 小说文件路径 start_index: 起始章节的序号(从1开始) end_index: 结束章节的序号(包含)
返回: 提取的文本内容 """ chapter_positions = []
if not chapter_positions: with open(file_path, 'r', encoding='utf-8') as f: lines = f.readlines() for line_num, line in enumerate(lines): stripped_line = line.strip() if re.match(r'^第[一二三四五六七八九十百千]+章', stripped_line): chapter_positions.append({ 'line_num': line_num, 'title': stripped_line, 'index': len(chapter_positions) + 1 }) total_chapters = len(chapter_positions)
if start_index < 1 or end_index > total_chapters or start_index > end_index: return f"章节范围无效,有效范围: 1-{total_chapters}"
start_chapter = chapter_positions[start_index - 1] start_line = start_chapter['line_num']
if end_index < total_chapters: end_line = chapter_positions[end_index]['line_num'] else: end_line = len(lines)
content_lines = lines[start_line:end_line] content = ''.join(content_lines)
return content
if __name__ == "__main__": content = extract_chapters_by_index('诡秘之主.txt', 1000, 1001) print(content) print(extract_chapters_by_index("诡秘之主.txt",1,1))
|
拆书代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| from openai import OpenAI from extract import * import time
API_KEY = "你的apikey" ai = OpenAI(api_key=API_KEY, base_url="https://api.deepseek.com") iniContent = '''你是一个专业的网络小说作家,你现在需要对诡秘之主这部小说的内容进行拆解,每一章你都需要根据用户提供的内容来拟出这一章的章纲。 要求:严格按照如下格式生成每一章章纲的内容,并且不要添加任何其他内容格式之外的内容。 格式: **章节号+章节名称** 1. 本章发生的事件1 2. 本章发生的事件2 ... N. 本章发生的事件N 伏笔/铺垫(如果有):伏笔内容 意义(本章内容的作用):内容'''
output_file = "诡秘之主章纲分析.md"
with open(output_file, "a", encoding="utf-8") as md_file: md_file.write("# 《诡秘之主》章纲分析\n\n")
for i in range(0, 100, 10): start_chapter = i + 1 end_chapter = i + 10
print(f"正在处理第 {start_chapter} 到 {end_chapter} 章...")
content = extract_chapters_by_index("诡秘之主.txt", start_chapter, end_chapter)
message = [ {"role": "system", "content": iniContent}, {"role": "user", "content": f"以下是《诡秘之主》第{start_chapter}章到第{end_chapter}章的内容:\n{content}"} ]
time.sleep(3)
response = ai.chat.completions.create( model="deepseek-reasoner", messages=message, stream=False )
assistant_content = response.choices[0].message.content
md_file.write(f"## 第{start_chapter}章 - 第{end_chapter}章章纲\n") md_file.write(assistant_content) md_file.write("\n\n---\n\n")
print(f"已完成第 {start_chapter} 到 {end_chapter} 章的分析并保存到文件")
print(f"所有章节分析完成!结果已保存到 {output_file}")
|
前期我觉得先拆个100章应该就够了,并且还不一定要继续拆下去呢,如果有条件的,或者说想拆更多内容的,可以考虑把代码部署到服务器上在半夜执行,可以省下不少钱。
生成章纲
拆完后,先把前50章的内容放进世界书,然后尝试性地生成第一卷前半部分的章纲,效果感觉还不错。
参考我给你的诡秘之主前50章的章纲,基于缸中之脑世界观,设计出第一卷前50章的剧情(不需要后半部分),剧情内容只需要进展到曼陀罗锚初次发生定义畸变即可,允许你发散出新的人物(6到8个)来填充剧情和设置事件。精确到每一章的剧情剧情,格式严格参考诡秘之主的章纲
下一步的话,应该就是继续迭代,同时手动微调章纲内容,然后尝试生成个十几章的具体内容了。
下载链接
诡秘之主.txt