MCCSJS 博客系统使用指南
简介
欢迎使用 MCCSJS 博客系统!这是一个基于 Go + Vue 3 开发的现代化全功能博客平台,采用前后端分离架构,支持 SSR 服务端渲染、PWA 渐进式 Web 应用、AI 摘要生成等特性。
技术栈
| 层级 | 技术 |
|---|---|
| 后端 | Go 1.25 + Gin + GORM + PostgreSQL |
| 前台 | Nuxt 4.3 + Vue 3 + TypeScript + SSR |
| 管理后台 | Vue 3 + Vite 7 + Element Plus + CodeMirror 6 |
| 认证 | JWT + OAuth 2.0(GitHub / Google / QQ / Microsoft / OIDC / 微信) |
| 存储 | 本地文件系统 / S3 兼容对象存储(COS / OSS / Kodo / MinIO) |
| 通知 | 站内消息 + 邮件 SMTP + 飞书机器人 |
| AI | OpenAI 兼容接口(文章摘要 / 标题建议) |
| 部署 | Docker 多阶段构建 |
核心功能
✅ 内容管理
- 文章管理:Markdown 编辑器,支持 KaTeX 数学公式、Mermaid 图表、代码高亮、任务列表
- AI 摘要:自动生成文章摘要和标题建议
- 分类和标签:基于 slug 的 URL,支持多级分类
- 动态发布:类朋友圈的动态功能,支持文字、图片、视频、音频、音乐、链接
- 番剧推荐:动漫/番剧推荐展示
- 自定义菜单:聚合菜单、顶部导航、页脚菜单三级结构
✅ 用户系统
- 邮箱密码注册/登录
- 6 种 OAuth 第三方登录(GitHub、Google、QQ、Microsoft、OIDC、微信小程序)
- 多种登录方式绑定/解绑
- 用户徽章(自定义标签)
- 个人资料管理与头像上传
- 账号注销
- 四级角色权限控制(super_admin / admin / user / guest)
✅ 评论系统
- 多目标评论(文章、页面、动态)
- 楼中楼回复(父级/根级/平铺结构)
- 表情选择器(自定义表情包)
- 管理员置顶与状态切换
- IP / 地区 / 浏览器 / 操作系统追踪
- 从 Artalk 导入评论
✅ 社区功能
- 友链管理:分组展示、截图预览、头像、可用性状态检测、延迟监控
- 朋友圈:聚合友链博客的 RSS 订阅源
- 友链申请:前台申请 + 后台审核
- RSS 订阅:RSS 2.0 + Atom 输出,每日推送新文章给邮件订阅者
✅ 通知系统
- 站内通知中心(已读/未读状态)
- 邮件通知(SMTP,带 HTML 模板)
- 飞书机器人通知(交互式卡片)
- 邮件订阅系统(支持退订令牌)
✅ 数据分析
- 访问追踪(PV / UV、页面停留时长、文章级追踪)
- 数据仪表盘(ECharts 图表、词云)
- 流量趋势、分类/标签统计
- 贡献热力图
- 公开统计页面
✅ SEO 与 PWA
- 服务端渲染(SSR)
- 动态 Sitemap 生成
- RSS 2.0 和 Atom 订阅源
- Schema.org 结构化数据
- Open Graph 和 Twitter Cards
- PWA 支持(安装提示、自动更新)
- Robots.txt 配置
✅ 存储
- 本地文件系统或 S3 兼容对象存储(S3、COS、OSS、Kodo、MinIO)
- 文件使用追踪与未使用文件自动清理
✅ 自定义
- 暗色/亮色主题自动切换(基于时间或系统偏好)
- 自定义字体、Favicon、背景图片
- 自定义 head / body 代码注入
- 可配置的关于页面(个性、座右铭、社交链接、版本信息)
- 打赏方式配置
- 微信公众号二维码集成
✅ 安全
- JWT 认证 + 令牌黑名单
- IP 限流(500 请求/分钟)
- RBAC 角色权限中间件
- CORS 跨域配置
- 密码加密(bcrypt)
- 邮箱验证码(带过期和失败次数追踪)
快速开始
1. 环境要求
| 依赖 | 版本要求 |
|---|---|
| Go | >= 1.25 |
| Node.js | >= 22 |
| PostgreSQL | >= 15 |
| pnpm | 推荐 |
2. 配置环境变量
项目根目录和各子目录都有 .env 文件,复制 .env.example 并填写:
根目录 .env
DB_PASSWORD=your_db_password
JWT_SECRET=your_jwt_secret
API_URL=http://localhost:8080/api/v1server/.env
SERVER_PORT=8080
SERVER_ALLOW_ORIGINS=*
DB_HOST=localhost
DB_PORT=5432
DB_NAME=mccsjs
DB_USER=postgres
DB_PASSWORD=your_db_password
JWT_SECRET=your_jwt_secretblog/.env
API_URL=http://localhost:8080/api/v1admin/.env
VITE_API_URL=http://localhost:8080/api/v13. 启动后端
cd server
go run cmd/main.go后端启动后会自动执行数据库迁移,首次启动会初始化所有表结构。
4. 启动前台博客
cd blog
pnpm install
pnpm dev默认运行在 http://localhost:3000。
5. 启动管理后台
cd admin
pnpm install
pnpm dev默认运行在 http://localhost:4000。
默认管理员账号
| 字段 | 值 |
|---|---|
| 邮箱 | admin@example.com |
| 密码 | 123456 |
⚠️ 重要:请在首次登录后立即修改密码!
管理后台功能
仪表盘
登录后首页为数据仪表盘,展示:
- 文章数、评论数、浏览量、访客数等核心指标
- 流量趋势折线图
- 分类/标签词云
- 贡献热力图
内容管理
| 模块 | 功能 |
|---|---|
| 文章管理 | 创建/编辑/删除文章,Markdown 编辑器带实时预览,支持封面制作、分类标签管理、AI 摘要生成 |
| 评论管理 | 查看/审核/置顶/删除评论,支持从 Artalk 导入 |
| 动态管理 | 发布/编辑/删除动态 |
| 友链管理 | 管理友链和友链分组,审核友链申请 |
| 番剧管理 | 管理动漫推荐 |
| 文件管理 | 上传/删除文件,查看文件使用状态 |
| 菜单管理 | 配置聚合菜单、顶部导航、页脚菜单 |
| 反馈管理 | 查看/回复用户反馈 |
| RSS 管理 | 管理 RSS 订阅源,刷新/标记已读 |
用户管理
- 用户列表查看
- 角色分配(super_admin / admin / user / guest)
- 用户状态管理
系统设置
系统设置分为 7 个标签页:
1. 基础设置
- 作者信息(姓名、邮箱、简介、头像、照片)
- ICP 备案号、公安备案
- 管理后台 URL、博客 URL、首页 URL
2. 博客设置
- 站点标题、副标题、标语、描述、关键词
- 建站日期、Favicon、背景图片(桌面端 + 移动端)
- 站点截图、公告内容
- 打字机效果文字
- 微信公众号二维码/名称
- 侧边栏社交链接
- 页脚社交链接/友情链接
- 主题自动切换时间
- 首页布局(瀑布流/单列)
- 动态页分页大小
- 关于页面内容(简介、个性 MBTI、座右铭、社交、创作平台、版本、联合、故事)
- 自定义 head / body 代码
- 表情配置、字体配置
- Meting API、Cravatar URL、IP API URL、封面制作 API
- 打赏方式
3. 通知设置
- SMTP 邮件配置(主机、端口、加密方式、用户名、发件人、密码)
- 飞书机器人配置(App ID、Secret、Chat ID)
4. 上传设置
- 存储类型(本地 / S3 / COS / OSS / Kodo / MinIO)
- 最大文件大小、路径模式
- S3 凭证、区域、存储桶、端点、域名、SSL 开关
5. AI 设置
- OpenAI 兼容 Base URL、API Key、模型
- 摘要 / AI 摘要 / 标题生成的提示词
- MCP 密钥
6. OAuth 设置
- GitHub、Google、QQ、Microsoft、OIDC、微信小程序
- 每个平台:启用开关、Client ID / Secret、回调地址
- Worker 代理 URL
7. 导入/导出
- 数据导入/导出功能
系统信息
- 查看系统静态/动态信息
- 版本更新检测
定时任务
系统内置以下定时任务,自动运行:
| 时间 | 任务 |
|---|---|
| 每天 02:00 | 清理过期邮箱验证码 |
| 每天 03:00 | 清理未使用的文件 |
| 每天 04:00 | 清理过期 JWT 令牌黑名单 |
| 每小时 | 刷新所有 RSS 订阅源 |
| 每天 05:00 | 清理孤立的 RSS 文章 |
| 每天 09:00 | 向邮件订阅者推送每日新文章 |
| 每天 00:00 | 友链可用性检测 |
前台页面说明
| 路径 | 页面 | 说明 |
|---|---|---|
/ |
首页 | 文章列表,支持瀑布流/单列布局,置顶/精选标记 |
/posts/:slug |
文章详情 | AI 摘要、过时提醒、正文、版权信息、标签、上下篇导航、评论 |
/archive |
归档 | 按年月归档的文章 |
/categories |
分类 | 分类列表 |
/category/:slug |
分类详情 | 某分类下的文章 |
/tags |
标签 | 标签云/列表 |
/tag/:slug |
标签详情 | 某标签下的文章 |
/moment |
动态 | 朋友圈式动态流(文字、图片画廊、视频、音频、音乐播放器) |
/link |
友链 | 友链卡片分组展示,可用性状态,友链申请表单 |
/fc |
朋友圈 | 聚合友链博客的 RSS 文章 |
/about |
关于 | 作者信息、联系方式、站点统计、版本、MBTI 性格卡、番剧推荐 |
/feedback |
反馈 | 反馈/投诉提交表单,工单追踪 |
/subscribe |
订阅 | 三种订阅方式:微信公众号、邮件、RSS |
/comments |
评论 | 全局评论列表 |
/statistics |
统计 | 公开统计数据:字数、浏览量、访客、文章、分类、标签、动态、友链、评论 |
/profile |
个人资料 | 编辑信息、徽章、密码、OAuth 绑定/解绑、账号注销 |
/notifications |
通知 | 通知中心,已读/未读状态 |
/search |
搜索 | 全文搜索(通过搜索弹窗触发) |
/cookies |
Cookies | Cookie / 本地存储说明 |
/copyright |
版权 | CC BY-NC-ND 4.0 协议 |
/privacy |
隐私 | 隐私政策 |
Docker 部署
每个组件都有独立的 Dockerfile:
后端
cd server
docker build -t mccsjs-server .
docker run -p 8080:8080 --env-file .env mccsjs-server前台博客
cd blog
docker build -t mccsjs-blog .
docker run -p 3000:3000 mccsjs-blog管理后台
cd admin
docker build -t mccsjs-admin .
docker run -p 4000:80 mccsjs-adminAPI 文档
后端启动后访问 Swagger 文档:
http://localhost:8080/swagger/index.htmlMCP(Model Context Protocol)
系统内置 MCP 服务端点,AI 工具可通过 /mcp 接口访问博客数据:
- 文章管理
- 评论管理
- 友链管理
- 动态管理
- RSS 订阅
- 统计数据
- 分类/标签
- 用户管理
在 AI 设置中配置 MCP 密钥即可启用。
使用建议
- 首次登录后立即修改默认密码
- 完善个人资料:设置作者信息、头像、简介
- 创建分类和标签:先建立内容分类体系
- 配置通知:设置 SMTP 邮箱,开启飞书机器人,及时收到评论和反馈通知
- 配置 OAuth:启用第三方登录,降低用户注册门槛
- 配置存储:生产环境建议使用 S3 兼容对象存储
- 配置 AI:接入 OpenAI 兼容接口,开启文章自动摘要
- 开启 PWA:让用户可以将博客安装到桌面
- 定期检查友链:系统会自动检测友链可用性
技术亮点
数据库优化
- CHECK 约束保证数据完整性
- 外键级联操作
- 部分索引减少存储空间
- 复合索引优化查询性能
- PostgreSQL GIN 索引加速全文搜索
前端优化
- SSR 服务端渲染,首屏加载更快
- PWA 支持,离线可用
- 代码分割(vue-core、vue-router、dayjs、markdown-renderer、katex、highlight 等独立 chunk)
- 图片懒加载与响应式处理
- 关键 CSS 内联(@nuxtjs/critters)
- 平滑滚动(Lenis)
安全设计
- JWT + 令牌黑名单机制
- RBAC 四级角色权限
- IP 限流防护
- 密码 bcrypt 加密
- CORS 跨域配置
- 邮箱验证码防刷
许可证
本项目基于 MIT License 开源。
祝您使用愉快!🎉
评论