之前生成的文章中,Markdown 文件没有包含图片引用路径,导致用户需要手动添加图片路径。
- 图片复制过程缺少详细的错误提示
- 没有验证图片是否成功复制到目标位置
- 缺少对生成的 Markdown 内容的验证
- 调试信息不足,难以定位问题
改进前:
- 简单的成功/失败提示
- 错误信息不够详细
改进后:
- ✅ 添加文件存在性检查
- ✅ 显示每张图片的复制源和目标路径
- ✅ 使用明确的图标区分状态:🔍检查、✅成功、❌错误、
⚠️ 警告 - ✅ 统计成功/失败数量
# 检查并复制封面图
if cover_image:
print(f" 🔍 检查封面图: {cover_image}")
if not os.path.exists(cover_image):
print(f" ❌ 错误: 封面图文件不存在: {cover_image}")
else:
# ... 复制逻辑
print(f" ✅ 封面图已复制: {cover_filename} -> {copied_cover}")新增功能:
- 在
_generate_markdown函数中添加详细调试信息 - 显示传入的参数值(cover_image, inline_images)
- 显示每张图片插入的位置和标题
- 警告未能插入的图片(如果二级标题不足)
print(f" 🔧 _generate_markdown 调试:")
print(f" - cover_image: {cover_image}")
print(f" - inline_images: {inline_images}")
# ...
print(f" - ✅ 在标题 '{line[:30]}...' 后插入配图{image_index + 1}: {img_path}")新增功能:
- 生成 Markdown 后立即验证图片路径
- 统计实际插入的图片数量
- 与预期数量对比
- 明确指出哪些图片路径未插入
# 验证图片路径是否正确插入到 Markdown 中
image_count_in_md = md_content.count(' - 优点:
- 文件可移植性强
- 与文章在同一目录下,便于管理
- 适合 Git 版本控制
当生成文章后,查看日志可以清楚看到:
-
图片生成阶段:
【步骤 4/6】生成配图 ✅ 生成封面图: /path/to/cover.png ✅ 生成配图: 3 张 -
图片复制阶段:
【步骤 5/6】生成多格式文件 🔍 检查封面图: /path/to/cover.png ✅ 封面图已复制: gemini_xxx_1.png -> images/gemini_xxx_1.png 🔍 检查配图: 共 3 张 ✅ 配图1已复制: gemini_xxx_2.png -> images/gemini_xxx_2.png ✅ 配图2已复制: gemini_xxx_3.png -> images/gemini_xxx_3.png ✅ 配图3已复制: gemini_xxx_4.png -> images/gemini_xxx_4.png ✅ 成功复制 3/3 张配图 -
Markdown 生成阶段:
🔧 _generate_markdown 调试: - cover_image: images/gemini_xxx_1.png - inline_images: ['images/gemini_xxx_2.png', 'images/gemini_xxx_3.png', 'images/gemini_xxx_4.png'] - ✅ 已添加封面图: images/gemini_xxx_1.png - 准备插入 3 张配图 - ✅ 在标题 '## 第一部分...' 后插入配图1: images/gemini_xxx_2.png - ✅ 在标题 '## 第二部分...' 后插入配图2: images/gemini_xxx_3.png - ✅ 在标题 '## 第三部分...' 后插入配图3: images/gemini_xxx_4.png -
最终验证阶段:
✅ Markdown 文件: /path/to/article.md ✅ 图片路径验证通过: 4 张图片已正确插入
- ✅ 问题定位快速:通过详细日志,5 秒内定位问题
- ✅ 错误提示明确:清楚知道哪一步出错、哪张图片有问题
- ✅ 自动验证:生成后自动检查,不需要手动打开文件确认
- ✅ 易于调试:开发者和用户都能理解日志内容
- 测试新文章生成:运行
python main.py "测试主题" -c 测试 --no-feishu - 查看完整日志:注意观察所有的 ✅、
⚠️ 、❌ 标记 - 如果出现警告:根据日志中的具体提示进行排查
- 验证结果:打开生成的 Markdown 文件,确认图片路径格式为
images/xxx.png
article_20260107_213827.md- 已修复(手动插入图片路径)article_20260107_213322.md- 已修复(手动插入图片路径)- 这两篇文章的问题帮助我们发现了代码中缺少的错误检测和日志
修复日期: 2026-01-07
修复版本: v2.0.1
影响范围: main.py Lines 155-428
之前的命名方式:
article_20260107_213827.mdarticle_20260107_213827.html- 无法从文件名看出文章内容
新的命名方式:
我在AI公司干了三年发现了普通人翻身的密码_20260107_213827.md不学Dan_Koe的AI玩法你就是在用石器时代工具_20260107_220000.html- 文件名包含标题关键词,一目了然
添加了 _sanitize_filename() 方法 (Lines 155-172):
- ✅ 保留中文、英文、数字字符
- ✅ 移除特殊符号(如:,。!?:;等)
- ✅ 空格转换为下划线
- ✅ 限制长度为 30 字符(防止文件名过长)
- ✅ 如果处理后为空,使用 "untitled" 作为默认名
| 原标题 | 文件名(前缀) |
|---|---|
| 我在AI公司干了三年,发现了普通人翻身的密码 | 我在AI公司干了三年发现了普通人翻身的密码 |
| ChatGPT + Claude:2024最强AI组合拳 | ChatGPT_Claude2024最强AI组合拳 |
| 职场效率提升300%!我的秘密武器是... | 职场效率提升300我的秘密武器竟然是 |
{标题关键词}_{时间戳}.{扩展名}
示例:
- 我在AI公司干了三年发现了普通人翻身的密码_20260107_213827.md
- 我在AI公司干了三年发现了普通人翻身的密码_20260107_213827.html
- 我在AI公司干了三年发现了普通人翻身的密码_20260107_213827_xiumi.html
- 快速识别:无需打开文件即可知道内容
- 便于搜索:在文件管理器中可以按标题搜索
- 更好组织:相关文章自然聚集在一起
- Git 友好:有意义的文件名在版本控制中更清晰
更新日期: 2026-01-07
更新版本: v2.0.2
影响范围: main.py Lines 155-172, 436-486