一个基于markdown的高性能博客模板

分享一下自己的博客模板。

预览地址:bgo.me

源码地址:vsme/astro-obsidian-blog

最近把文章内容由 Notion 全都迁移到了本地,使用 Obsidian 进行管理,所以在想能否使用纯静态的 markdown 文件来完成自己的博客。

本着追求性能的目标,说干就干,于是就有了本站。

网站是基于 Astro 开发的,先跑个分:

✨ 特性

  • 📝 类型安全的 Markdown - 完全的 TypeScript 支持
  • 超快性能 - 基于 Astro 的静态站点生成
  • 无障碍访问 - 支持键盘导航和屏幕阅读器
  • 📱 响应式设计 - 从移动设备到桌面的完美适配
  • 🔍 SEO 友好 - 优化的搜索引擎表现
  • 🌓 明暗主题 - 支持亮色和暗色模式切换
  • 🔎 模糊搜索 - 基于 Pagefind 的快速搜索功能
  • 📄 草稿和分页 - 支持草稿文章和分页显示
  • 🗺️ 站点地图和 RSS - 自动生成站点地图和 RSS 订阅
  • 🎨 高度可定制 - 灵活的配置和样式定制
  • 🖼️ 动态 OG 图片 - 自动生成博客文章的 OG 图片
  • 📔 时间线功能 - 首页默认展示日常时间线
  • 📚 媒体卡片 - 支持电影、书籍等媒体信息展示

🚀 项目结构

csharp 复制代码
/
├── public/
│   ├── favicon.png
│   ├── app-controls.js
│   └── og.jpg
├── src/
│   ├── assets/          # 静态资源(图标、图片等)
│   ├── components/      # Astro 和 React 组件
│   ├── data/
│   │   ├── blog/        # 博客文章
│   │   ├── diary/       # 日常时间线
│   │   └── attachment/  # 媒体附件
│   ├── layouts/         # 页面布局
│   ├── pages/           # 页面路由
│   │   ├── diary/       # 日记相关页面
│   │   ├── posts/       # 博客文章页面
│   │   └── api/         # API 路由
│   ├── styles/          # 样式文件
│   ├── utils/           # 工具函数
│   ├── config.ts        # 网站配置
│   └── constants.ts     # 常量定义
├── astro.config.ts      # Astro 配置
└── package.json

📦 安装和使用

环境要求

  • Node.js 18+
  • pnpm (推荐)

本地开发

bash 复制代码
# 克隆项目
git clone https://github.com/vsme/astro-obsidian-blog.git
cd astro-obsidian-blog

# 安装依赖
pnpm install

# 启动开发服务器
pnpm dev

访问 http://localhost:4321 查看网站,注意要先添加博客内容。

构建和部署

bash 复制代码
# 构建生产版本
pnpm build

# 预览构建结果
pnpm preview

⚙️ 配置

网站的主要配置位于 src/config.ts 文件中,你可以修改以下设置:

  • 网站基本信息(标题、描述、作者等)
  • 社交媒体链接
  • 主题设置
  • 分页设置
  • 功能开关

📝 添加内容

博客文章

src/data/blog/ 目录下创建 Markdown 或 MDX 文件,文件需要包含以下 frontmatter:

markdown 复制代码
---
title: "文章标题"
author: "作者名称"
pubDatetime: 2025-01-01T12:00:00+08:00
modDatetime: # 可选,修改时间
featured: false
draft: false
tags:
  - "标签1"
  - "标签2"
description: "文章描述"
ogImage: "../attachment/og/image.png" # 可选,OG图片
slug: "article-slug" # 可选,自定义URL
---

文章内容...

支持的文件格式:

  • .md - 标准 Markdown 文件
  • .mdx - 支持 React 组件的 MDX 文件

日记

src/data/diary/ 目录下创建以日期命名的 Markdown 文件(如 2025-01-30.md),记录日常。

日记文件格式:

markdown 复制代码
## 21:02

记录内容...

```card-movie
source: douban
id: 电影ID
title: 电影标题
```

支持卡片组件:

  • card-movie - 电影卡片,支持豆瓣/IMDB数据
  • card-book - 书籍卡片,支持豆瓣数据
  • 其他媒体卡片组件,具体查看obsidian-card-viewer

卡片建议搭配 Obsidian 使用。

🎨 自定义样式

项目使用 TailwindCSS 进行样式管理,你可以:

  1. 修改 src/styles/global.css 中的全局样式
  2. 在组件中使用 TailwindCSS 类名
  3. 通过 CSS 变量自定义主题颜色

🙏 致谢

本项目基于 satnaing/astro-paper 开发,感谢原作者 Sat Naing 创建了这个优秀的 Astro 博客主题,为本项目提供了坚实的基础。

特别感谢:

  • Astro - 现代化的静态站点生成器
  • TailwindCSS - 实用优先的 CSS 框架
  • Pagefind - 静态搜索解决方案

📄 许可证

本项目基于 MIT 许可证开源。

相关推荐
世人万千丶19 小时前
Flutter 框架跨平台鸿蒙开发 - 恐惧清单应用
学习·flutter·华为·开源·harmonyos·鸿蒙
于慨19 小时前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
石小石Orz19 小时前
油猴脚本实现生产环境加载本地qiankun子应用
前端·架构
从前慢丶19 小时前
前端交互规范(Web 端)
前端
CHU72903519 小时前
便捷约玩,沉浸推理:线上剧本杀APP功能版块设计详解
前端·小程序
GISer_Jing19 小时前
Page-agent MCP结构
前端·人工智能
王霸天20 小时前
💥别再抄网上的Scale缩放代码了!50行源码教你写一个永不翻车的大屏适配
前端·vue.js·数据可视化
小领航20 小时前
用 Three.js + Vue 3 打造炫酷的 3D 行政地图可视化组件
前端·github
@大迁世界20 小时前
2026年React大洗牌:React Hooks 将迎来重大升级
前端·javascript·react.js·前端框架·ecmascript
PieroPc20 小时前
一个功能强大的 Web 端标签设计和打印工具,支持服务器端直接打印到局域网打印机。Fastapi + html
前端·html·fastapi