关于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里已经写过了
接下来要做:
- 更好的标签栏管理,之后将尝试将本地文件与在线博文关联,实现自动更新等操作
- 一键编辑作者标签?不应该让end user直接碰yaml这种东西,毕竟不是谁都看过api文档。不过这个难度很大,考虑到能用我这个插件的估计也不会有小白,所以暂时先不弄?
或许之后有时间可以重写一下,直接将本插件做成ghost在VScode的客户端。不过这个项目作为在一个Ghost编辑器的功能性还是足够的(前提是没bug,等测试吧,对自己程序的鲁棒性完全没信心)
2025.1.26
- 上传图片,需要先通过ghost图片api上传ghost图床,然后在文章中引用
- 插件中只做了标题的确认,实际上作者,标签等都应该在上传时确认
- 更新,删除,发布文章
至于其他的功能,目前不在本插件的考虑范围内,理应直接在ghost后台操作