关于Code2Ghost

Github: https://github.com/dedfaf/Code2Ghost

这个项目源自于我搭完ghost后,发现其没有直接上传或者同步博客仓库的方法,也没有合适的上传工具,索性自己写一个VScode的上传插件

ghost的api功能相当强大,不过目前只用到了上传博客的功能。之后有精力的话,可以写一个在code里完全管理ghost的图形化插件

现在的进度直接看TODO

对本人而言,之前其实并没有写VScode插件的经验,这个项目也属于是学习项目,欢迎提出意见

原理

https://ghost.org/docs/admin-api/#creating-a-post

通过vscode插件api读取当前编辑器的内容,通过marked转换为html,通过正则判断<h1>获得标题,然后删去标题留下正文,打包上传api

front-matter通过gray-matter读取

获得博文内容基本相反,拉下博文的html还有其他信息,通过turndown转换为md,再把需要的属性直接写成yaml填到front-matter里

目前的难点 / TODO

2025.2.25

这几天完成了

  • Get(拉取所有帖子,然后选择一个在编辑器打开)
  • Update(将本地文件的内容推送到与本地文件front-matter中id对应的帖子)
  • Sync(先读取本地文件front-matter中的id,然后用服务器上的文章覆盖本地(如果服务器与本地的updated_at不一致,即更新过))

发布了0.1.0版本,自认为应该算是及格的编辑器了

今天才发现创建/更新后如果不同步全文,那么本地文件的图片路径仍是本地,每次都会上传一份图片,索性每次创建/更新后都直接Sync一遍..

目前开学了比较忙,目前的进度已经完全足够我个人使用了。这个项目大概会放一段时间,暂时先看Ghost论坛里反响强不强吧


2025.2.24

目前基本完成了之前设想的功能

图片直接正常插入md,插件将自动解析上传并在正文中替换链接为ghost图床链接

标题、作者、标签可以通过markdown的front-matter来添加,同时也做了Get Post,修改然后Update这套流程相关的命令,怎么Update在仓库的README里已经写过了

接下来要做:

  1. 更好的标签栏管理,之后将尝试将本地文件与在线博文关联,实现自动更新等操作
  2. 一键编辑作者标签?不应该让end user直接碰yaml这种东西,毕竟不是谁都看过api文档。不过这个难度很大,考虑到能用我这个插件的估计也不会有小白,所以暂时先不弄?

或许之后有时间可以重写一下,直接将本插件做成ghost在VScode的客户端。不过这个项目作为在一个Ghost编辑器的功能性还是足够的(前提是没bug,等测试吧,对自己程序的鲁棒性完全没信心)


2025.1.26

  1. 上传图片,需要先通过ghost图片api上传ghost图床,然后在文章中引用
  2. 插件中只做了标题的确认,实际上作者,标签等都应该在上传时确认
  3. 更新,删除,发布文章

至于其他的功能,目前不在本插件的考虑范围内,理应直接在ghost后台操作