Astro博客

astro-margin-notes — Astro 博客模板

作者 slackkai

Margin Notes 是一个手绘笔记本风格的 Astro 个人网站主题,包含学术笔记、长文、日常、收藏与项目五个板块,并配有 Sveltia 可视化后台和 GitHub Pages 自动部署。

看看你的网站会是什么样

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

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

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

全部页面与视图 3

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

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

值得关注的模板亮点

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

01

手绘笔记本视觉:纸张、便利贴、页边批注和跟随鼠标的机械臂

02

五个内容板块:Academic、Insight、Dailies、Library、Projects

03

手绘风格 Markdown 指令:批注、荧光笔、印章、便利贴、相片、视频、嵌入页面等

04

Sveltia 可视化后台,可编辑文章、图片、站点信息、Now 卡片和关于页

05

Pagefind 静态全文搜索、标签 / 归档 / 全文 RSS 与 sitemap

06

GitHub Actions 自动构建并部署到 GitHub Pages,兼容根域名与仓库子路径

模板详细介绍

Margin Notes 是一个基于 Astro 的个人网站主题,视觉上模拟手绘笔记本,用纸张、便利贴、页边批注和跟随鼠标的机械臂来组织内容。它面向需要同时收纳研究笔记、长文、日常记录、收藏和项目的人,默认提供 Academic、Insight、Dailies、Library、Projects 五个板块,每个板块有独立的索引与内容结构。

内容以 Markdown / MDX 编写,支持 KaTeX 数学公式和代码高亮,并额外提供一组手绘风格的 Markdown 指令,例如页边批注、荧光笔、红笔、印章、便利贴、相片、折页、步骤、视频和嵌入 HTML 页面。附件跟随文章存放:每篇文章一个文件夹,旁边是 attachments/ 目录,图片、视频、PDF 和嵌入页面按源码路径发布,草稿的附件不发布。

站点自带 Sveltia 可视化后台,可编辑文章、图片、站点信息、Now 卡片和关于页,上传图片会自动压缩为 WebP。内容保存到仓库后由 GitHub Actions 自动构建并部署到 GitHub Pages,兼容根域名与仓库子路径。

使用上有一些明确限制:主题默认文案为中文,src/i18n/ 只提供部分界面的中英文字典,完整页面语言定制仍需编辑页面文案与板块描述;禁用板块会移除其导航、首页入口、文章、RSS 与标签,但板块索引页会保留为空页面并标记 noindex;留言通过 Web3Forms 发送邮件,需要自行填入公开 access key,留空时提交按钮禁用;在线演示后台只能由仓库维护者编辑。

Astro博客

适合你的项目吗?

适用场景

  • 搭建个人学术笔记站点,记录论文笔记、研究记录、发表列表与 BibTeX
  • 发布长文、置顶文章、封面与合集导航
  • 以时间线、图片和日常热力图记录日常
  • 整理书、课程、工具等收藏,并支持筛选、搜索、排序
  • 展示项目状态、技术栈、链接与图片或视频封面

适合人群

  • 习惯用 Markdown / MDX 写作并希望保留纯文本工作流的个人
  • 需要同时收纳研究、写作、日常与项目内容的个人网站作者
  • 希望用可视化后台编辑内容、又不想自己搭数据库的 Astro 用户
  • 准备把站点部署到 GitHub Pages 的个人开发者或研究者

上手与定制指南

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

  1. 1

    要求 Node.js ≥ 22.12,推荐 Node.js 24;安装依赖使用 npm ci,本地开发使用 npm run dev

  2. 2

    可通过 GitHub 的 Use this template 创建仓库,或使用 npm create astro@latest -- --template slackkai/astro-margin-notes

  3. 3

    部署到 GitHub Pages 时,在仓库 Settings → Pages 将 Source 设为 GitHub Actions,并手动运行一次 Deploy to GitHub Pages 工作流

  4. 4

    留言功能需要在 src/config.ts 的 guestbook.web3formsKey 填入 Web3Forms 公开 access key,留空时提交按钮禁用

  5. 5

    附带文章均为主题示例,正式使用前应替换为自己的内容;演示图片、字体、图标等第三方素材需按各自许可核对

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

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

使用时需要遵守

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

