Typora + PicGo-Core + SM.MS图床

2020年3月13日更新:

经评论区作者大佬@Molunerfinn提醒, 得知最新的PicGo-Core已经自带支持smms-v2了, 非Windows用户不用看分隔线下面的内容了.

==========
运行在Windows上存在的问题总结如下

由于原版PicGo-Core没有提供Windows独立运行的可执行文件, 所以Typora官方是重新打包了一个旧的smms-v1版本, 需要安装一个插件才能使用, 但是这个插件有一个坑, 引用@Molunerfinn的评论就是:

"因为你用的是 picgo set plugin 来设置的。标准的uploader配置是通过 picgo set uploader 来配置的... 这个是smms-user的作者没有注意的一个问题,会导致困扰。"

==========

最近突然发现Typora更新了, 新增了原生对 PicGo-Core 的调用, 可以自动上传markdown内的图片, 于是赶紧尝鲜一波. 使用过程中遇到了一点坑, 但还是摸索着解决了.

1. 安装PicGo-Core

因为Typora已经原生支持PicGo-Core, 所以只需要在软件内下载一下就可以了(PS: 下面这张图就是用的自动上传, 很方便)

image-20200226192555818

首先点击上面红色1的位置, 选择PicGo-Core, 再点3(不要问我2去哪儿了....就当他不存在), 并等待下载完成.

2. 安装smms v2 API插件

这里是个大坑.

因为PicGo-Core默认的smms使用的是v1的api, 而目前smms已经停用了该版本API, 所以导致PicGo-Core在默认配置下, smms图床完全不可用

翻了一下PicGo-Core的Github发现作者目前还没有把内置的smms api升级到v2, 但是有其他开发者通过第三方插件的方式解决了这个问题, 所以我们需要安装这个v2版本的smms-user插件.

直接点击红色5的位置, 根据文本内容找到PicGo-Core的程序目录

image-20200226193128224

注意, 因为默认的smms api已经不可用, 这里肯定会上传失败, 不用管

找到目录后我们在picgo的目录下启动命令行, 执行如下命令, 并等待安装成功

.\picgo.exe install smms-user

3. 配置PicGo-Core

安装完成之后点击红色4的位置(红标顺序不代表点击顺序), 打开PicGo-Core的配置文件, 按照下面的格式无脑全选替换就行

{
  "picBed": {
    "current": "smms-user",
    "uploader": "smms-user",
    "smms-user": {
      "Authorization": "这里替换成你自己的"
    },
    "transformer": "path"
  },
  "picgoPlugins": {
    "picgo-plugin-smms-user": true
  }
}

没有Authorization的自己去这里申请一个: https://sm.ms/home/apitoken

申请前需要注册一个账号, 这个没啥难度, 就不细说了.

4. 体验效果

保存配置之后再点红标5的位置应该就可以正常上传图片了, 我们直接在Typora内粘贴一张图片, 就会有相应的提示

image-20200226194604800

或者在已有的本地图片上面按右键, 也可以弹出上传图片的按钮, 整个操作非常便捷, 上传速度也挺快的.

5. 踩坑

总的来说还是遇到了一些坑的, 接下来说一下坑点:

  1. PicGo-Core并没有编译Windows的版本, 所以Typora的作者是fork原版之后重新打包的, 这也导致了版本不能及时的跟主体保持同步更新.

我之前遇到smms v1 api不可用的问题时, 看到PicGo-Core的作者说会在新版本解决这个问题, 目前PicGo-Core的最新版本是1.4.6, 而Typora fork的版本是1.4.4, 我一开始还以为下载一个新版本就能解决, 特意跑去重新编译, 然而弄完发现1.4.6还是存在该问题, 于是遇到了第二个坑.

  1. 既然换版本不能解决, 我决定换一个图床试试, 翻了半天文档发现全是可视化配置, 然而我的PicGo-Core只有json文本文件配置, 最后发现原来picgo(PicGo-Core)和PicGo(PicGo-Electron)是不一样的

image-20200226200109710

  1. 调研了一下各个图床, 发现还是smms免费好用, 所以决定使用作者推荐的那个v2版本smms api插件.

然而安装完之后不知道在哪填Authorization, 去翻文档发现这么一句绕口令:

如果你为picgo开发了一个插件,如果这个插件本身需要一些配置项,那么这个插件对应的配置应该直接放置在配置文件下的同名配置里

image-20200226200502981

​ 思考了一下, 我以为是这样

{
  "picBed": {
    "current": "smms",
    "uploader": "smms",
    "transformer": "path"
  },
  "picgoPlugins": {
    "picgo-plugin-smms-user": true
  },
  "picgo-plugin-smms-user": {
      "Authorization": "xxxx"
  }
}

​ 然而测试上传的时候发现安装插件之后跟安装之前没有一点变化.

