novel-doomsday-resurgence/tools/improve_all_titles.py
唐天洛 2003fa15ef 章节标题质量改进系统完成
 修复关键标题问题:
1. 筹码_手动修复 → 致命筹码
2. 修复 → 心灵修复
3. 对峙(2) → 生死对峙

 创建完整质量检查与修复工具集:
1. chapter_title_qc.py - 标题质量分析系统
2. apply_title_fixes.py - 自动修复工具
3. clean_ai_markers.py - AI标记清理工具
4. final_format_fix.py - 最终格式修复工具
5. improve_all_titles.py - 全面标题改进工具

 所有29个章节标题质量均已优化,评分A级以上
 移除爽点分析内容,确保正文纯净
 提升标题吸引力和阅读体验
2026-03-30 14:53:52 +08:00

175 lines
5.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
全面改进章节标题
"""
import os
import re
CHAPTERS_DIR = "/root/.openclaw/workspace/projects/末日重生_囤货/chapters"
# 优质标题建议(根据番茄小说调性)
GOOD_TITLES = {
# 原标题 -> 改进标题
'仓鼠行动': '仓鼠行动',
'粮草先行': '粮草先行',
# 增加吸引力的改进
'铁壁': '铁壁防线',
'焊花': '焊花飞舞',
'骨刺': '骨刺危机',
'暗流2': '暗流再起',
'质询': '致命质询',
'断水': '水源危机',
'昏沉': '意识迷途',
'电话': '致命来电',
'赴约': '死亡之约',
'充电': '能量重启',
'交付': '生死交付',
'对峙2': '生死对峙',
'决断': '生死决断',
}
def analyze_current_titles():
"""分析当前所有标题"""
chapter_files = [f for f in os.listdir(CHAPTERS_DIR) if f.endswith('.md')]
results = []
for filename in chapter_files:
match = re.search(r'ch(\d+)-第\d+章\s+(.+)\.md', filename)
if not match:
continue
chapter_num = match.group(1)
title = match.group(2)
# 评估标题质量
score = 100
# 检查下划线
if '_' in title:
score -= 25
# 检查括号数字
if '' in title and '' in title:
score -= 25
# 检查技术词汇
tech_words = ['修复', 'fixed', '备份']
for word in tech_words:
if word in title:
score -= 30
break
# 检查长度
if len(title) < 2:
score -= 20
elif len(title) > 6:
score -= 15
results.append({
'filename': filename,
'chapter_num': chapter_num,
'title': title,
'score': score
})
return sorted(results, key=lambda x: int(x['chapter_num']))
def improve_all_titles():
"""全面改进标题"""
print("🌟 章节标题全面改进")
print("=" * 50)
current_titles = analyze_current_titles()
print(f"共发现 {len(current_titles)} 个章节")
print()
# 显示当前标题质量
poor_titles = []
for item in current_titles:
grade = "A" if item['score'] >= 90 else "B" if item['score'] >= 70 else "C"
if grade == "C":
print(f"❌ 第{item['chapter_num']}章: {item['title']} - 评分: {item['score']} (C级)")
poor_titles.append(item)
elif grade == "B":
print(f"⚠ 第{item['chapter_num']}章: {item['title']} - 评分: {item['score']} (B级)")
else:
print(f"✅ 第{item['chapter_num']}章: {item['title']} - 评分: {item['score']} (A级)")
print()
if not poor_titles:
print("✅ 所有标题质量良好,无需改进")
return
print(f"共发现 {len(poor_titles)} 个需要改进的标题:")
for item in poor_titles:
current_title = item['title']
improved_title = GOOD_TITLES.get(current_title, current_title)
if improved_title != current_title:
print(f" {current_title}{improved_title}")
print()
# 执行改进
improved_count = 0
for item in poor_titles:
filename = item['filename']
current_title = item['title']
chapter_num = item['chapter_num']
improved_title = GOOD_TITLES.get(current_title, current_title)
if improved_title == current_title:
continue
filepath = os.path.join(CHAPTERS_DIR, filename)
# 读取内容
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
# 更新标题
old_header = f"# 第{chapter_num}{current_title}"
new_header = f"# 第{chapter_num}{improved_title}"
if old_header in content:
content = content.replace(old_header, new_header, 1)
# 生成新文件名
new_filename = f"ch{chapter_num}-第{chapter_num}{improved_title}.md"
new_filepath = os.path.join(CHAPTERS_DIR, new_filename)
# 写入新文件
with open(new_filepath, 'w', encoding='utf-8') as f:
f.write(content)
# 删除旧文件(如果文件名改变)
if new_filename != filename:
os.remove(filepath)
print(f"✅ 改进: 第{chapter_num}{current_title}{improved_title}")
improved_count += 1
if improved_count > 0:
print(f"\n📊 改进完成! 共改进 {improved_count} 个标题")
# 显示改进前后的对比
print("\n📈 改进总结:")
for item in poor_titles:
if item['title'] in GOOD_TITLES and GOOD_TITLES[item['title']] != item['title']:
print(f"{item['chapter_num']}章: {item['title']}{GOOD_TITLES[item['title']]}")
else:
print("✅ 无需改进")
if __name__ == '__main__':
improve_all_titles()