博客迁移方案:从 Notion 到 Obsidian + Astro
2026-04-01 讨论整理,持续更新 现有站点:ai233.top(Notion + Astro 构建,Vercel 部署) 现有仓库:https://github.com/youxiaohanpian/astro-notion-blog-main 本地已同步:
D:\astro-notion-blog-main(无 .env,可从 Vercel 后台导出) 新仓库规划:在 Notes 仓库下新建Projects/myblog/作为 Astro 原型目录
当前痛点
Notion 作为 CMS 的问题
- API 拉取慢,构建速度受限于 Notion 远程接口
- 国内访问偏慢(Vercel 部署)
- 不能免费用 AI 辅助写作
- 换皮肤/大改版工程量大,CSS 细节用 AI 调总有各种问题
- Unsplash 图库调用的图又大又慢
双系统维护的问题
- Obsidian 笔记仓库(private)和 Notion 博客仓库,同时维护两个仓库
- Obsidian 的 frontmatter 字段和 Notion 数据库字段不统一,未来整合难度大
- 部分笔记不适合公开,但选择性发布的机制分散在两个系统
内容与配图的问题
- 大部分文章不需要配图,不想每篇都想着配什么图
- 但重点文章(设计探索、游戏开发等)想放很多大图
- 网站内容偏单薄——只有博客列表 + 外链 + 导航
现有站的优点(不想丢的)
- 图片统一圆角、hover 阴影状态
- 中文字重/大小/间距精心调过(详见
Projects/myblog/博客搜集.MD中的设计原则) - 标签显示及数量
- 有图/无图的默认展示逻辑
首页视频→ 决定放弃,改用代码动态效果(视频拖慢加载速度,得不偿失)- 导航站 + 友情链接表单提交审核流程(Notion 数据库驱动,保留)
- 评论系统(迁移后重新配置)
方案结论:混合架构
写作端 构建 部署
───── ──── ────
Obsidian (本地)
├── 博客文章.md ──────→ Astro Content ─┐
├── 读书笔记.md ──────→ Collection │
└── published: true │
├──→ Astro Build ──→ CF Pages
Notion (远程,仅做结构化数据) │
├── 导航站数据库 ─────→ API 拉取 ──────┘
└── 友链数据库 ──────→ (构建时获取)
↑
│
访客提交友链申请(表单)
核心原则
- 博客内容:Obsidian 本地 markdown → Astro 构建(快、能用 AI、一个仓库)
- 导航站/友链:Notion 继续做(表单收集 + 审核发布流程不变)
- Notion 定位降级:从”全能 CMS”变为”结构化数据管理工具”
- 封面图可选:没图不显示,列表页自适应两种布局
- 框架选定:Astro(已有经验,比 Hugo/Hexo 更适合设计师改模板)
主题选型
定位:文字为主、排版优雅、偶尔大图
| 需求 | 权重 |
|---|---|
| 纯文字也好看(不靠图撑场面) | 最高 |
| 中文排版优化 | 高 |
| 暗色模式 | 高 |
| 干净/留白/高级感 | 高 |
| 封面图可选 | 中 |
| 友链/导航站 | 可自己加 |
候选主题
1. Retypeset ← 首选
- Demo: https://retypeset.radishzz.cc/
- GitHub: https://github.com/radishzzz/astro-theme-retypeset (641 stars)
- 纸质书排版感,中文排版专门优化,Lighthouse 100 分
- 多语言原生支持(中/英/日)
- 基于 Astro + UnoCSS,免费
2. Typography
- Demo: https://astro-theme-typography.vercel.app/
- Retypeset 的前身,591 stars,更成熟
- 同样以中文排版为核心
3. Astro Zen Blog
- Demo: https://blog.larryxue.dev/
- 极简但功能齐全,标签/暗色/RSS 都有
之前考虑过但不适合的
- vhAstro-Theme:功能全但偏博客卡片风格,图多才好看
- Photography Portfolio:图片驱动,不适合文字为主
- Super.so:好看但要钱($16/月),且依然依赖 Notion API
执行策略:路 C(零风险渐进式)
不急着替换老站,先搭原型对比。
第 1 步:搭原型(半天)
- 在 Notes 仓库的
Projects/myblog/目录下初始化 Astro + Retypeset - 部署到 CF Pages(不是 Vercel),临时域名
ai233-new.pages.dev - ai233.top 继续指向 Notion 站,不受影响
第 2 步:发布机制设置
- 在 Notes 根目录建
publish/文件夹 - 拖进去 = 发布,拖出来 = 下架,不需要手动改 frontmatter
- Astro content collection 只扫描
publish/目录 - frontmatter 极简,title 可从文件名自动取,date 从 git commit 时间取
- GitHub Actions 配置路径过滤:只有
publish/有变更才触发构建on: push: paths: - 'publish/**' - 这样私人笔记随便同步,不消耗 CF Pages 构建额度(500次/月)
第 3 步:内容验证(1 天)
- 挑 5-10 篇笔记拖入
publish/,验证构建正常 - 验证图片路径
assets/笔记名/xxx.png能正常解析
第 3 步:迁移 CSS 审美(2-3 天)
- 把老站的设计细节搬过来:圆角、阴影、字重、标签样式
- 这次有 AI 辅助,比手调快
第 4 步:加导航站/友链页面(1 天)
- 写构建脚本从 Notion API 拉取导航站 + 友链数据
- 在 Astro 里加两个页面渲染
第 5 步:切换域名
- 什么时候觉得新站 ≥ 老站了,把 ai233.top 指向新站
- 老站可以保留一段时间做过渡
网站内容规划(未来)
不只是博客列表,可以按板块组织:
ai233.top
├── /blog → 博客文章(公开的笔记)
├── /design → 设计作品集
├── /games → 游戏项目展示
├── /reading → 读书笔记精选
├── /nav → 导航站(Notion 数据)
└── /links → 友情链接(Notion 数据)
关于”公开写作的意义”
- 不追流量,做好 SEO 让有需要的人能搜到
- 写给公开的文章会促使自己把逻辑理得更清楚
- 个人站 = 设计师 + 开发者的作品集,比简历有说服力
- 评论少是常态,偶尔一条有价值的反馈比百个赞好
- 宣传策略:SEO 基础 + 好标题 + 偶尔分享到社区(V2EX/少数派/掘金)
完整工作流架构
写作/发布端 构建 部署
────────── ──── ────
Obsidian(随手记笔记)
↓ 想发布时拖入 publish/
Mattrbld(可视化 CMS)
- 图形界面填 frontmatter
- 内置媒体库管理图片
- 手动控制 sync/push ──→ GitHub Actions ────────→ CF Pages
只监听 publish/** Astro 6
变更才触发构建 静态部署
Notion(仅保留)
- 导航站数据库
- 友链数据库 + 表单 ──→ 构建时 API 拉取 ─────→ 同上
关于 Mattrbld
不是模板,是基于 Git 的可视化内容编辑器(免费开源):
- 文档:https://mattrbld.com/docs/quickstart/
- 架在你自己的 Git 仓库上,数据完全归你
- 可视化 Schema 设计(定义 frontmatter 字段,无需手写)
- 内置媒体库(解决图片管理问题)
- 离线可用,手动控制 push 时机(不会频繁触发构建)
- 弥补了”不想打开编辑器但想要可视化发布体验”的缺口
- 可以和 Obsidian 并存:随手记用 Obsidian,正式发布用 Mattrbld
技术选型备忘
Hugo / Hexo vs Astro
| Hugo | Hexo | Astro | |
|---|---|---|---|
| 构建速度 | 最快(毫秒) | 中等 | 快(秒级) |
| 模板语法 | Go Template(难) | EJS/Nunjucks | JSX/Vue(已会) |
| 中文主题 | 多但老旧 | 最多但在衰退 | 新且活跃 |
| 图片优化 | 手动 | 插件 | 内置自动 |
| 适合设计师改模板 | 差 | 中 | 最好 |
结论:用 Astro,已有经验,不用重新学。Astro 6 已发布(2026),构建更快,Content Layer API 稳定,Retypeset 已支持。
部署方案对比
| 方案 | 国内速度 | 费用 | 构建次数 |
|---|---|---|---|
| 国内 VPS(阿里云等) | 最快 | 付费 | 不限 |
| CF Pages | 较快(香港节点) | 免费 | 500次/月 |
| Vercel | 慢(国外节点) | 免费 | 不限 |
- 现在的链路可能是:GitHub → Vercel → CF 反代(DNS层),实际内容还是从 Vercel 出
- 目标链路:GitHub → CF Pages 直接构建部署,真正走 CF 边缘节点
- 阶段性够用,等真有流量再考虑国内 VPS
CF Pages 免费额度
- 每月 500 次构建,用路径过滤后实际消耗极少(10-20次/月)
- 带宽、请求数无限,不用担心
当前仓库现状备忘
- 约 158 篇 markdown 笔记,15 个分类文件夹
- 图片方案:Custom Attachment Location 插件,路径
assets/<笔记名>/file-时间戳.png - Frontmatter 不统一:部分有
tags: [area/xxx, topic/xxx],很多没有 YAML - 自动化:Dataview 做目录、Templater 做模板、obsidian-git 同步
.gitignore排除了.obsidian/plugins/等,assets/未排除- 老站 CSS 细节(圆角/阴影/字重等)保存在
D:\astro-notion-blog-main,迁移时参考复用