Chat Export Toolkit

Export/copy current Yuanbao conversation and export all conversations as ZIP (MD/JSON/DOCX)

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

작성자
gandli jk (gandli)
일일 설치 수
0
총 설치 수
1
평점
0 0 0
버전
0.6.0
생성일
2026-03-03
갱신일
2026-03-03
크기
57.7KB
라이선스
MIT
적용 사이트

Chat Export Toolkit

License: MIT Version

多站点 AI 对话导出工具包 — 基于 Tampermonkey Userscript 的可扩展多平台架构

项目已从 Yuanbao 专用脚本重构为 V2 架构,支持通过适配器扩展多个 AI 平台。当前 Yuanbao 支持完整(L1),ChatGPT 已实现骨架(L2,待实际页面验证),其他平台规划中。

状态: Alpha — 核心架构完成,主要功能可用,部分特性仍在开发中。当前产品形态为 Tampermonkey Userscript

Alpha 发布就绪: Yuanbao 已达到 Alpha 发布标准(55 个 Golden 测试通过,文档和工具链完整)。详见 docs/YUANBAO_ALPHA_READINESS.md


✨ 核心特性

  • 🔌 可扩展架构 — 基于适配器模式,支持为不同 AI 平台添加导出支持
  • 📦 多格式导出 — Markdown / JSON / DOCX,满足不同使用场景
  • ⚡ 零配置导出 — 自动拦截 API 请求,无需手动复制粘贴
  • 🗂️ 批量导出 — 支持导出全部历史对话(ZIP 打包)
  • 🎨 原生 UI — 与各平台设计风格融合的界面

📊 平台支持状态

平台 适配器 标准化器 导出器 状态
腾讯元宝 (Yuanbao) L1 - 完整支持
ChatGPT ⚠️ L2 - 骨架完成
Kimi ⚠️ L2 - 骨架完成
豆包 ⚠️ L2 - 骨架完成
Claude ⚠️ L2 - 骨架完成
通义千问 L3 - 规划中
DeepSeek L3 - 规划中
文心一言 L3 - 规划中(待定)

能力分级说明

  • L1 (完整支持) — 适配器、标准化器、导出器全部实现,可在实际页面使用
  • L2 (骨架完成) — 核心代码已实现,但未经过实际页面验证,可能需要调整
  • L3 (规划中) — 已列入路线图,等待实现

当前 Yuanbao 为唯一 L1 支持平台。ChatGPT、Kimi、豆包、Claude 为 L2 状态(骨架完成,待验证)。其他平台详见 docs/CN_PLATFORM_MATRIX.mddocs/ALPHA_STATUS.md


🛠️ 安装与使用

前置要求

  • Bun 1.2+(推荐)或 Node.js 18+(仅开发/构建时需要)
  • Tampermonkey 浏览器扩展

快速开始

