导出聊天记录
本页介绍所有内置导入插件对应的文件准备方法。导出工具的界面可能随版本变化,安装和账号访问方式请以所链接的上游文档为准,导出时选择下表所列格式。
导出前准备
确认你有权处理这段对话,先阅读负责任使用与数据隐私。选择与目标人物的一段会话,保留未经修改的本地备份、原始时间和账号标识,不要将导出文件或登录凭据发到 Issue。Afterglow 导入文件不需要平台登录 Cookie 或 token。
| 来源 | 应选择的输出 | 导入哪个文件 |
|---|---|---|
| QQChatExporter | JSON 或 chunked JSONL | 聊天 .json,或全部 chunks/*.jsonl |
| WeFlow / 微信 | 原始 arkme-json 或 ChatLab JSONL | 导出的 .json / .jsonl |
| Douyin Chat Export | ChatLab JSON / JSONL | 导出的 .json / .jsonl |
| WhatsApp Web(桌面浏览器) | 兼容的 TXT 或 Markdown | 导出的 chat.txt 或 chat.md |
| Telegram Desktop | 人类可读 HTML | messages.html 及所有编号续页 |
| DiscordChatExporter | JSON | 频道导出的 .json |
| 其他来源 | 转换为 Afterglow Chat v1 | .json / .jsonl |
其他工具导出的 HTML、Excel 或 CSV 不能因为后缀相同就当作 Telegram HTML 导入。插件要求对应的数据结构。
QQ:QQChatExporter
- 安装适合系统的发布版本,启动工具并按其说明登录。当前桌面版文档使用本地地址
http://localhost:40653/qce;如果版本不同,以启动控制台打印的地址与 token 为准。 - 选择好友会话和日期范围。单文件选择 JSON;大型记录在工具支持时选择 chunked JSONL,保留身份和消息元数据。
- 只导入文本时,媒体只导出元信息即可;需要历史图片检索时,另外保留本地媒体与资源目录。
- 在 Afterglow 上传聊天 JSON,或
chunks/下的全部 JSONL。不要选只有索引的manifest.json。分块导出可能缺少当前账号身份,需在向导中核对双方 UID。
不要为此插件选择 QQChatExporter 的 HTML、TXT 或 Excel 输出。
微信:WeFlow
- 按对应版本说明打开本地微信数据,先完成工具自身的数据访问配置。
- 选择目标私聊和日期范围,导出为原始 JSON /
arkme-json或 ChatLab JSONL;菜单名称可能因版本不同而变化。 - 保留完整文件,不要删除成员与元数据。
arkme-json应含session、senders、messages;ChatLab 导出应标明生成器weflow、平台wechat。 - 将 JSON/JSONL 上传到 Afterglow,核对“自己”和“朋友”。后续需要
import-images时,保留与导出配套的本地图片。
WeFlow 还支持 HTML、表格、纯文本和数据库导出,这些不是此插件支持的输入。上游目前推荐继任产品 Alpha;未核对数据结构前,不应假定 Alpha 导出与现有插件兼容。
抖音:Douyin Chat Export
上游:Douyin Chat Export · 下载版本。
- 按上游 Docker 或源码说明启动工具。默认端口
8000与 Afterglow 相同,可停止其中一个服务,或将导出器映射到其他本地端口,例如 Docker Compose 使用127.0.0.1:8001:8000。 - 打开其
/panel控制面板,按上游支持的方法登录并采集目标网页版私信会话。 - 选择该私聊,导出 ChatLab JSON 或 JSONL,保留元数据与成员信息。Afterglow 当前仅支持抖音私聊。
- 将文件上传到 Afterglow。插件根据
meta.ownerId建议自己的账号,并建议最活跃的其他成员为朋友;请核对两者。
文本、链接和引用会保留,媒体变成占位符。import-images 不会下载抖音导出中的临时 CDN 地址或 data URL。
WhatsApp:桌面浏览器
在电脑上使用 WhatsApp Web。本教程只介绍桌面浏览器流程;原生桌面客户端没有手机端同样的“导出聊天记录”菜单。
- 登录 WhatsApp Web,打开目标私聊,等待历史同步,并加载需要的时间范围。浏览器中可能只有部分记录,导出后检查第一条和最后一条消息。
- 使用能够生成兼容 TXT 或 Markdown 的桌面浏览器导出工具,按该工具的说明安装和导出。WhatsApp Web 本身没有通用导出按钮,不同扩展的输出格式也不相同。
- 保留姓名、日期和消息边界。TXT 可使用
[10/13/26, 16:25:24] Friend: hello这样的时间消息行。兼容 Markdown 需要# WhatsApp标题、## 2026年10月13日这样的日期标题,以及[16:25] **Friend:** hello这样的消息行。任意 Markdown 或 JSON 导出需要先转换格式。 - 上传
chat.txt或兼容的chat.md。同一段聊天同时有两种文件时只导入一份;发送者 UID 从显示名派生,请在向导核对双方身份。
Markdown 时间只有分钟精度。日期顺序与 APP_TIMEZONE 见导入说明。WhatsApp 附件不会自动作为历史图片导入。不要把压缩包、HTML 页面或扩展专用 JSON 当作 TXT/Markdown 聊天文件上传。
Telegram:Telegram Desktop
上游:官方导出介绍 · Telegram Desktop 下载。
- 在 Telegram Desktop 打开目标会话,使用会话菜单中的 Export chat history / 导出聊天记录。全账号导出入口为 Settings → Advanced → Export Telegram data。
- 选择 Human-readable HTML / 人类可读 HTML,设置需要的日期范围。如需历史图片检索,勾选照片导出。
- 完成导出并保留完整目录。较大的会话可能包含
messages.html、messages2.html、messages3.html等分页。 - 在 Afterglow 的同一次任务中上传该会话的全部聊天页。照片及支持的静态贴纸保留原相对路径,供后续图片导入使用。
插件读取 HTML 结构和时间属性,不依赖显示语言。手机端和网页端不提供这一 Desktop 导出流程。全账号导出包含多个会话时,只选目标人物对应的文件;向导根据显示名生成身份标识,请核对双方身份。
Discord:DiscordChatExporter
上游:DiscordChatExporter · 下载版本 · 使用与凭据说明。
- 下载对应系统的 GUI 或 CLI 版本,按其文档配置凭据和访问权限。在频道权限允许时优先使用经授权的 bot,并阅读上游关于 Discord 账号自动化规则的说明。
- 选择私信或你有权导出的频道,输出格式选 JSON。只构建某个人的 persona 时,双人私聊比多人频道更容易核对身份。
- 导出需要的日期范围。如需历史图片,启用工具的媒体下载选项,将资源与 JSON 按引用路径一起保存。
- 上传
.json到 Afterglow,指定自己和朋友的账号 ID。远程 CDN 图片只保留占位符;import-images只读取导出目录内部的相对路径图片。
Discord 官方个人数据包与本插件格式不同,而且不包含对方回复。DiscordChatExporter 的 HTML、TXT 和 CSV 输出也不适用于本插件。不要把导出器登录 token 放进上传给 Afterglow 的文件。
其他来源:Afterglow Chat v1
Afterglow Chat v1 是中间数据格式,不是平台登录或导出工具。
- 用适合原平台的工具导出消息,保留原始备份。
- 按格式规范转换:保留稳定消息 ID、发送者 ID、毫秒时间戳与引用关系,按所选 JSON/JSONL 形式填写格式元数据。
- 让双方账号可以明确分配为自己和朋友;需要历史图片时,保留安全相对路径下的本地媒体。
- 先用少量脱敏样例确认,再导入完整会话。要长期公开支持某个平台,建议编写专门的导入插件。
核对后导入
检查双方消息、日期范围和原始 ID 是否齐全。使用后端配置 UI 与初始化向导填写模型服务与身份信息,再按导入聊天记录操作。
cd backend
uv run xuwen import /path/to/chat.json --language zh-CN
uv run xuwen import /path/to/chunks/*.jsonl --language zh-CN
uv run xuwen import /path/to/TelegramExport/messages*.html --language zh-CN
# 可选:需要本地图片及已配置的视觉模型
uv run xuwen import-images /path/to/export-directory --language zh-CN一个导入任务必须对应同一个目标人物,不要把账号级导出中的全部会话混成同一个 persona。需要图片检索时,保留原媒体目录;向导上传文本文件不等于上传完整媒体文件夹。