---
title: "不会写代码，也能让 AI 全托管一个博客：从 Fork 到日常维护（保姆级教程）"
description: "不用买服务器、不用背命令、不用会写代码：Fork 一份开源模板，让 AI 编程工具全程施工——先立规矩、再改配置、部署 Vercel、独立评论后端、自建播放器源站、优选 IP 提速，一篇保姆级教程走完从建站到日常维护。"
published: 2026-11-07T00:00:00.000Z
category: "设计文档"
tags: ["AI","Astro","Firefly","二开","博客"]
canonical: https://idea.lanerc.me/posts/ai-hosted-blog-guide/
---
不用买服务器，不用背一条命令，不用会写代码。跟着本文，你能把一个功能完备的个人博客搭到自己的域名上，并且从搭建到日常维护全程由 AI 干活——你只需要讲需求、看结果、点确认。

本文以我自己的实验站[灵感屋](https://idea.lanerc.me)（idea.lanerc.me）为实例：它基于开源博客模板 [my-blog](https://github.com/MmzMing/my-blog)（Astro 框架），由 AI 编程工具（本文用 DSH + DeepSeek，其他 AI 编程工具同理）全程施工，这个站本人没有手写过一行代码。模板也可以选 [Firefly](https://github.com/CuteLeaf/Firefly)（我主站 [lanerc.me](https://lanerc.me) 用的就是它）——两套都是 Astro、都是 Fork 后照本文流程走，只在第三步选仓库、第八步选生产分支时有区别，文中都标注了。

## 一、方案总览

整套方案只有四个角色，全部免费或近乎免费：

| 角色 | 承担职责 | 费用 |
| --- | --- | --- |
| GitHub | 存放博客源码（Fork 一份模板到自己账号下） | 免费 |
| 本机 + AI 编程工具 | 写作环境 + AI 干活（装依赖、改配置、写代码、提交推送） | AI 按量计费，便宜 |
| Vercel | 构建并托管博客网站 | 免费额度完全够用 |
| 开源模板（二选一） | 博客本体：文章、播放器、相册、评论、搜索全都自带。**my-blog**（本文实例，灵感屋在用）或 **Firefly**（功能最全的老牌主题，我主站在用） | 开源免费 |

首先需要提前注册这几个账号，准备好所需要的AI工具。

工作原理一句话：**你把需求说给 AI → AI 修改源码并推送到 GitHub → Vercel 自动拉取、构建、发布 → 几分钟后网站更新**。这就是"全托管"：你从不需要碰服务器，也不需要打开代码文件。

## 二、前置准备

### 2.1 需要注册的账号

| 账号 | 用途 | 注册地址 | 备注 |
| --- | --- | --- | --- |
| GitHub | 托管博客源码，触发自动部署 | [github.com/signup](https://github.com/signup) | 邮箱验证后即可用 |
| Vercel | 部署托管 | [vercel.com](https://vercel.com) | 直接用 GitHub 账号关联注册 |
| Cloudflare | （可选）域名 DNS 托管，绑域名和优选 IP 时的操作台 | [dash.cloudflare.com](https://dash.cloudflare.com) | 域名本来就托管在 Cloudflare 的直接用现成的；不在的可忽略 |
| MongoDB Atlas | （可选进阶）评论系统数据库 | [cloud.mongodb.com](https://cloud.mongodb.com) | 只有第九步装独立评论时才需要，免费层够用 |

<details>
<summary>以下为个人用小号的解释（总结：本教程无任何风险，仅仅大号免费额度不够了），可展开看详细内容</summary>

为什么不用大号？主要是想部署在 Vercel 上面，大号连的 Vercel 做的音乐 API 被人白嫖，月额度烧完了，所以为了赶时间就申请了一套小号。这就是主要原因，也挺无奈。

</details>

### 2.2 需要安装的软件

| 软件 | 版本要求 | 用途 | 官网地址 |
| --- | --- | --- | --- |
| Node.js | **22.x LTS** | 博客构建运行环境 | [nodejs.org](https://nodejs.org/zh-cn) |
| Git | 最新版即可 | 代码版本管理、推送 GitHub | [git-scm.com/download/win](https://git-scm.com/download/win) |
| pnpm | 最新版（Node 装好后一条命令安装） | 依赖管理（项目强制要求 pnpm） | [pnpm.io](https://pnpm.io/zh/installation) |
| AI 编程工具 | 最新版 | 替你执行命令、改文件（本文用 DSH，也可用 Trae、Cursor 等） | 按你选的工具官网 |

### 安装要点（3 分钟）

1. **Node.js**：官网下载 `.msi` 安装包，一路下一步。装完打开 PowerShell 验证：

```
node -v
```

显示 `v22.x.x` 即达标。

2. **Git**：安装时所有选项保持默认即可（默认会加入系统 PATH）。
3. **pnpm**：在 PowerShell 里执行（不用去官网下安装包）：

```
npm install -g pnpm
pnpm -v
```

能显示版本号即达标。

### 2.3 先给 AI 一把"小钥匙"（重要，别跳过）

AI 要替你推送代码，需要访问你 GitHub 仓库的权限。**不要把账号密码给它，也不要给全账号权限的令牌。** 正确做法是发一把只开一扇门的钥匙：

1. 用小号登录 GitHub，右上角头像 → **Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token**
2. **Repository access** 只勾选你这个博客仓库（第三步 Fork 完再来建也行）
3. **Permissions** 里只给 **Contents: Read and write**，其余不动
4. 生成后把令牌交给你的 AI 工具的配置项保存

这样即使令牌泄露、或者 AI 抽风乱来，爆炸半径也只有这一个实验仓库。全托管能成立的前提就在这一步。

## 三、第一步：Fork 模板仓库

"Fork"就是把别人的项目完整复制一份到**你自己的 GitHub 账号**下，你拥有这份副本的全部修改权，部署平台也是从你的副本拉代码。

1. 浏览器打开模板仓库（二选一）：my-blog 是 [MmzMing/my-blog](https://github.com/MmzMing/my-blog)；Firefly 是 [CuteLeaf/Firefly](https://github.com/CuteLeaf/Firefly)
2. 点击右上角 **Fork** 按钮
3. 弹出页面保持默认，点 **Create fork**
4. 等待几秒，页面跳转到 `github.com/你的用户名/仓库名` —— 完成

> 全程 1 分钟。**不要用 Download ZIP 下载**，Fork 才能和自动部署联动。
> >
> 注意默认分支不一样：**my-blog 是 master，Firefly 是 main**。后面部署选生产分支时要选对，第八步会再提醒。下文以 my-blog 为例，Fork 的是 Firefly 的话把仓库名和分支名对应替换即可。

## 四、第二步：让 AI 把项目克隆到本地

1. 打开你的 AI 编程工具，新建并打开一个空文件夹（例如 `E:\blog`）作为工作区
2. 在 AI 对话框里，把下面这句发出去（**把用户名换成你自己的**）：

```
请帮我把我 GitHub 上的仓库 https://github.com/你的用户名/my-blog 克隆到当前打开的文件夹里，克隆完成后告诉我项目结构。只动这个仓库，不要碰我电脑上其他项目。
```

AI 会自动执行克隆并把仓库内容放进工作区。如果工具执行命令前弹出确认框，点允许即可。

## 五、第三步：先立规矩，再动代码（全托管的核心）

这一步看起来最没用，其实是整个教程里最重要的一步。

AI 最擅长的事，除了干活，还有"顺手帮你优化一下"——你不把边界写死，它就会替你做决定。所以开工第一件事，是在仓库根目录建一份 `AGENTS.md`，把规矩写下来，AI 每次开工先读它。下面这份可以直接抄，把括号里的换成你的：

```markdown
# 本仓库工作规矩
1. 只动本仓库。其他仓库、部署后台、DNS，一律不碰。
2. 一批只做一件事，一批一个 commit。想改五个地方，分五批提交。
3. 每次改完必须自己跑构建验证，并把验证结果（成功/失败、关键数据）汇报给我。
4. 视觉效果（好不好看、像不像）由我验收，你不要自行判定通过。
5. 不许猜测。素材、数字、现状以仓库代码和接口实测为准，查不到就说查不到。
6. 推送前把本批改动的文件清单列给我，等我确认再推。
```

然后对 AI 说：

```
请把上面这份规矩保存为仓库根目录的 AGENTS.md（如果根目录已有同名文件，先把两份内容给我看，合并后再保存），然后把它作为第一个 commit 提交并推送。之后所有工作都按这份规矩执行。
```

> 我的实验站第一个提交干的就是这件事。后面它真拦住过好几次 AI 想顺手重构"范围外问题"的冲动。

## 六、第四步：安装依赖与本地预览

继续在对话框发送：

```
请先检查本机 Node 和 pnpm 版本（项目要求 Node 22、pnpm 最新版），符合要求就在项目根目录执行 pnpm install 安装依赖；如果 pnpm 未安装，先用 npm install -g pnpm 安装。完成后启动开发服务器（pnpm dev），告诉我预览地址。
```

AI 会自动完成版本检查、安装和启动。依赖大约几百个包，国内网络一般 1～3 分钟。启动成功后浏览器打开 **`http://localhost:4321`** 就能看到你的博客，此时改任何配置、文章，页面保存即刷新。

> 首次启动要构建缓存，页面出来前可能有十几秒白屏，属正常现象。
> >
> 这个项目用 `preinstall` 脚本强制 pnpm，用 npm/yarn 安装会直接报 `only-allow pnpm`——让 AI 用 pnpm 就不会遇到。

## 七、第五步：把模板换成"你自己的站"

刚 Fork 下来的站挂的全是模板作者的名字、头像、友链。先换掉，才算你的站。把下面这段填好发给 AI：

```
请帮我完成博客的身份切换，要求一批只做一件事、分开提交：
1. 站点名改为「XX的小站」，站点域名先填 https://XX.vercel.app（以后绑了自己的域名再改）；
2. 作者昵称改为 XX，头像换成我放在工作区的 avatar.png；
3. 友链列表整体清空，一条不留；
4. 文章页的打赏入口关闭，页脚和隐私页里的联系邮箱改成我的 someone@example.com；
5. 先把仓库自带的示例文章列个清单给我，我确认哪些删，你再删。
每完成一项，把改了哪些文件列给我看。
```

AI 会直接定位配置文件修改。注意第 5 条：模板自带的示例文章里可能混着有用的说明页，让 AI 先列清单、你点头再删，比一句话"全删了"稳妥。

## 八、第六步：部署到 Vercel 上线

1. 打开 [vercel.com](https://vercel.com)，点 **Continue with GitHub**，用你的账号授权登录
2. 控制台点 **Add New… → Project**
3. 在 **Import Git Repository** 列表里找到你的 `my-blog` 仓库，点 **Import**（找不到的话，点下面的链接给 Vercel 授权访问该仓库）
4. 配置页确认四处，其余全部默认：

| 配置项 | 填什么 |
| --- | --- |
| Framework Preset | Astro（一般已自动识别） |
| Production Branch | **选你模板的默认分支**：my-blog 选 `master`，Firefly 选 `main`（不选对不会自动部署） |
| Build Command | 默认即可（项目自带构建脚本） |
| Output Directory | `dist`（默认即可） |

5. 点 **Deploy**，等 3～5 分钟构建完成
6. 完成后得到一个 `你的项目名.vercel.app` 的免费域名，点击即可访问

> **一个保险设置（建议顺手加上）**：展开 **Environment Variables** 添加一条 `NODE_VERSION` = `22`。Astro 7 要求构建环境的 Node 必须 ≥ 22；Vercel 新项目默认一般已经达标，但个别项目默认版本偏低，会直接构建失败。把版本钉死，就不用赌它的默认值。

**绑定自己的域名（可选/可直接使用托管到Cloudflare的域名）**：项目页 → **Settings → Domains → Add**，填入你的域名，按提示到域名注册商那里加一条 CNAME 记录指向 Vercel 给出的地址，等证书自动签发（几分钟）即可 HTTPS 访问。绑完别忘了回第七步，让 AI 把配置里的站点域名换成正式域名。域名托管在 Cloudflare 的，就在 Cloudflare 控制台的 DNS 页加这条记录——注意把代理状态设成**仅 DNS**（灰云）：开着橙云代理时，流量会先绕 Cloudflare 的默认节点，下面的优选 IP 不生效，还可能和 Vercel 的证书校验打架。

<details>
<summary>（可选）优选 IP：把国内访问速度再往上抬一截，可展开看配置方法</summary>

Vercel 是任播网络，官方 CNAME（`cname.vercel-dns.com`）解析到的节点对国内线路不一定最优。社区有个长期维护的优选项目 [enhanced-FaaS-in-China](https://github.com/xingpingcn/enhanced-FaaS-in-China)：它定期测速，挑出对电信、联通、移动都友好的 Vercel 节点，收成一个现成的优选域名，你把 CNAME 换过去就行。配置三步，**顺序不能反**：

1. 先按上面的官方流程，把 CNAME 指向 `cname.vercel-dns.com`，等 Vercel 把 SSL 证书签发好（Domains 页状态变 Valid）——证书没签下来就换走，会签不下来
2. 再回域名注册商的 DNS 处，把这条 CNAME 的目标改成 `vercel-cname.xingpingcn.top`（在 Cloudflare 里改的同理，保持仅 DNS）
3. 等几分钟解析生效，用多地测速工具对比一下改前改后，国内节点变快就说明生效了

两条提醒：优选域名是社区项目维护的，哪天它停更或失效，把 CNAME 改回官方地址立即恢复，所以只推荐用子域名走 CNAME（改起来方便），根域名绑 A 记录同理可指向优选 IP，但 IP 会变、要定期复测，不如 CNAME 省心。

</details>

**部署失败怎么办**：不要自己研究日志。把 Vercel 构建日志里的报错整段复制下来发给 AI：

```
我的博客在 Vercel 构建失败，日志报错如下：
（粘贴日志）
请分析原因，在本地修好并验证构建能通过，然后再推送。
```

九成问题出在依赖版本或环境变量，AI 能直接定位。

## 九、第七步（可选进阶）：给评论装一套独立后端

模板自带评论功能，但后端要自己接。**千万不要和别人的站、或者你自己的主站共用一套评论后端**——共用同一套，两边的评论会串在一起，谁在实验站发的测试留言都会出现在正式站上（新手可忽略）。独立部署一套 Waline，零成本，十分钟：

1. **建数据库**：登录 MongoDB Atlas → 创建免费集群（M0）→ 在 **Database Access** 里新建一个数据库用户（记下用户名密码）→ **Network Access** 里放行 `0.0.0.0/0`（Vercel 没有固定出口 IP，必须全放行，安全靠强密码）→ 新建一个空数据库，例如 `waline-idea`
2. **部署后端**：Fork 一份 [walinejs/waline](https://github.com/walinejs/waline) 到你的GitHub账号 → 回 Vercel 新建 Project 导入它 → **Root Directory 改成&#32;`example`**（真正的应用在子目录里，不改部署必失败）→ 项目 **Settings 里把 Node.js Version 改成 24.x**（默认的 26.x 与 Waline 不兼容）
3. **填环境变量**（Deploy 前在 Environment Variables 里一次填齐）：

| 变量名 | 填什么 |
| --- | --- |
| `MONGO_DB` | 第 1 步建的库名，如 `waline-idea` |
| `MONGO_USER` / `MONGO_PASSWORD` | 第 1 步建的数据库用户和密码 |
| `MONGO_HOST` | Atlas 集群的三个分片主机名，写成 JSON 数组：`["主机1","主机2","主机3"]`（在 Atlas 的 Connect 页面能看到） |
| `MONGO_PORT` | `[27017,27017,27017]`，同样必须是数组 |
| `MONGO_REPLICASET` | Atlas 的副本集名（Connect 页面可见） |
| `MONGO_AUTHSOURCE` | `admin` |
| `MONGO_OPT_SSL` | `true` |
| `SITE_NAME` | 你的站名 |
| `SITE_URL` | 你的博客地址，如 `https://idea.lanerc.me` |
| `SECURE_DOMAINS` | 你的博客域名 + 这个评论后端自己的域名，逗号分隔 |

> 最容易栽的坑：`MONGO_HOST` 和 `MONGO_PORT` **必须写成 JSON 数组**。只写一个光秃秃的 27017，它会把这串数字拆开当成多个端口去连，部署显示成功、请求全部超时，你还会以为是网络问题。另一条：**不要把&#32;`mongodb+srv://`&#32;整串连接字符串直接粘进去**，Waline 不吃整串，必须拆成上面这组分项变量。

4. 部署成功后得到评论后端地址（如 `https://waline-idea.vercel.app`，建议同样在 Domains 里绑个自己的子域名，vercel大陆dns基本被污染的无法访问），回博客这边对 AI 说：

```
请把评论配置里的 serverURL 改成 https://我的评论后端域名/ ，登录方式保持允许游客（昵称+邮箱即可评论），改完构建验证并推送。
```

推送后等几分钟，打开留言板发一条测试评论，能发出来、刷新还在，这套评论就通了。

### 顺手把访问统计也装上（可选）

评论有了，还差一个「每天有多少人来、哪篇文章有人看」。这类统计用 Umami：免费、轻量、不种 Cookie。两种装法二选一。

**方法一：Umami Cloud（最省事，5 分钟）**

1. 打开 [Umami Cloud](https://cloud.umami.is) 注册，进后台 **Add website**，填站名和你的域名
2. 它会生成一段跟踪脚本，记下里面的 `data-website-id`（一串 UUID）
3. 对 AI 说：

```
请把 Umami 统计接入这个站，我的 data-website-id 是 XXX。如果模板自带统计/Umami 配置项就填配置项，不要把脚本硬编码进每个页面；本地预览确认统计请求发出后再告诉我。
```

4. 推送上线后，自己打开网站点开两篇文章，回 Umami 后台看「实时访客」里有没有自己——有，这套统计就通了

<details>
<summary><strong>方法二：自建 Umami（有 VPS 的看这里，点开展开）</strong></summary>

数据想放自己手里、或者不想受云端免费版额度限制，就在自己的 VPS 上搭一套，我自己的站用的就是自建版：

1. VPS 上装好 Docker 后，对 AI 说，让它给你生成部署文件：

```
请给我一份部署 Umami 的 docker-compose.yml（官方镜像 + PostgreSQL），并说明每个环境变量要填什么。
```

2. 在 VPS 上把这份文件放好、启动容器，Umami 默认跑在 3000 端口；再用 Nginx/Caddy 反代到一个子域名（如 `umami.你的域名`）并配好 HTTPS
3. 打开后台，用默认账号 `admin` / 密码 `umami` 登录，**第一件事先改密码**，再 **Add website** 拿到你的 `data-website-id`
4. 接入博客和验收的方法同方法一第 3、4 步

</details>

## 十、第八步（可选进阶）：播放器音源——公共源还是自建源（二选一）

模板自带的播放器要出声，得先给它接一个"源站"（提供歌单和音频地址的接口）。两种接法，**二选一**：

|  | 方案 A：公共源 | 方案 B：自建源站 |
| --- | --- | --- |
| 做什么 | 只改配置文件，借用别人公开的接口 | 自己部署两个小接口 |
| 耗时 | 5 分钟 | 约半小时（还是 AI 干活） |
| 效果 | 网易云基本能听；QQ 大概率只有列表没声；部分歌曲只有 30 秒试听 | 全平台完整播放，稳定性自己说了算 |
| 适合 | 先把站跑起来 | 长期正经用（灵感屋用的就是这个） |

也可以先 A 后 B：配置是逐张歌单生效的，哪张不满意就把哪张切到自建，不用一次全换。

### 方案 A：只改配置（公共 Meting 源）

播放器的配置文件是 `src/config/musicConfig.ts`。`mode` 保持 `"meting"`，你要认识的只有四处：

| 字段 | 填什么 |
| --- | --- |
| `meting.api` | 主源地址（现行可用：`https://api.qijieya.cn/meting/?server=:server&type=:type&id=:id`） |
| `meting.fallbackApis` | 备胎地址数组，主源挂了自动按顺序换下一个（现行可用：`https://api.moeyao.cn/meting/?server=:server&type=:type&id=:id`） |
| `meting.server` | 平台：`netease` 网易云、`tencent` QQ、`kugou` 酷狗 |
| `meting.id` | 歌单 ID |

> 两个避坑：`api.injahow.cn` 已经连不上了，别再往配置里填；官方源 `api.i-meto.com` 只能当列表备胎——它的音频"第二跳"是坏的（歌单加载正常、点哪首都没声），这也是公共源最常见的翻车姿势：**列表通 ≠ 能播，一定要逐首点开验收。**
> >
> 歌单 ID 怎么找：网易云在 App 里分享歌单，链接里 `id=` 后面那串数字；QQ 音乐的 App 分享短链在电脑上打不开，去网页版 `y.qq.com` 打开歌单，地址栏里就是。

换歌单不用自己改文件，对 AI 说：

```
请把播放器默认歌单换成：平台 tencent，歌单 ID 9439238150。主源和备胎保持不动，改完构建验证，告诉我改了哪一行。
```

### 方案 B：自建源站（灵感屋在用）

自建源站就是两个自己部署的接口，合起来干两件事：

1. **歌单接口**：给它平台 + 歌单 ID，返回整张歌单的完整信息（歌名、歌手、封面）。以网易云为例，它先拿到歌单的歌曲 ID 列表，再按每批 100 首补齐详情、按原顺序拼好；结果带一天的缓存，慢只慢第一次打开。
2. **解析接口**：给它某首歌的平台、ID、歌名、歌手，它按一条**回退链**找能播的地址：主源先上 → 按平台找对口的源（网易云的歌找网易云的解析、QQ 的歌找 QQ 的解析）→ 备用源兜底。每个候选地址返回前都先**验活**（真请求一下确认能播），验不过自动换下一个；找到的结果缓存 6 小时。

**附：歌单 ID 怎么找（网易云 / QQ）**

- **网易云**：手机 App 打开歌单 → 分享 → 复制链接，链接里 `id=` 后面那串数字就是（短链先粘到浏览器打开、跳转完成后再看地址栏）；或者网页版 `music.163.com` 打开歌单，地址栏同理。例如 `playlist?id=2804070207`，ID 就是 `2804070207`。
- **QQ 音乐**：去网页版 `y.qq.com` 打开歌单，地址末尾那串数字就是 ID（如 `y.qq.com/n/ryqq/playlist/9439238150`）。App 分享出来的是短链，电脑上解析不了，别拿它取 ID，一律走网页版。

部署三步，全程还是使唤 AI：

1. 让 AI 按上面的规格把两个接口写成一个独立小项目，部署到 Vercel，得到源站地址：

```
请为播放器实现一个自建源站，独立项目，部署到 Vercel：
1）歌单接口：输入平台（wy/tx/kg）和歌单 ID，返回全量歌曲详情；网易云按 trackIds 每批 100 首并发补详情并保持原顺序；响应加缓存头 s-maxage=86400；
2）解析接口：输入平台、歌曲 ID、歌名、歌手，按"主源→平台对口源→备用源"的顺序找可播地址，每个候选先实际请求验活再返回，验不过换下一个；结果在服务端缓存 6 小时；
3）两个接口都只允许我博客的域名调用（按 Referer 白名单校验），其他来源返回 403。
写完逐项自查并把测试结果给我。
```

2. 让 AI 把播放器的歌单从"一张"扩成"一个列表"，每张歌单加一个 `api` 字段——填 `self` 走你的源站，填公共源地址走公共源：

```
请把播放器歌单改造成列表配置：每张歌单包含名称、平台、歌单 ID 和 api 字段，api 为 self 时请求我自建源站的歌单/解析接口，为公共源地址时走 Meting。切歌单时不要打断正在播放的歌曲，点了新歌单里的歌才切换队列。
```

3. **验收**（这步归你）：逐张歌单点开，重点试 QQ 的歌能不能出声、网易云是不是完整版（不是 30 秒试听）。都对，源站就算通了。

### 我们在用的配置逻辑（可直接照抄）

灵感屋现在挂六张歌单，顺序和分工是这样的——数组里的顺序就是播放器里显示的顺序，第一张是默认歌单：

| # | 歌单 | 平台 | 走哪 | 为什么 |
| --- | --- | --- | --- | --- |
| 1 | 我喜欢的音乐 | 网易云 | self | 默认歌单；公共源只给 30 秒试听，自建是完整版 |
| 2 | F 2（98 首） | QQ | self | QQ 公共源音频第二跳不通，只能自建 |
| 3 | Do（100 首） | QQ | self | 同上 |
| 4 | syz（34 首） | QQ | self | 同上 |
| 5 | 我喜欢（2370 首） | QQ | self + 懒加载 | 太大张，点开才拉，不然首屏等死 |
| 6 | 本地歌单 | 本地文件 | — | 垫底，断网也有歌听 |

三条配套规矩：切歌单不打断当前播放；大歌单一律懒加载；源站独立部署、只认自己站的域名——公共接口被人拿去薅流量薅到额度爆炸这种事，发生过一次就够了（见第二节小号那段）。

## 十一、日常施工：怎么跟 AI 说话

站搭起来只是开始。托管的日常，是你不断提需求、AI 不断交付。一次靠谱的施工长这样，五步：

1. **你说需求**，说清"哪里、什么问题、想要什么效果"，例如："播放器切歌单太慢，冷加载要十几秒，查一下原因，能改就改。"
2. **AI 先查再动**：定位到是节点跨国、串行请求、缓存太短三层原因叠加，先把原因报给你。
3. **分批施工**：并发改造一批、缓存策略一批、收尾小补丁一批，每批一个 commit，随时能单独回滚。
4. **AI 交自查证据**：改前改后实测数据、逐项比对结果、构建是否通过——不看证据不算完。
5. **你验收**：真机打开试一遍（手机、电脑各一次），体感对了才算结；不对就描述现象发回去，别自己猜原因。

三句常用提示词：

**要证据时：**

```
改完后把自查结果给我：构建是否通过、改前改后关键数据对照、你逐项核对过什么。没验证过的部分明确标出来，不要笼统说"已完成"。
```

**圈范围时（写文章、做调研尤其要用）：**

```
素材只许用（某个时间点）之后、（某个作者）的提交记录，上游原作者的历史不要纳入。数字逐个核对来源，不许推测。
```

因为 Fork 是全量复制历史，你不圈范围，AI 就会把模板作者的开发史写成你的奋斗史——这事在我站上真实发生过。

**任务太长时，拆开喂：**

长任务（写几千字长文、改十几个文件）不要一口气交代完。先让它出清单/大纲，你确认后再让它逐节、逐批推进。原因见文末的常见问题速查：链路太长，中转 API 容易中途断流，拆小之后每段都短，谁都掐不断。

## 十二、后续日常维护

### 12.1 写文章（最常用的循环）

写文章不要在 AI 对话框里逐句口述——长文在聊天框里改，越改越乱。更顺手的做法是：**先让 AI 建一个文章模板，之后你自己在 Obsidian 里写，AI 只管校验和发布。**

1. 让 AI 建模板（一次性）：

```
请按这个博客现有的文章格式，在仓库根目录建一个「文章模板.md」：包含完整的 frontmatter（标题、日期、描述、标签、分类、封面、草稿标记，字段和现有文章保持一致）和正文骨架。
```

2. 用 Obsidian 把博客文件夹打开为仓库，在里面写文章：复制一份模板改名，正文慢慢写，图片直接拖进去。
3. 写完对 AI 说一句就行：

```
我新写了一篇（文件在 src/content/posts/ 下），检查一下 frontmatter 和图片引用，没问题就提交推送。
```

之后 Vercel 检测到推送自动构建，约 3 分钟线上生效。Obsidian 再装个 Git 插件、开自动提交的话，连第 3 句都能省——我自己的站就是这么干的，写完自动上线。

**和 AI 配合的流程，就固定成这四步：**

1. **你只管写**：在 Obsidian 里写标题、正文、插图；分类和标签拿不准就先空着，不用纠结
2. **AI 收尾**：喊它来补齐 frontmatter、按站点既有的分类标签归类（不许它自造词）、检查图片引用和公式有没有渲染坏
3. **AI 发布并回报**：它提交推送，等构建完把线上链接发回给你
4. **你验收**：点开看一遍；要改，小改自己在 Obsidian 里改完再喊它推，结构性的大改把意见列出来给它改

分工就一条：内容归人，格式、校验、发布归 AI。各干各擅长的，谁也别抢谁的活。

> 没用过 Obsidian 的先看这两处：[下载 Obsidian](https://obsidian.md/zh/download)（全平台免费）；上手和把文件夹连接成仓库，跟着 B 站这支视频走一遍就行：[Obsidian 入门保姆级教程：20 分钟轻松上手](https://www.bilibili.com/zh-Hans/video/BV1Xi4y1h76C/)；想查某个具体功能，再翻 [Obsidian 官方中文帮助](https://obsidian.md/zh/help/%E7%94%B1%E6%AD%A4%E5%BC%80%E5%A7%8B)。另外，专门针对「用 Obsidian 写博客」的配置方法（仓库根目录选哪一级、图片链接怎么设、粘贴图片自动改名），推荐看二叉树树的这篇：[现代！易上手！高效！且社区支持的超高校级的 MarkDown 编辑器！](https://2x.nz/posts/obsidian/)，文末参考里也附上了。

### 12.2 改配置、加功能

同样三步：告诉 AI 改什么 → 本地预览确认 → 让它提交推送。例如给播放器加一张歌单，就是一句话的事：

```
请把这张歌单加进播放器：平台 网易云，ID 是 2804070207，名字叫「我喜欢的音乐」。加完构建验证，告诉我改了哪个文件。
```

### 12.3 同步模板更新（先看警告）

模板官方更新后，你的 Fork 不会自动跟进：

1. 打开你 GitHub 上的仓库页面，点 **Sync fork → Update branch**
2. 回本地对 AI 说：`我刚刚同步了上游更新，请 git pull 拉下来，检查和我的改动有没有冲突，有冲突先列给我，不要自行合并。`

> **警告**：你的站改得越多，同步冲突越狠。如果已经像我一样大改过几十处，盲目 Sync 只会炸一地。更稳妥的策略是**不追大版本**：看上模板的某个新功能，单独让 AI 评估、单独搬那一小块。

### 12.4 定期巡检（也交给 AI）

托管不等于撒手。可以建几个固定节奏的小任务，让 AI 定期替你看一眼：服务器/域名到期、依赖的平台有没有大变动、评论区有没有需要你本人回复的长评论。原则是：**没事保持安静，有事才来报你**——不然提醒比事情本身还烦人。

## 十三、常见问题速查

| 现象 | 原因与解决 |
| --- | --- |
| AI 思考到一半就消失、报错 `Upstream HTTP/2 stream failed` | API 中转站的流断了，不是你的网络、也不是模型坏了。长任务拆小（第十一节）；有条件就把接口换成模型官方 API 直连，一劳永逸 |
| AI 写出来的内容把模板作者的事迹安在你头上 | Fork 的历史是全量的。用第十一节"圈范围"提示词限定素材 |
| `pnpm install` 报 `only-allow pnpm` | 用了 npm/yarn。删掉 `node_modules` 后改用 pnpm 重装 |
| 本地预览白屏十几秒 | 首次启动在建缓存，等它完成即可 |
| Vercel 构建失败 | 把构建日志整段发给 AI 修（第八步有现成句式）；常见是 Node 版本没设 22、生产分支选错（my-blog 要 master、Firefly 要 main） |
| Waline 部署成功但评论全超时 | 连接参数没拆对：检查 `MONGO_HOST`/`MONGO_PORT` 是否写成 JSON 数组、有没有误粘整串连接字符串（第九步） |
| 播放器歌单能打开但没声，或只有 30 秒试听 | 公共源的音频第二跳不通或只给试听。换第十节方案 B 自建源站 |
| 实验站的评论跑到正式站去了（或反过来） | 两站共用了同一套评论后端。按第九步给每站独立部署、独立数据库 |
| 推了代码线上没变化 | 先等 3 分钟构建；还不对就看 Vercel 的 Deployments 列表确认最新构建是否成功，别急着重复推送 |

## 十四、总结：这套方案好在哪

- **零服务器成本**：不需要买云主机，Vercel / Atlas 免费额度对个人博客绰绰有余
- **零命令、零代码**：装依赖、改配置、写文章、提交推送全部用自然语言完成，命令都在本文可复制
- **自动持续部署**：源码在 GitHub，push 即发布，更新几分钟内全网上线
- **国内访问也不慢**：把站放 Vercel 不等于国内就打不开——Vercel 官方文档提到其网络有面向国内的优选 IP，实测访问速度大约能达到备案后用国内 CDN 加速效果的 80% 左右（个人感觉）。省了备案和国内主机的钱，速度只让两成，对个人博客完全够用
- **数据完全自持**：仓库在你自己账号下，随时可以换部署平台、换 AI 工具、甚至换回自己动手，博客不锁死在任何服务商
- **托管靠流程，不靠运气**：权限给最小、规矩写成文件、批次切小、验收归人——这四条比模型本身更决定成败

接下来要做的只有一件事：把本文里所有的占位符换成你的名字和域名，然后对 AI 说出第一句需求。

## 参考

- 番茄主理人，[《零成本搭建 Firefly（Astro）个人博客，AI 全自动部署教程》](https://blog.fqzlr.top/posts/tech/firefly-ai-blog-setup/) —— 本文体例与流程的主要参考
- [CuteLeaf/Firefly](https://github.com/CuteLeaf/Firefly) —— Firefly 主题仓库
- [MmzMing/my-blog](https://github.com/MmzMing/my-blog) —— my-blog 模板仓库，灵感屋的底子
- [walinejs/waline](https://github.com/walinejs/waline) 与 [Waline 官方文档](https://waline.js.org) —— 第九步独立评论后端的出处
- [Astro 官方文档](https://docs.astro.build/zh-cn/getting-started/) —— 两套模板共同的框架
- [Vercel 文档](https://vercel.com/docs) —— 部署与自定义域名设置
- [enhanced-FaaS-in-China](https://github.com/xingpingcn/enhanced-FaaS-in-China) —— 第六步优选 IP 的出处，社区维护的 Vercel 优选域名
- Vercel 官方指南，[Accessing Vercel-hosted sites from mainland China](https://vercel.com/kb/guide/accessing-vercel-hosted-sites-from-mainland-china) —— 官方对国内访问的说明：自定义域名是第一步
- 二叉树树 AcoFork，[《现代！易上手！高效！且社区支持的超高校级的MarkDown编辑器！》](https://2x.nz/posts/obsidian/) —— 第十二步 Obsidian 写博客的配置方法：仓库根目录、图片链接与粘贴改名插件
