MocLab 博客系统维护说明
MocLab 博客系统维护说明 这份文档只介绍当前项目里的博客系统,不包含学术页部分。
1. 博客内容放在哪里
博客文章统一放在:
src/content/posts/支持的文章格式是:
.md.mdx也就是说,你平时发博客,最常见的做法就是直接在 src/content/posts/ 下面新建一个 Markdown 文件。
例如:
src/content/posts/why-moclab.mdsrc/content/posts/agent-security-notes.mdsrc/content/posts/aigc-detection-log.mdx如果你想用脚本快速创建文章,也可以直接运行:
pnpm new-post your-post-name这个命令对应的脚本在:
scripts/new-post.js它会自动在 src/content/posts/ 下生成一篇带基础 frontmatter 的新文章。
2. 文章的基本格式
当前博客文章的数据结构定义在:
src/content.config.ts最常用的写法如下:
---title: 为什么我要搭建 MocLabpublished: 2026-05-05description: 记录搭建个人技术博客的原因、定位与长期计划。image: ""tags: ["Blog", "Research", "Personal"]category: "Reflection"draft: falselang: "zh-CN"---
这里开始写正文。常用字段说明:
title 文章标题,必填published 发布时间,必填description 文章简介,列表页和 SEO 会用到image 封面图,可留空tags 标签数组,可写多个category 分类,只写一个draft 是否草稿,true 时生产环境不会显示lang 语言标记,可留空updated 更新时间,可选pinned 是否置顶,可选author 作者,可选sourceLink 原文链接,可选licenseName 许可名称,可选licenseUrl 许可链接,可选comment 是否开启评论,可选password 文章密码,可选passwordHint 密码提示,可选3. 发博客的原理
这个博客使用的是 Astro Content Collection。
简单理解就是:
- 你把文章写进
src/content/posts/ src/content.config.ts负责校验文章 frontmatter 格式- Astro 在构建时读取这些文章
- 首页、归档、标签页、分类页、文章详情页都会自动使用这些内容
所以平时新增文章时,一般不需要手动去改路由或页面组件,只需要:
- 新建文章文件
- 填好 frontmatter
- 写正文
- 运行
pnpm build或pnpm dev
4. 标签和分类的逻辑
标签怎么写
标签来自文章 frontmatter 里的:
tags: ["AI Agent", "Memory", "Security"]特点:
tags是数组,所以一篇文章可以有多个标签- 标签名按你写的字符串原样统计
- 同名标签会自动聚合到标签页
标签统计逻辑在:
src/utils/content-utils.ts对应函数:
getTagList()标签页入口在:
src/pages/tags.astro点击标签后,实际会跳到归档页并带查询参数:
/archive/?tag=xxx对应逻辑在:
src/utils/url-utils.ts分类怎么写
分类来自文章 frontmatter 里的:
category: "AI Agent"特点:
category是单个字符串,不是数组- 一篇文章通常只属于一个分类
- 如果为空,会被归到“未分类”
分类统计逻辑也在:
src/utils/content-utils.ts对应函数:
getCategoryList()分类页入口在:
src/pages/categories.astro点击分类后,实际会跳到:
/archive/?category=xxx如果文章没有分类,会走:
/archive/?uncategorized=true5. 文章 URL 的规则
文章详情页路由在:
src/pages/posts/[...slug].astro文章链接是根据你在 src/content/posts/ 里的文件路径生成的。
例如:
src/content/posts/why-moclab.md通常会生成:
/posts/why-moclab/如果你用了子目录:
src/content/posts/research/agent-memory.md通常会生成:
/posts/research/agent-memory/6. 头像和个人信息在哪里改
最核心的个人资料入口在:
src/config/moclabSite.ts这里集中维护了:
siteNamenameidentityblogTaglinedescriptionblogBioavataravatarFallbackgithubemailblogNavigation你平时最常改的是这些字段:
siteName: "MocLab"name: "Zhongxu / Moc"identity: "Computer Science Graduate Student"blogTagline: "..."blogBio: "..."avatar: "/assets/images/icon3.jpg"github: "https://github.com/..."email: "mailto:your-email@example.com"博客左侧个人卡片真正读取的配置在:
src/config/profileConfig.ts不过它本身只是从 moclabSite.ts 映射过去,所以一般你直接改:
src/config/moclabSite.ts就够了。
头像显示组件在:
src/components/widget/Profile.astro7. 网站标题、导航和基础站点信息在哪里改
站点级配置主要在:
src/config/siteConfig.ts这里控制的内容包括:
站点标题副标题站点 URLSEO 描述主题色相默认明暗模式导航栏 logo页面开关文章列表布局分页数量分析统计当前导航菜单的数据来源在:
src/config/moclabSite.ts导航配置会被:
src/config/navBarConfig.tssrc/components/layout/Navbar.astro读取并渲染。
如果你要修改博客导航项,优先改:
src/config/moclabSite.ts8. 壁纸、横幅和主题色在哪里改
主题色相
主题色相配置在:
src/config/siteConfig.ts对应字段:
themeColor: { hue: 250, fixed: false, defaultMode: "system",}其中:
hue 主题色相fixed 是否锁定色相defaultMode 默认明暗模式壁纸和横幅
壁纸、横幅、首页大图相关配置在:
src/config/backgroundWallpaper.ts这里控制的内容包括:
壁纸模式桌面端和移动端图片首页横幅标题和副标题导航栏在横幅上的透明/模糊表现轮播波浪动画遮罩透明度你平时最常改的字段有:
mode: "banner"switchable: truesrc: { desktop: [...], mobile: [...],}banner: { homeText: { title: "MocLab", subtitle: [...], }}壁纸图片放哪里
当前配置里引用的壁纸图片主要在:
src/assets/images/DesktopWallpaper/如果你要替换首页横幅图片,通常有两种做法:
- 把新图放进
src/assets/images/DesktopWallpaper/ - 然后去
src/config/backgroundWallpaper.ts改src.desktop和src.mobile
如果你想完全不要横幅图,只保留纯色背景,也是在这个文件里改 mode。
9. 明暗模式和文章布局在哪里改
博客当前保留的可调项主要是:
明暗模式文章列表/网格布局相关设置组件在:
src/components/controls/DisplaySettingsIntegrated.svelte文章列表默认布局在:
src/config/siteConfig.ts对应字段:
postListLayout: { defaultMode: "list", mobileDefaultMode: "list", allowSwitch: true,}含义是:
defaultMode 桌面端默认布局mobileDefaultMode 移动端默认布局allowSwitch 是否允许用户手动切换列表/网格10. 公告在哪里改
首页公告卡片配置在:
src/config/announcementConfig.ts可改内容包括:
公告标题公告正文跳转按钮文案跳转链接是否允许关闭例如:
title: "公告"content: "欢迎来到 MocLab..."link: { enable: true, text: "了解更多", url: "https://academic.moclab.top",}11. 友链在哪里改
友链页面配置在:
src/config/friendsConfig.ts这个文件里有两部分:
页面级配置
friendsPageConfig: { title, description, showCustomContent, showComment, randomizeSort,}友链列表数据
friendLinks: [ { title, imgurl, desc, siteurl, tags, weight, enabled, }]字段含义:
title 站点名称imgurl 站点图标或头像desc 简介siteurl 链接地址tags 标签weight 排序权重,越大越靠前enabled 是否显示友链页面本体在:
src/pages/friends.astro12. 赞赏在哪里改
赞赏页面配置在:
src/config/sponsorConfig.ts你可以在这里改:
页面标题说明文案赞赏用途是否在文章页显示赞赏按钮赞赏方式列表最重要的是:
methods: [ { name, icon, qrCode, link, description, enabled, }]字段含义:
name 赞赏方式名称icon 图标qrCode 收款码图片link 外链方式,例如 GitHub Sponsorsdescription 说明enabled 是否显示赞赏页面本体在:
src/pages/sponsor.astro如果你要换支付宝或微信收款码,通常是:
- 把新图片放到合适的静态资源目录
- 修改
src/config/sponsorConfig.ts里的qrCode路径
13. About 页面在哪里改
博客里的关于页内容来自:
src/content/spec/about.md如果你只是想改“关于我”的正文,一般直接改这个文件即可。
14. 常改文件速查表
发文章
src/content/posts/改文章字段规则
src/content.config.ts快速新建文章脚本
scripts/new-post.js改个人信息
src/config/moclabSite.ts改头像映射
src/config/profileConfig.ts改网站基础配置
src/config/siteConfig.ts改壁纸和横幅
src/config/backgroundWallpaper.ts改公告
src/config/announcementConfig.ts改友链
src/config/friendsConfig.ts改赞赏
src/config/sponsorConfig.ts改导航
src/config/moclabSite.ts改关于页
src/content/spec/about.md15. 本地预览和构建
开发时常用命令:
pnpm dev构建检查命令:
pnpm build建议你每次改完以下内容后都跑一次构建:
- 新文章 frontmatter
- 导航配置
- 头像路径
- 壁纸图片路径
- 友链图片路径
- 赞赏二维码路径
16. 最简单的日常维护流程
如果只是普通发文,最常见流程就是:
- 在
src/content/posts/新建一篇.md - 按 frontmatter 格式补全标题、时间、标签、分类、简介
- 写正文
- 跑
pnpm dev本地看效果 - 最后跑
pnpm build
如果只是改个人资料,最常见流程就是:
- 改
src/config/moclabSite.ts - 如果换头像,确认图片路径有效
- 跑
pnpm build
如果只是改首页横幅或壁纸,最常见流程就是:
- 改
src/config/backgroundWallpaper.ts - 如有需要替换图片资源
- 跑
pnpm build
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!