开发指南|如何为Claude Chat Exporter做贡献:Artifacts、附件导出等未来功能路线图

发布时间:2026/10/31 0:16:16
开发指南|如何为Claude Chat Exporter做贡献:Artifacts、附件导出等未来功能路线图

【免费下载链接】claude-chat-exporter

One-click, privacy-first exporter for Claude.ai chats — clean Markdown with artifacts and attachments, ready for Obsidian and RAG.

项目地址:https://gitcode.com/gh_mirrors/cl/claude-chat-exporter
点击查看免费下载

Claude Chat Exporter 是一个开源的一键式 Claude 对话导出工具,能在浏览器里将 Claude.ai 的完整聊天记录导出为干净的 Markdown 文件,且全程本地处理、保护隐私。如果你想参与它的开发,本文是面向新手的完整贡献指南:从读懂项目结构,到更新选择器、调优性能,再到 Artifacts 与附件导出等未来功能路线图,并给出从 clone 到提交 PR 的实操步骤。

1. 先了解项目:它解决了什么问题

很多开发者想把与 Claude 的对话归档到 Obsidian、Notion,或喂给 RAG 知识库,但手动复制粘贴极易丢失表格、公式和代码块格式。

claude-chat-exporter 的聪明之处在于:不自己解析 HTML,而是直接复用 Claude 官方的"复制按钮"。它自动点击每条消息的复制按钮,并拦截剪贴板写入,从而得到与官方复制 100% 一致的 Markdown。

  • 项目描述:One-click, privacy-first exporter for Claude.ai chats — clean Markdown with artifacts and attachments, ready for Obsidian and RAG
  • 授权协议:MIT,见 LICENSE
  • 核心脚本仅一个文件 claude-chat-exporter.js,约 300 行,新人完全读得懂

2. 上手贡献第一步:只需读懂 3 个文件

文件作用
README.md功能说明、原理、配置项与贡献指南
claude-chat-exporter.js全部导出逻辑
LICENSEMIT 协议

贡献前建议重点通读脚本里的三处"配置区",它们正是最常被贡献者修改的位置:

  • SELECTORS:DOM 选择器集中定义,UI 变了改这里即可,见 claude-chat-exporter.js#L10-L15
  • DELAYS:点击复制按钮之间的间隔,慢机器可增大,见 claude-chat-exporter.js#L17-L19
  • 状态提示与导出流程:startExport主控整个两阶段导出,见 claude-chat-exporter.js#L218-L263

3. 工作原理:两阶段"复制按钮"捕获

理解架构后,贡献才不至于改坏逻辑:

  1. 拉取元数据:调用 Claude 同源 API 获取会话标题和每条人类消息的时间戳,见fetchConversationDataclaude-chat-exporter.js#L46-L73
  2. 阶段一(人类消息):找出没有点赞按钮的操作栏,逐个点击复制按钮
  3. 阶段二(Claude 回复):找出有点赞按钮的操作栏,同样逐个点击
  4. 剪贴板拦截:临时替换navigator.clipboard.writeText,把每次写入按当前阶段分别存进两个数组,见 claude-chat-exporter.js#L125-L132
  5. 拼装输出:buildMarkdown按顺序合并,并为人类消息附加时间戳,见 claude-chat-exporter.js#L183-L199

区分两类消息的判定逻辑集中在getCopyButtonsclaude-chat-exporter.js#L151-L162——这也是 Claude 界面改版时最先需要跟进的地方。

4. 官方点名的四大贡献方向

README.md 的 Contributing 章节明确列出了社区最需要的四类贡献:

方向一:Selector 更新(最容易上手)

Claude 网页改版后,复制按钮或操作栏的data-testid、aria-label可能变化。做法是打开 Chrome DevTools 重新定位元素,然后更新SELECTORS对象即可,无需改动任何逻辑。这是典型的"低门槛、高价值"贡献。

方向二:性能调优

脚本在每次点击之间等待DELAYS.copy(默认 100ms),并配合 waitForClipboardOperations 做超时检测。你可以:

  • 针对不同浏览器测量更小的安全间隔,缩短导出时间
  • 优化超时阈值,减少弱机上的误报

方向三:错误处理与健壮性

目前脚本对 API 失败、消息未完全加载等场景只做console.warn降级。可以贡献:

  • 更明确的失败原因提示(状态条目前是英文短文案,见 claude-chat-exporter.js#L256-L262)
  • 对"单边消息"(只有一方有复制按钮)场景的告警与重试建议,参考现有检测逻辑 claude-chat-exporter.js#L236-L240

方向四:Artifacts 与附件导出(路线图核心)

README.md 的 Limitations 一节坦承当前两大空缺,这正是最有影响力的功能型贡献:

  • No Attachments—— 无法导出用户上传的文件与图片
  • No Artifacts—— Artifact 内容目前被跳过

5. 未来功能路线图:Artifacts、附件与 Obsidian/RAG

按预期影响排序,社区最可能的演进方向如下:

① Artifact 导出Artifact 是 Claude 生成的可交互网页、应用或长文档,目前导出中完全缺失。思路可以是:在抓取阶段识别 Artifact 消息,调用其源码视图或复制入口获取完整代码,再作为独立代码块写入 Markdown。

② 附件与图片导出用户上传的图片、PDF 等目前丢失。可行方案是导出时下载附件到同名目录,并在 Markdown 中以相对路径引用,实现"文件夹级"归档。

③ Obsidian 与 RAG 就绪的元数据项目定位是 "ready for Obsidian and RAG",因此可贡献 YAML front matter(标题、时间、消息数)、分块友好的分隔符,方便下游知识库直接解析。

④ 批量导出当前一次导出一个会话,未来可扩展为遍历会话列表批量导出整个工作区。

6. 贡献流程:从 clone 到 PR

  1. 克隆仓库(仓库只读,请勿在本地误提交到主仓库):git clone https://gitcode.com/gh_mirrors/cl/claude-chat-exporter
  2. 本地 Fork 一份后修改代码,核心改动通常只涉及 claude-chat-exporter.js 与 README.md
  3. 自测:在浏览器控制台粘贴运行脚本,确认状态条依次出现Fetching conversation data...→Copying human messages...→Copying Claude responses...→✅ Downloaded: xxx.md
  4. 通过 issue 讨论或直接向维护者提交 Pull Request——README.md 的 Contributing 章节明确欢迎 PR 与 issue 讨论
  5. 遵循 MIT 协议,保留 LICENSE 文件

7. 写在最后

claude-chat-exporter 代码量小、结构清晰,是练习浏览器自动化与 DOM 操作的优秀入门项目。从更新一个选择器开始,到实现 Artifacts 导出,每一步贡献都在让这个"一键导出、隐私优先"的工具更完整——而 Artifacts 与附件导出,正是它离 Obsidian 和 RAG 完美归档最近的两块拼图。

【免费下载链接】claude-chat-exporter

One-click, privacy-first exporter for Claude.ai chats — clean Markdown with artifacts and attachments, ready for Obsidian and RAG.

项目地址:https://gitcode.com/gh_mirrors/cl/claude-chat-exporter
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考