我的obsidian+hugo工作流
1 我的obsidian+hugo工作流
- 本地obsidian1:用于写作,可以使用obsidian github publisher2插件将想要发布的markdown推送到远程远程私有github仓库
- 远程远程私有github仓库:以 hugo3 的方式组织,也可以是其他的静态博客,新的提交会触发github action4 调用hugo生成静态网页再推送到公开github 仓中
- 本地github仓库: 这个仓库同步远程私有github仓,可以在本地自动发布微信公众号,也可以是其他的发布页面
- 公开github pages5:一个公开仓库,用于部署hugo生成的静态网页
2 为何如此设计
2.1 为何存在私有仓库
私有仓库的作用就是存储用于发布的文章
obsidian和hugo的组织结构不同,将写作和发布分开,这样可以确保专注与obsidian写作,需要将笔记组织成hugo的形式,如果以hugo的方式组织写作,当需要引用本地图片,还需要将图片放在特定的目录中,这样不一定所见即所得,导致写作体验非常差
2.2 为何是obsidian github publisher2
为何要用这个插件?
- 因为这个插件可以解析markdown中的附件连接,比如本地图片,能将附件存储到远程仓库的指定目录,也能将markdown存储到指定目录,这样就可以构造符合hugo结构的目录,便于hugo生成静态页面
- 同时还可以将obsidian的语法转化为markdown语法
2.3 为何有本地github 仓库
此仓库内容与远程私有仓一致,作用是在本地发布无痛发布微信公众号6 ,
原本想法是使用python requests调用微信公众号接口实现自动发布,通过github action自动触发发布微信公众号流程,这样就非常的优雅,也不需要本地仓库,如下图红色虚线部分
但是,目前想要自动发布到微信公众号,需要设置ip白名单7 ,本人有一个vps,一个公网ip,因此需要给github action中的python代码设置代理,如下图橘色流程
但是由于目前使用的代理的特殊性,需要特定的代理客户端,因此改成如下流程,实际为红色实现流程
2.4 遇到的坑
2.4.1 obsidian格式转化为hugo格式
想要使用hugo发布obsidian写出的内容,需要做一个转换
2.4.1.1 移除markdown中的属性
因为要使用obsidian publisher发布要在markdown 的文档属性设置share:true
,可是hugo无法解析这个属性,因此在github action中发布hugo前,需要移除该share:true
属性。
2.4.2 微信公众号新建草稿接口8乱码问题
该接口需要传入gbk
编码的json,如果传入的是utf-8
,会导致乱码
# 包含文章内容的json
articles = {}
headers = {'Content-Type': 'application/json; charset=utf-8'}
datas = json.dumps(articles, ensure_ascii=False).encode('utf-8')
-
ObsidianPublisher/obsidian-github-publisher: Github Publisher helps you to publish your notes on a preconfigured GitHub repository from your Obsidian Vault, for free, and more! ↩︎ ↩︎
-
GitHub Pages | Websites for you and your projects, hosted directly from your GitHub repository. Just edit, push, and your changes are live. ↩︎