手册
复制 Markdown
把完整 ChatGPT 回答或 Reader 选区复制成 Markdown,尽量保留标题、列表、代码块、表格和公式。
这个功能解决什么问题
ChatGPT 自带复制经常只适合临时粘一下。回答里一旦有公式、表格、代码块或引用,粘到 Obsidian、Notion、Typora 里就容易变脏。
AI-MarkDone 做的是另一件事:尽量拿到可继续编辑的 Markdown,而不是只复制屏幕上看见的文字。
什么时候用
- 想把完整回答放进 Obsidian、Typora、VS Code 或 Git。
- 只想复制长回答中的几段。
- 回答里有代码块、列表、表格或公式。
- 想减少复制后的二次清理。
从哪里复制
- 整条回答:点消息工具栏里的“复制 Markdown”。
- 局部内容:先打开 Reader,再选中需要的范围。
具体怎么做
- 复制整条回答时,直接点击消息工具栏里的“复制 Markdown”。
- 复制局部内容时,先打开 Reader。
- 选中你要的段落、列表、表格、代码块或公式。
- 使用 Reader 里的复制动作。
- 粘贴到你的笔记或编辑器中检查结果。
一条回答是怎么变成 Markdown 的
整条复制走的是一条比较短的链路:
- 找到当前这条 ChatGPT 回答。
- 刷新当前对话快照,拿到这一轮的 assistant 内容。
- 把内容整理成 Reader 使用的 Markdown。
- 清掉 ChatGPT 自己的引用标记、内部注释和多余空白。
- 统一公式写法,比如把
\(...\)转成$...$。 - 写入剪贴板。
Reader 里的局部复制稍微不同。它会先判断你选中了哪些 Markdown 单元,比如行内公式、代码块、表格、图片、标题或列表项。选中了完整单元,就复制原始 Markdown;只选了一小段普通文字,就复制这段可见文本。
这也是为什么局部复制建议在 Reader 里做。Reader 比原始 ChatGPT 页面更清楚一段内容属于哪个 Markdown 单元。
数据清洗会处理什么
可以把这一步理解成一次“从网页结构回到 Markdown 源码”的整理。下面用例子说明,左边是页面里容易混在一起的东西,右边是复制后应该进入剪贴板的样子。
| 清洗逻辑 | 原来 | 复制后 | 说明 |
|---|---|---|---|
| 去掉页面控件 | 正文旁边夹着 Copy、朗读、编辑、隐藏提示文字 → | 只留下回答正文 | 工具栏、无障碍提示和页面按钮不属于笔记内容。 |
| 保留标题结构 | 页面里是一个二级标题“模型选择” → | ## 模型选择 | 不是只复制大号文字,而是还原成 Markdown 标题。 |
| 保留列表层级 | 页面里看到缩进列表:第一层、第二层 → | - 第一层- 第二层 | 嵌套关系会继续存在,粘到笔记里不会变成一坨段落。 |
| 清理代码块外壳 | 代码块上方有语言栏、复制按钮,代码每行还有公共缩进 → | ```pythonprint(“hi”)``` | 复制的是代码本身,并尽量保留语言标记。 |
| 保护行内代码 | 文本里有一段代码,代码本身还包含反引号 → | 用更长的反引号包住这段代码 | 避免 Markdown 把代码提前截断。 |
| 还原渲染公式 | 页面上只看到漂亮公式,看不到 LaTeX 源码 → | $E=mc^2$ 或 $$...$$ | 从 KaTeX、MathML、data-math 等位置尽量找回原始公式。 |
| 统一原始公式分隔符 | \(x+y\) 或 \[x+y\] → | $x+y$ 或 $$x+y$$ | 不同来源的公式写法会统一成常见 Markdown 写法。 |
| 修复未渲染公式 | $x_i$ 被网页错误拆成斜体样式 → | $x_i$ | 有些页面会把下划线误当成斜体,复制前会尽量修回来。 |
| 还原表格 | HTML 表格里有表头、对齐和单元格换行 → | | 名称 | 数值 || — | —: | | 表格会转成 GFM Markdown 表格,并保留基本对齐。 |
| 处理表格里的竖线 | 单元格内容是 A | B → | A | B | 避免单元格里的竖线把表格列数打乱。 |
| 还原表格公式 | 表格单元格里显示的是渲染后的 x₁ + y → | | $x_1 + y$ | | 表格里的公式也尽量回到可编辑的 LaTeX。 |
| 保留链接和图片 | 网页链接“论文”和一张图片 → | [论文](https://...)、 | 链接和图片会按标准 Markdown 写法保留。 |
| 收紧空白 | 中间有很多空行、行尾空格 → | 只保留必要段落间距 | 粘贴后不需要再手动删一堆空行。 |
| Reader 局部复制 | 选区碰到一个行内公式、代码块、表格或图片 → | 按完整 Markdown 单元复制 | 这样局部复制也不容易把公式、代码或表格切坏。 |
支持哪些 Markdown 写法
| 类型 | 支持情况 | 说明 |
|---|---|---|
| 标题 | 支持 | # 到 ###### |
| 段落 | 支持 | 普通回答文本会按段落保留 |
| 加粗、斜体 | 支持 | **加粗**、*斜体* |
| 列表 | 支持 | 无序、有序、嵌套列表 |
| 行内代码 | 支持 | 保留反引号 |
| 代码块 | 支持 | 保留 fenced code block 和语言标记 |
| 引用块 | 支持 | 保留 > |
| 分割线 | 支持 | 保留 --- |
| 表格 | 支持 | 使用 GFM 表格 |
| 公式 | 支持 | 行内公式和块级公式 |
| 图片 | 支持 | 保留 Markdown 图片语法 |
| 链接 | 支持 | 保留 [文字](地址) 这种标准 Markdown 链接 |
常见问题
为什么局部复制要在 Reader 里做?
Reader 能更稳定地知道你选中的内容属于哪个 Markdown 单元。原始 ChatGPT 页面结构更复杂,选区更容易被按钮、引用和隐藏节点打断。
所有内容都能完美还原吗?
不能保证。AI-MarkDone 会尽量保留完整 Markdown 单元,但最终效果还取决于 ChatGPT 当前页面和目标编辑器。
截图最好同时展示原始回答和复制后的 Markdown 结果。