Skip to content

iiishop/KMblog

Repository files navigation

KMblog

zread

不只是博客框架,更是完整的内容创作生态系统

为什么选择 KMblog?

告别命令行,拥抱可视化

还在为 Hexo 的命令行操作而烦恼吗?还在手动编辑 YAML 配置文件吗?

KMblog 带来全新体验:

  • 桌面管理工具 - 精美的 GUI 界面,像使用桌面应用一样管理你的博客
  • 拖拽式管理 - 文章分类、合集整理,只需拖拽即可完成
  • 实时预览 - 所见即所得,编辑和预览同步进行
  • 一键部署 - 无需记忆复杂的 Git 命令,点击按钮即可发布

不仅仅是静态博客

传统静态博客框架只提供基础的文章展示功能,KMblog 为你准备了更多:

内置 Monaco 编辑器

  • 在浏览器中直接编辑文章,无需切换工具
  • 完整的代码高亮和智能提示
  • 支持实时预览和自动保存

革命性的 Markdown 内嵌 Block

这是 KMblog 最独特的功能!在 Markdown 中直接嵌入丰富的交互式内容:

<!-- B站视频播放器 -->
```bilibili-video
https://www.bilibili.com/video/BV1xx411c7mD
```

<!-- Steam 游戏卡片 -->
```steam-game
https://store.steampowered.com/app/730/
```

<!-- Bangumi 番剧信息 -->
```bangumi
https://bgm.tv/subject/12345
```

<!-- GitHub 仓库卡片 -->
```github-repo
https://github.com/iiishop/KMblog
```

<!-- 小红书笔记 -->
```xiaohongshu
https://www.xiaohongshu.com/explore/xxxxx
```

<!-- Mermaid 流程图 -->
```mermaid
graph TD
    A[开始] --> B[写作]
    B --> C[发布]
```

无需插件,无需额外配置,直接在 Markdown 代码块中使用!这让你的文章不再局限于纯文本,可以嵌入:

  • 视频播放器(B站、YouTube 等)
  • 游戏信息卡片(Steam)
  • 番剧/动画信息(Bangumi)
  • 代码仓库展示(GitHub)
  • 社交媒体内容(小红书等)
  • 流程图和图表(Mermaid)
  • 任何你能想到的自定义组件

强大的内容组织

  • 合集系统:将系列文章组织成专题,方便读者系统学习
  • 加密文章:保护私密内容,只对特定读者开放
  • 多维度分类:标签、分类、归档,多种方式组织内容

现代化主题系统

  • 明暗模式自动切换,跟随系统设置
  • 多套预设主题,一键切换风格
  • 平滑过渡动画,细节处处用心

从 Hexo 迁移?轻而易举

已经在使用 Hexo?没问题!

  • 一键迁移工具 - 自动转换 Hexo 文章格式
  • 保留所有内容 - 标签、分类、Front Matter 完整保留
  • 智能适配 - 自动添加 KMblog 特有的增强字段

开发者友好

不同于其他博客框架,KMblog 为开发者提供了完整的开发体验:

  • Vue 3 + Vite - 现代化技术栈,开发体验丝滑
  • 组件化架构 - 轻松扩展和自定义功能
  • 完整测试 - 单元测试 + 属性测试,保证代码质量
  • CI/CD 集成 - 自动构建和发布,专注于内容创作

跨平台管理工具

管理工具不是网页应用,而是真正的桌面软件:

  • Windows / macOS / Linux - 三大平台原生支持
  • 离线工作 - 无需网络连接即可管理博客
  • 自动更新 - 框架更新一键完成,无需手动操作
  • GitHub 集成 - 直接在工具中完成部署,无需命令行

快速开始

方式一:使用管理工具(推荐)

  1. Releases 下载对应平台的管理工具
  2. 解压并运行 KMblogManager
  3. 点击"初始化博客"按钮
  4. 开始创作你的第一篇文章

方式二:从源码开始

# 克隆仓库
git clone https://github.com/iiishop/KMblog.git
cd KMblog

# 安装依赖
npm install

# 启动开发服务器
npm run dev

# 运行管理工具
python blog_manager.py

核心功能一览

文章管理

  • 创建、编辑、删除文章
  • 拖拽式文章分类和合集管理
  • Markdown 实时预览
  • 代码高亮和一键复制
  • 数学公式渲染(KaTeX)
  • Mermaid 图表支持
  • 任务列表支持
  • Markdown 内嵌 Block - 在文章中直接使用 Vue 组件

Markdown 内嵌 Block 详解

