Astro博客

yujok-s-blog — Astro 博客模板

作者 yx-l147

基于 Astro 与 Fuwari 主题改造的个人博客,包含文章、随想、番组、微信读书书架和本地书评等模块。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

3 个预览视图
桌面端首页1 / 3
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 3

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-09-30查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

基于 Astro 与 Fuwari 主题改造的个人博客

02

支持 Markdown / MDX 内容与 Frontmatter 元数据

03

内置 new-post、new-thought 等内容创建脚本

04

微信读书书架页面,可同步公开书架、阅读进度与精选划线

05

本地书评通过 bookId 与书架数据关联,支持草稿预览

06

包含随想、番组、课程表、归档等页面模块

模板详细介绍

这是一个基于 Astro 构建、以上游 Fuwari 主题为基础改造的个人博客项目。内容以 Markdown 或 MDX 撰写,文章放在 src/content/posts/,随想放在 src/content/thoughts/,本地书评放在 src/content/book-reviews/,并通过 Frontmatter 中的 bookId 与书架数据关联。项目提供 new-post、new-thought、fetch-weread、draft-book-reviews 等脚本,用于创建内容、同步微信读书数据以及生成书评草稿。

站点页面包括文章归档、随想、微信读书书架、番组记录、课程表和关于页。书架页面位于 /book,数据源为 src/data/weread/shelf.json,由 fetch-weread 命令生成,包含公开书架、阅读进度、统计和精选划线;未配置真实数据时会回退到 src/data/mock-shelf.ts 的示例数据。私密书籍会在拉取阶段被过滤。

使用前需要 Node.js 18+ 与 pnpm 9+,通过 pnpm install、pnpm dev、pnpm build、pnpm preview 完成安装、开发、构建与预览。构建产物位于 dist/ 目录,可部署到静态托管平台。微信读书书架功能需要在 .env.local 中配置 WEREAD_API_KEY。项目采用 MIT 许可,第三方素材需按各自许可核对。

Astro博客

适合你的项目吗?

适用场景

  • 搭建以文章和随想为主的个人博客
  • 在博客中展示微信读书书架、阅读进度与划线
  • 为读过的书写本地书评并与书架条目关联
  • 记录番组观看情况与课程表
  • 将构建后的静态文件部署到静态托管平台

适合人群

  • 熟悉 Astro 或愿意使用 Astro 的开发者
  • 需要 Markdown / MDX 写作流程的个人博主
  • 希望展示微信读书数据的用户
  • 需要随想、番组、课程表等扩展页面的个人站点

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    环境要求 Node.js 18+ 与 pnpm 9+,使用 pnpm install 安装依赖

  2. 2

    开发、构建、预览分别使用 pnpm dev、pnpm build、pnpm preview

  3. 3

    微信读书书架需复制 .env.example 为 .env.local 并填入 WEREAD_API_KEY,再运行 pnpm fetch-weread

  4. 4

    未配置真实数据时书架会回退到 src/data/mock-shelf.ts 示例数据

  5. 5

    书评草稿由 pnpm draft-book-reviews 生成,生产构建会隐藏 draft: true 的内容

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 微信读书书架功能需自行申请并配置 WEREAD_API_KEY 环境变量,属于外部服务凭据要求;未配置时页面回退到示例数据。
  • 未配置微信读书 API 密钥时,书架仅显示内置示例数据,无法展示真实书架内容。
  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

在 `.env.local` 中填入 `WEREAD_API_KEY`

README 原文

如果没有配置真实数据,书架页面会自动回退到 `src/data/mock-shelf.ts` 中的示例数据。

README 原文
https://github.com/yx-l147/yujok-s-blog/blob/main/LICENSEhttps://github.com/yx-l147/yujok-s-blog/blob/main/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-01。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 80 / 100
技术栈
Astro
网站类型
博客
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-09-29
截图检查日期
2026-10-01

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Astro。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。

查看当时使用的来源资料

SHA-256: 7e05abc385eada673736191ca7b7fe6da32e621ed01bef9e123dfc8a331298d7

2026-10-01T14:27:39.114Z

来源文件 / 仓库
# Yujok's Blog

基于 Astro / Fuwari 改造的个人博客,包含文章、随想、番组、微信读书书架和本地书评。

## 技术栈

- 框架: Astro
- 交互:Svelte
- 样式:Tailwind CSS
- 开发语言:TypeScript
- 内容格式:Markdown / MDX
- 包管理:pnpm

### 🚀 快速开始

### 环境要求

- Node.js 18+
- pnpm 9+

### 安装依赖

```bash
pnpm install
```

### 开发模式

```bash
pnpm dev
```

### 构建生产版本

```bash
pnpm build
```

### 预览构建结果

```bash
pnpm preview
```

## 📝 使用指南

### 创建新文章

使用内置脚本快速创建文章:

```bash
pnpm new-post hello-world
```

文章默认存放在 `src/content/posts/` 目录下。

### 创建新随想

使用内置脚本快速创建随想:

```bash
pnpm new-thought my-first-thought
```

随想默认存放在 `src/content/thoughts/` 目录下。

### 文章格式

文章使用 Markdown 或 MDX 格式,并支持以下 Frontmatter:

```markdown
---
title: 文章标题
published: 2026-01-01
description: 文章描述
image: ''
tags: []
category: ''
draft: false
lang: zh_CN
---

# 文章内容

这里是文章正文。
```

### 微信读书书架

