copy-to-mp
pendingby feiyu
Forked from Copy document as HTML
Copy the current document to a WeChat Official Account article, including images, charts, and other embedded content.
一键复制文档到微信公众号
这是一个 Obsidian 插件,可将当前文档以微信公众号格式复制到剪贴板,方便直接在公众号后台粘贴,实现快速分享。
插件支持 Markdown 正文、本地图片与网络图片 的完整复制,无需依赖第三方网站,也不需要配置公众号密钥、 Token 等任何信息。只需执行一次obsidian命令,复制后粘贴即可完成发布流程。
使用演示

功能特性
-
支持通过 命令面板(Ctrl + P) 运行,也可绑定快捷键
-
支持:复制选中内容,未选中内容时,复制整个文档
-
自动将内容转换为微信公众号可直接粘贴的 HTML 格式
-
媒体支持:支持本地图片和网络图片
-
18种内置样式:通过设置可以选择使用不同的样式方案(样式来源于 花生公众号排版器)
-
配置功能:粘贴内容可包含Markdown 文件名,文档开头的元数据
-
自定义样式:用户可根据需要自定义样式(待实现)
已知问题
-
暂不支持移动端 Obsidian
-
当图片较多或图片较大时,Data URI 方式可能占用较多内存
-
列表中部分加粗内容在个别场景下可能出现自动换行
-
不支持视频复制
使用说明
安装
由于提交obsidian官方还未审核通过,无法直接安装。
推荐通过BRAT插件间接安装。安装BRAT插件后,添加本插件的 GitHub 仓库地址:https://github.com/Spute/obsidian-copy-to-mp即可,后续更新插件也可以使用相同方式。安装演示如下:

本地安装方法可参考我的教程:
发现问题可在 Issue 中反馈。
切换样式
切换样式步骤如下:

PS: 样式预览可以在花生公众号排版器查看。
开发
参考:Obsidian 示例插件 官方文档:Build a plugin
- 推荐 Node.js 版本:v20.11.1
项目目录结构
obsidian-copy-as-html/
├── .github/ # GitHub 相关文件
│ └── workflows/ # CI/CD 工作流
├── node_modules/ # 依赖包
├── .editorconfig # 编辑器配置
├── .eslintignore # ESLint 忽略配置
├── .eslintrc # ESLint 配置
├── .gitignore # Git 忽略文件
├── .npmrc # npm 配置
├── esbuild.config.mjs # 构建配置
├── LICENSE # 许可证
├── main.js # 编译后的主插件文件
├── main.ts # 主 TypeScript 源代码
├── manifest.json # Obsidian 插件清单
├── package.json # npm 包配置
├── package-lock.json # npm 依赖锁定
├── pnpm-lock.yaml # pnpm 依赖锁定
├── README_zh.md # 中文版 README
├── styles.css # 插件样式
├── tsconfig.json # TypeScript 配置
├── version-bump.mjs # 版本更新脚本
└── versions.json # 版本历史
联系方式
WX联系方式,请道明来意,欢迎交流obsidian相关问题。
赞助与支持
感谢所有支持者的慷慨鼓励!每一份心意都是项目前进的重要动力。 注: 本列表按赞助时间顺序排列。
| 赞助者 | 金额 (CNY) | 留言 |
|---|---|---|
| 中國好青年7.0 | 18.88 | 十分感谢,新春快乐! |
如果您也愿意支持本项目的发展,欢迎通过 [赞助码] 为我们提供赞助。您的名字与寄语将会被展示在此处。
关于问题反馈与贡献
我们非常重视每一位用户的反馈,并欢迎社区的积极参与:
-
问题与建议:如果您在使用过程中发现了任何 Bug,或者有改进产品的想法,欢迎在 Issues 中留言。我会定期查看并处理。
-
代码贡献:如果您有时间并且有兴趣,我们也非常欢迎您通过提交 Pull Request (PR) 的方式直接贡献代码或修复问题。
感谢您帮助项目变得更好!
致谢
本项目参考并基于以下优秀开源项目,特此感谢:
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.