Skip to content

rateyu/chat-txt2pdf

Repository files navigation

Chat 对话归档工具 —— 使用说明书(用户版)

本工具用于将 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 工作日志”

目录

  1. 工具功能概述
  2. 文件结构简介
  3. 使用流程(两步即可)
  4. 输出文件说明
  5. 增量更新逻辑(不会重复内容)
  6. 常见问题 & 注意事项
  7. 推荐的每日使用方式

1. 工具功能概述

本工具由 两部分脚本构成:

文件名 功能
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.pdfchat_ebook_20250102_2.pdf


2. 文件结构简介

工具默认目录结构如下:

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

3. 使用流程(只需两步)

步骤 1:将所有聊天 jsonl 转换为 txt

python3 convert_all_chat.py

它会自动:

  • 扫描 .codex/tmp/ 等目录
  • 自动识别 Codex、Claude、Gemini 格式
  • 导出结构化 txt 至 export/ 文件夹

✔ 第一次会导出所有聊天 ✔ 以后每天跑一遍,只会导出新的聊天


步骤 2:将新增/变更的 txt 生成 PDF

python3 export-txt2pdf.py

它会自动:

  • 检测哪些 txt 是新增的
  • 哪些 txt 内容有更新
  • 只把这些 txt 合成一份新的 PDF
  • 保留旧 PDF
  • 不重复导出以前的历史内容

4. 输出文件说明

PDF 文件会按日期自动命名,例如:

chat_ebook_20251130.pdf        # 第一天生成
chat_ebook_20251201.pdf        # 第二天新增内容
chat_ebook_20251201_2.pdf      # 同一天再次执行,自动加编号

每份 PDF 的结构如下:

  1. 本次所有新增/更新内容的“问题目录”
  2. 按文件输出完整的对话 txt 内容
  3. 自动分页、自动换行、支持中文 CJK

PDF 反向转 TXT

如果你手上已经有 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

5. 增量更新逻辑

工具内部通过 ebook_state.json 记录每个 txt 的 md5 值。

当你执行:

python3 export-txt2pdf.py

会自动进行对比:

  • 新增文件 → 导出
  • 内容修改 → 导出
  • 内容完全未变 → 不再重复导出

👉 这样 PDF 永远不会出现重复的历史对话 👉 每天执行一次即可得到当天新增/更新的内容


6. 常见问题 & 注意事项

❓ 为什么 PDF 不包含我昨天的内容?

→ 因为本工具是“增量模式”,只导出新增/更新的内容。 如果你需要合并所有 PDF,我可以提供“PDF 合并工具”。

❓ 为什么 PDF 里中文换行正常?

→ 我们启用了 Paragraph(wordWrap="CJK") + 系统自带中文字体。

❓ txt 里看到乱码怎么办?

→ 说明原始日志 jsonl 就已经是乱码,txt 只是如实导出。 解决方式是:重新获取源日志,或手工修复。

❓ state 文件能删吗?

→ 能。 删掉后,下次运行会认为“所有 txt 都是新增”,生成一份全集 PDF。


7. 推荐的每日使用方式(最佳实践)

每天只需要执行两条命令:

python3 convert_all_chat.py
python3 export-txt2pdf.py

你会获得:

  • 一个 按天增量生成 的 PDF 对话合集
  • 自动备份,不丢失
  • 不重复、不覆盖
  • 可长期作为 AI 学习档案、工作日志保存

如果你需要:

  • 生成一个 “总全集 PDF(合并所有卷)”
  • 生成 EPUB / MOBI 格式电子书
  • 自动每天定时运行(Mac Automator / cron)
  • 生成 Web 页面可供检索
  • 主题样式、美化排版

告诉我,我可以继续帮你扩展。

About

gpt聊天历史转pdf文档

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors