基于 Astro 的静态博客主题,以柑橘色与方格草稿纸背景为视觉特征
citrus-grid — Astro 博客模板
作者 rightdoor
CitrusGrid 是一个基于 Astro 的轻量级静态博客主题,以柑橘色和方格草稿纸背景为视觉特征,支持 Markdown 写作与多语言站点。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
内置 zh、en、ja 三语 i18n,并提供语言包键集合一致性校验脚本
支持 GFM 语法与 KaTeX 数学公式,代码高亮在构建期完成且客户端零 JS
集成 pagefind 站内搜索、RSS 订阅、友链与明暗主题切换
评论系统可插拔,当前适配 utterances;统计功能预留接口并自带 visitor-stats 插件
附带覆盖项目结构、组件、主题定制与插件系统的二次开发文档
模板详细介绍
CitrusGrid(柑橘格子)是 rightdoor 开源的 Astro 静态博客主题,主色为柑橘色(#E86233),背景采用方格草稿纸样式,定位在轻量级 Markdown 博客。主题内置中、英、日三语 i18n,支持 GFM 语法与 KaTeX 数学公式,提供明暗主题切换、基于 pagefind 的站内搜索、RSS 订阅和友链页面。文章以 Markdown 加 frontmatter 管理,字段包括 title、slug、index、description、category、tags、published、updated 和 draft,其中 index 大于 0 时置顶且数值越大越靠前,updated 可由脚本按文件修改时间自动写入。内容侧还包含代码高亮与复制按钮、PhotoSwipe 图片灯箱与 LQIP 占位、文章相对链接自动转换、音乐播放器组件以及左下角可开关的宠物动画。评论系统当前适配 utterances,统计功能预留接口,自带 visitor-stats 插件需自行在 Cloudflare Worker 部署统计服务。主题附带从项目结构、组件说明、主题样式定制到插件系统与排错的二次开发文档,便于改造主色、布局或接入评论与统计。使用前需注意:运行环境要求 Node.js 与 Astro 的指定最低版本,依赖安装强制使用 pnpm;演示图片、字体、图标等第三方素材需单独核对许可,域名、托管等外部服务可能产生费用。
适合你的项目吗?
适用场景
- 用 Markdown 撰写并发布个人技术或生活博客
- 搭建需要中、英、日多语言展示的静态站点
- 在文章中展示数学公式、代码片段与图片灯箱效果
- 通过 utterances 接入评论,或按插件契约替换为自定义评论系统
- 在 Cloudflare Worker 部署 visitor-stats 服务后统计全站与文章 PV/UV
适合人群
- 熟悉 Markdown 与 Astro 基础、希望快速搭建静态博客的开发者
- 需要多语言博客站点并愿意维护语言包的个人或小团队
- 计划对主题进行换色、改布局或接入评论与统计的二次开发者
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
环境要求 Node.js 与 Astro 达到 README 标注的最低版本,依赖安装强制使用 pnpm(preinstall 会执行 only-allow pnpm)
- 2
克隆仓库后执行 pnpm install,并在 src/site.config.ts 中自定义博客设置
- 3
本地开发运行 pnpm dev,默认访问 http://localhost:4321;部署使用 pnpm build 后将 dist 目录发布到目标平台
- 4
文章提交前需先执行 pnpm format-post-meta 与 pnpm build(构建会改写 md 补全 slug),再运行 pnpm check
- 5
评论与统计为可插拔插件,使用 utterances 或自部署 visitor-stats 前需按对应使用规则配置
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 使用自带 visitor-stats 统计插件时,需自行在 Cloudflare Worker 部署统计服务,涉及外部服务与账号配置。
- 评论功能当前适配 utterances,需依赖 GitHub 相关服务并完成对应配置才能使用。
- 依赖安装强制使用 pnpm,preinstall 会执行 only-allow pnpm,使用 npm 或 yarn 安装会被拒绝。
- 运行环境要求 Node.js 版本不低于 22.14.0,低于该版本无法正常构建或开发。
- 运行环境要求 Astro 版本不低于 7.2.9,低于该版本可能无法正常构建。
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
需要在cloudflare worker中自行部署统计服务
README 原文
当前适配 utterances 评论系统
README 原文
本项目使用 pnpm 安装依赖,如果没有安装请先安装
README 原文
Node.js ≥ 22.14.0
README 原文
https://github.com/rightdoor/citrus-grid/blob/main/LICENSE.txthttps://github.com/rightdoor/citrus-grid/blob/main/README.mdAstro ≥ 7.2.9
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-03。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 83 / 100
- 技术栈
- Astro
- 网站类型
- 博客
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-09-30
- 截图检查日期
- 2026-10-03
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Astro。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: [email protected] · 2026-10-04
查看当时使用的来源资料
SHA-256: 2ac189ac5d97e56c44983139f34b11ec843af830ac82511f914333478b46314a
2026-10-03T10:18:51.657Z
来源文件 / 仓库<div align="center">
<img src="./docs/logo.webp" alt="Logo 图片" />
<h1 align="center">CitrusGrid 柑橘格子</h1>
<p>基于 Astro 的轻量级静态博客主题,以<strong>柑橘色(#E86233)</strong>为主色调,方格草稿纸为背景样式,带来轻量级的 markdown 博客需求。</p>
<img src="https://img.shields.io/badge/Node.js-%3E%3D22.14.0-brightgreen" alt="Node Version">
<img src="https://img.shields.io/badge/Astro-%3E%3D7.2.9-brightgreen" alt="Astro Version">
<img src="https://img.shields.io/github/license/rightdoor/citrus-grid" alt="GitHub License">
<br>
<a href="https://citrusgrid.pages.dev">Demo</a> | <a href="./docs/README.en.md">English</a> | <a href="./docs/README.ja.md">日本語</a> | <a href="https://dev.citrusgrid.pages.dev">Dev Demo</a>
</div>
---
<table width="100%" align="center" cellpadding="8" cellspacing="0">
<tr>
<th colspan="2" align="center">暗夜模式</th>
</tr>
<tr>
<td align="center"><img src="./docs/dark.webp" alt="暗夜模式"><br>暗夜模式</td>
<td align="center"><img src="./docs/light.webp" alt="白天模式"><br>白天模式</td>
</tr>
<tr>
<td align="center"><img src="./docs/dark-post.webp" alt="暗夜模式"><br>暗夜模式文章</td>
<td align="center"><img src="./docs/light-post.webp" alt="白天模式"><br>白天模式文章</td>
</tr>
<tr>
<th colspan="2" align="center">PageSpeed Insights 性能测试</th>
</tr>
<tr>
<td align="center"><img src="./docs/pagespeed-desktop.webp" alt="桌面端性能"><br>桌面端性能</td>
<td align="center"><img src="./docs/pagespeed-mobile.webp" alt="手机性能"><br>手机性能</td>
</tr>
</table>
---
## 快速开始
### 环境要求
- Node.js ≥ 22.14.0
- Astro ≥ 7.2.9
### 本地开发部署
1. 克隆仓库:
```bash
git clone https://github.com/rightdoor/citrus-grid.git
cd citrus-grid
```
2. 安装依赖
```bash
# 本项目使用 pnpm 安装依赖,如果没有安装请先安装
npm install -g pnpm
pnpm install
```
3. 配置博客:
编辑 `src/site.config.ts` 自定义博客设置
4. 启动开发服务器:
```bash
pnpm dev
```
访问 `http://localhost:4321` 即可查看博客效果
### 平台托管部署
- [Astro 部署指南](https://docs.astro.build/guides/deploy/)
- 网页部署请使用 `pnpm build` 命令构建网站,随后将 `dist` 目录部署至目标平台。
## 配置说明
详细内容请查看配置文件 [site.config.ts](src/site.config.ts)。
## 文章 Frontmatter
```markdown
---
title: example
slug: example
index: 0
description: example description
category: example
tags: [example, example1]
published: 2026-01-01 00:01:02
updated: 2026-01-01 00:01:03
draft: false
---
```
| 字段 | 是否必填 | 示例 | 描述 |
| --- | --- | --- | --- |
| `title` | 是 | "example" | 文章标题 |
| `slug` | 是 | example | 运行时自动生成,可手动填写,使用`-`分隔单词 |
| `index` | 是 | 0 | 默认为0不置顶,大于0的整数置顶,数值越大越靠前 |
| `description` | 是 | "展示 Markdown 语法的各种类型和示例" | 文章描述 |
| `category` | 是 | "示例" | 文章分类 |
| `tags` | 是 | [Markdown] | 文章标签,多个标签用逗号隔开 |
| `published` | 是 | 2026-01-01 00:01:02 | 文章发布时间,格式为`YYYY-MM-DD HH:mm:ss`,脚本生成自带 |
| `updated` | 否 | 2026-01-01 00:01:03 | 文章更新时间,格式为`YYYY-MM-DD HH:mm:ss`,启动和构建时由脚本按文件修改时间自动写入(可在 `site.config.ts` 关闭) |
| `draft` | 否 | false | 是否草稿,不自动生成 |
## 命令说明
| 命令 | 作用 |
| --- | --- |
| `pnpm dev` / `start` | 启动开发服务器 |
| `pnpm build` | 生产构建,随后自动注入 `modulepreload`、压缩内联脚本,并执行 `pagefind` 生成站内搜索索引 |
| `pnpm preview` | 预览 `dist` 构建产物 |
| `pnpm check` | Astro 类型检查(`astro check`) |
| `pnpm type-check` | TypeScript 类型检查(`tsc --noEmit`,覆盖 `src` 与 `scripts`) |
| `pnpm check-i18n` | 校验 zh / ja / en 语言包键集合一致 |
| `pnpm check-swup-ignore` | 校验 `shouldIgnoreSwup` 内联正则与 `ASSET_EXT_RE` / `RESERVED_PATH_RE` 常量一致 |
| `pnpm new-post [slug]` | 新建文章模板 `src/content/posts/<slug>.md`(省略 slug 时按当天日期命名) |
| `pnpm format-post-meta` | 统一重排所有文章 frontmatter 字段顺序 |
| `pnpm format` | Biome 格式化 `src` |
| `pnpm format:all` | Biome 检查并修复全项目代码(src、scripts、根目录配置文件) |
| `pnpm lint` | Biome 检查并修复 `src` |
| `preinstall` | 自动执行 `only-allow pnpm`,强制使用 pnpm |
## 提交前检查
*文章写完提交前(`pnpm build` 会改写 md 补全 `slug`,必须在 commit 之前执行):
```bash
pnpm format-post-meta
pnpm build
pnpm check
```
代码改完提交前:
```bash
pnpm format:all
pnpm check
pnpm type-check
```
- 改了 i18n 文案加跑 `pnpm check-i18n`;改了 `src/lib/url.ts` 加跑 `pnpm check-swup-ignore`。
## 功能
- [x] i18n 支持(zh、en、ja三语)
- [x] 支持 GFM 语法
- [x] 支持 KaTeX 数学公式
- [x] 明暗主题切换
- [x] 搜索功能(pagefind)
- [x] 评论功能(评论系统可插拔,当前适配 utterances)
- [x] 目录功能(桌面端侧边固定 + 移动端弹窗)
- [x] RSS 订阅功能
- [x] 友链功能
- [x] 代码高亮(Prism 构建期高亮,客户端零 JS)与代码复制按钮
- [x] 图片灯箱(PhotoSwipe)与 LQIP 渐变占位骨架
- [x] 阅读统计(已预留接口)
- [x] 文章相对链接自动转换
- [x] 音乐播放器组件
- [x] 左下角宠物(视线跟随 / 眨眼 / 休眠,可在配置中开关)
## 插件
### 评论插件
当前适配 utterances 评论系统,支持自定义评论插件。
支持自定义评论插件,详细参考 [评论插件](src/comments/使用规则.md)。
### 统计插件
支持全局和文章PV/UV统计,已预留接口。
当前自带统计插件有 `visitor-stats.ts`,项目地址为 [visitor-stats](https://github.com/rightdoor/visitor-stats)。需要在cloudflare worker中自行部署统计服务。
支持自定义统计插件,详细参考 [统计插件](src/stats/使用规则.md)。
## 二次开发文档
需要改造主题(换主色、改布局、加组件、接入评论/统计、排查构建问题)请查阅 [`src/content/posts/all/00-index.md`](src/content/posts/all/00-index.md):
| 文档 | 内容 |
| --- | --- |
| [00-index.md](src/content/posts/all/00-index.md) | 总览与二次开发任务索引 |
| [01-项目结构.md](src/content/posts/all/01-项目结构.md) | 目录树、技术栈、构建流水线、数据流 |
| [02-组件说明.md](src/content/posts/all/02-组件说明.md) | 全部组件 Props 表、DOM 结构、事件协议、图标系统 |
| [03-主题与样式定制.md](src/content/posts/all/03-主题与样式定制.md) | `--wp-*` 变量全表、暗色模式、换肤步骤 |
| [04-站点配置.md](src/content/posts/all/04-站点配置.md) | `site.config.ts` 等 6 个配置文件的参数表 |
| [05-内容与Markdown.md](src/content/posts/all/05-内容与Markdown.md) | Frontmatter 表、markdown 插件链、图片与相对链接 |
| [06-构建与脚本.md](src/content/posts/all/06-构建与脚本.md) | 6 个构建脚本、产物结构、部署 |
| [07-页面与路由.md](src/content/posts/all/07-页面与路由.md) | 路由表、SEO、i18n 现状与扩展 |
| [08-插件系统.md](src/content/posts/all/08-插件系统.md) | 评论 / 统计插件契约、音乐播放器 |
| [09-常见改造与排错.md](src/content/posts/all/09-常见改造与排错.md) | 任务式改造速查、FAQ、自检清单 |
> 基于 `DeepSeek-V4.1-Flash` 检索生成+手动修改,仅供参考。
## 贡献者
<a href="https://github.com/rightdoor/citrus-grid/graphs/contributors">
<img src="https://contrib.rocks/image?repo=rightdoor/citrus-grid" />
</a>
## License
本项目使用 [MIT License](LICENSE.txt) 开源。详细条款请参阅项目根目录下的 `LICENSE.txt` 文件。
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

astrowind
⭕️ AstroWind: A free template using Astro v7 and Tailwind CSS v4. Astro starter theme.
Astro · 博客

astro-paper
A minimal, accessible and SEO-friendly Astro blog theme.
Astro · 博客

fuwari
✨A static blog template built with Astro.
Astro · 博客

Firefly
Firefly 是一款基于 Astro 的静态博客主题,由 CuteLeaf 在 saicaca 的 Fuwari 模板基础上二次开发,主打清新美观的视觉风格。
Astro · 博客

astro-theme-cactus
A simple Astro theme. Use it to create your blog or website.
Astro · 作品集

astrofy
Astrofy is a free and open-source template for your Personal Portfolio Website built with Astro and TailwindCS…
Astro · 作品集
