Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
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%

AltStyle によって変換されたページ (->オリジナル) /