Next-Gen Material Design 3 Blog Theme (Astro Powered)
See the code
一个现代化、功能丰富的静态博客模板,基于 Astro 构建,具有先进的功能和精美的设计。
[!WARNING]
⚠️ 项目停止更新与迁移通知
本项目(Mizuki)即将停止更新与维护。
全新全面重构版本 Shirone 现已发布,功能与本项目基本一致,并在架构与体验上进行了全面重构与优化。建议前往新项目获取最新支持与更新:
🔗 新项目仓库:https://github.com/lyraVoid/shirone
🌏 README 语言: 中文 / English / 日本語 / 繁體中文 /
通过我们的综合文档快速开始。无论是自定义主题、配置功能,还是部署到生产环境,文档涵盖了您成功启动博客所需的所有内容。
📚 阅读完整文档 →

![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
克隆仓库:
git clone https://github.com/LyraVoid/Mizuki.git
cd Mizuki
安装依赖:
# 启用项目声明的包管理器版本
corepack enable
# 安装项目依赖
pnpm install
配置博客(可选):
.env 中设置 ENABLE_CONTENT_SYNC=false。src/config/siteConfig.ts 和 src/config/ 下的其他模块自定义站点。siteURL 替换为部署后的公开网址。启动开发服务器:
pnpm dev
博客将在 http://localhost:3000 可用
pnpm new-post -- <文件名>,支持 .md 和 .mdx。src/content/posts/ 中的文件。src/content/spec/ 中对应的文件。src/data/ 中对应的文件。./cover.webp 这样的相对路径。public/ 下,并使用 /images/example.webp 这样的根路径。发布前注意: 仓库中包含示例文章、页面数据、相册和图片。部署个人站点前请删除或替换这些示例内容。
将博客部署到任何静态托管平台:
Vercel: 连接 GitHub 仓库到 Vercel
Netlify: 直接从 GitHub 部署
GitHub Pages: 使用包含的 GitHub Actions 工作流
Cloudflare Pages: 连接您的仓库
环境变量配置(可选): 可参照 .env.example 来配置
部署前,请在 src/config/siteConfig.ts 中更新 siteURL。不要将 .env 或凭据提交到 Git;托管构建请在平台的环境变量设置中配置。
.env.example 中还包含 Bilibili 会话数据和 IndexNow 凭据等可选配置。只在需要时设置,并放在本地环境或托管平台 Secret 中,切勿提交真实值。
文章使用 src/content/posts/ 下的 .md 或 .mdx 文件,title 和 published 是必填的 frontmatter 字段。可选字段支持摘要、图片、标签、分类、草稿、置顶、评论、别名、固定链接、署名和浏览器端加密。
Markdown 和 MDX 支持提示框、KaTeX 数学公式、Expressive Code、Mermaid、PlantUML、GitHub 卡片、Wiki Link、剧透、响应式图片、图片网格、Fancybox 灯箱和 HTML 嵌入。加密文章不会进入 RSS 和 Atom,但浏览器端加密不是服务端访问控制。
PlantUML 默认使用 src/config/markdownConfig.ts 中配置的公共服务器,请勿在图表中写入密码、Token 或隐私数据。
完整字段表、写作语法、图片规则、图表、视频嵌入、加密限制和发布清单请参阅内容编写指南。
所有命令都在项目根目录运行:
| 命令 | 操作 |
|---|---|
pnpm install | 安装依赖。 |
pnpm dev | 在 http://localhost:3000 启动开发服务器。 |
pnpm build | 构建 ./dist/、生成搜索数据并执行构建检查。 |
pnpm preview | 在部署前预览生产构建。 |
pnpm run check | 运行 Astro 诊断。 |
pnpm run type-check | 运行 TypeScript 类型检查。 |
pnpm test | 运行 Markdown、布局、图片、音乐和加密测试。 |
pnpm run format | 使用 Biome 格式化源文件。 |
pnpm run lint | 使用 Biome 检查并自动修复源文件。 |
pnpm new-post -- <文件名> | 创建 Markdown 或 MDX 文章。 |
pnpm run sync-content | 同步可选的外部内容仓库。 |
pnpm run init-content | 交互式初始化外部内容同步。 |
pnpm astro ... | 运行 Astro CLI 命令。 |
配置已拆分到 src/config/ 下的多个模块,src/config/index.ts 是统一导出入口。主要站点设置位于 src/config/siteConfig.ts:
export const siteConfig: SiteConfig = {
title: "您的博客名称",
subtitle: "您的博客描述",
siteURL: "https://example.com/", // 保留结尾斜杠
lang: "zh_CN", // 例如 "en"、"ja" 或 "zh_TW"
timeZone: "Asia/Shanghai", // 任意有效的 IANA 时区
themeColor: {
hue: 210, // 0–360
fixed: false, // 为 true 时隐藏访客的主题色选择器
},
featurePages: {
anime: true,
diary: true,
friends: true,
projects: true,
skills: true,
timeline: true,
albums: true,
devices: true,
aiTools: true,
},
// 其余字段请保留模板默认值。
};
其他常用配置文件:
src/config/navBarConfig.ts — 导航链接和菜单。src/config/profileConfig.ts — 头像、名称、简介和社交链接。src/config/sidebarConfig.ts — 侧边栏组件、顺序、位置和响应式行为。src/config/backgroundWallpaper.ts 与 src/config/effectsConfig.ts — 壁纸和视觉特效。src/config/commentConfig.ts — Twikoo 或 Giscus 全局设置。评论默认关闭;使用前请设置 enable: true 并配置对应服务。src/config/musicConfig.ts — 音乐播放器模式和歌单来源。src/config/markdownConfig.ts — Wiki Link、自动图片网格和 PlantUML。src/config/permalinkConfig.ts — 可选的全局固定链接格式。src/config/expressiveCodeConfig.ts — 代码块主题和行为。页面开关由 siteConfig.featurePages 控制。页面内容与页面模板分离:
| 页面 | 内容或数据来源 |
|---|---|
| 关于 | src/content/spec/about.md |
| 友链 | src/content/spec/friends.md 和 src/data/friends.ts |
| 追番 | src/config/siteConfig.ts 设置数据源模式;本地数据在 src/data/anime.ts |
| 日记 | src/data/diary.ts,或在 diaryApiUrl 中配置 Memos 地址 |
| 相册 | public/images/albums/;每个本地相册使用 info.json |
| 项目 | src/data/projects.ts |
| 技能 | src/data/skills.ts |
| 设备 | src/data/devices.ts |
| 时间线 | src/data/timeline.ts |
| AI 工具 | src/data/ai-tools.ts |
不要为了修改页面内容而直接编辑 src/pages/*.astro;这些文件负责布局和渲染逻辑。
Mizuki 可以将主题代码和博客内容分成两个仓库,适用于私有内容、独立版本管理或团队协作,但这是可选功能。
快速选择:
| 使用场景 | 配置方式 | 内容位置 |
|---|---|---|
| 本地内容 | ENABLE_CONTENT_SYNC=false | src/content/、src/data/ 和 public/images/ |
| 外部内容仓库 | ENABLE_CONTENT_SYNC=true 且设置 CONTENT_REPO_URL=... | 同步到上述路径的独立仓库 |
一键启用/禁用:
# 本地内容模式(推荐入门使用)
# 在 .env 中显式关闭同步
ENABLE_CONTENT_SYNC=false
pnpm dev
# 外部内容仓库模式
# 1. 复制配置示例
cp .env.example .env
# 2. 编辑 .env
ENABLE_CONTENT_SYNC=true
CONTENT_REPO_URL=https://github.com/your-username/Mizuki-Content.git
# CONTENT_DIR=./content # 可选,默认值即为此路径
# 3. 同步内容并启动站点
pnpm run sync-content
pnpm dev
外部内容仓库可以使用以下结构:
Mizuki-Content/
├── posts/ # .md 和 .mdx 文章
├── spec/ # 关于页、友链页等 Markdown 内容
├── data/ # 项目、技能等结构化页面数据
└── images/ # 公共图片,包括相册和文章资源
同步脚本会将这些目录映射到 src/content/posts/、src/content/spec/、src/data/ 和 public/images/。src/data/ai-tools.ts 属于代码仓库,会在同步时受到保护。
同步警告: 启用
ENABLE_CONTENT_SYNC后,pnpm dev和pnpm build会自动执行同步钩子。如果CONTENT_DIR已经是 Git 仓库,同步脚本会 fetch 并重置到远程main或master分支;它还可能将现有运行时目录备份为.backup、创建目录联接或复制文件,并在代码仓库中提交同步结果。执行前请提交或备份本地内容修改,不要直接编辑同步目标文件。
私有仓库可以使用 SSH URL,或通过部署平台配置凭据。不要将 Token 写入 .env 并提交,也不要将 Token 放进公开仓库 URL。
📖 详细配置: 内容分离完整指南
🔄 迁移教程: 从单仓库迁移到分离模式
🚀 部署指南: 部署指南
📚 更多文档: 文档索引
我们欢迎贡献!请随时提交问题和拉取请求。
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)本项目基于 Apache 许可证 2.0 - 查看 LICENSE 文件了解详情。
本项目基于 Fuwari 开发,该项目使用 MIT 许可证。根据 MIT 许可证要求,原始版权声明和许可声明已包含在 LICENSE.MIT 文件中。
Markdown 增强功能的部分实现基于 Firefly 的 MIT 许可代码改写。原始版权声明与完整许可证文本保留在 THIRD_PARTY_NOTICES.md 中。
感谢以下贡献者对本项目做出的贡献,如有问题或建议,请提交 Issue 或 Pull Request。
⭐ 如果您觉得这个项目有帮助,请考虑给它一个星标!
Next-Gen Material Design 3 Blog Theme (Astro Powered)
See the code
一个现代化、功能丰富的静态博客模板,基于 Astro 构建,具有先进的功能和精美的设计。
[!WARNING]
⚠️ 项目停止更新与迁移通知
本项目(Mizuki)即将停止更新与维护。
全新全面重构版本 Shirone 现已发布,功能与本项目基本一致,并在架构与体验上进行了全面重构与优化。建议前往新项目获取最新支持与更新:
🔗 新项目仓库:https://github.com/lyraVoid/shirone
🌏 README 语言: 中文 / English / 日本語 / 繁體中文 /
通过我们的综合文档快速开始。无论是自定义主题、配置功能,还是部署到生产环境,文档涵盖了您成功启动博客所需的所有内容。
📚 阅读完整文档 →

![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
克隆仓库:
git clone https://github.com/LyraVoid/Mizuki.git
cd Mizuki
安装依赖:
# 启用项目声明的包管理器版本
corepack enable
# 安装项目依赖
pnpm install
配置博客(可选):
.env 中设置 ENABLE_CONTENT_SYNC=false。src/config/siteConfig.ts 和 src/config/ 下的其他模块自定义站点。siteURL 替换为部署后的公开网址。启动开发服务器:
pnpm dev
博客将在 http://localhost:3000 可用
pnpm new-post -- <文件名>,支持 .md 和 .mdx。src/content/posts/ 中的文件。src/content/spec/ 中对应的文件。src/data/ 中对应的文件。./cover.webp 这样的相对路径。public/ 下,并使用 /images/example.webp 这样的根路径。发布前注意: 仓库中包含示例文章、页面数据、相册和图片。部署个人站点前请删除或替换这些示例内容。
将博客部署到任何静态托管平台:
Vercel: 连接 GitHub 仓库到 Vercel
Netlify: 直接从 GitHub 部署
GitHub Pages: 使用包含的 GitHub Actions 工作流
Cloudflare Pages: 连接您的仓库
环境变量配置(可选): 可参照 .env.example 来配置
部署前,请在 src/config/siteConfig.ts 中更新 siteURL。不要将 .env 或凭据提交到 Git;托管构建请在平台的环境变量设置中配置。
.env.example 中还包含 Bilibili 会话数据和 IndexNow 凭据等可选配置。只在需要时设置,并放在本地环境或托管平台 Secret 中,切勿提交真实值。
文章使用 src/content/posts/ 下的 .md 或 .mdx 文件,title 和 published 是必填的 frontmatter 字段。可选字段支持摘要、图片、标签、分类、草稿、置顶、评论、别名、固定链接、署名和浏览器端加密。
Markdown 和 MDX 支持提示框、KaTeX 数学公式、Expressive Code、Mermaid、PlantUML、GitHub 卡片、Wiki Link、剧透、响应式图片、图片网格、Fancybox 灯箱和 HTML 嵌入。加密文章不会进入 RSS 和 Atom,但浏览器端加密不是服务端访问控制。
PlantUML 默认使用 src/config/markdownConfig.ts 中配置的公共服务器,请勿在图表中写入密码、Token 或隐私数据。
完整字段表、写作语法、图片规则、图表、视频嵌入、加密限制和发布清单请参阅内容编写指南。
所有命令都在项目根目录运行:
| 命令 | 操作 |
|---|---|
pnpm install | 安装依赖。 |
pnpm dev | 在 http://localhost:3000 启动开发服务器。 |
pnpm build | 构建 ./dist/、生成搜索数据并执行构建检查。 |
pnpm preview | 在部署前预览生产构建。 |
pnpm run check | 运行 Astro 诊断。 |
pnpm run type-check | 运行 TypeScript 类型检查。 |
pnpm test | 运行 Markdown、布局、图片、音乐和加密测试。 |
pnpm run format | 使用 Biome 格式化源文件。 |
pnpm run lint | 使用 Biome 检查并自动修复源文件。 |
pnpm new-post -- <文件名> | 创建 Markdown 或 MDX 文章。 |
pnpm run sync-content | 同步可选的外部内容仓库。 |
pnpm run init-content | 交互式初始化外部内容同步。 |
pnpm astro ... | 运行 Astro CLI 命令。 |
配置已拆分到 src/config/ 下的多个模块,src/config/index.ts 是统一导出入口。主要站点设置位于 src/config/siteConfig.ts:
export const siteConfig: SiteConfig = {
title: "您的博客名称",
subtitle: "您的博客描述",
siteURL: "https://example.com/", // 保留结尾斜杠
lang: "zh_CN", // 例如 "en"、"ja" 或 "zh_TW"
timeZone: "Asia/Shanghai", // 任意有效的 IANA 时区
themeColor: {
hue: 210, // 0–360
fixed: false, // 为 true 时隐藏访客的主题色选择器
},
featurePages: {
anime: true,
diary: true,
friends: true,
projects: true,
skills: true,
timeline: true,
albums: true,
devices: true,
aiTools: true,
},
// 其余字段请保留模板默认值。
};
其他常用配置文件:
src/config/navBarConfig.ts — 导航链接和菜单。src/config/profileConfig.ts — 头像、名称、简介和社交链接。src/config/sidebarConfig.ts — 侧边栏组件、顺序、位置和响应式行为。src/config/backgroundWallpaper.ts 与 src/config/effectsConfig.ts — 壁纸和视觉特效。src/config/commentConfig.ts — Twikoo 或 Giscus 全局设置。评论默认关闭;使用前请设置 enable: true 并配置对应服务。src/config/musicConfig.ts — 音乐播放器模式和歌单来源。src/config/markdownConfig.ts — Wiki Link、自动图片网格和 PlantUML。src/config/permalinkConfig.ts — 可选的全局固定链接格式。src/config/expressiveCodeConfig.ts — 代码块主题和行为。页面开关由 siteConfig.featurePages 控制。页面内容与页面模板分离:
| 页面 | 内容或数据来源 |
|---|---|
| 关于 | src/content/spec/about.md |
| 友链 | src/content/spec/friends.md 和 src/data/friends.ts |
| 追番 | src/config/siteConfig.ts 设置数据源模式;本地数据在 src/data/anime.ts |
| 日记 | src/data/diary.ts,或在 diaryApiUrl 中配置 Memos 地址 |
| 相册 | public/images/albums/;每个本地相册使用 info.json |
| 项目 | src/data/projects.ts |
| 技能 | src/data/skills.ts |
| 设备 | src/data/devices.ts |
| 时间线 | src/data/timeline.ts |
| AI 工具 | src/data/ai-tools.ts |
不要为了修改页面内容而直接编辑 src/pages/*.astro;这些文件负责布局和渲染逻辑。
Mizuki 可以将主题代码和博客内容分成两个仓库,适用于私有内容、独立版本管理或团队协作,但这是可选功能。
快速选择:
| 使用场景 | 配置方式 | 内容位置 |
|---|---|---|
| 本地内容 | ENABLE_CONTENT_SYNC=false | src/content/、src/data/ 和 public/images/ |
| 外部内容仓库 | ENABLE_CONTENT_SYNC=true 且设置 CONTENT_REPO_URL=... | 同步到上述路径的独立仓库 |
一键启用/禁用:
# 本地内容模式(推荐入门使用)
# 在 .env 中显式关闭同步
ENABLE_CONTENT_SYNC=false
pnpm dev
# 外部内容仓库模式
# 1. 复制配置示例
cp .env.example .env
# 2. 编辑 .env
ENABLE_CONTENT_SYNC=true
CONTENT_REPO_URL=https://github.com/your-username/Mizuki-Content.git
# CONTENT_DIR=./content # 可选,默认值即为此路径
# 3. 同步内容并启动站点
pnpm run sync-content
pnpm dev
外部内容仓库可以使用以下结构:
Mizuki-Content/
├── posts/ # .md 和 .mdx 文章
├── spec/ # 关于页、友链页等 Markdown 内容
├── data/ # 项目、技能等结构化页面数据
└── images/ # 公共图片,包括相册和文章资源
同步脚本会将这些目录映射到 src/content/posts/、src/content/spec/、src/data/ 和 public/images/。src/data/ai-tools.ts 属于代码仓库,会在同步时受到保护。
同步警告: 启用
ENABLE_CONTENT_SYNC后,pnpm dev和pnpm build会自动执行同步钩子。如果CONTENT_DIR已经是 Git 仓库,同步脚本会 fetch 并重置到远程main或master分支;它还可能将现有运行时目录备份为.backup、创建目录联接或复制文件,并在代码仓库中提交同步结果。执行前请提交或备份本地内容修改,不要直接编辑同步目标文件。
私有仓库可以使用 SSH URL,或通过部署平台配置凭据。不要将 Token 写入 .env 并提交,也不要将 Token 放进公开仓库 URL。
📖 详细配置: 内容分离完整指南
🔄 迁移教程: 从单仓库迁移到分离模式
🚀 部署指南: 部署指南
📚 更多文档: 文档索引
我们欢迎贡献!请随时提交问题和拉取请求。
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)本项目基于 Apache 许可证 2.0 - 查看 LICENSE 文件了解详情。
本项目基于 Fuwari 开发,该项目使用 MIT 许可证。根据 MIT 许可证要求,原始版权声明和许可声明已包含在 LICENSE.MIT 文件中。
Markdown 增强功能的部分实现基于 Firefly 的 MIT 许可代码改写。原始版权声明与完整许可证文本保留在 THIRD_PARTY_NOTICES.md 中。
感谢以下贡献者对本项目做出的贡献,如有问题或建议,请提交 Issue 或 Pull Request。
⭐ 如果您觉得这个项目有帮助,请考虑给它一个星标!