直接使用(推荐)

  1. 确保浏览器已安装 Tampermonkey 扩展
  2. 打开 userscripts/chat-export.v2.user.js 的 Raw 页面,点击安装
  3. 访问对应平台网站(如 腾讯元宝
  4. 页面右下角会出现导出按钮

开发/构建

# 克隆仓库
cd chat-export-toolkit

# 安装依赖
bun install

# 开发模式(监听构建)
bun run dev

# 生产构建
bun run build

# 类型检查
bun run typecheck

构建产物位于 userscripts/chat-export.v2.user.js


📂 目录结构

chat-export-toolkit/
├── src/
│   ├── index.ts              # 主入口 (ChatExportToolkit 类)
│   ├── types/                # 统一类型定义 (Conversation, Message 等)
│   ├── core/                 # 核心接口与实现
│   │   ├── interfaces.ts     # IPlatformAdapter, INormalizer, IExporter 等
│   │   ├── store.ts          # 存储层 (BrowserStore, MemoryStore)
│   │   ├── runtime.ts        # 运行时桥接 (跨 browser/node/userscript)
│   │   └── interceptor.ts    # API 请求拦截器
│   ├── adapters/             # 平台适配器层
│   │   ├── base.ts           # BasePlatformAdapter 基类
│   │   ├── yuanbao.ts        # 元宝适配器 (L1)
│   │   └── chatgpt.ts        # ChatGPT 适配器 (L2)
│   ├── normalizers/          # 标准化层
│   │   ├── base.ts           # BaseNormalizer 基类
│   │   ├── yuanbao.ts        # 元宝标准化器 (L1)
│   │   └── chatgpt.ts        # ChatGPT 标准化器 (L2)
│   ├── exporters/            # 导出层
│   │   ├── base.ts           # BaseExporter 基类
│   │   ├── json.ts           # JSON 导出器
│   │   ├── markdown.ts       # Markdown 导出器
│   │   └── docx.ts           # DOCX 导出器
│   ├── ui/                   # UI 组件层
│   │   ├── base.ts           # BaseUI 基类
│   │   └── components.ts     # FAB 按钮、导出面板等
│   └── utils/                # 通用工具函数
├── fixtures/                 # 示例数据与测试文件
├── userscripts/              # 构建产物 (Tampermonkey Userscript)
├── docs/                     # 技术文档
│   ├── PRD.md                # 产品需求文档
│   ├── ARCHITECTURE.md       # 架构说明
│   ├── ADAPTERS.md           # 适配器开发指南
│   └── ...
├── package.json
├── tsconfig.json
└── vite.config.ts

🏗️ V2 架构说明

数据流

页面加载
   ↓
RuntimeBridge 初始化 (环境检测)
   ↓
Store 初始化 (localStorage)
   ↓
平台检测 (detectPlatform)
   ↓
Adapter → Normalizer → Exporter 初始化
   ↓
Interceptor 安装 (捕获 API 请求)
   ↓
UI 初始化 (FAB + Panel)
   ↓
等待用户操作

核心接口

// 平台适配器
interface IPlatformAdapter {
  detect(): boolean;
  getConversation(id?: string): Promise<RawConversation>;
  listConversations(): Promise<RawConversation[]>;
}

// 标准化器
interface INormalizer {
  normalizeConversation(raw: RawConversation): Promise<Conversation>;
  normalizeMessage(raw: RawMessage): Promise<Message>;
}

// 导出器
interface IExporter {
  exportConversation(conv: Conversation, options: ExportOptions): Promise<ExportResult>;
}

详细架构文档见 docs/ARCHITECTURE.md


⚠️ 当前限制与风险

技术限制

  1. 实际数据捕获待验证 — Interceptor 依赖各平台的 API 请求格式,需要在真实页面上测试验证
  2. 批量导出未完成exportAllConversations() 当前返回 stub 错误,ZIP 打包逻辑待实现
  3. API 端点探测 — 当前使用硬编码候选端点,自动探测逻辑待完善
  4. ChatGPT 支持 — 适配器已实现但未经过实际页面验证,可能需要根据实际 API 调整

使用风险

  • API 变更风险 — 各平台 API 可能随时变更,导致拦截器失效
  • CORS 限制 — 部分平台可能有严格的 CORS 策略,影响请求拦截
  • DOM 回退 — 当 API 拦截失败时,DOM 解析可能无法获取完整内容
  • 浏览器兼容性 — 主要在 Chrome/Firefox 上测试,Safari 兼容性待验证

安全提示

  • 本脚本仅在浏览器本地运行,不向任何外部服务器发送数据
  • 导出的文件存储在本地,请妥善保管
  • 不要在不信任的网站上安装此脚本

📖 文档索引

核心文档

发布相关


🤝 贡献

欢迎提交 Issue 和 Pull Request!

当前优先任务(v0.7.x - v0.8.x):

  1. 在 ChatGPT 实际页面上验证 L2 适配器
  2. 实现批量导出(ZIP 打包)功能
  3. 添加更多平台适配器(Kimi, 豆包,Claude 等)
  4. 完善 E2E 测试覆盖

详见 docs/ALPHA_STATUS.md 了解完整路线图。


📄 许可证

MIT License


📝 关于本项目

本项目起源于腾讯元宝的对话导出脚本 (V1),于 2026 年 3 月重构为 V2 架构。V2 的核心目标是:

  • 可扩展 — 通过适配器模式支持多平台
  • 可维护 — 清晰的模块划分和类型定义
  • 可测试 — 统一的接口便于单元测试和集成测试

当前版本: v0.7.0-alpha.1
产品形态: Tampermonkey Userscript (userscripts/chat-export.v2.user.js)

目前处于 Alpha 阶段 — 核心架构已完成,主要功能可用,但部分特性(如批量导出、更多平台支持)仍在开发中。欢迎试用和反馈,但请勿在生产环境中依赖。

详见 docs/ALPHA_STATUS.md 了解当前状态和已知限制。