Claude 导出转 Markdown — 免费

把 Claude 的数据导出转成 Markdown,每个会话一个标题,方便检索或归档。全部在你的浏览器里完成。

把 Claude 的数据导出变成能读的东西

在几种 AI 对话格式里,Claude 的导出是最直白的一个。每段对话是一个对象,带名称、创建时间和一个按发送顺序排列的消息数组。没有要遍历的分叉图,没有要过滤的隐藏节点,没有和对话交织在一起的工具流量。如果你在写解析器、可以挑一个平台先支持,那就是它。

让它难读的只是规模和语法。它作为一个 JSON 文件到来,装着你聊过的一切,换行和引号都被转义,整段历史挤在寥寥几条极长的行里。这个页面把它转成 Markdown,在这个浏览器标签页里完成,什么都不上传。

消息正文的两种形状

唯一真正的皱褶是:消息文本存放的位置取决于导出是什么时候生成的。较老的导出把整条消息放在一个普通的 text 字符串里。较新的用一个由带类型的块组成的 content 数组,其中文本块自带 text 字段,其他块类型描述附件或结构化元素。

块数组之所以存在,是因为一条消息不再必然是一整段不间断的文字。它可能是一段文本,然后一个 artifact,然后又是文本。把这些压成一个字符串是有损的表示,所以格式演进成了描述各个部分。

两种形状都会读。content 数组存在时,按顺序拼接它的文本块;不存在或里面没有文本时,回退到旧字段。这个回退很重要——一份跨越数年的导出里可以同时含有两种形状,而只处理新形状的解析器会悄悄丢掉你最早的那些对话。

发言者与标签

sender 字段的值是 humanassistant。它们准确,但放在文字稿里读着别扭,所以会变成 UserClaude——这既是当时屏幕上的样子,也是日后来读这份文档的人所预期的样子。

时间戳是 ISO 字符串,会被格式化成可读的日期和时间,也可以用上面的开关整个去掉。它们有没有用取决于用途:作为档案,它们把对话钉在时间上;而如果你打算一口气读下来,夹在每条消息之间的它们就是干扰。

为什么是 Markdown 而不是纯文本

Claude 的回答本来就是用 Markdown 写的,而一个长技术回答往往大半是结构——围栏代码、编号步骤、比较选项的表格、把长解释分开的标题。这些标记在导出里是以字面字符存放的。

转成纯文本,标记还在,却什么都不表示:代码周围留着零星反引号,而那段代码已经和散文分不开了;行首的井号也不再是标题。保留 Markdown,意味着写这条回答时用的结构能活到文档里。把输出粘进笔记应用、代码仓库、wiki 或静态站点,它就按当初的样子渲染出来。

它有什么用

留一份不依赖某个账号一直可用的个人存档。把一次设计讨论或一场调试过程放进项目仓库,紧挨着它产出的代码。在几个月的对话里搜一个你确定得到过、却怎么也找不到的解法。搭一个个人知识库——如果你打算把它嵌入做检索,输出可以顺畅地接进文本分块工具。在决定删掉什么之前,先回顾一下自己都分享过什么。

怎么拿到导出

在 Claude 里:设置,然后隐私,再点导出数据。压缩包准备好后会有一个下载链接发到你的邮箱。这个 zip 里有 conversations.json 和一些账号元数据;把整个压缩包拖进来会自动找到正确的文件,或者你也可以解压出 JSON 直接用。

在本地读取,不上传

一份你与助手的对话导出,是一份关于你在解决什么问题、对什么没把握、以及求助时粘贴了什么的记录。代码、文档、草稿、个人处境。

这些一概不会被传出去。解析器是这个标签页里的 JavaScript;文件由浏览器读取,在转换期间留在内存里,然后显示给你。没有服务器参与,也就没有留存窗口、没有访问日志,用完之后也没有东西需要删除。

ChatGPT 的导出需要另一个解析器,有自己的页面:ChatGPT 导出转 Markdown。其他情况交给通用聊天记录导出页,它会自行识别平台。