Skip to content
forked from RICHQAQ/PasteMD

一键将 Markdown 和网页 AI 对话(ChatGPT/DeepSeek等)完美粘贴到 Word、WPS 和 Excel 的效率工具 | One-click paste Markdown and AI responses (ChatGPT/DeepSeek) into Word, WPS, and Excel perfectly.

License

Notifications You must be signed in to change notification settings

Make-magic/PasteMD

 
 

Repository files navigation

PasteMD

PasteMD

Release Downloads License Python 3.12+ Platform

English | 简体中文

在写论文或报告时,从 ChatGPT / DeepSeek 等 AI 网站中复制出来的公式在 Word 里总是乱码?Markdown 表格复制到 Excel 总是不行?PasteMD 就是为了解决这个问题而生的,嘿嘿

我可是高性能的

一个常驻托盘的小工具: 从 剪贴板读取 Markdown,调用 Pandoc 转换为 DOCX,并自动插入到 Word/WPS 光标位置。

✨ 新功能:智能识别 Markdown 表格,一键粘贴到 Excel

✨ 新功能:智能识别 HTML富文本,方便直接复制网页上的ai回复,一键粘贴到 Word/WPS


功能特点

演示效果

Markdown → Word/WPS

演示动图

复制网页中的ai回复 → Word/WPS

演示HTML动图

Markdown 表格 → Excel

演示Excel动图

设置格式

演示设置格式动图

  • 全局热键(默认 Ctrl+Shift+B)一键粘贴 Markdown → DOCX。
  • ✨ 智能识别 Markdown 表格,自动粘贴到 Excel。
  • 自动识别当前前台应用:Word 或 WPS。
  • 智能打开所需应用为Word/Excel。
  • 托盘菜单,可保留文件、查看日志/配置等。
  • 支持系统通知提醒。
  • 无黑框,无阻塞,稳定运行。

📊 AI 网站兼容性测试

以下是主流 AI 对话网站的复制粘贴兼容性测试结果:

AI 网站 复制 Markdown
(无公式)
复制 Markdown
(含公式)
复制网页内容
(无公式)
复制网页内容
(含公式)
Kimi ✅ 完美支持 ✅ 完美支持 ✅ 完美支持 ⚠️ 无法显示公式
DeepSeek ✅ 完美支持 ✅ 完美支持 ✅ 完美支持 ✅ 完美支持
通义千问 ✅ 完美支持 ✅ 完美支持 ✅ 完美支持 ⚠️ 无法显示公式
豆包* ✅ 完美支持 ✅ 完美支持 ✅ 完美支持 ✅ 完美支持
智谱清言
/ChatGLM
✅ 完美支持 ✅ 完美支持 ✅ 完美支持 ✅ 完美支持
ChatGPT ✅ 完美支持 ⚠️ 公式显示为代码 ✅ 完美支持 ✅ 完美支持
Gemini ✅ 完美支持 ✅ 完美支持 ✅ 完美支持 ✅ 完美支持
Grok ✅ 完美支持 ✅ 完美支持 ✅ 完美支持 ✅ 完美支持
Claude ✅ 完美支持 ✅ 完美支持 ✅ 完美支持 ✅ 完美支持

图例说明:

  • 完美支持:格式、样式、公式会均正确显示
  • ⚠️ 公式显示为代码:数学公式会以 LaTeX 代码形式显示,需在 Word/WPS 中手动使用公式编辑器
  • ⚠️ 无法显示公式:数学公式会丢失,需在 Word/WPS 中手动使用公式编辑器,自行输入公式内容
  • 豆包:复制网页内容(含公式)前,需要在浏览器中开启“允许读取剪贴板”权限,可在 URL 地址栏左侧的图标中进行设置

测试说明:

  1. 复制 Markdown:点击 AI 回复中的"复制"按钮(通常复制的是 Markdown 格式,但是部分网站也会携带上html)
  2. 复制网页内容:直接选中 AI 回复内容进行复制(复制的是 HTML 富文本)

🚀使用方法

  1. 下载可执行文件(Releases 页面):

    • PasteMD_vx.x.x.exe便携版,需要你本机已经安装好 Pandoc 并能在命令行运行。 若未安装,请到 Pandoc 官网 下载安装即可。 (不再提供,需要请自行编译)
    • PasteMD_pandoc-Setup.exe一体化安装包,自带 Pandoc,不需要另外配置环境。
  2. 打开 Word、WPS 或 Excel,光标放在需要插入的位置。

  3. 复制 Markdown 或者 网页内容 到剪贴板,按下热键 Ctrl+Shift+B

  4. 转换结果会自动插入到文档中:

    • Markdown 表格 → 自动粘贴到 Excel(如果 Excel 已打开)
    • 普通 Markdown/网页内容 → 转换为 DOCX 并插入 Word/WPS
  5. 右下角会提示成功/失败。


⚙️配置

首次运行会生成 config.json,可手动编辑:

{
  "hotkey": "<ctrl>+<shift>+b",
  "pandoc_path": "pandoc",
  "reference_docx": null,
  "save_dir": "%USERPROFILE%\\Documents\\pastemd",
  "keep_file": false,
  "notify": true,
  "enable_excel": true,
  "excel_keep_format": true,
  "no_app_action": "open",
  "md_disable_first_para_indent": true,
  "html_disable_first_para_indent": true,
  "html_formatting": {
    "strikethrough_to_del": true
  },
  "move_cursor_to_end": true,
  "Keep_original_formula": false,
  "language": "zh",
  "pandoc_filters": []
}

字段说明:

  • hotkey:全局热键,语法如 <ctrl>+<alt>+v
  • pandoc_path:Pandoc 可执行文件路径。
  • reference_docx:Pandoc 参考模板(可选)。
  • save_dir:保留文件时的保存目录。
  • keep_file:是否保留生成的 DOCX 文件。
  • notify:是否显示系统通知。
  • enable_excel✨ 新功能 - 是否启用智能识别 Markdown 表格并粘贴到 Excel(默认 true)。
  • excel_keep_format✨ 新功能 - Excel 粘贴时是否保留 Markdown 格式(粗体、斜体、代码等),默认 true。
  • no_app_action✨ 新功能 当未检测到目标应用(如 Word/Excel)时的默认动作(默认 "open")。可选值:open=自动打开、save=仅保存、clipboard=复制文件到剪贴板、none=无操作。
  • md_disable_first_para_indent: - Markdown 转换时是否禁用第一段的特殊格式,统一为正文样式(默认 true)。
  • html_formatting: - HTML 富文本转换时的格式化选项。
    • strikethrough_to_del: - 是否将删除线 ~~ 转换为 <del> 标签,使得转换正确(默认 true)。
  • html_disable_first_para_indent: - HTML 富文本转换时是否禁用第一段的特殊格式,统一为正文样式(默认 true)。
  • move_cursor_to_end✨ 新功能 - 插入内容后是否将光标移动到插入内容的末尾(默认 true)。
  • Keep_original_formula✨ 新功能 - 是否保留原始数学公式(LaTeX 代码形式)。
  • language:界面语言,zh 中文,en 英文。
  • pandoc_filters✨ 新功能 - 自定义 Pandoc Filter 列表。可添加 .lua 脚本或可执行文件路径,Filter 将按照列表顺序依次执行。用于扩展 Pandoc 转换功能,如自定义格式处理、特殊语法转换等。默认为空列表。示例:["%APPDATA%\\npm\\mermaid-filter.cmd"] 可实现 Mermaid 图表支持。

修改后可在托盘菜单选择 “重载配置/热键” 立即生效。


🔧 高级功能:自定义 Pandoc Filters

什么是 Pandoc Filter?

Pandoc Filter 是在文档转换过程中对内容进行自定义处理的插件程序。PasteMD 支持配置多个 Filter,按顺序依次处理文档内容,实现扩展功能。

使用场景示例:Mermaid 图表支持

如果您想在 Markdown 中使用 Mermaid 图表并正确转换到 Word,可以使用 mermaid-filter

1. 安装 mermaid-filter

npm install --global mermaid-filter

前置条件:需要先安装 Node.js

⚠️ 故障排除:Chrome 下载失败

安装 mermaid-filter 时需要下载 Chromium 浏览器。如果自动下载失败,可以手动下载:

步骤 1:查找所需的 Chromium 版本号

查看文件:%APPDATA%\npm\node_modules\mermaid-filter\node_modules\puppeteer-core\lib\cjs\puppeteer\revisions.d.ts

找到类似以下内容:

chromium: "1108766";

或在报错信息里,如:

npm error Error: Download failed: server returned code 502. URL: https://npmmirror.com/mirrors/chromium-browser-snapshots/Win_x64/1108766/chrome-win.zip

找到类似 Win_x64/1108766 的版本号。

记下这个版本号(例如:1108766)。

步骤 2:下载 Chromium

根据上一步获取的版本号,下载对应的 Chromium:

https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/1108766/chrome-win.zip

(将 URL 中的 1108766 替换为你查到的版本号)

步骤 3:解压到指定目录

将下载的 chrome-win.zip 解压到以下目录:

%USERPROFILE%\.cache\puppeteer\chrome\win64-1108766\chrome-win

