Hugo 博客搭建与自动化发布配置
接上一篇文章,已经完成了博客文章上传到 GitHub 后自动化发布到 GitHub Pages。在此基础上,使用 Obsidian 作为写作平台,实现博客写作的舒适工作流。
下载与初始化 Obsidian
没什么好说的,下载安装即可,然后按着新手引导创建一个库即可。
Obsidian - Sharpen your thinking
Obsidian 是使用 Markdown 语法的闭源笔记软件。用户可以在笔记间建立双向链接,并且可以探索这些笔记连接形成的关系图谱。该软件旨在帮助用户以一种灵活的、非线性的方式来组织和构架他们的想法和知识。Obsidian 对个人使用免费,商业使用则需购买许可。
安装完毕后,进入 Obsidian 设置,允许第三方插件,便于后续操作。
添加文章模板
Obsidian 中新建一个文件夹,用于存放模板。新建一篇文章,里面根据自己的需求,填入文章的模板,用于快速创建 Hugo 的文章元数据,可以参考我的:
---
title: "{{title}}"
date: "{{date}}"
slug: "blog-post-slug"
tags:
- "标签"
categories:
- "分类"
description: "描述"
summary: "摘要"
cover.image: "https://jacob-1256058189.cos.ap-guangzhou.myqcloud.com/md/2024/08/d535bf1f2d4be47d.webp"
draft: false
share: false # 只有此项为 true 时,文章才会被上传
---
从这里开始撰写正文……
## 参考文献
- 参考文献 1
核心出装:Enveloppe
Enveloppe 是一个能够将指定文章推送到指定 GitHub 目录的插件。
Enveloppe:Obsidian GitHub 保险库发布者
免费在您自己的 GitHub 存储库中发布您的笔记,并随心所欲地处理它们。✨
这使您能够设置任何模板:Jekyll、Mkdocs、Hugo 或自定义模板!
在插件市场中,搜索 Enveloppe 安装即可。
配置 Envelope
进入 Envelope 的设置,选择第一页配置 GitHub config
GitHub config | 填写内容 | 介绍 |
---|---|---|
GitHub username | GitHub 用户名 | |
Repository name | 源码仓库名称 | |
GitHub token | 个人令牌 | |
Main branch | main | 仓库的主分支名称 |
Automatically merge pull requests | 开启 | 自动通过合并请求 |
第二页配置 File paths : |
File paths | 填写内容 |
---|---|
Root folder | content/posts |
第三页配置,Content : |
Content | 填写内容 | 介绍 |
---|---|---|
[[Wikilinks]] to [MDlinks](links) | 开启 | 自动转换链接格式 |
Text replacer | 见下表 | 正则式替换功能 |
Text replacer 规则:
功能 | 查找 | 替换 | 运行时机 | 介绍 |
---|---|---|---|---|
文章引用 | /[^\(]+\.md/ | {删掉我{< relref "$&" >*/}} | ↓ | 将 obsidian 文章之间的引用转化为 hugo 中的格式,在 obsidian 文章之间引用是没有 md 后缀的,因此执行该替换的时间是等文章使用插件转化后再执行,据此后面的箭头向下。 |
文章封面 | /cover\.image/ | cover:\n image | ↑ | 将一级 key 转为二级,因为 obsidian 不支持多层级属性。 |
由于 Hugo 的勾使渲染机制,请将{删掉我{< relref "$&" >*/}}
中的删掉我
去除后再使用,下面的配置文件同样。
其他的部分不怎么需要调整了,可以参考我的配置文件,在右上角可以导入我的配置再修改:
{
"github": {
"branch": "main",
"automaticallyMergePR": true,
"dryRun": {
"enable": false,
"folderName": "enveloppe"
},
"tokenPath": "%configDir%/plugins/%pluginID%/env",
"api": {
"tiersForApi": "Github Free/Pro/Team (default)",
"hostname": ""
},
"workflow": {
"commitMessage": "[PUBLISHER] Merge",
"name": ""
},
"verifiedRepo": true
},
"upload": {
"behavior": "fixed",
"defaultName": "content/posts",
"rootFolder": "",
"yamlFolderKey": "",
"frontmatterTitle": {
"enable": false,
"key": "title"
},
"replaceTitle": [],
"replacePath": [],
"autoclean": {
"includeAttachments": true,
"enable": false,
"excluded": []
},
"folderNote": {
"enable": false,
"rename": "index.md",
"addTitle": {
"enable": false,
"key": "title"
}
},
"metadataExtractorPath": ""
},
"conversion": {
"hardbreak": false,
"dataview": true,
"censorText": [
{
"entry": "/[^\\(]+\\.md/",
"replace": "{删掉我{< relref \"$&\" >*/}}", // 请将`{删掉我{< relref "$&" >*/}}`中的`删掉我`去除后再使用
"flags": "",
"after": false
},
{
"entry": "fm=jpg",
"replace": "auto=format",
"flags": "",
"after": true
},
{
"entry": "/cover\\.image/",
"replace": "cover:\\n image",
"flags": "",
"after": true
}
],
"tags": {
"inline": false,
"exclude": [],
"fields": []
},
"links": {
"internal": false,
"unshared": false,
"wiki": true,
"slugify": "disable"
}
},
"embed": {
"attachments": false,
"overrideAttachments": [],
"keySendFile": [],
"notes": false,
"folder": "",
"convertEmbedToLinks": "keep",
"charConvert": "->",
"unHandledObsidianExt": [],
"sendSimpleLinks": false
},
"plugin": {
"shareKey": "share",
"excludedFolder": [],
"copyLink": {
"enable": false,
"links": "",
"removePart": [],
"transform": {
"toUri": true,
"slugify": "lower",
"applyRegex": []
}
},
"setFrontmatterKey": "Set"
},
"tabsId": "help"
}
推送文章到 GitHub
右键选中文章,选择 Upload 即可。
或者可以使用命令 Envelope
,在选项中选择 Upload。
一些有用的插件
- 自动获取链接标题: GitHub - zolrath/obsidian-auto-link-title: Automatically fetch the titles of pasted links
- 自动格式化文章:GitHub - Yaozhuwa/easy-typing-obsidian: This is a plugin of obsidian for users writing in an easy way.
- 快速插入 Unsplash 图片:GitHub - cloudy9101/obsidian-image-inserter: An Obsidian plugin helps users easily search and insert images to editors from Unsplash.
- 另一个自动格式化插件: GitHub - platers/obsidian-linter: An Obsidian plugin that formats and styles your notes with a focus on configurability and extensibility.
- 配合 PicGo 上传文章图片: GitHub - renmu123/obsidian-image-auto-upload-plugin: auto upload image with picgo