mdnice

墨滴软件( https://product.mdnice.com/ ),提供了以面向微信公众号内容排版为主的辅助工具 Markdown Nice[1],效果堪称完美,极大的提升了发布微信公众号文章的效率。

使用其在线编辑器( https://editor.mdnice.com/ ),可在左侧编辑 markdown 内容时,右侧实时预览发布到公众号的效果,并包含多种主题可供选择和切换。

在线编辑器

!! 主题可在 https://product.mdnice.com/themes/ 订阅后使用。

图床

mdnice 中,还提供了一个隐藏得比较深的图床,可以直接将本地图片文件复制到在线编辑器中,即可获得一个使用 mdnice 图床的图片链接。

说其隐蔽,是因为上传后图片的链接会直接显示到在线编辑器中,没有其他页面能够查询到历史上传的图片,也没有办法再次获得这个链接,上传相同图片会获得一个新的链接。

但对于微信公众号中使用的图片来讲,只要从 mdnice 复制过去的时候,这个图片链接是可用的即可,微信公众号会将链接中的图片再上传到素材库中保留一份。

至于这个链接能够使用多久,在墨滴软件主页中有这样一段话:

!! 提供mdnice图床,长期保存图片不丢失

翻了一下在线编辑器的文章列表,2022 年 5 月末开始使用 mdnice 时上传的图片链接,目前还是可以使用的。

mdnice 图床也存在一些限制,如:上传的图片文件最大尺寸比较小(4MB 左右)、图片链接在 简书[2] 中无法使用(可通过 gooreplacer[3] 之类的浏览器插件,屏蔽掉在简书编辑器中发送 mdnice 图床请求的 Referer 头绕过限制)。但作为公众号或博客文章图片的免费图床来说,还是够用的。

困境

虽然使用 mdnice 已经节约了很多将 markdown 文档发布到微信公众号时所需的排版时间,但仍然有一种情况会比较耗时,即 md 文档中插入了大量本地图片文件时。

此时,排版的过程就不仅仅是将 markdown 内容粘贴到在线编辑器,再复制公众号格式到剪贴板后粘贴到微信公众号编辑器这两步了。中间还要加上将每个本地图片粘贴到在线编辑器中。如果图片很多,这个步骤很考验耐性和眼神。

cli

好在 mdnice 图床的接口比较简单,附加登录后的 JWT 后,可以直接通过一个 POST 请求将文件上传至图床,并获得图片链接,如:

$ curl --location --request POST 'https://api.mdnice.com/file/user/upload' \
--header 'Authorization: Bearer XXXX.XXXX.XXXX' \
--form 'file=@"/Users/alphahinex/Desktop/temp/2023-01-07/31673094869.JPG"'
{"success": true,"code": 0,"message": "操作成功!","data": "https://files.mdnice.com/user/30377/43028147-43f8-4757-9f3a-534d2d080f3f.JPG"
}

将其封装成为一个上传图片至 mdnice 图床的 cli 工具 —— mdnice[4]。

$ ./mdnice -h
NAME:mdnice - Upload pictures to mdniceUSAGE:mdnice [global options] command [command options] [arguments...]COMMANDS:help, h  Shows a list of commands or help for one commandGLOBAL OPTIONS:-i value                 Path to be uploaded (default: ".")--token value            Bearer token of mdnice--token-file value       Bearer token file of mdnice--img-path-prefix value  Path to add before image link (local file path) in markdown file--help, -h               show help (default: false)

批量上传图片

将指定路径下的所有图片文件,上传至图床,需要 mdnice 的 JWT(JSON Web Token)。图片上传到图床后的链接以 markdown 格式输出到图片来源路径的 README.md 文件中,上传失败的也会将失败原因记录至该 md 文件。

!! 如何获取 JWT?

浏览器访问 https://editor.mdnice.com/ ,登录后,打开开发者工具进行网络监控,刷新页面,选择 Fetch/XHR 类请求中 Request Headers 带 Authorization 的请求,其值即为 JWT,可通过参数传入,或保存至文件。

注意:传入的 token 需包含前面的 Bearer

示例

使用 token 文件中的 JWT,将 ./foo 路径下的所有(图片)文件上传:

$ ./mdnice -i ./foo --token-file token
Failed to upload 01670642460.GIF
Upload 01670642460.JPG done
Upload 11670642460.JPG done
Upload 21670642460.JPG done
Upload 31670642460.JPG done
Upload 41670642460.JPG done
Upload 51670642460.JPG done
Upload 61670642460.JPG done
Failed to upload 71670642460.PNG
Upload 81670642460.JPG done
Failed to upload README.md
$ cat ./foo/README.md
![](https://files.mdnice.com/user/30377/89e8cb29-4f58-4afc-a9cd-37018de437e3.JPG)
![](https://files.mdnice.com/user/30377/263b7008-eb99-4a0a-b502-2b3b1ceb6e3c.JPG)
![](https://files.mdnice.com/user/30377/4df30bf5-b763-4c94-801b-a7f52573e5c1.JPG)
![](https://files.mdnice.com/user/30377/bf4099ce-b81e-4320-aed7-7501bf06a22f.JPG)
![](https://files.mdnice.com/user/30377/f6183597-1929-42c9-bfa8-962b9521b0c7.JPG)
![](https://files.mdnice.com/user/30377/6f204840-cedd-4d67-909f-ef373bdf5443.JPG)
![](https://files.mdnice.com/user/30377/d42fa98a-0f30-4a87-8a26-32add001aa8d.JPG)
![](https://files.mdnice.com/user/30377/1a5152b1-a665-461e-8324-b58e3209a13a.JPG)---
1. Upload ./foo/01670642460.GIF failed: 50005:文件过大
1. Upload ./foo/71670642460.PNG failed: 50005:文件过大
1. Upload ./foo/README.md failed: 50005:文件类型错误,仅支持jpg、jpeg、png、gif、svg类型

替换 markdown 中的本地图片

markdown 文档引入本地图片文件时,可通过此工具将文档中的本地图片上传至 mdnice 图床,并将图片链接替换为 mdnice 图床的链接。替换后的文件输出到输入文件相同路径,以 _mdnice.md 为后缀;报错信息输出到 _err.md 后缀的文件内。

!! 注意:只会替换本地图片文件的链接。如果没有需要上传至图床的本地图片文件,则不会输出新文件。

示例

使用 token 文件中的 JWT,将 ./test.md 文件中的所有图片上传至图床,并获得替换图片链接后的新文件 test.md_mdnice.md

# 原始 markdown 文档内容
$ cat test.md
![png](/contents/covers/backend-skill-tree.png)[在线导图](https://www.processon.com/view/link/60f2d1b31efad41bbea9015e "在线导图")
# 上传本地图片
# 可根据实际情况传入 img-path-prefix 参数,作为前缀加在 markdown 中图片 url 前面,用在无法直接根据 url 在本地文件系统找到对应图片文件的情况
# 如果图片 url 直接使用的图片文件的绝对或相对路径,此参数非必须
$ ./mdnice \
--token-file ./token \
--img-path-prefix /Users/alphahinex/github/origin/AlphaHinex.github.io/source \
-i test.md
2023/01/07 20:01:02 [DEBUG] Upload /Users/alphahinex/github/origin/AlphaHinex.github.io/source/contents/covers/backend-skill-tree.png to mdnice...
Write updated content to test.md_mdnice.md
# 查看替换图片链接后的 markdown 文档内容
$ cat test.md_mdnice.md
![png](https://files.mdnice.com/user/30377/d02b13c8-23a3-4df5-9b24-0ff9b2cac52f.png)[在线导图](https://www.processon.com/view/link/60f2d1b31efad41bbea9015e "在线导图")

markdown 写微信公众号,排版交给 mdnice相关推荐

  1. chrome插件(Markdown Nice):用 markdown 写微信公众号

    基本信息 工具名称 Markdown Nice 在线版本 https://mdnice.com/ Chrome 插件 Markdown Nice GitHub 地址 https://github.co ...

  2. 这可能是用 Markdown 写微信公众号的终极解决方案

    转载https://blog.csdn.net/wirelessqa/article/details/105876032 对于习惯了使用 Markdown 写作的人来说,实在受不了微信公众号原生的排版 ...

  3. 这可能是 Markdown 写微信公众号的一款神器了!

    大家好,我是 JackTian. 在前两期的 Markdown 系列文章中,介绍了 Markdown 的基本语法使用以及通过 Markdown 语法字符绘制思维导图,具体可参考如下: 为什么要学习 M ...

  4. 用Markdown写微信公众号文章

    目前微信公众号的编辑器是不支持Markdown语法的,那怎么办呢? 有一款叫Markdown Here的插件可以解决这个问题(支持Chrome.Firefox.Safari). 官方网站:http:/ ...

  5. markdown编辑微信公众号

    前言 早前进入it这个行业就有写博客的习惯,之前用的一款百度出的[百度空间]的产品,当时一些文章还有不少的浏览量,可惜后来[百度空间]这款产品下线了,就这样自己的一点小积累付诸东流了.后来接触到了gi ...

  6. 微信公众号排版神器Markdown Nice

    Markdown Nice 体验地址 公元2019年,微信公众号排版能力孱弱,始终为运营者所诟病,秀米.135编辑器等工具割据一方. 但无论是微信原生工具,还是其他编辑器,都让创作者不得不将有限的创作 ...

  7. 微信公众号使用Chrome插件:Markdown Nice优化微信公众号排版教程

    Markdown Nice 是一个为了解决微信公众号排版而生的 Markdown 编辑器,当前有在线编辑器和 Chrome 插件 2 种产品形态. 下面介绍Chrome 插件:Markdown Nic ...

  8. 强推Markdown神器,一秒钟拯救微信公众号排版

    我一直觉得微信公众号是最难用的文章编辑器,直到我开始写知乎专栏.作为两个UGC内容为主的产品,用户体验如此之差真的大大降低了写作者的创作欲望. 基于这个痛点,滋养了一大批像365编辑器.壹伴.秀米等第 ...

  9. 轻松玩转微信公众号排版

    新手如何快速上手微信公众号排版? 有人推荐你秀米,有人推荐你壹伴等等.我在这里实名diss壹伴,我刚开通微信公众号那一天,迫不及待的想发一篇文章.我在某呼上看到有人吹壹伴甚至还有官方号自买自夸,我搞了 ...

最新文章

  1. python使用界面-如何使用python图形化界面wxPython
  2. Import和Assembly
  3. hadoop 2.9.2 yarn配置公平调度器
  4. 【剑指offer】面试题29:顺时针打印矩阵(Java)
  5. 云之道律师小程序源码V1.2.8完整全开源 安装包+小程序前端
  6. 高性能MySQL读书笔记 (五)
  7. python实现希尔排序(已编程实现)
  8. MFC中获取各种类指针的方法 (转)
  9. 赚了李嘉诚2.7亿元
  10. 区位码、国标码、机内码的区别和内在机制
  11. Adjoint of SE(3)
  12. mysql如何创建视图
  13. JavaWeb如何判断账户密码
  14. 北斗短报文的工作原理及作用
  15. 简单介绍一下ODI的几个基本概念
  16. Ubunt14.04搭建opengrok环境
  17. linux自动清理磁盘日志的一种方案
  18. MMDetection框架入门教程(一):Anaconda3下的安装教程(mmdet+mmdet3d)
  19. php7/etc/php-fpm.d 配置
  20. 韩国版微信Kakao推出公链,能否用区块链实现全球扩张?

热门文章

  1. APM/PIX通过mission planner扩展调参PID的设置实操案例 试着说清pid比例,微分,积分的原理,方法,设计
  2. HGP:STM32的用标准库函数自己编写的关于设置系统时钟72Mhz的函数
  3. 金高银真是韩圈里的清流,古典美的她穿上花裙子高级复古,很养眼
  4. 《MATLAB在语音信号分析与合成中的应用》下载地址
  5. 模拟雷神飞机游戏(简易版)
  6. 锐龙4800h笔记本安装Ubuntu20.04.1填坑实录
  7. 2020-08-05词汇
  8. 产品运营:如何做好B端竞品分析?
  9. 无线网络的胖瘦AP都过时了你知道现在的华为云AP是怎么部署的吗?
  10. Melodyne Studio 4 修音工具鬼畜调音必备