额外费用与待核对事项

  • 留言功能依赖第三方服务 Web3Forms,需自行注册并填入公开 access key;未填写时提交按钮禁用,无法使用留言功能。
  • 在线演示站点的后台仅限仓库维护者编辑,访客无法通过演示后台修改内容;需自行创建仓库后才能使用后台。
  • 可视化后台需连接 GitHub token 才能保存内容,涉及 GitHub 账号与授权配置。
  • 默认界面为中文,i18n 仅覆盖部分界面;如需完整其他语言,需手动编辑页面文案与板块描述。
  • 禁用板块后其索引页仍会保留为空页面并标记 noindex,不会彻底移除,需手动删除对应页面目录。
  • 草稿虽不发布到网站,但若仓库为公开,草稿源文件仍对外可见,需注意隐私内容。
  • 字体与 Sveltia CMS 等第三方资源适用各自许可(OFL、MIT 等),使用与再分发时需遵守相应条款。
  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

留言通过 Web3Forms 发送邮件。将自己的公开 access key 填入 `src/config.ts` 的 `guestbook.web3formsKey`;留空时提交按钮禁用。

README 原文

在线演示后台只能由仓库维护者编辑;使用模板创建自己的仓库后,部署会自动指向你自己的仓库。

README 原文

首次连接 GitHub token 后,选板块、编辑正文、上传图片、保存。

README 原文

默认站点文案为中文。`src/i18n/` 提供部分界面的中英文字典,完整页面语言定制还需要编辑页面文案与板块描述。

README 原文

禁用板块会移除其导航、首页入口、文章、RSS 与标签;板块索引页保留为空页面并标记 noindex。

README 原文

草稿不出现在网站上,但公开仓库的源文件仍然公开。

README 原文