​ 思考&测试一番之后, 我发现插件并不会自动注入到smms图床配置中.

​ 大概要手动修改图床为插件名才能使用, 于是:

{
  "picBed": {
    "current": "smms-user",
    "uploader": "smms-user",
    "transformer": "path"
  },
    ....

​ 再进行测试又失败了, 但是这次不是说v1接口过时, 而是说找不到Authorization的配置项

  1. 开始以为是我手动写的格式不对, 所以又去翻了文档, 发现了PicGo-Core提供了命令行参数设置

    .\picgo.exe set plugin smms-user

​ 根据提示填写了Authorization, 结果自动生成的配置文件和我刚才手动写的一模一样, 但就是不行.

​ 最后又思考了一下, 看了看其他图床的配置方法, 决定仿照微博的配置, 试一下picBed.smms-user这种写法, 最后终于成功了= =

image-20200226200911579

6. 总结

虽然整个过程坑挺多的, 但毕竟这个功能也是新出的, 相信之后会越来越完善的

配置完之后用起来真的爽, 以后从Typora粘文章到博客上再也不用手动上传替换图片了~

本文链接:

https://www.lzskyline.com/archives/87/
1 + 2 =
13 评论
    aaaChrome 80Windows 10
    2月27日 回复

    666 刚好用到

    小新Firefox Browser 73Windows 10
    3月10日 回复

    太好了, 正在纠结怎么使用呢

    MolunerfinnChrome 80OSX
    3月13日 回复

    默默提示一下,最新的PicGo-Core已经自带支持smms-v2了。
    另外配置的时候可以使用 picgo set uploader 和 picgo use uploader,不用去翻配置文件...

      lzskylineChrome 80Windows 10
      3月13日 回复

      @Molunerfinn 原版PicGo-Core没有编译Windows端, 所以Typora作者是fork之后自己打包的, 如果Typora作者也同步更新到了最新版就太好了~
      我没有用过PicGo, 不太清楚这些命令, Typora的界面上只能打开PicGo-Core的配置页..不过有这些命令确实方便很多哈
      我用picgo自带的命令配置smms2的token的时候出bug了, 这个好像只能手动改配置

        CharonChrome 80Windows 10
        3月13日 回复

        @lzskyline 配置的时候先用图形化的安装好插件,配好之后,图形化的配置页是存储在JSON里,直接复制需要用的就好了

          lzskylineChrome 80Windows 10
          3月13日 回复

          @Charon 对的 我那会疯狂踩坑的时候有想过下载一个可视化版本的直接复制文件, 但是装完就卸载有点虐死强迫症...所以我踩完坑之后把JSON复制出来了 有需要的可以直接粘贴

    YDTrinldyChrome 73Windows 10
    3月31日 回复

    您好,想请教下,我用上面的方法,也下载了nodejs,也安装好了,也设置了环境变量nodejs,API V2也安装成功……
    但是,在typora里“验证图片上传选项”的时候,一直出错“'C:Users用户名' is not recognized as an internal or external command,
    operable program or batch file.”
    折腾了好久都没找到为什么……您有好的建议吗?

      YDTrinldyChrome 73Windows 10
      4月2日 回复

      @YDTrinldy 虽然还没收到回复~但是谢谢您的文章~
      今天抱着最后再试一次不行就删掉的心态试了测试,居然就成功上传了……我还是保留着之前的设置啥都没动,同样的测试莫名奇妙今天就成功了……诶……

        lzskylineChrome 80Windows 10
        4月3日 回复

        @YDTrinldy 哈哈抱歉, 这两天没看博客, 我没遇到过这个问题, 解决了就好

    AndyChrome 80Windows 10
    4月10日 回复

    picGo安装好了,sm的token也配置好了,但就是上传是报文件或配置出错,死活用不了。难受。

    yugarChrome 80Windows 10
    4月14日 回复

    使用V2可以,V1虽然测试可以,但是实际使用依旧传不了
    另外,如果一下子复制几个图片,需要等久点时间

    云影Chrome 81Windows 10
    4月23日 回复

    研究了快一个小时,坑还不少。
    虽然能上传 cos 了,Typora 测试也通过了,到了编辑框点上传就不行了。
    测试 sm,安装了 smms-user 本地安装了 node npm 查 -v 也能用了,面板始终无法安装卸载插件,已全局网络,行吧,离线安装,npm smms 插件第一次成功,第二次死货安装不上,看 picgo 日志提示 npm 没安装,前面 npm 安装插件都成功了,env 也有了,它就是不能安装,我默默的退下,花的时间足够上传几篇博客内容了。

      lzskylineChrome 81Windows 10
      4月26日 回复

      @云影 npm网络问题可以试试阿里的cnpm. windows用npm是会遇到很多坑, 所以我写vue的时候是在wsl里配的环境.
      还是建议直接用大佬编译好的可执行文件...会轻松很多