本工具用于将 ChatGPT / Claude / Gemini / Codex 等生成的对话记录统一导出为 结构化 TXT,并自动转换为 PDF 电子书,同时支持 增量更新,不会重复生成历史内容。
现在也支持把已有 PDF 反向提取为 TXT。
导出的txt的文件路径: /Users/myu/chat-his
问题的源文件和路径 /Users/myu/.claude /Users/myu/.codx /Users/myu/.gemini
适合用于:
- 保存每天的 AI 对话记录(学习笔记、系统分析、代码输出等)
- 生成可查阅的 PDF 文档合集
- 团队内部对话记录归档
- 形成“每日 AI 工作日志”
- 工具功能概述
- 文件结构简介
- 使用流程(两步即可)
- 输出文件说明
- 增量更新逻辑(不会重复内容)
- 常见问题 & 注意事项
- 推荐的每日使用方式
本工具由 两部分脚本构成:
| 文件名 | 功能 |
|---|---|
convert_all_chat.py |
将 jsonl / json 格式的聊天记录解析 → 多份结构化 txt |
export-txt2pdf.py |
将新增或修改的 txt 自动汇总 → 新的 PDF 增量卷 |
pdf2txt.py |
将 PDF 提取为 TXT(单文件或整个目录) |
特点如下:
✔ 支持 Codex / Claude / Gemini 多种格式
✔ 自动抽取“用户提问目录”
✔ 支持中文自动换行(CJK)
✔ 避免乱码(无 unicode_escape 再解码)
✔ 增量生成 PDF(不会重复导出历史聊天)
✔ 每次只生成当前“新增或变更”的对话 PDF
✔ 保留旧 PDF,不覆盖、不冲突
✔ 自动创建日期后缀:chat_ebook_20250102.pdf、chat_ebook_20250102_2.pdf
工具默认目录结构如下:
project-folder/
│
├── convert_all_chat.py # 将聊天 JSON/JSONL 批量转换为 TXT
├── export-txt2pdf.py # 将 TXT 批量转换为 PDF(增量)
│
├── export/ # 自动生成:所有 txt 输出在此
│ ├── 2025-01-01_01_xxx.txt
│ ├── 2025-01-01_02_xxx.txt
│ ├── ...
│
├── chat_ebook_20250101.pdf # PDF 增量卷
├── chat_ebook_20250101_2.pdf # 第二次生成的 PDF(同日)
│
└── ebook_state.json # 自动生成:记录 txt 的 md5 状态
你只需要关注:
- export/ 里的 txt
- 自动生成的 pdf
- 不需要手动修改
ebook_state.json
python3 convert_all_chat.py它会自动:
- 扫描
.codex/、tmp/等目录 - 自动识别 Codex、Claude、Gemini 格式
- 导出结构化 txt 至
export/文件夹
✔ 第一次会导出所有聊天 ✔ 以后每天跑一遍,只会导出新的聊天
python3 export-txt2pdf.py它会自动:
- 检测哪些 txt 是新增的
- 哪些 txt 内容有更新
- 只把这些 txt 合成一份新的 PDF
- 保留旧 PDF
- 不重复导出以前的历史内容
PDF 文件会按日期自动命名,例如:
chat_ebook_20251130.pdf # 第一天生成
chat_ebook_20251201.pdf # 第二天新增内容
chat_ebook_20251201_2.pdf # 同一天再次执行,自动加编号
每份 PDF 的结构如下:
- 本次所有新增/更新内容的“问题目录”
- 按文件输出完整的对话 txt 内容
- 自动分页、自动换行、支持中文 CJK
如果你手上已经有 PDF,需要提取成纯文本,可直接运行:
python3 pdf2txt.py chat_ebook_20260408.pdf默认会在 PDF 同目录生成同名 .txt 文件,例如:
chat_ebook_20260408.pdf -> chat_ebook_20260408.txt如果要批量处理整个目录,并把 TXT 输出到单独目录:
python3 pdf2txt.py . -o extracted_txt --overwrite说明:
- 支持单个 PDF 或递归扫描目录
-o / --output-dir:指定输出目录--overwrite:覆盖已存在的 txt- 依赖 macOS 自带
PDFKit,因此此脚本仅适用于 macOS
工具内部通过 ebook_state.json 记录每个 txt 的 md5 值。
当你执行:
python3 export-txt2pdf.py会自动进行对比:
- 新增文件 → 导出
- 内容修改 → 导出
- 内容完全未变 → 不再重复导出
👉 这样 PDF 永远不会出现重复的历史对话 👉 每天执行一次即可得到当天新增/更新的内容
→ 因为本工具是“增量模式”,只导出新增/更新的内容。 如果你需要合并所有 PDF,我可以提供“PDF 合并工具”。
→ 我们启用了 Paragraph(wordWrap="CJK") + 系统自带中文字体。
→ 说明原始日志 jsonl 就已经是乱码,txt 只是如实导出。 解决方式是:重新获取源日志,或手工修复。
→ 能。 删掉后,下次运行会认为“所有 txt 都是新增”,生成一份全集 PDF。
每天只需要执行两条命令:
python3 convert_all_chat.py
python3 export-txt2pdf.py你会获得:
- 一个 按天增量生成 的 PDF 对话合集
- 自动备份,不丢失
- 不重复、不覆盖
- 可长期作为 AI 学习档案、工作日志保存
- 生成一个 “总全集 PDF(合并所有卷)”
- 生成 EPUB / MOBI 格式电子书
- 自动每天定时运行(Mac Automator / cron)
- 生成 Web 页面可供检索
- 主题样式、美化排版
告诉我,我可以继续帮你扩展。