(目录中的 1108766 也需要替换为你的版本号)

解压后,应该有 chrome.exe 位于:
%USERPROFILE%\.cache\puppeteer\chrome\win64-1108766\chrome-win\chrome.exe

2. 配置到 PasteMD

方式一:通过设置界面

  • 打开 PasteMD 设置 → 转换选项卡 → Pandoc Filters
  • 点击「添加...」按钮
  • 选择 Filter 文件:%APPDATA%\npm\mermaid-filter.cmd
  • 保存设置

方式二:编辑配置文件

{
  "pandoc_filters": [
    "%APPDATA%\\npm\\mermaid-filter.cmd"
  ]
}

3. 测试效果

复制以下 Markdown 内容并使用 PasteMD 转换:

```mermaid
graph LR
    A[开始] --> B[处理]
    B --> C[结束]
```

Mermaid 图表将被渲染为图片并插入到 Word 文档中。

更多 Filter 资源


托盘菜单

  • 快捷显示:当前全局热键(只读)。
  • 启用热键:开/关全局热键。
  • 弹窗通知:开/关系统通知。
  • 无应用时动作:当未检测到 Word/WPS/Excel 时的默认动作(自动打开/仅保存/复制到剪贴板/无操作)。
  • 插入后移动光标到末尾:插入内容后是否将光标移动到插入内容的末尾。
  • HTML 格式化:切换 删除线 ~~ 转换为 <del> 等 HTML 自动整理,使得可以正确转换(防止部分网页没有解析这些格式,导致从网页复制粘贴无法显示这些格式)。
  • 实验性功能:启用/禁用 保留原始数学公式 等实验性功能。
  • 设置热键:通过图形界面录制并保存新的全局热键(即时生效)。
  • 保留生成文件:勾选后生成的 DOCX 会保存在 save_dir
  • 打开保存目录、查看日志、编辑配置、重载配置/热键。
  • 版本:显示当前版本;可检查更新;若检测到新版本,会显示条目并可点击打开下载页面。
  • 退出:退出程序。

📦从源码运行 / 打包

建议 Python 3.12 (64位)。

pip install -r requirements.txt
python main.py

使用 PyInstaller:

pyinstaller --clean -F -w -n PasteMD
  --icon assets\icons\logo.ico
  --add-data "assets\icons;assets\icons"
  --add-data "pastemd\i18n\locales\*.json;pastemd\i18n\locales"
  --add-data "pastemd\lua;pastemd\lua"
  --hidden-import plyer.platforms.win.notification
  main.py

生成的程序在 dist/PasteMD.exe


⭐ Star

感谢每一位 Star 的帮助,欢迎分享给更多小伙伴~,想要达成1k star🌟,我会努力的喵

喜欢你

Star History Chart

🍵支持与打赏

如果有什么想法和好建议,欢迎issue交流!🤯🤯🤯

也欢迎加入 PasteMD使用交流群 与其他用户交流:

PasteMD交流群二维码
扫码加入PasteMD QQ交流群

希望这个小工具对你有帮助,欢迎请作者👻喝杯咖啡☕~你的支持会让我更有动力持续修复问题、完善功能、适配更多场景并保持长期维护。感谢每一份支持!

送你一朵小花

支付宝 微信
支付宝打赏 微信打赏

根据你提供的 PasteMD-main 代码结构和内容,这是一个基于 Python 开发的应用程序,主要使用了以下技术栈:

  • GUI 框架: tkinter (用于设置界面和弹窗)
  • 系统托盘: pystray
  • 全局热键: pynput
  • 系统通知: plyer, win10toast (Windows), pync/AppleScript (macOS)
  • 文档处理: pandoc (核心转换), python-docx, openpyxl
  • 剪贴板管理: pyperclip, win32clipboard (Windows), AppKit (macOS)

既然你已经安装了 Pandoc 工具,以下是使用 Nuitka 在你的电脑上(假设是 Windows,如果是 macOS 请参考文末说明)进行编译部署的详细步骤。


第一步:准备环境

确保你已经安装了 Python (建议 3.10+),然后在项目根目录下打开终端(CMD 或 PowerShell),安装项目依赖和 Nuitka。

  1. 安装项目依赖

    pip install -r requirements.txt
  2. 安装 Nuitka (建议安装 zstandard 以支持 Onefile 压缩):

    pip install nuitka zstandard

第二步:确定资源文件路径

根据 pastemd/config/paths.py 的代码逻辑,程序运行时需要加载以下资源文件。我们需要告诉 Nuitka 把这些文件打包进去:

  1. 图标: assets/icons
  2. 翻译文件: pastemd/i18n/locales
  3. Lua 脚本 (用于Pandoc转换): pastemd/lua

