markdown 写微信公众号,排版交给 mdnice

news2024/11/19 9:23:37

图片

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 mdnice

USAGE:
   mdnice [global options] command [command options] [arguments...]

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL 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 "在线导图")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183669.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

L4 Latent Variable Model

Lecture4 Latent Variable Model 在之前我们所介绍的Autoregressive Model和Flow Model中,讨论的都是observable的数据,及一切数据都是可以观测到的。这一讲主要讨论的是latent variable model,即有些变量我们是无法直接观测的。 Latent Va…

2022尚硅谷SSM框架跟学(六)Spring MVC基础一

2022尚硅谷SSM框架跟学 六Spring MVC基础一三、SpringMVC1.SpringMVC简介1.1什么是MVC1.2什么是SpringMVC1.3SpringMVC的特点2入门案例2.1开发环境2.2创建maven工程(1)添加web模块(2)打包方式:war(3)引入依赖2.3配置web.xml(1)默认配置方式(2)扩展配置方式2.4创建请…

C++封装Halcon算法动态链接库Dll补充

前面写了一篇关于C封装DLL的文章,这里是做一个补充。 一、关于如何配置halcon和opencv库不再多说,前面文章介绍的很详细。下面介绍封装新增的东西。 1.1 首先创建类function1,并编写function.h和function1.cpp代码。 function1.h代码 #pra…

处理任务失败附实验(RH294)

首先,一个任务执行失败是肯定会遇见的事情而这时候,就需要一个备用的计划忽略任务失败默认情况下 任务失败的时候play会终止但是,我们可以通过忽略失败的任务来覆盖此行文使用关键字 ignore_errors举个栗子- name: Latest version of notapkg…

《流浪地球 2》 Deepfake 小试牛刀,45+ 吴京「被」年轻,变身 21 岁小鲜肉

内容一览:在春节档科幻电影「流浪地球 2」中,主演吴京、刘德华、沙溢等人饰演的角色,跨越 14 年之久,视效团队正是借助 Deepfake de-aging 技术,呈现出了演员不同年龄段的容貌。 关键词:De-aging Deepfa…

回收租赁商城系统功能拆解13讲-分销会员

回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 可以快速帮助企业搭建类似闲鱼回收/爱回收/爱租机/人人租等回收租赁商城。 回收租赁系统支持智能评估回收价格,后台调整最终回收价,用户同意回收后系统即刻放款,用户微信零…

springboot应用项目的打包和部署

jar包方式打包部署 springboot项目在为进行打包处理时就已经可以进行运行调试,是因为springboot项目内嵌了Tomcat服务器. .1添加Maven打包插件。在对Spring Boot项目进行打包(包括ar包和War包)前,需要在项目pom.xml文件中加入Maven打包插件&#xff0c…

倾角传感器的六大应用场合

倾角传感器又名水平传感器、水平仪、倾角仪,是角度传感器的一种,是运用惯性原理的一种加速度传感器,可以通过检测使用环境中的倾斜角度判断设备的倾斜状态,并在监测物出现角度偏差时,倾角传感器能够将异常数据传达给管…

【自学Docker 】Docker export命令

Docker export命令 概述 docker export教程 docker export 命令可以用于将 Docker容器 里的文件系统作为一个 tar 归档文件导出到标准输出。docker export 命令后面的 CONTAINER 可以是容器Id,或者是容器名。 docker save 命令用于将 Docker 镜像保存成 tar 包&a…

5nm三苯甲基/P3HT-PY/CdSe油溶性碳量子点CdSe/ZnS-PrPC的制备方法

5nm三苯甲基/P3HT-PY/CdSe油溶性碳量子点CdSe/ZnS-PrPC的制备方法今天小编分享制备三苯甲基功能化油溶性碳量子点的制备过程,一起看看吧:三苯甲基功能化油溶性碳量子点的制备过程:将50 mg Amino-CQDs放置在100 mL圆底烧瓶中,加入 50 mL二氯甲…

PyQt6-QLabel学习笔记

QLabel支持文本或图片显示,是任何GUI设计中最常用的控件之一。一、QLabel基本概述QLabel标签用于显示,可以以多种方式进行外观配置,没有提供用户交互功能,但是可以用于为另一个小部件指定焦点助记符或快捷键。显示内容类型类型说明…

HoloLens 2 应用开发流程笔记

本文链接:微信推文阅读效果更佳 目录安装工具应用开发举例配置 Unity创建新的 Unity 项目切换生成平台导入和配置资源导入 MRTK Unity 基础包配置 Unity 项目为 XR SDK 配置项目设置创建场景并配置 MRTK交互例子添加并调整第一个立方体向立方体添加脚本添加第二个立…

20篇高质量程序人生文章分享,做开发不仅仅只有代码

我一直觉得,我们做开发,不应该只有代码,合上公司的电脑脱离了公司的产品需求就脱离了程序,而应该结合软件的程序思维去更多的思考我们所处的生活和空间,从而指导自己面对更多的未曾见过的人与事,这可能就是…

Java基础之异常处理

一、小试牛刀 num1 / num2 当除数为零时,程序就会抛出异常,程序就会崩溃而导致退出。 我们可以通过异常处理机制来解决该问题 如果我们认为一段代码可能发生异常,可以使用try-catch-finally异常处理机制来解决。从而保证程序的健壮性。 将可能…

前端工程化-多维度检测重复代码

更多文章可关注我的个人博客:https://seven777777.github.io/myblog/ 1. 检测项目重复代码 1.1 检测方案:jscpd 方法一: 全局安装jscpd依赖npm i -g jscpd项目根路径执行:jscpd -p "src/**/*.js" -k 15 -l 5 方法二…

【黑马SpringCloud(3)】Docker

Docker初识DockerDocker与虚拟机的区别Docker架构DockerHubDocker镜像操作Docker容器操作数据卷自定义镜像镜像结构Dockerfile构建Java项目基于java:8-alpine镜像,构建java项目集群部署微服务Docker-Compose镜像仓库搭建私有镜像仓库Docker安装:https://…

Go第 14 章 :文件操作

Go第 14 章 :文件操作 14.1 文件的基本介绍  文件的概念 文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的 word文档,txt文 件,excel 文件…都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保持视频,声 音… …

排序分页多表查询

文章目录一、排序ORDER BY排序规则单列排序多列排序二、分页LIMIT背景实现格式举例公式优点三、多表查询笛卡尔积(或交叉连接)的理解解决笛卡尔积问题多表查询分类等值连接非等值连接自连接内连接 vs 外连接SQL99实现多表查询基本语法内连接(…

测试人员怎么对待Bug

测试人员如何描述发现的Bug咱们提Bug至少要包含这个问题出现的版本,问题出现的环境,问题出现的步骤,预期结果,实际结果。但不限于标题,bug归属,bug等价等等举个栗子😁很容易发现二维码被登入页面…

深入分析三层网络交换机的原理和设计

引言 传统路由器在网络中起到隔离网络、隔离广播、路由转发以及防火墙的作业,并且随着网络的不断发展,路由器的负荷也在迅速增长。其中一个重要原因是出于安全和管理方便等方面的考虑,VLAN(虚拟局域网)技术在网络中大量应用。VLAN技术可以逻辑…