我的obsidian+hugo工作流

20240205071256.png

  • 本地obsidian1:用于写作,可以使用obsidian github publisher2插件将想要发布的markdown推送到远程远程私有github仓库
  • 远程远程私有github仓库:以 hugo3 的方式组织,也可以是其他的静态博客,新的提交会触发github action4 调用hugo生成静态网页再推送到公开github 仓中
  • 本地github仓库: 这个仓库同步远程私有github仓,可以在本地自动发布微信公众号,也可以是其他的发布页面
  • 公开github pages5:一个公开仓库,用于部署hugo生成的静态网页

私有仓库的作用就是存储用于发布的文章

obsidian和hugo的组织结构不同,将写作和发布分开,这样可以确保专注与obsidian写作,需要将笔记组织成hugo的形式,如果以hugo的方式组织写作,当需要引用本地图片,还需要将图片放在特定的目录中,这样不一定所见即所得,导致写作体验非常差

为何要用这个插件?

  • 因为这个插件可以解析markdown中的附件连接,比如本地图片,能将附件存储到远程仓库的指定目录,也能将markdown存储到指定目录,这样就可以构造符合hugo结构的目录,便于hugo生成静态页面
  • 同时还可以将obsidian的语法转化为markdown语法

此仓库内容与远程私有仓一致,作用是在本地发布无痛发布微信公众号6

原本想法是使用python requests调用微信公众号接口实现自动发布,通过github action自动触发发布微信公众号流程,这样就非常的优雅,也不需要本地仓库,如下图红色虚线部分

20240205082834.png

但是,目前想要自动发布到微信公众号,需要设置ip白名单7 ,本人有一个vps,一个公网ip,因此需要给github action中的python代码设置代理,如下图橘色流程

20240205083241.png

但是由于目前使用的代理的特殊性,需要特定的代理客户端,因此改成如下流程,实际为红色实现流程

20240205082706.png

想要使用hugo发布obsidian写出的内容,需要做一个转换

因为要使用obsidian publisher发布要在markdown 的文档属性设置share:true,可是hugo无法解析这个属性,因此在github action中发布hugo前,需要移除该share:true属性。

该接口需要传入gbk编码的json,如果传入的是utf-8,会导致乱码

	# 包含文章内容的json
   articles = {}
   headers = {'Content-Type': 'application/json; charset=utf-8'}
   datas = json.dumps(articles, ensure_ascii=False).encode('utf-8')