KMblog 支持在 Markdown 代码块中直接嵌入 Vue 组件,让你的文章更加生动:

内置 Block 组件:

  1. B站视频播放器 - 嵌入 B站视频

    ```bilibili-video
    https://www.bilibili.com/video/BV1xx411c7mD
    ```
  2. Steam 游戏卡片 - 展示游戏信息、评分、价格

    ```steam-game
    https://store.steampowered.com/app/730/
    ```
  3. Bangumi 番剧卡片 - 展示动画、漫画、游戏信息

    ```bangumi
    https://bgm.tv/subject/12345
    ```
  4. GitHub 仓库卡片 - 展示仓库信息、Star 数、语言

    ```github-repo
    https://github.com/iiishop/KMblog
    ```
  5. 小红书笔记 - 嵌入小红书内容

    ```xiaohongshu
    https://www.xiaohongshu.com/explore/xxxxx
    ```
  6. Mermaid 图表 - 流程图、时序图、甘特图等

    ```mermaid
    graph LR
        A[开始] --> B[处理]
        B --> C[结束]
    ```

使用方式:

  • 使用标准 Markdown 代码块语法(三个反引号)
  • 指定 block 类型(如 bilibili-videosteam-game
  • 在代码块内填入对应的 URL 或配置
  • 组件自动懒加载,不影响页面性能

内容组织

  • 合集系统 - 将相关文章组织成系列
  • 标签分类 - 多维度内容分类
  • 归档功能 - 按时间线浏览历史文章
  • 加密文章 - 保护私密内容
  • 评论系统 - 基于 GitHub Discussions 的 Giscus 评论

评论系统

KMblog 集成了 Giscus 评论系统,基于 GitHub Discussions 实现:

  • 文章评论 - 每篇文章都可以开启评论功能
  • 图片评论 - 瀑布流图片也支持评论和点赞
  • Markdown 支持 - 评论支持完整的 Markdown 语法
  • 反应表情 - 支持 emoji 反应,快速表达态度
  • 主题适配 - 自动跟随博客主题切换
  • 零成本 - 完全免费,数据存储在 GitHub

配置方式:

  1. GUI 配置(推荐) - 在博客管理工具的"配置管理"页面,直接粘贴 giscus.app 生成的 script 标签,一键应用
  2. 手动配置 - 编辑 src/giscus.config.js 文件

详见:

主题定制

  • 明暗模式自动切换
  • 多套预设主题
  • 自定义配色方案
  • 背景图片和模糊效果
  • 平滑过渡动画

管理工具特色

  • 可视化配置编辑
  • 文章拖拽排序
  • 一键构建和部署
  • Hexo 文章迁移
  • 框架自动更新
  • 内置 Markdown 编辑器

与 Hexo 的对比

特性 KMblog Hexo
管理方式 桌面 GUI 工具 命令行
文章编辑 内置编辑器 + 实时预览 外部编辑器
配置管理 可视化界面 手动编辑 YAML
部署方式 一键部署 命令行操作
Markdown 扩展 内嵌 Vue 组件 需要插件
合集管理 原生支持 需要插件
加密文章 内置功能 需要插件
评论系统 Giscus 集成 需要插件
主题切换 运行时切换 需要重新构建
迁移工具 内置 Hexo 迁移 -
在线编辑 支持 不支持
技术栈 Vue 3 + Vite EJS/Pug + Webpack

更新日志

2026-01-31

  • 集成 Giscus 评论系统
  • 支持文章页面和图片模态框评论
  • 添加评论配置文档和示例

2026-01-28

  • 制作了完整的 CI/CD 流程用于分发
  • 支持 Windows、macOS、Linux 三平台自动构建

2026-01-27

  • 完成了 CollectionPage 合集展示页面
  • 完善 Blog Manager 作为完整生态工具
  • 添加框架自动更新功能

2026-01-25

  • 添加了公告模块
  • 添加了 AboutMe 自我介绍模块

2026-01-21

  • 优化了部分 UI 细节
  • 使用 Flet 编写了现代化 GUI 的博客管理工具
  • 将 build 功能集成到 GUI 中

2025-01-25

  • 添加了代码复制按钮
  • 添加了 Bangumi 模块

2025-01-24

  • 添加了 Markdown 表格和任务列表支持

2025-01-23

  • 添加模块懒加载
  • 为各模块添加载入动画

配置说明

博客配置文件位于 src/config.js,也可以通过管理工具的"配置管理"界面进行可视化编辑。

主要配置项:

{
  ProjectUrl: 'https://your-blog.github.io',  // 博客地址
  BlogName: '你的博客名称',
  ShortDesc: '博客简介',
  
  // 主题配置
  LightTheme: 'day',      // 浅色主题
  DarkTheme: 'dark',      // 深色主题
  defaultMode: 'system',  // 跟随系统
  
  // 背景设置
  BackgroundImg: '/assets/background.png',
  BackgroundImgBlur: 20.0,
  
  // 文章展示
  PostsPerPage: 5,
  EnableDynamicPostsPerPage: true,
  
  // 社交链接
  Links: [
    { name: 'GitHub', url: 'https://github.com/...' }
  ],
  
  // Giscus 评论系统(可选)
  Giscus: {
    enabled: true,
    repo: 'username/repo',
    repoId: 'R_kgDOxxxxxxx',
    category: 'Announcements',
    categoryId: 'DIC_kwDOxxxxxxx',
    // 更多配置见文档
  }
}

详细配置说明请参考 Giscus 配置指南

部署到 GitHub Pages

使用管理工具(推荐)

  1. 打开管理工具
  2. 点击"部署到 GitHub"
  3. 输入 GitHub Token 和仓库名称
  4. 点击"开始部署"

手动部署

# 构建项目
npm run build

# 部署到 gh-pages 分支
git subtree push --prefix dist origin gh-pages

开发指南

添加自定义组件

  1. src/components/ 创建组件文件
  2. 将组件添加到对应的列表配置中

示例:

// src/config.js
InfoListUp: [
  'SelfIntroductionPanel',
  'YourCustomPanel',  // 添加你的组件
],

添加自定义 Markdown Block

  1. src/components/MarkdownPanelComps/ 创建 Block 组件:
<!-- YourCustomBlock.vue -->
<template>
  <div class="your-custom-block">
    <h3>{{ title }}</h3>
    <p>{{ content }}</p>
  </div>
</template>

<script setup>
defineProps({
  customUrl: String  // 从 URL 中解析参数
});
</script>
  1. MarkdownPanel.vue 中注册:
const YourCustomBlock = defineAsyncComponent(() => 
  import('./MarkdownPanelComps/YourCustomBlock.vue')
);

// 在 renderDynamicComponents 中添加
renderDynamicComponents(container, {
  'yourcustomblock': YourCustomBlock,
  // ... 其他组件
});
  1. MarkdownRenender.js 中添加解析规则:
md.renderer.rules.fence = function (tokens, idx, options, env, self) {
    const token = tokens[idx];
    const info = token.info.trim();
    const content = token.content.trim();

    if (info === 'your-custom') {
        return `<YourCustomBlock :customUrl="'${content}'" ></YourCustomBlock>`;
    }
    // ... 其他规则
};
  1. 在 Markdown 中使用:
```your-custom
https://example.com/your-content
```

自定义主题

编辑 src/color.css 添加新主题:

[data-theme="your-theme"] {
  --theme-primary: #your-color;
  --theme-body-bg: #your-bg;
  --theme-body-text: #your-text;
  /* 更多变量... */
}

然后在 src/config.js 中配置:

availableThemes: ['day', 'dark', 'your-theme'],
LightTheme: 'your-theme',

运行测试

# 运行所有测试
npm run test

# 生成覆盖率报告
npm run test:run

# 使用 UI 界面
npm run test:ui

技术栈

前端

  • Vue 3 - 渐进式框架
  • Vite - 极速构建工具
  • Vue Router - 路由管理
  • Markdown-it - Markdown 解析
  • Monaco Editor - 代码编辑器
  • GSAP - 动画库

管理工具

  • Python 3.11+
  • Flet - 跨平台 GUI 框架
  • PyInstaller - 打包工具

测试

  • Vitest - 单元测试
  • fast-check - 属性测试

路线图

计划中功能

  • 音乐播放模块 - 在文章中嵌入音乐播放器
  • 全文搜索功能 - 基于客户端的文章搜索
  • 更多主题预设 - 提供更多开箱即用的主题
  • RSS 订阅生成 - 自动生成 RSS feed
  • 站点地图生成 - SEO 优化

考虑中功能

  • 评论系统集成 - ✅ 已完成(Giscus)
  • 多语言支持 - 国际化界面
  • 文章推荐 - 基于标签的相关文章推荐
  • 阅读进度条 - 显示文章阅读进度
  • 目录导航 - 自动生成文章目录

不会实现的功能

  • 访问统计 - 静态博客无法实现真正的统计,建议使用 Google Analytics 等第三方服务
  • 用户系统 - 静态博客不需要用户登录
  • 实时评论 - 需要后端支持,建议使用第三方评论系统

贡献

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

开发者文档

版本发布流程

KMblog 使用自动化脚本管理版本发布:

快速发布

方式 1:自动推荐版本号(推荐)

# 1. 提交所有更改
git add .
git commit -m "feat: 添加新功能"

# 2. 查看推荐的版本号
./scripts/release.sh              # Linux/macOS
.\scripts\release.ps1             # Windows

# 输出:
# 当前版本: 1.0.0
# 推荐的版本号:
#   1. 1.0.1 (修复 bug)
#   2. 1.1.0 (新功能)
#   3. 2.0.0 (重大更新)

# 3. 选择合适的版本发布
./scripts/release.sh 1.1.0        # Linux/macOS
.\scripts\release.ps1 1.1.0       # Windows

方式 2:直接指定版本号

git add .
git commit -m "feat: 添加新功能"
./scripts/release.sh 1.0.1        # Linux/macOS
.\scripts\release.ps1 1.0.1       # Windows

方式 3:强制重新发布

# 如果标签已存在或需要覆盖
./scripts/release.sh 1.0.1 --force    # Linux/macOS
.\scripts\release.ps1 1.0.1 -Force    # Windows

脚本功能

自动检测:

  • ✅ VERSION 文件是否需要更新
  • ✅ 是否有未提交的更改
  • ✅ 是否有未推送的 commit
  • ✅ tag 是否已存在

自动执行:

  1. 更新 VERSION 文件(如果需要)
  2. 提交版本更改(如果需要)
  3. 创建 Git tag
  4. 推送代码到 GitHub(如果需要)
  5. 推送标签到 GitHub
  6. 触发 GitHub Actions 自动构建

智能特性:

  • 支持在任何阶段运行(commit 后、push 后、tag 后)
  • 只执行必要的操作,跳过不需要的步骤
  • 提供清晰的错误提示和解决方案

支持的场景

场景 命令 脚本行为
标准发布 release.sh 1.0.1 更新 VERSION → 提交 → tag → 推送全部
已推送代码 release.sh 1.0.1 更新 VERSION → 提交 → tag → 推送 VERSION + tag
VERSION 已更新 release.sh 1.0.1 跳过 VERSION → tag → 推送 tag
已创建 tag release.sh 1.0.1 --force 删除 tag → 更新 VERSION → 重新发布
已推送 tag release.sh 1.0.1 --force 删除远程 tag → 更新 VERSION → 重新发布

常见问题

Q: 不知道下一个版本号是什么?

# 不带参数运行,查看推荐
./scripts/release.sh

Q: 标签已存在怎么办?

# 使用 --force 强制覆盖
./scripts/release.sh 1.0.1 --force

Q: 忘记更新 VERSION 文件?

# 脚本会自动更新
./scripts/release.sh 1.0.1

Q: 已经推送了代码还能用脚本吗?

# 可以!脚本会智能检测并只推送必要的内容
./scripts/release.sh 1.0.1

版本号规范

使用语义化版本号(Semantic Versioning):

  • 主版本号(Major):不兼容的 API 修改
  • 次版本号(Minor):向下兼容的功能性新增
  • 修订号(Patch):向下兼容的问题修正

示例:

  • 1.0.01.0.1:修复 bug
  • 1.0.11.1.0:添加新功能
  • 1.1.02.0.0:重大更新,可能不兼容

CI/CD 流程

推送标签后,GitHub Actions 会自动:

  1. 构建多平台版本(约 10-15 分钟)

    • Windows (KMblogManager.exe)
    • macOS (KMblogManager)
    • Linux (KMblogManager)
  2. 创建 GitHub Release

    • 自动生成 Release Notes
    • 上传构建产物
    • 标记为正式版本
  3. 用户自动更新

    • 用户启动程序时自动检测新版本
    • 一键下载并安装更新
    • 自动重启到新版本

查看构建进度:https://github.com/iiishop/KMblog/actions

更新检测机制

KMblog 支持两种更新检测:

  1. 框架更新:通过 Git commits 检测博客框架更新
  2. 管理工具更新:通过 GitHub Releases API 检测管理工具更新

管理工具会在启动时自动检查更新,如果发现新版本会在界面上显示更新徽章。

许可证

MIT License - 详见 LICENSE 文件

致谢

感谢所有开源项目的贡献者,特别是 Vue.js、Vite 和 Flet 团队。

联系方式


如果 KMblog 对你有帮助,欢迎 Star ⭐ 支持一下!

About

使用Vue编写的静态博客框架

Resources

Stars

7 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors