kifroom
文章
技术

Hermes + Obsidian + GrtBlog:构建个人知识管理与自动化发布系统

2026年5月9日 5 分钟阅读 浏览 喜欢 0 评论

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 AgentAI 自动化引擎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
2Bug记录3
8工具2
共 17 个分类

实战:旧博客批量迁移

2026-05-09 完成了从旧博客 wkif/kifroomnuxt3 到 GrtBlog 的完整迁移:

迁移数据

项目数量
文章82 篇
手记(生活记录)10 篇
分类17 个
标签70 个
时间跨度2020-06 ~ 2025-01

迁移流程

  1. 克隆旧仓库 → 读取 content/blog/content/life/ 下的 Markdown 文件
  2. 解析 YAML frontmatter → 提取 title, date, categories, tags, isActive, cover
  3. 建立分类/标签体系 → 自动创建 GrtBlog 分类和标签
  4. 发布文章 → 通过 POST /articles 逐篇发布,严格保留原始发布日期
  5. 清理短链接 → 将含中文的 shortUrl 替换为纯英文 slug
  6. 发布手记 → 生活类内容通过 POST /moments 发布到"生活"分区

踩坑记录

  1. PUT 更新不可遗漏 isPublished — Go 结构体的 bool 字段零值为 false,不传该字段会导致文章自动变为草稿
  2. 中文 shortUrl 无法访问 — 部分文件名含中文,导致短链接无法解析,需清理为纯 ASCII
  3. 占位内容覆盖原文 — 测试时传入 "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
评论区在赶来的路上...