第三步:执行 Nuitka 打包命令

请在 项目根目录(即包含 main.py 的那一层)执行以下命令。

方案 A:打包成单文件 (Onefile) - 推荐,分发方便

生成的 .exe 文件会比较大,但在任何地方双击即可运行。

python -m nuitka --onefile --standalone ^
    --mingw64 ^
    --show-progress ^
    --plugin-enable=tk-inter ^
    --windows-disable-console ^
    --windows-icon-from-ico=assets/icons/logo.ico ^
    --windows-product-name="PasteMD" ^
    --windows-company-name="RichQAQ" ^
    --windows-file-version=0.1.6.5 ^
    --include-data-dir=assets/icons=assets/icons ^
    --include-data-dir=pastemd/i18n/locales=pastemd/i18n/locales ^
    --include-data-dir=pastemd/lua=pastemd/lua ^
    --output-filename=PasteMD.exe ^
    main.py

注意:如果你使用的是 CMD 而不是 PowerShell,请将换行符 ^ 保持不变;如果是 Linux/macOS,请换成 \

方案 B:打包成文件夹 (Standalone) - 启动速度快,便于调试

这会生成一个 main.dist 文件夹,里面包含 PasteMD.exe 和依赖库。

python -m nuitka --standalone ^
    --plugin-enable=tk-inter ^
    --windows-disable-console ^
    --windows-icon-from-ico=assets/icons/logo.ico ^
    --include-data-dir=assets/icons=assets/icons ^
    --include-data-dir=pastemd/i18n/locales=pastemd/i18n/locales ^
    --include-data-dir=pastemd/lua=pastemd/lua ^
    --output-filename=PasteMD.exe ^
    main.py

第四步:关于 Pandoc 的处理

代码中的 pastemd/config/defaults.py 里的 find_pandoc() 函数会按以下顺序查找 Pandoc:

  1. 如果是 macOS,查找应用包内的路径。
  2. 查找 可执行文件同级目录 下的 pandoc/pandoc.exe
  3. 查找 资源路径 (PyInstaller/Nuitka 临时目录) 下的 pandoc/pandoc.exe
  4. 最后兜底:直接调用系统命令 pandoc

既然你电脑里已经安装了 Pandoc 并且配置了环境变量(PATH):

  • 不需要做额外操作。程序打包后,运行时会自动在系统 PATH 中找到你的 Pandoc。
  • 验证方法:运行打包好的 PasteMD.exe,在托盘图标右键 -> 设置 -> 转换 -> Pandoc 路径,应该显示为 pandoc 或者你系统的绝对路径。

如果你想让程序可以在没有安装 Pandoc 的电脑上运行: 你需要将你电脑上的 pandoc.exe 复制到 Nuitka 生成的文件夹中(如果是 Standalone 模式),或者在打包命令中增加 --include-data-file=你的pandoc路径=pandoc/pandoc.exe


第五步:运行与测试

  1. 运行
    • Onefile模式:直接双击生成的 PasteMD.exe
    • Standalone模式:进入 main.dist 文件夹,双击 PasteMD.exe
  2. 检查
    • 看右下角是否有托盘图标。
    • 右键托盘 -> 打开设置,检查配置是否正常加载。
    • 复制一段 Markdown,按 Ctrl+Shift+B,看是否能成功调用 Pandoc 并插入 Word。

如果你是 macOS 用户

项目代码中已经包含了一个现成的构建脚本:build_macos.sh

  1. 打开终端,进入项目目录。
  2. 确保安装了依赖和 Nuitka。
  3. 运行:
    chmod +x build_macos.sh
    ./build_macos.sh
  4. 这个脚本会自动处理打包、图标转换、权限描述写入(Info.plist)等 macOS 特有的操作。它会生成 nuitka/macos/PasteMD.app

常见问题排查

  1. plyer 报错:如果通知不显示,可能需要显式包含 plyer 的平台实现。可以在命令中加入: --include-module=plyer.platforms.win.notification (Windows)
  2. 找不到配置文件:程序首次运行会在用户目录(Documents/pastemdAppData 下)生成 config.json。如果报错,请检查日志文件(托盘菜单 -> 查看日志)。

License

This project is licensed under the MIT License.

About

一键将 Markdown 和网页 AI 对话(ChatGPT/DeepSeek等)完美粘贴到 Word、WPS 和 Excel 的效率工具 | One-click paste Markdown and AI responses (ChatGPT/DeepSeek) into Word, WPS, and Excel perfectly.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 94.3%
  • Shell 4.5%
  • Other 1.2%