开发指南|如何为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.
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 | 全部导出逻辑 |
| LICENSE | MIT 协议 |
贡献前建议重点通读脚本里的三处"配置区",它们正是最常被贡献者修改的位置:
SELECTORS:DOM 选择器集中定义,UI 变了改这里即可,见 claude-chat-exporter.js#L10-L15DELAYS:点击复制按钮之间的间隔,慢机器可增大,见 claude-chat-exporter.js#L17-L19- 状态提示与导出流程:
startExport主控整个两阶段导出,见 claude-chat-exporter.js#L218-L263
3. 工作原理:两阶段"复制按钮"捕获
理解架构后,贡献才不至于改坏逻辑:
- 拉取元数据:调用 Claude 同源 API 获取会话标题和每条人类消息的时间戳,见
fetchConversationDataclaude-chat-exporter.js#L46-L73 - 阶段一(人类消息):找出没有点赞按钮的操作栏,逐个点击复制按钮
- 阶段二(Claude 回复):找出有点赞按钮的操作栏,同样逐个点击
- 剪贴板拦截:临时替换
navigator.clipboard.writeText,把每次写入按当前阶段分别存进两个数组,见 claude-chat-exporter.js#L125-L132 - 拼装输出:
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
- 克隆仓库(仓库只读,请勿在本地误提交到主仓库):
git clone https://gitcode.com/gh_mirrors/cl/claude-chat-exporter - 本地 Fork 一份后修改代码,核心改动通常只涉及 claude-chat-exporter.js 与 README.md
- 自测:在浏览器控制台粘贴运行脚本,确认状态条依次出现
Fetching conversation data...→Copying human messages...→Copying Claude responses...→✅ Downloaded: xxx.md - 通过 issue 讨论或直接向维护者提交 Pull Request——README.md 的 Contributing 章节明确欢迎 PR 与 issue 讨论
- 遵循 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.
相关推荐
输入一个网址,整站打包成 zip:Website-downloader 离线备份三步上手
输入一个网址,整站打包成 zip:Website downloader 离线备份三步上手 上周维护的旧系统周五要下线,内网文档还挂在服务器上;做前端练习想拆解某
后端网页爬虫HoloISO项目路线图:未来功能开发与社区贡献指南
HoloISO项目路线图:未来功能开发与社区贡献指南 HoloISO项目致力于为普通PC用户提供接近官方体验的SteamOS 3系统。这个开源项目正在不断发展,
操作系统2025终极指南:btop系统监控工具开发路线图与社区贡献全攻略
2025终极指南:btop系统监控工具开发路线图与社区贡献全攻略 btop是一款功能强大的系统资源监控工具,能够实时显示处理器、内存、磁盘、网络和进程的使用情况
指标监控CLI运维观测
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考