Skip to content

01 · 整体概览:哲学与决策树

在动手之前,先想清楚要建一个什么样的东西、为什么这么选。


一、目标与边界

这套方法论解决什么问题?

把"零散的个人学习笔记" → 转化为"可分享、可长期维护、可扩展的主题型博客"。

不解决什么问题?

  • ❌ 不是流量博客(不为 SEO 优化)
  • ❌ 不是商业博客(不接广告/不带货)
  • ❌ 不是协作博客(仅个人维护)

二、核心哲学

哲学 1:内容优先,工具靠边

第一阶段只写 markdown 文件——不装 git、不建仓库、不部署。先写够 3 篇有价值的内容,确认主题值得持续投入,再考虑技术栈。

反例:很多人花一周搭博客框架,一篇文章没写就放弃了。

哲学 2:一主题一仓库

不要做"我的所有笔记"这种巨型仓库。每个主题独立:

✅ 推荐
~/notes/
├── botc-learning-notes/      # 血染钟楼仓库 → 一个博客
├── reading-notes/            # 读书笔记仓库 → 另一个博客
└── tech-learning/            # 技术学习仓库 → 又一个博客

❌ 不推荐
~/all-my-notes/                # 大杂烩仓库
├── 血染钟楼/
├── 读书/
└── 技术/

为什么独立

  • 每个主题可以独立演化——血染钟楼以后想加"实时推理工具"组件,技术博客可能想加代码示例渲染——两边互不干扰
  • URL/域名独立——botc.vercel.app vs reading.vercel.app主题与品牌一致
  • 仓库 commit 历史不被无关主题污染

哲学 3:源仓库与博客分离

源仓库(写 + 备份)        博客(展示 + 分享)
├── Gitee(中文圈)        ├── Vercel CDN
└── GitHub(构建源)       └── 自定义域名(可选)

两者承担不同角色

仓库博客
文件名可以是中文URL 必须英文(分享友好)
README 是入口首页 hero 是入口
直接看 markdown渲染过的网页
给开发者 / 自己看给朋友 / 路人看

哲学 4:自动化优先

所有重复操作必须有 shell 函数封装——目标是"30 秒开一个新博客"。

bash
# 反面:每次都网页点击
打开 GitHub New repo 填名字 勾选 创建 复制 URL 本地 add remote push

# 正面:一行命令
github-init-and-push my-project "我的新项目"

三、技术栈决策树

每一步都面临选择,下面是这次实践得出的"最佳路径":

决策 1:源仓库托管在哪?

你需要给国内朋友分享 Markdown 文件吗?
├── 是 → Gitee(推荐,国内访问快)
│        + 同时 mirror 到 GitHub(用于 Vercel 构建)
└── 否 → 只用 GitHub

这次我选Gitee 主 + GitHub 镜像——因为想把仓库链接发给国内朋友。

决策 2:博客生成器选什么?

你的内容主要是什么?
├── 技术文档/学习笔记型 → VitePress(推荐,Vue 生态、清爽)
├── 个人随笔型           → Hexo / Hugo(社区大、主题多)
├── 重交互/动态           → Next.js(重,但什么都能做)
└── 极简静态             → 11ty / Astro

这次我选VitePress——内容是结构化笔记,VitePress 默认主题"左侧导航 + 右侧大纲"完美匹配。

决策 3:部署到哪?

你愿意 Mirror 到 GitHub 吗?
├── 愿意 → Cloudflare Pages(推荐,国内访问 + 免费 + 自动构建)
│         或 Vercel(国际线路好,但国内需 VPN)
└── 不愿意 → 只有 Gitee Pages Pro(付费 + 备案)/ 自建 VPS

这次我选Cloudflare Pages——

  • ✅ 国内裸连可访问(最关键)
  • ✅ 完全免费 + 请求数无限
  • ✅ 自动构建 + 自动 HTTPS
  • ✅ Cloudflare Registrar 域名按成本价卖(如果以后想买域名)

💡 不推荐双部署:早期版本曾推荐 Cloudflare + Vercel 双部署作"国内国际兜底",但实际维护增加心智成本——选一个 Cloudflare 已经够覆盖全球

决策 4:URL 风格选什么?

源文件名要中文吗?
├── 是 → URL 用英文(rewrites 映射)
│         源仓库友好 + 博客 URL 友好(推荐)
└── 否 → URL 直接用源文件名

这次我选双语策略 + rewrites——游戏复盘.md 在仓库里读起来友好,URL 重写到 /replays/001 在分享时友好。

决策 5:凭证管理怎么做?

你以后还会经常调 Gitee/GitHub API 吗?
├── 是 → ~/.config/{platform}/ 三件套(推荐)
│         token + user.env + 函数库 sourced from .zshrc
└── 否 → 一次性环境变量

这次我选长期凭证基础设施——封装 gitee-new-repo / github-init-and-push 等命令,以后再开主题用得着。


四、典型路径(如果一切顺利)

Day 0  本地写 3 篇内容验证主题

Day 1  git init + 推到 GitHub(5 分钟)

Day 1  装 VitePress + 配 sidebar(30 分钟)

Day 1  在 Cloudflare Pages 接入 GitHub 仓库 + 拿到链接(5 分钟)

Day 1  优化中文 URL → 英文 URL(10 分钟)

完成:拿到 https://my-topic.pages.dev

总耗时:1 个安静的下午。


五、典型坑(按出现顺序)

详见各阶段文档,这里是简版:

  1. npm 不接受中文项目名package.jsonname 字段写英文
  2. VitePress 内部链接报死链 → 跨文件相对链接需要手动改成新 URL
  3. Cloudflare 默认 Node 版本太老 → 在环境变量里加 NODE_VERSION=20
  4. 构建输出目录 → 必须填 .vitepress/dist,不是 dist
  5. 微信里中文 URL 被 URL-encode 变丑 → 用 rewrites 把 URL 重写为英文路径

每一个都有解决方案,写在对应阶段文档里。


六、什么时候用这套方法论

  • 你的笔记不打算给别人看 → 直接用 Obsidian / Notion,不用搭博客
  • 你的内容是 PDF / 视频为主 → 静态博客不合适
  • 你想要复杂的动态功能(评论、用户系统、付费) → 用 Next.js + 后端

下一步

继续看 02-content.md 了解内容如何组织。

💬 评论与建议

读完有想法?欢迎在下面留言。评论使用 GitHub 账号登录,会同步到本仓库的 Discussions。

基于本 playbook 自身搭建 · 部署于 Cloudflare Pages