浅色水蓝与深色夜空蓝两套配色,支持深浅色模式切换
astro-biluo — Astro 启动器模板
作者 Just-Passersby
Biluo(碧落)是一个基于 Astro 的博客主题,使用 Markdown/MDX 内容集合,内置 Pagefind 搜索、Giscus 评论、深浅色模式、系列与标签分组、RSS/sitemap/llms.txt,并针对 Cloudflare Workers 静态资源部署做了配置。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
目前有 1 张原始预览,可打开完整图片查看设计细节。
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
标签支持嵌套分组,系列采用树状结构组织文章
Pagefind 构建时全文搜索索引,不依赖 Google site: 查询
Giscus 评论默认关闭,可在 src/data/comments.ts 中替换提供方
内置 RSS(带 XSL 样式)、sitemap、llms.txt 与 robots.txt
针对 Cloudflare Workers Static Assets 部署提供 wrangler.jsonc 与缓存头配置
模板详细介绍
Biluo(碧落)是一个用 Astro 构建的博客主题,内容通过 Markdown / MDX 内容集合管理,构建为静态站点。主题提供浅色(水蓝)与深色(夜空蓝)两套配色,支持带嵌套分组的标签体系和树状结构的系列系统;搜索使用 Pagefind 在构建时生成索引,评论使用 Giscus 且默认关闭、可替换提供方。此外包含提示块(note / tip / important / warning / caution)、GitHub 风格脚注、标题锚点、代码块复制按钮、图片点击缩放、阅读时长估算、置顶文章、相关文章、目录、分页、RSS(带 XSL 样式)、sitemap、llms.txt、robots.txt、移动端抽屉式导航和自定义 404 页面。
主题在设计上是单语言(i18n-ready 而非多语言):所有界面文案集中在 src/i18n/ui.ts,siteLocale 是站点语言、og:locale 与日期格式的唯一来源,默认语言为繁体中文。没有逐篇文章的语言切换器,多语言内容需要用标签和系列来组织。
部署目标是 Cloudflare Workers Static Assets(不是 Pages),wrangler.jsonc 只设置 assets 且没有 main。自定义 404 需要在 wrangler.jsonc 中设置 assets.not_found_handling: "404-page";缓存头方面,public/_headers 对 /_astro/* 和 /fonts/* 设置 immutable 长缓存,HTML 保持默认以便即时更新。
代码采用 MIT 许可,内置字体为 SIL OFL 1.1(每个字体在 public/fonts/ 下有自己的 OFL.txt,来源与版权见 NOTICE)。用户添加的内容不属于主题 MIT 许可范围,页脚渲染可配置的内容许可,默认 All rights reserved。
Markdown 管线目前基于 Remark(通过 astro.config.mjs 中的 processor: unified({...}) 配置),路线图计划在 Sätteri 稳定且功能可完整复现后再切换,目前仍使用 Remark。
适合你的项目吗?
适用场景
- 搭建以 Markdown / MDX 撰写内容的个人博客
- 需要按系列和分组标签组织技术文章或连载内容
- 希望使用构建时全文搜索而不依赖外部搜索服务
- 计划将静态站点部署到 Cloudflare Workers Static Assets
- 需要 RSS、sitemap、llms.txt 等面向搜索引擎与 AI 爬虫的基础文件
适合人群
- 使用 Astro 并偏好内容集合管理文章的开发者
- 需要单语言博客、界面文案集中可替换的站点
- 接受 Giscus 评论并希望默认关闭评论的站点
- 愿意按文档调整 wrangler.jsonc 与 _headers 的部署者
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
使用 pnpm install 安装依赖,pnpm dev 启动开发服务器(localhost:4321)
- 2
pnpm build 构建到 ./dist/ 并生成 Pagefind 索引;在 CI 或非交互环境使用 CI=true pnpm build
- 3
pnpm preview 通过 wrangler dev 在 localhost:8787 预览 dist,pnpm deploy 执行构建并 wrangler deploy
- 4
站点标题、描述、作者、每页文章数在 src/consts.ts 修改;文章放在 src/content/blog/*.{md,mdx}
- 5
自定义 404 需在 wrangler.jsonc 设置 assets.not_found_handling: "404-page";重命名字体目录时同步更新 @font-face 与 public/_headers
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- 评论功能使用 Giscus,默认关闭;启用需在 src/data/comments.ts 配置,并需从 giscus.app 获取对应值,属于依赖外部服务的可选功能。
- 部署目标为 Cloudflare Workers 静态资源,需使用 wrangler 并依赖 Cloudflare 平台;并非任意静态托管开箱即用。
- 自定义 404 页面必须在 wrangler.jsonc 中设置 assets.not_found_handling 为 "404-page",否则生产环境会返回空白 404。
- 主题设计上为单语言(仅 i18n-ready,并非多语言);没有逐篇文章的语言切换器,多语言内容需借助标签与系列组织。
- 默认界面语言为繁体中文;若需英文优先站点,须修改 src/i18n/ui.ts 中的 defaultLang / siteLocale 并翻译界面文案。
- 用户自行添加的内容不在主题 MIT 许可范围内;页脚默认渲染 All rights reserved 的内容许可,可自行改为 CC 等许可。
- 页脚默认显示 All rights reserved 的内容许可,需在 src/consts.ts 设置 CONTENT_LICENSE 并在 src/i18n/ui.ts 填写 license.* 才能更换。
- 内置字体采用 SIL OFL 1.1,与代码的 MIT 许可不同;每个字体在 public/fonts/ 下有独立 OFL.txt,来源与版权见 NOTICE。
- 在 CI 或代理等非交互环境中需使用 CI=true pnpm build 构建,否则 pnpm 11 会因交互提示而阻塞。
- Markdown 管线目前基于 Remark;路线图计划在 Sätteri 达到稳定版本且功能可完整复现后再切换,当前仍使用 Remark。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
**Comments**: Giscus, provider-swappable (see `src/data/comments.ts`); off by default
README 原文
**Deploy**: Cloudflare Workers Static Assets (`wrangler`)
README 原文
**Custom 404**: set `assets.not_found_handling: "404-page"` in `wrangler.jsonc`, otherwise the custom 404 only works in `pnpm dev` and returns a blank 404 in production.
README 原文
The theme is **single-locale by design** (i18n-*ready*, not multilingual).
README 原文
The shipped default is Traditional Chinese (`zh-Hant`).
README 原文
**Content** — yours. Anything you add under `src/content/` and `src/assets/` is not covered by the theme's MIT license.
README 原文
The footer renders a configurable content license (default **All rights reserved**).
README 原文
**Fonts** — SIL Open Font License 1.1. Each font ships its own `OFL.txt` under `public/fonts/`; sources and copyright are listed in `NOTICE`.
README 原文
In non-interactive environments (CI / agents) build with `CI=true pnpm build` > (pnpm 11 otherwise blocks on an interactive prompt).
README 原文
https://github.com/Just-Passersby/astro-biluo/blob/main/LICENSEhttps://github.com/Just-Passersby/astro-biluo/blob/main/README.mdThe plan is to switch it to [**Sätteri**](https://github.com/bruits/satteri) — a Markdown/MDX processor that parses and compiles in Rust while running plugins in JavaScript, built on the same unified (Remark/Rehype) ecosystem — once it reaches a **stable release** and its surrounding packages mature.
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-04。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- Astro Themes
- 资料与维护参考分
- 资料一般 · 63 / 100
- 技术栈
- Astro
- 网站类型
- 启动器
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-10-01
- 截图检查日期
- 2026-10-04
目前没有记录演示链接。请依据仓库说明在本地评估;仅凭截图无法确认交互行为。
目录记录的主要技术栈是 Astro。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: [email protected] · 2026-10-04
查看当时使用的来源资料
SHA-256: 273e0de0ba1d059c62a7442251decbf73d225726aeec4d68a1497137bb10d28e
2026-10-04T17:25:26.771Z
来源文件 / 仓库English | [繁體中文](./README.zh-Hant.md)
<p align="center">
<img src="./src/assets/avatar.png" width="140" alt="Biluo logo" />
</p>
<h1 align="center">Biluo (碧落)</h1>
<p align="center">
<img src="./assets/banner.png" alt="Biluo — light and dark themes, split by the theme-toggle's circular reveal" />
</p>
A clean, performance-focused blog theme built with [Astro](https://astro.build)
and deployed to **Cloudflare Workers Static Assets**. Content is authored in
Markdown / MDX content collections, search is powered by Pagefind, comments by
Giscus, with dark mode, a tree-structured series system, grouped tags, RSS /
sitemap / llms.txt, and an i18n-ready single-locale design.
> The name **碧落 / Biluo** comes from the classical Chinese term for the *azure
> heavens*, echoing the theme's water-blue (light) and night-sky-blue (dark)
> palette.
> **Licensing at a glance:** the theme source code is MIT (see `LICENSE`); the
> bundled fonts are SIL OFL 1.1 (see `NOTICE` and the `OFL.txt` files under
> `public/fonts/`); any content you add is your own. See [License](#license).
## Features
- Light / dark mode with water-blue / night-sky-blue palettes
- Tags with nested groups, and a tree-structured series system
- Full-text search via [Pagefind](https://pagefind.app) (build-time index, not Google `site:`)
- Callouts / admonitions (note / tip / important / warning / caution)
- GitHub-style footnotes (label localized), heading anchor links
- Code-block copy button, click-to-zoom images, reading-time estimate
- Pinned post, related posts, table of contents, pagination
- RSS (with styled XSL view), sitemap, `llms.txt`, `robots.txt`
- Default hero image fallback, `og:image` fallback to a post's hero
- Mobile drawer header, custom 404 page
- Centralized UI strings (i18n-ready, single-locale by design)
<p align="center">
<img src="./assets/post.png" width="720" alt="A post page: table of contents, series navigation, localized callouts, and syntax-highlighted code" />
</p>
<p align="center"><sub>A post page — table of contents, series navigation, localized callouts, and code highlighting.</sub></p>
## Tech stack
- **[Astro](https://astro.build) 7** (`output: static`), Node 22+
- **Content**: Markdown / MDX content collections (`@astrojs/mdx`); GitHub alert
syntax, heading anchors. The Markdown pipeline is configured in
`astro.config.mjs` via `processor: unified({...})` (Astro 7's first-class
integration point). `@astrojs/markdown-remark` is a load-bearing dependency.
- **Search**: [Pagefind](https://pagefind.app) (build-time index)
- **Images**: Astro `<Image>` + `sharp` (webp / resizing)
- **Comments**: Giscus, provider-swappable (see `src/data/comments.ts`); off by default
- **Deploy**: Cloudflare Workers Static Assets (`wrangler`)
## Quick start
| Command | Action |
| :--- | :--- |
| `pnpm install` | Install dependencies |
| `pnpm dev` | Dev server at `localhost:4321` (`astro dev`) |
| `pnpm build` | Build to `./dist/` (`astro build` + Pagefind index) |
| `pnpm preview` | Serve `dist` with `wrangler dev` at `localhost:8787` (closest to production) |
| `pnpm deploy` | Build and `wrangler deploy` |
> In non-interactive environments (CI / agents) build with `CI=true pnpm build`
> (pnpm 11 otherwise blocks on an interactive prompt).
>
> Check page count: `pnpm build && find ./dist -maxdepth 10 -type f | wc -l`
## Configuration (where to change what)
| What you want to change | File |
| :--- | :--- |
| Site title / description / author / posts-per-page | `src/consts.ts` |
| Posts | `src/content/blog/*.{md,mdx}` (frontmatter schema in `src/content.config.ts`) |
| Series (content) | `src/data/series.ts` (types / logic in `src/lib/series.ts`) |
| Tags taxonomy & groups | `src/data/taxonomy.ts` (types / logic in `src/lib/taxonomy.ts`) |
| Blogroll | `src/data/blogroll.ts` |
| Comments (Giscus) | `src/data/comments.ts` (values from [giscus.app](https://giscus.app)) |
| UI strings (i18n) | `src/i18n/ui.ts` |
| Site URL / Markdown pipeline / redirects / sitemap | `astro.config.mjs` |
| Cloudflare deploy (404 handling, assets dir) | `wrangler.jsonc` |
| Static-asset cache headers | `public/_headers` |
Post frontmatter fields: `title` (required), `description`, `pubDate`
(required), `updatedDate`, `heroImage`, `tags`, `pinned`.
**Where images go**: images that should go through Astro's optimizer (resize /
webp — hero / series / avatar) live in `src/assets/`; assets served verbatim
(favicon, fonts, `_headers`) live in `public/`.
## Documentation
Deeper guides live in [`docs/`](./docs/) (English and 繁體中文):
- [Content](./docs/en/content.md) — post frontmatter, the series data model,
tags, and language facets.
- [Customization](./docs/en/customization.md) — color palette, fonts (swap or
drop them), favicons.
- [Search](./docs/en/search.md) — how Pagefind indexes the site, and why search
is blank in `pnpm dev`.
- [Comments](./docs/en/comments.md) — enabling Giscus and wiring up other
providers.
- [Deployment](./docs/en/deployment.md) — Cloudflare Workers and other static
hosts.
- [SEO and crawlers](./docs/en/seo-and-crawlers.md) — robots.txt and the
AI-crawler policy, sitemap, social previews, `llms.txt`.
The demo posts under `src/content/blog/` also double as documentation.
## Project structure
```text
src/
├── assets/ # Astro-optimized images (hero / series / avatar)
├── components/ # Astro components (Header, SeriesCard, Comments…)
├── content/blog/ # Posts (Markdown / MDX)
├── content.config.ts # Post frontmatter schema
├── consts.ts # Site-level settings
├── data/ # Content data: series / taxonomy / blogroll / comments
├── i18n/ # UI strings (ui.ts) and helpers (utils.ts)
├── layouts/ # Layouts (BaseLayout / BlogPost…)
├── lib/ # Data schema & logic (series / taxonomy)
├── pages/ # Routes (blog / series / tags / rss / 404…)
└── styles/ # Global styles (global.css)
public/ # Verbatim assets: favicon / fonts / _headers
astro.config.mjs # site URL / Markdown pipeline / redirects / sitemap
wrangler.jsonc # Cloudflare Workers Static Assets deploy config
```
## Deployment
This theme deploys to **Cloudflare Workers Static Assets** (not Pages;
`wrangler.jsonc` only sets `assets`, with no `main`). Two gotchas that differ
from Pages:
- **Custom 404**: set `assets.not_found_handling: "404-page"` in
`wrangler.jsonc`, otherwise the custom 404 only works in `pnpm dev` and
returns a blank 404 in production.
- **Cache headers**: the default is `max-age=0, must-revalidate`. `public/_headers`
puts `immutable` long-cache on `/_astro/*` and `/fonts/*` (HTML stays on the
default so it updates immediately). If you rename the font folder, update both
the `@font-face` references and the `_headers` rules.
## Internationalization
The theme is **single-locale by design** (i18n-*ready*, not multilingual). All
UI strings live in `src/i18n/ui.ts`, and `siteLocale` there is the single source
of truth for the site's locale (`<html lang>`, `og:locale`, date formatting).
The shipped default is Traditional Chinese (`zh-Hant`).
To run an English-first site, change `defaultLang` / `siteLocale` in
`src/i18n/ui.ts` and translate the UI strings. There is no per-post language
switcher; to organize content in more than one language, use tags and series as
facets. (A demo post walks through this.)
## Roadmap
- **Remark → Sätteri.** The Markdown pipeline currently runs on Remark (via
`processor: unified({...})` in `astro.config.mjs`). The plan is to switch it to
[**Sätteri**](https://github.com/bruits/satteri) — a Markdown/MDX processor
that parses and compiles in Rust while running plugins in JavaScript, built on
the same unified (Remark/Rehype) ecosystem — once it reaches a **stable
release** and its surrounding packages mature. The switch will only
land once Sätteri is stable *and* every feature the current pipeline provides
is verifiably reproduced on it, with no regression — until then, Remark stays.
## License
- **Code** — MIT (`LICENSE`).
- **Fonts** — SIL Open Font License 1.1. Each font ships its own `OFL.txt` under
`public/fonts/`; sources and copyright are listed in `NOTICE`.
- **Content** — yours. Anything you add under `src/content/` and `src/assets/`
is not covered by the theme's MIT license. The footer renders a configurable
content license (default **All rights reserved**). To switch to a Creative
Commons or other license, set `CONTENT_LICENSE` in `src/consts.ts` and fill in
the `license.*` values in `src/i18n/ui.ts` (a CC BY-NC-ND example is included
there as a comment).
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

astrowind
⭕️ AstroWind: A free template using Astro v7 and Tailwind CSS v4. Astro starter theme.
Astro · 博客
accessible-astro-starter
Accessible Astro Starter 是一个以无障碍为核心理念的 Astro 6 启动模板,由 incluud 团队维护。
Astro · 博客

astro-erudite
An opinionated, unstyled static blogging template built with Astro and native CSS.
Astro · 作品集

astro-shopify
astro-shopify 是一个面向开发者的轻量级电商启动模板,用于构建基于 Shopify 的无头店面。
Astro · 电商

brutal
A neobrutalism Astro starter theme
Astro · 启动器

qwind
⭕️ Qwind: A template to make your website using Qwik + Tailwind CSS.
Astro · 工具站