字体为 [霞鹜文楷 Screen](https://github.com/lxgw/LxgwWenKai-Screen),使用其 OFL 许可;[Sveltia CMS](https://github.com/sveltia/sveltia-cms) 的 MIT 许可随后台资源一同分发。第三方依赖保留各自许可证。

README 原文
https://github.com/slackkai/astro-margin-notes/blob/main/LICENSEhttps://github.com/slackkai/astro-margin-notes/blob/main/README.md

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

项目核对记录与介绍依据

模板资料

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

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

这个项目需要核对什么

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

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

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

查看具体选型方法 →

介绍的制作与核对状态

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

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

查看当时使用的来源资料

SHA-256: 5e27ce11cd87a68b7d5594f65b701e8fc104ec00ba2d68ed51234cca222b29a5

2026-10-01T14:30:46.633Z

来源文件 / 仓库
# Margin Notes · 页边笔记

一个手绘笔记本风格的 Astro 个人网站主题。用纸张、便利贴、页边批注和一条会跟随鼠标的机械臂,收纳研究、想法与日常。

**[在线演示](https://slackkai.github.io/astro-margin-notes/) · [内容管理后台](https://slackkai.github.io/astro-margin-notes/admin/) · [更新网站指南](docs/CONTENT-EDITING.md) · [笔记本语法](docs/SYNTAX.md)**

![Margin Notes 主题预览](docs/preview.png)

## 使用主题

点击 GitHub 的 **Use this template → Create a new repository**,在自己的账号下创建仓库。也可以通过 Astro CLI 使用:

```sh
npm create astro@latest -- --template slackkai/astro-margin-notes
```

要求 Node.js ≥ 22.12,推荐 Node.js 24。

```sh
npm ci
npm run dev
```

打开终端显示的本地地址。附带文章都是主题示例,请在成为个人网站前替换成自己的内容。

## 包含什么

- **Academic**:论文笔记、研究记录、发表列表、BibTeX。
- **Insight**:长文、置顶、封面与合集导航。
- **Dailies**:时间线、图片、日常热力图。
- **Library**:书 / 课程 / 工具等收藏,可筛选、搜索、排序。
- **Projects**:项目状态、技术栈、链接、图片或视频封面。
- Markdown / MDX、KaTeX 数学公式、代码高亮,加一组手绘风格的笔记本语法:页边批注、荧光笔、红笔、印章、便利贴、相片、折页、步骤、版式、视频、嵌入 HTML 页面、链接卡,后台工具栏有同名按钮([语法速查](docs/SYNTAX.md))。原生 Markdown 也重绘成手绘样式:圈号列表、铅笔任务框、带出处的引用、代码块语言标签。
- 附件跟着文章走:学术、洞见、项目每篇一个文件夹加 `attachments/`,项目里还能放文档;图片、视频、PDF 和嵌入页面按源码路径发布,草稿的附件不发布。
- 深浅色与四套配色、响应式菜单、目录、阅读进度、相关文章。
- Pagefind 静态全文搜索、五个板块的标签 / 归档 / 全文 RSS、sitemap。
- Sveltia 可视化后台:文章、图片、站点信息、Now 卡片和整个关于页;列表按日期排序、草稿筛选,上传图片自动压缩为 WebP。
- GitHub Actions 自动检查并部署到 GitHub Pages,兼容根域名与仓库子路径。

## 日常更新:打开后台即可

访问自己网站的 `/admin/`,首次连接 GitHub token 后,选板块、编辑正文、上传图片、保存。内容存入仓库,GitHub Actions 自动发布。

新文章默认是草稿。发布时关闭“草稿”开关,再保存。草稿不出现在网站上,但公开仓库的源文件仍然公开。

本地也能使用后台:启动 `npm run dev`,在 Chrome / Edge 的 `/admin/` 选择 **Work with Local Repository**,选择项目根目录。编辑后通过 GitHub Desktop 或 Git 提交推送。

详细步骤、权限设置、MDX 边界和协作方式见 [可视化更新指南](docs/CONTENT-EDITING.md)。在线演示后台只能由仓库维护者编辑;使用模板创建自己的仓库后,部署会自动指向你自己的仓库。

## 配置入口

| 内容 | 位置 |
| --- | --- |
| 站名、作者、简介、联系链接、页脚结束语 | 后台“站点设置”,或 `src/data/site.json` |
| 板块开关、功能、默认配色、机械臂、研究方向 | `src/config.ts` |
| 导航自动隐藏、giscus 评论开关与仓库配置 | 后台“站点设置 → 导航与评论”,或 `src/data/interactions.json`;见 [评论配置](docs/COMMENTS.md) |
| 五个板块正文与附件 | 后台五个板块,或 `src/content/<板块>/`(每篇一个文件夹,附件在旁边的 `attachments/`) |
| 最近在做 / 在读 / 在听 | 后台“最近在做”,或 `src/content/now/now.md` |
| 关于页:自我介绍、“这个站点有什么”、工作台 | 后台“站点设置 → 关于页”,或 `src/content/about/about.md` |
| 关于页版式 | `src/pages/about.astro` |
| 字体、颜色和样式 | `src/styles/global.css`、共用设计变量 `src/styles/tokens.css` |
| 后台字段、列表排序与筛选、上传压缩 | `cms.config.mjs` |
| 后台编辑器组件(批注 / 便利贴 / 相片 / 视频 / 嵌入 …) | `public/admin/components.js`(预览样式由 `scripts/prepare-cms.mjs` 从站点样式生成) |
| Markdown 指令的渲染与样式 | `src/markdown/directives.mjs`、`src/styles/markdown.css`,说明见 `docs/SYNTAX.md` |
| 附件的开发时访问与发布 | `src/integrations/attachments.mjs` |
| 内容校验规则 | `src/content.config.ts` |

默认站点文案为中文。`src/i18n/` 提供部分界面的中英文字典,完整页面语言定制还需要编辑页面文案与板块描述。

禁用板块会移除其导航、首页入口、文章、RSS 与标签;板块索引页保留为空页面并标记 noindex。若需彻底移除,可再删除对应 `src/pages/<板块>/`。

## 部署到 GitHub Pages

1. 创建自己的仓库,并将代码推送到 `main`。
2. 仓库 **Settings → Pages → Build and deployment → Source** 选择 **GitHub Actions**。
3. 在 **Actions → Deploy to GitHub Pages → Run workflow** 运行首次部署。以后推送到 `main`(包括后台保存)自动部署。

工作流从 GitHub Pages 自动获取站点域名和仓库路径,同时生成后台的目标仓库配置。通常无需手动修改 `astro.config.mjs`。

`username.github.io` 仓库使用根路径;普通仓库使用 `/仓库名/`。设置自定义域名时,按 [GitHub 官方文档](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site) 配置 DNS 与仓库 Pages 自定义域名,然后重新部署。站点基本信息中的 `url` 用于本地或非 GitHub 构建;Pages 工作流以实际 Pages 配置为准。

本地模拟仓库子路径(PowerShell):

```powershell
$env:SITE_URL = 'https://your-name.github.io'
$env:BASE_PATH = '/your-repo'
npm run build
npm run verify
npm run preview
```

普通站内链接和 Markdown 图片会自动补部署前缀;新写 Astro 组件时,使用 `src/utils/url.ts` 的 `withBase('/path/')`。外部链接、锚点和相对链接不会被改写。

## 写作功能

新建 Markdown:

```sh
npm run new -- insight my-first-post "我的第一篇文章"
```

在 `src/content/insight/my-first-post/index.md` 中写正文,图片等附件放进旁边的 `attachments/`,正文里写 `./attachments/文件名`。frontmatter 示例:

```yaml
---
title: 我的第一篇文章
date: 2026-09-19
description: 一句话摘要
tags: [writing]
draft: true
---
```

系列文章在 Academic / Insight 中添加:

```yaml
series:
  name: 我的研究笔记
  order: 1
```

页边批注、便利贴、相片等都是普通 Markdown 指令,后台工具栏有对应按钮,富文本与 Markdown 模式可无损切换:

```md
正文中的 :mark[一个重点]{green},:pen[圈出来的词],:stamp[待验证]。:note[这里是一条页边批注,支持 **加粗**、链接和 $d_k$ 公式。]

:::postit[标题]{tip}
便利贴里的内容。
:::

:::photos{cols=2}
![图注](./attachments/a.webp)
![图注](./attachments/b.webp)
:::

::video[说明]{src=./attachments/demo.mp4 loop}
::embed[说明]{page=./attachments/demo}
```

全部家族、参数和原生 Markdown 的手绘样式见 [笔记本语法](docs/SYNTAX.md);示例站的《笔记本语法演示》项目把它们全部用了一遍。MDX 文件里也可以继续使用 `<Mark>` / `<Note>` 组件,渲染结果相同。从旧的平铺布局(`insight/<slug>.md` 加 `public/uploads/`)迁移时运行 `node scripts/migrate-bundles.mjs`,先加 `--dry-run` 看计划。

`/drafts/` 和 `/lab/` 仅本地开发可见。公开搜索只索引已发布内容详情页,避免列表与标签页重复命中。

## 常用命令

| 命令 | 用途 |
| --- | --- |
| `npm run dev` | 启动写作预览,显示草稿并生成后台资源 |
| `npm run dev:full` | 先生成一次搜索索引,再启动写作预览 |
| `npm run build` | 构建静态网站、后台与 Pagefind 索引 |
| `npm run preview` | 预览生产构建,验证真实搜索 |
| `npm run preview:site` | 构建 + 链接检查 + 生产预览,发布前完整预览 |
| `npm run preview -- stop` | 停止 Astro 的后台预览服务 |
| `npm run check` | 类型和 Astro 检查 |
| `npm test` | 轻量回归测试 |
| `npm run test:production` | 真实构建回归,验证草稿、附件、项目文档、Markdown 指令和配置开关;结束后重新构建 |
| `npm run verify` | 检查构建后的站内链接、资源、锚点和部署产物 |

开发时搜索索引不会实时更新。需要验证搜索时运行 `npm run build` 后使用 `npm run preview`;`npm run search:dev` 可以把一次构建的搜索索引复制到开发服务器,但它会随内容编辑过期。搜索索引刷新、后台仓库选择(`CMS_REPOSITORY`)及评论/留言的本地边界见 [本地预览与外部服务](docs/LOCAL-DEVELOPMENT.md)。

## 留言与许可

留言通过 Web3Forms 发送邮件。将自己的公开 access key 填入 `src/config.ts` 的 `guestbook.web3formsKey`;留空时提交按钮禁用。演示不接收邮件。

主题采用 [MIT](LICENSE)。字体为 [霞鹜文楷 Screen](https://github.com/lxgw/LxgwWenKai-Screen),使用其 OFL 许可;[Sveltia CMS](https://github.com/sveltia/sveltia-cms) 的 MIT 许可随后台资源一同分发。第三方依赖保留各自许可证。

修复清单、验收方式与已知边界见 [检查报告](docs/REVIEW.md)。
反馈内容错误

看看同类模板

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