Hermes + Obsidian + GrtBlog:构建个人知识管理与自动化发布系统
概述
在数字化时代,个人知识管理变得越来越重要。本文介绍通过整合 Hermes Agent(AI 助手)、Obsidian(知识库) 和 GrtBlog(博客系统),构建一个无缝的自动化工作流。本文同时也是使用这套系统完成的首篇技术文章。
历史背景:旧版系统使用 OpenClaw AI 助手(2026-04-01),现已升级为 Hermes Agent。
系统架构
三大组件
mermaid
graph LR
O[Obsidian 知识库] --> H[Hermes Agent]
H --> G[GrtBlog 博客]
H --> GH[GitHub 备份]
G --> ISR[ISR 静态渲染]
| 组件 | 角色 | 技术栈 |
|---|---|---|
| Obsidian | 个人知识库 | Markdown + 十进制分类 |
| Hermes Agent | AI 自动化引擎 | Python + 技能系统 |
| GrtBlog | 博客发布平台 | Go + Fiber + PostgreSQL |
| GitHub | 版本控制 + 备份 | git + gh-proxy |
工作流程
text
Obsidian 写作 → Hermes 处理 → GrtBlog 发布 → GitHub 同步
↓ ↓ ↓ ↓
本地知识库 AI整理/内容生成 线上博客 版本备份
实施细节
1. Obsidian 知识库配置
目录结构(混合式 PARA + 十进制)
text
00-Dashboard/ # 仪表板
01-Daily/ # 每日记录
10-Tech/ # 技术笔记(本文所在位置)
11-Frontend/ # 前端技术
12-Backend/ # 后端技术
13-AI/ # AI 相关
20-Projects/ # 项目跟踪(含 GrtBlog 配置)
31-Product-Ideas/ # 产品想法
40-Knowledge/ # 通识知识
41-Concepts/ # 概念解析
50-Content/ # 内容创作
51-Blog-Drafts/ # 博客草稿
52-Tutorials/ # 教程
60-Entertainment/ # 娱乐记录
90-Archive/ # 归档
知识库位置
text
~/kif-obsidian/
├── .git/ → https://github.com/wkif/kif-obsidian (代理: gh-proxy.com)
├── 01-Daily/ # 日记
├── 10-Tech/ # 技术文章
└── 20-Projects/ # 项目文档
Git 配置
bash
# 因 GFW 限制,远程仓库通过 gh-proxy.com 代理访问
git remote -v
# origin https://gh-proxy.com/https://github.com/wkif/kif-obsidian.git
git config user.name "Kif"
git config user.email "wkif@users.noreply.github.com"
2. Hermes Agent AI 自动化引擎
Hermes Agent 是一个开源 AI 代理框架,支持多平台接入。
当前配置
| 项目 | 值 |
|---|---|
| 模型 | deepseek-v4-flash |
| 提供商 | deepseek |
| 接入平台 | Feishu(飞书) |
| 工作模式 | CLI / Feishu 对话 |
核心能力
- 自然语言交互 — 通过飞书对话直接下达指令
- 知识库读写 — 直接操作 Obsidian vault 文件
- API 集成 — 调用 GrtBlog REST API 发布内容
- 批量处理 — 自动化脚本执行
- 日记记录 — 对话内容自动归档到 Obsidian 日记
- 长期记忆 — 跨会话保持用户偏好和项目上下文
3. GrtBlog 博客系统
GrtBlog 是一个现代化博客系统,使用 Go + Fiber + PostgreSQL 构建。
部署信息
| 项目 | 值 |
|---|---|
| 源码位置 | /opt/grtblog |
| 技术栈 | Go 1.24+, Fiber, GORM, PostgreSQL 17, Redis 7 |
| 前台 | SvelteKit + Tailwind CSS |
| 后台 | Vue 3 + Naive UI |
| 博客地址 | https://www.kifroom.icu https://www.kifroom.icu |
| API 基础 | https://www.kifroom.icu/api/v2 https://www.kifroom.icu/api/v2 |
核心特性
- ISR 静态渲染 — 文章变更后自动生成静态 HTML
- WebSocket 热更新 — 修改内容后读者无需刷新
- ActivityPub 兼容 — 支持 Mastodon 等 Fediverse 关注
- 管理后台 — Vue 3 面板,支持 Markdown 实时预览
API 接口速查
bash
# 认证
POST /api/v2/auth/login # {credential, password} → JWT token
# 文章
POST /api/v2/articles # 创建文章(需 JWT)
PUT /api/v2/articles/:id # 更新文章(需 JWT)
DELETE /api/v2/articles/:id # 删除文章(需 JWT)
GET /api/v2/articles # 公开文章列表
GET /api/v2/articles/:id # 公开文章详情
GET /api/v2/admin/articles # 管理端文章列表(需 JWT)
# 手记 (Moments)
POST /api/v2/moments # 创建手记
# 分类/标签/分区
POST /api/v2/admin/categories # 创建分类
POST /api/v2/admin/tags # 创建标签
POST /api/v2/admin/columns # 创建手记分区
创建文章请求体
json
{
"title": "文章标题",
"content": "Markdown 内容",
"summary": "摘要(可选)",
"categoryId": 1,
"tagIds": [1, 2],
"shortUrl": "article-slug",
"isPublished": true,
"isOriginal": true,
"createdAt": "2024-01-24T16:07:50Z"
}
⚠️ 重要:
PUT /articles/:id更新时必须携带isPublished: true,否则会因 Go 零值默认变为草稿。
分类列表(2026-05-09 当前)
| ID | 分类 | 文章数 |
|---|---|---|
| 1 | 学习笔记 | 29 |
| 12 | 教程 | 14 |
| 9 | 开发笔记 | 5 |
| 5 | 前端 | 4 |
| 2 | Bug记录 | 3 |
| 8 | 工具 | 2 |
| … | 共 17 个分类 |
实战:旧博客批量迁移
2026-05-09 完成了从旧博客 wkif/kifroomnuxt3 到 GrtBlog 的完整迁移:
迁移数据
| 项目 | 数量 |
|---|---|
| 文章 | 82 篇 |
| 手记(生活记录) | 10 篇 |
| 分类 | 17 个 |
| 标签 | 70 个 |
| 时间跨度 | 2020-06 ~ 2025-01 |
迁移流程
- 克隆旧仓库 → 读取
content/blog/和content/life/下的 Markdown 文件 - 解析 YAML frontmatter → 提取 title, date, categories, tags, isActive, cover
- 建立分类/标签体系 → 自动创建 GrtBlog 分类和标签
- 发布文章 → 通过 POST /articles 逐篇发布,严格保留原始发布日期
- 清理短链接 → 将含中文的 shortUrl 替换为纯英文 slug
- 发布手记 → 生活类内容通过 POST /moments 发布到"生活"分区
踩坑记录
- PUT 更新不可遗漏 isPublished — Go 结构体的 bool 字段零值为 false,不传该字段会导致文章自动变为草稿
- 中文 shortUrl 无法访问 — 部分文件名含中文,导致短链接无法解析,需清理为纯 ASCII
- 占位内容覆盖原文 — 测试时传入
"content": "dummy"后未及时恢复,导致 61 篇文章内容丢失,后从原文件重新恢复
日常工作流
场景 1:写日记
text
"把今天的内容记到 obsidian 日记里"
→ Hermes 读取对话 → 写入 01-Daily/YYYY-MM-DD.md → git push
场景 2:发布博客文章
text
"把这篇文章发到博客"
→ Hermes 读取 Markdown → 调用 POST /articles → 文章上线
场景 3:批量迁移
text
"把旧博客的文章迁移到新博客"
→ Hermes 克隆旧仓库 → 解析 frontmatter → API 逐篇发布
场景 4:知识记录
text
"学习某个技术,记到笔记里"
→ Hermes 整理信息 → 写入 10-Tech/ 对应目录 → git push
技术栈总结
| 层 | 技术 |
|---|---|
| AI 层 | Hermes Agent(deepseek-v4-flash) |
| 知识层 | Obsidian + Markdown + Git |
| 发布层 | GrtBlog(Go + Fiber + PostgreSQL + SvelteKit) |
| 存储层 | GitHub(gh-proxy.com 代理) |
| 接入层 | Feishu(飞书) |
| 自动化 | cron + Hermes 技能系统 |
总结
通过整合 Hermes Agent、Obsidian 和 GrtBlog,我们构建了一个完整的个人知识管理与发布系统。核心价值:
- 🚀 效率 — 对话即管理,AI 自动完成分类、发布、备份
- 📚 积累 — 所有知识有序存储,双重 Git 备份
- 🔄 迭代 — 可随时更新和重新发布历史文章
- 🛡️ 安全 — Obsidian 纯本地文件 + GitHub 远程备份
技术栈:
- AI 引擎:Hermes Agent
- 知识库:Obsidian (Markdown)
- 博客:GrtBlog (Go + Fiber + REST API)
- 存储:Git + GitHub
本文是使用 Hermes Agent + Obsidian + GrtBlog 系统创建的首篇技术文章,2026-05-09 同日完成了旧博客 92 篇历史内容的完整迁移。
作者:kif 分类:技术 标签:hermes-agent, obsidian, grtblog, automation, knowledge-management
喜欢 0
评论区在赶来的路上...