Hexo 中的 Category 管理:Hexo-Category-Manager

Hexo目录管理不太方便,涉及到文章批量修改Category时非常麻烦。

不支持Category整体改名,不支持批量修改。

于是我就viber coding了一个Category的批量管理的本地html系统。

GitHub链接 :Hexo-Category-Manager


效果:

image-20260720224046345


以下是介绍:

📁 Hexo Category Manager

一个本地运行的可视化网页工具,用于批量管理 Hexo 博客文章的分类(categories)。告别手动编辑每篇文章的 front-matter,通过直观的树形界面高效完成分类的查看、筛选、批量修改、重命名与删除。

✨ 功能特性

分类树可视化

  • 左侧树形结构展示所有分类层级(支持多级嵌套)
  • 每个分类节点显示文章数量
  • 支持展开 / 折叠子分类
  • 点击分类节点即可筛选该分类下的所有文章

文章列表

  • 按分类筛选文章
  • 关键词搜索(标题、文件名、标签)
  • 展示文章标题、日期、分类标签、Tags
  • 支持单篇编辑、多选批量操作、全选

批量分类操作(4 种模式)

模式 说明
替换全部 用新分类替换选中文章的所有分类
前置添加 在现有分类前面插入新分类
追加添加 在现有分类后面追加新分类
移除指定 移除选中文章中指定名称的分类

分类节点管理

  • 在分类树中直接 重命名 分类(自动应用到所有相关文章)
  • 删除 分类层级(子分类自动上移一级)
  • 新增 分类到选中文章

其他特性

  • 自动识别 categoriescategory 两种 front-matter 写法
  • 兼容字符串和数组形式的 tags / categories
  • 保留原有 front-matter 的其他字段(title、date、abbrlink、cover 等)
  • 操作反馈 Toast 提示
  • 分页加载,支持大批量文章

🚀 快速开始

环境要求

  • Node.js >= 14

安装与运行

1
2
3
4
5
6
7
8
9
# 1. 克隆仓库
git clone https://github.com/<your-name>/Hexo-Category.git
cd Hexo-Category

# 2. 安装依赖
npm install

# 3. 启动服务
npm start

打开浏览器访问 http://localhost:3456 即可使用。

🔧 配置你的博客目录

默认情况下,工具读取项目根目录下的 _posts 文件夹。要管理你正式的 Hexo 博客,修改 server.js 中的 POSTS_DIR 常量:

1
2
3
const POSTS_DIR = path.join(__dirname, '_posts');
// 改为你的 Hexo 博客路径,例如:
// const POSTS_DIR = 'D:/blog/source/_posts';

也可以修改端口号 server.js

1
const PORT = 3456;

📂 项目结构

1
2
3
4
5
6
7
8
9
Hexo-Category/
├── _posts/ # 文章目录(测试数据 / 你的博客文章)
├── public/
│ ├── index.html # 前端页面
│ ├── style.css # 样式
│ └── app.js # 前端逻辑
├── server.js # Express 后端服务
├── package.json
└── README.md

🛠 技术栈

  • 后端:Node.js + Express
  • 前端:原生 HTML / CSS / JavaScript(无框架依赖)
  • Front-matter 解析gray-matter

📡 API 接口

方法 路径 说明
GET /api/posts 获取文章列表(支持 categorysearchpagepageSize 参数)
GET /api/categories 获取分类树结构
GET /api/posts/:filename 获取单篇文章详情
PUT /api/posts/:filename/categories 修改单篇文章分类
POST /api/batch/categories 批量修改文章分类
POST /api/batch/rename-category 重命名分类层级
POST /api/batch/delete-category 删除分类层级

⚠️ 注意事项

  • 所有写操作直接修改 _posts 目录下的 Markdown 文件,建议先备份
  • 工具会保留 front-matter 中除分类外的所有字段和正文内容。
  • 如需将自己博客的文章排除在版本控制之外,取消 .gitignore_posts/ 的注释。

📄 License

ISC