书架页面位于 `/book`,使用本地数据展示书籍、阅读进度、阅读统计和精选划线。

首次使用:

1. 复制 `.env.example` 为 `.env.local`。
2. 在 `.env.local` 中填入 `WEREAD_API_KEY`。
3. 运行数据同步命令:

```bash
pnpm fetch-weread
```

如果没有配置真实数据,书架页面会自动回退到 `src/data/mock-shelf.ts` 中的示例数据。

### 本地书评

本地书评存放在 `src/content/book-reviews/` 目录下,并通过 Frontmatter 中的 `bookId` 与书架数据关联。

生成书评草稿:

```bash
pnpm draft-book-reviews
```

预览将要生成的草稿,但不写入文件:

```bash
pnpm draft-book-reviews -- --dry-run
```

本地开发时,`draft: true` 的书评也会显示在书架和书籍详情页中。生产构建会自动隐藏草稿,完成书评后将 `draft` 改为 `false` 即可正式发布。

### 其他页面

- `/thoughts`:随想
- `/book`:微信读书书架
- `/bangumi`:番组记录
- `/schedule`:课程表
- `/archive`:文章归档
- `/about`:关于页面

## 📁 项目结构

```text
├── public/                         # 静态资源
├── scripts/                        # 内容管理和数据同步脚本
├── src/
│   ├── assets/images/              # 图片资源
│   ├── components/                 # Astro 和 Svelte 组件
│   │   ├── book/                   # 书架和书评相关组件
│   │   ├── bangumi/                # 番组相关组件
│   │   ├── schedule/               # 课程表相关组件
│   │   └── widget/                 # 侧边栏和页面小组件
│   ├── content/                    # Markdown / MDX 内容
│   │   ├── posts/                  # 博客文章
│   │   ├── thoughts/               # 随想
│   │   ├── book-reviews/           # 本地书评
│   │   └── spec/                   # 关于等特殊页面
│   ├── data/                       # 本地数据和示例数据
│   │   ├── weread/                 # 微信读书数据
│   │   ├── mock-shelf.ts           # 书架示例数据
│   │   └── schedule.ts             # 课程表数据
│   ├── layouts/                    # 页面布局
│   ├── pages/                      # 页面路由
│   ├── styles/                     # 全局和主题样式
│   ├── config.ts                   # 站点配置
│   └── content.config.ts           # 内容集合配置
├── .env.example                    # 环境变量模板
├── astro.config.mjs                # Astro 配置
├── package.json                    # 项目配置和命令
└── pnpm-lock.yaml                  # 依赖版本锁定文件
```

## 常用命令

```bash
pnpm install
pnpm dev
pnpm build
pnpm preview
```

## 内容命令

```bash
pnpm new-post <slug>
pnpm fetch-weread
pnpm draft-book-reviews
pnpm new-thought -- "我的新想法"
```

## 微信读书书架

书架页面使用 `src/data/weread/shelf.json` 作为本地数据源。它由 `pnpm fetch-weread` 生成,包含公开书架、阅读进度、统计、精选划线等信息。私密书籍会在拉取阶段过滤,不会写入 `shelf.json`。

首次使用:

1. 复制 `.env.example` 为 `.env.local`。
2. 在 `.env.local` 填入 `WEREAD_API_KEY`。
3. 运行 `pnpm fetch-weread`。
4. 运行 `pnpm dev` 查看 `/book`。

如果没有真实数据,页面会回退到 `src/data/mock-shelf.ts`。

## 本地书评草稿

本地书评存放在 `src/content/book-reviews/*.md`,通过 frontmatter 里的 `bookId` 和书架数据关联。重新运行 `pnpm fetch-weread` 不会覆盖这里的内容。

生成草稿:

```bash
pnpm draft-book-reviews
```

脚本会读取 `src/data/weread/shelf.json`,为满足任一条件的书生成草稿:

- 有划线:`bookmarkCount > 0`,或 `shelf.notes` 中存在对应 `bookId`。
- 有评分:存在 `rating`、`userRating`、`personalRating` 或 `publicRating`。
- 已读完:`finishReading === 1` 或 `status === "finished"`。

为了避免覆盖已经写过的书评,脚本会扫描 `src/content/book-reviews/**/*.md(x)` 的 frontmatter。只要发现相同 `bookId`,就会跳过该书。

草稿会自动填入:

- `bookId`
- 标题
- `summary` 占位
- `topics` 占位
- `quotes` 占位,若书架里已有精选划线,会优先带入最多 3 条
- `draft: true`

预览将要生成的草稿但不写入文件:

```bash
pnpm draft-book-reviews -- --dry-run
```

本地开发时,`pnpm dev` 会把草稿也关联到 `/book` 书架和书籍详情页,并显示“草稿”标识,方便边看边补。生产构建会隐藏 `draft: true` 的书评;写完后把 frontmatter 里的 `draft` 改成 `false`,并补完 `summary`、`topics`、`quotes` 和正文,即可在正式站点中展示。


## 📦 部署

构建后的静态文件位于 dist/ 目录,可部署到任何静态托管平台。

## 🤝 贡献

欢迎提交 Issue 和 Pull Request!

## 📄 许可证

[MIT License](https://github.com/chuzouX/fuwari/blob/main/LICENSE)


🙏 致谢

感谢所有为这个项目做出贡献的开发者们!尤其感谢[上游仓库](https://github.com/saicaca/fuwari)



反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。