fuadmefleh/Shared-Claude-Chats
GitHub: fuadmefleh/Shared-Claude-Chats
一个多平台公开 AI 对话的 Markdown 存档库,包含超过 1500 条对话及配套的批量导出脚本。
Stars: 927 | Forks: 149
# 共享 AI 对话
一个公开的 Claude、Grok、Kimi、Qwen 和 DeepSeek 对话存档,
从它们的分享链接导出为纯 Markdown 格式,外加生成这些内容的五个脚本。
少量没有公开分享链接的其他对话,由人工手动从来源处添加,与它们存放在一起。
1,525 个对话,12,052 条消息,约 33 MB。
| 目录 | 来源 | 对话数 | 消息数 | 最长对话 |
| --- | --- | --- | --- | --- |
| `claude_chats/` | `claude.ai/share` | 753 | 7,831 | 282 |
| `grok_chats/` | `grok.com/share` | 518 | 2,902 | 208 |
| `kimi_chats/` | `kimi.com/share` | 57 | 171 | 28 |
| `qwen_chats/` | `chat.qwen.ai/s` | 23 | 132 | 24 |
| `deepseek_chats/` | `chat.deepseek.com/share` | 171 | 1,010 | 382 |
| `aistudio_chats/` | Google AI Studio (手工录入) | 3 | 6 | 4 |
## 目录结构
```
scripts/claude_share_export.py exporter for claude.ai shares
scripts/grok_share_export.py exporter for grok.com shares
scripts/kimi_share_export.py exporter for kimi.com shares
scripts/qwen_share_export.py exporter for chat.qwen.ai shares
scripts/deepseek_share_export.py exporter for chat.deepseek.com shares
scripts/aistudio_export.py converter for raw Google AI Studio page copies
link_lists/claudeaisharelinks.txt the claude.ai links this archive was built from
link_lists/grokaisharelinks.txt the grok.com links this archive was built from
link_lists/kimiaisharelinks.txt the kimi.com links this archive was built from
link_lists/qwenaisharelinks.txt the chat.qwen.ai links this archive was built from
link_lists/qwendeploysharelinks.txt chat.qwen.ai/s/deploy/... links -- not exportable, see below
link_lists/deepseeksharelinks.txt the chat.deepseek.com links this archive was built from
banned.txt share links excluded after screening -- see Content screening below
raw_google_dumps/ raw AI Studio page copies aistudio_export.py reads
claude_chats/ one markdown file per Claude conversation
grok_chats/ one markdown file per Grok conversation
kimi_chats/ one markdown file per Kimi conversation
qwen_chats/ one markdown file per Qwen conversation
deepseek_chats/ one markdown file per DeepSeek conversation
aistudio_chats/ one markdown file per AI Studio conversation
claude_chats/.claude-share-export.json manifest for claude_chats/
grok_chats/.grok-share-export.json manifest for grok_chats/
kimi_chats/.kimi-share-export.json manifest for kimi_chats/
qwen_chats/.qwen-share-export.json manifest for qwen_chats/
deepseek_chats/.deepseek-share-export.json manifest for deepseek_chats/
aistudio_chats/.aistudio-export.json manifest for aistudio_chats/
```
每个对话都是一个 Markdown 文件,根据其标题命名:
```
Adding-Kerberos-Authentication-to-Hadoop-Cluster-on-EC2.md
AI-inflection-point-and-the-future-of-automation.md
네이버-AI-모델서비스-기획-직무-기업조사-리포트.md
```
标题保留其原始字符而不进行音译,因此出现非拉丁字符的文件名是正常的。
没有可用标题的对话会回退使用其快照 UUID(`18754235-198d-446b-afc6-26191ea62d27.md`)。
## 文件格式
所有六个转换器输出的格式都是相同的:一个元数据头部,然后是由水平线分隔的交替对话轮次。
```
# Naver AI 模型/服务规划职能企业调查报告
- Source: https://claude.ai/share/b76ffb8c-8a9d-43fb-b02d-0990e2e2fc7c
- Author: 쏠테크
- Created: 2026-02-04
- Messages: 2
---
## Human
당신은 자기소개서 작성을 돕기 위해…
---
## Assistant
# 调查策略
…
```
每次轮次之前的 `---` 是至关重要的。消息主体本身包含 Markdown 标题,如果没有这个分隔符,`## Assistant` 轮次标记将无法与回复内部编写的标题区分开来。
头部内容因来源而略有不同:Claude 和 Kimi 的记录包含 `Author`,Grok 和 AI Studio 的记录包含 `Model`,而 Qwen 的记录两者都不包含(其分享 API 不提供作者或模型名称)。
DeepSeek 的记录仅在其分享端点提供了比其 API 通常反馈的通用字面量 `default` 更具体的信息时,才会包含 `Model`。
Grok 的记录还可能包含生成的图像链接、附件名称,并且——在使用相关标志导出时——包含引用的思考步骤和引用的网络/X 来源。
Kimi 的记录可能包含引用的 `Tool:` 块——网络搜索、代码执行或助手在对话中途进行的其他工具调用,这些内容直接内联显示,而不是隐藏在某个标志之后。
Qwen 和 DeepSeek 的记录在使用 `--include-thinking` 导出时,可能包含引用的 `Thinking` 块(推理模型的 `reasoning_content` / `thinking_content`),以及用于上传文件的 `_Attachments: ..._` 名称。
AI Studio 的记录可能包含用于上传文件的 `[Attachment: name (size)]` 标记,并且如果原始转储中没有记录 `LINK:` 行,则会完全省略 `Source`。
## 清单文件
`claude_chats/.claude-share-export.json`, `grok_chats/.grok-share-export.json`,
`kimi_chats/.kimi-share-export.json`, `qwen_chats/.qwen-share-export.json`,
`deepseek_chats/.deepseek-share-export.json` 和
`aistudio_chats/.aistudio-export.json` 将每个对话映射到为其写入的文件,以及标题、消息数量和导出时间戳。
每个转换器都会读取自己的清单文件,以跳过已经存在的对话,因此重新运行相同的输入成本很低。
删除清单文件意味着下一次运行将重新转换其涵盖的所有内容。
对于五个分享链接导出器,会在输出目录及其上一级目录中查找清单文件,并且随后被移动到子目录中的记录会通过名称识别,而不是再次下载。
`aistudio_export.py` 的清单文件以原始转储自身字节的哈希值作为键,因为转储文件本身没有 id。
## 添加更多内容
Claude 和 Grok 需要 `curl_cffi`;Kimi、Qwen 和 DeepSeek 需要 `requests`:
```
pip install -r requirements.txt
```
将分享链接放入一个文件中,每行一个——空行和 `#` 注释会被忽略:
```
# new batch
https://claude.ai/share/b76ffb8c-8a9d-43fb-b02d-0990e2e2fc7c
https://claude.ai/share/7a9b58a6-0903-4964-8207-cbe44de743ff
```
然后导出到匹配的目录中:
```
python3 scripts/claude_share_export.py link_lists/claudeaisharelinks.txt -o claude_chats
python3 scripts/grok_share_export.py link_lists/grokaisharelinks.txt -o grok_chats
python3 scripts/kimi_share_export.py link_lists/kimiaisharelinks.txt -o kimi_chats
python3 scripts/qwen_share_export.py link_lists/qwenaisharelinks.txt -o qwen_chats
python3 scripts/deepseek_share_export.py link_lists/deepseeksharelinks.txt -o deepseek_chats
```
这五个工具中的任何一个都可以接受裸链接或 id 作为位置参数,使用 `-f
FILE`(可重复使用)代替位置链接文件,并且 `-o` 默认为当前目录。
Kimi 的链接可能包含区域设置段(`kimi.com/share/en/`)和跟踪查询字符串(`?ra=1`);在获取之前,两者都会被剥离为纯粹的 id。
Qwen 的链接可能包含跟踪查询字符串(`?fev=...`);但无论哪种情况,都会从路径中提取出 UUID。
DeepSeek 的分享 id 是一个 18 个字符的字母数字字符串,而不是 UUID(例如 `t119blfapmrbckthu2`);导出器会匹配该模式。
已经存档的对话会被跳过,因此持续向一个链接文件中追加内容并重新运行是安全的。
使用 `--force` 可以重新获取自存档以来添加了新消息的对话——该存档是一个快照,而不是实时镜像。
可选的内容标志,默认关闭(Kimi 没有,其工具调用块始终包含在内):
- `--include-thinking` (Claude, Qwen, DeepSeek) — 思考/推理块,仅当快照中暴露了这些内容时才会显示
- `--include-sources` (仅限 Grok) — 每个回答引用的网页和 X 帖子
### AI Studio (手工录入)
Google AI Studio 提示词(`aistudio.google.com/app/prompts/...`)位于 Google 登录限制之后——没有可供获取的公共分享 API,因此这里没有 `-links.txt` 工作流。相反:
1. 全选并复制聊天页面的文本,并将其粘贴到 `raw_google_dumps/` 下的一个新 `.txt` 文件中。
可以选择在开头添加一行 `LINK: `,以便记录记录的来源。
2. 转换它:
python3 scripts/aistudio_export.py raw_google_dumps -o aistudio_chats --model "Gemini 2.5 Pro"
`aistudio_export.py` 会剥离页面自身的 UI 外壳(`ThinkingThoughts`、
`chevron_right`、免责声明页脚、`file thumbnail` 块),并根据留下的 `User`/`Model` 说话者标签进行拆分。
`--model` 会被记录在此次运行生成的每一个记录中;无法从转储文件中检测到它。
3. 如果复制时漏掉了某条回复的文本(AI Studio 有时只会复制折叠的思考切换外壳,而不是其下方的响应),脚本会打印警告并写入 `_[empty message -- not captured in the raw
copy]_` ——将缺失的文本粘贴回转储文件中并重新运行。
已转换的转储文件在重新运行时会被跳过(通过内容哈希匹配);使用 `--force` 可重新转换你已编辑过的文件。
### Qwen artifact/deploy 分享 (不支持)
`chat.qwen.ai/s/deploy/` 链接与 `qwen_share_export.py` 处理的 `chat.qwen.ai/s/` 对话分享是不同的 Qwen 功能——它们是渲染好的 mini-app/artifact 预览(实时 HTML/CSS/JS),而不是聊天记录,因此它们即使原则上也不符合此存档的 Markdown 记录格式。
它们也无法像常规分享那样获取:`/s/deploy/` 页面和任何其他 Qwen 分享页面一样是一个空壳,但是其自身前端为了加载真实内容而发起的后续 API 调用(`GET /api/v2/share/message/`,通过阅读 Qwen 的前端 JS 发现),对于未经身份验证的请求几乎总是返回服务器错误——这与真正公开的 `/api/v2/chats/share/` 不同。
这些链接被排除在 `qwenaisharelinks.txt` 之外,并存放在 `link_lists/qwendeploysharelinks.txt` 中,因此正常的导出运行不会一直因为它们而失败。
## 注意事项
通过五个 `*_share_export.py` 脚本只能访问公开的分享内容;没有经过身份验证的路径,因此已撤销或私有的对话会返回“未找到”。
链接文件已被修剪为实际能导出的内容,因此重新运行它们中的任何一个都应该顺利返回结果。
`aistudio_chats/` 是故意设置的例外——这些对话从未公开过,因此它们是通过人工从私人的、已登录的会话中转录的,而不是通过抓取获取。
Claude 和 Grok 的分享页面是空的 SPA 外壳,因此这两个导出器直接读取底层的 JSON API。
这些端点位于针对 TLS 指纹而非请求头进行检测的 Cloudflare 检查之后,这就是为什么它们使用 `curl_cffi`(浏览器 TLS 模拟)而不是普通的 `requests`。
Kimi 的分享页面是服务器渲染的——对话 JSON 嵌入在 `window.HYDRATION_INIT_STATE = {...}` script 标签中,不需要单独的 API 调用——并且它没有位于 Cloudflare 门控之后,所以 `kimi_share_export.py` 使用普通的 `requests`。
Qwen 的分享页面也是和 Claude 一样的客户端渲染 SPA 外壳,但其 API (`GET /api/v2/chats/share/`) 总是返回 HTTP 200——已删除或取消共享的对话是通过 JSON 主体中的 `"success": false` 而不是状态行来标识的——并且也没有位于 Cloudflare 门控之后,所以 `qwen_share_export.py` 也使用普通的 `requests`。
DeepSeek 的分享页面 (`/share/`) 受到 AWS WAF 的 *JavaScript* 挑战限制,而不是 TLS 指纹检查——对于任何无法执行 `challenge.js` 的客户端(包括 `curl_cffi` 模拟),它都会返回带有挑战存根的 HTTP 202,因此根本无法直接读取该页面。
然而,它的数据 API `GET /api/v0/share/content?share_id=` 位于该门控之外,并且对不需要 token 或 cookie 的裸 `requests` 调用返回纯 JSON——这是通过在真实浏览器中加载分享页面并读取其 Network 面板发现的,而不是靠猜测。与 Qwen 一样,它总是返回 HTTP 200;失败通过非零的 `data.biz_code` 加上 `data.biz_msg` 字符串来标识。
DeepSeek 自身的分享功能不会记录每个对话的原始标题——目前观察到的每个分享都带有相同的字面占位符 `"Shared Conversation"`——因此当 `deepseek_share_export.py` 看到该占位符时,会回退使用第一条消息的文本片段作为文件名和 `#` 标题。一些 DeepSeek 分享也只导出较长对话的后缀部分:包含的最早消息的 `parent_id` 指向了一条从未作为有效载荷一部分的更早的消息(而不是指向空),因此排序逻辑会回退,将任何父消息不存在于有效载荷中的消息视为根节点。
仅凭有效载荷无法判断给定的记录是整个对话还是仅仅是其尾部。
上游会丢失一些保真度。Claude 自身的分享 API 将工具调用和搜索小部件扁平化为字面量 `This block is not supported on your current device
yet.` 的文本块,而这个占位符就是最终保留在这些文件中的内容。导出管道中没有任何内容能够恢复原始内容。
## 内容审查
每一批新导出的对话在提交之前都会经过审查,主要针对两个方面:NSFW/不安全内容,以及未经同意暴露真实的、可识别的私人个体敏感信息的内容(他们自己或指定的第三方的联系信息、健康/精神诊断、法律案件细节,或其他可能用于定位、联系或诽谤他们的具体信息)。判断是基于实际内容的,而不是主题或标题——关于医疗、法律或其他敏感话题的对话*不会*被自动排除。
任何被排除的内容的分享链接都会被记录在 `banned.txt` 中,这样未来的导出运行就不会重新添加它,并且——对于在已经提交后才被捕获的任何内容——会重写其 git 历史记录以清除该内容,而不仅仅是删除当前文件。
标签:AI对话, LLM, Markdown, Unmanaged PE, 数据导出, 逆向工具, 防御加固