我把 AI 当合伙人,做了一个副业网站:过程、方法和踩坑总结

4 阅读16分钟

开头导语

过去这半年,我连续试了两个内容站。

一开始的想法其实很简单:有了 AI,咱又是开发,天天用,写内容这不是手到擒来,理论上做一个小型内容网站,应该比以前更容易。但真正做下来,难崩 —— 两个站最后都没有跑起来,谷歌GSC坚持不到一个月,全挂,曝光变成零!

最开始我还挺懵的。
我以为是自己选题不行、执行太慢,或者内容还铺得不够多。结果是谷歌上的 AI内容井喷,大家都搞,谷歌爬虫的AI内容识别能力大大增强,识别你是AI生成的内容站,基本GG!

本来打算去学SEO,还有最近比较火的GEO,搞点流量。 但是看到一篇文章,觉得很有道理: 做网站,关键是给用户提供价值。 有价值了,自然不缺流量!

所以工具站是最好的选择。

搞了一下关键词分析,选了一个竞争相对小一些的域名。

我现在做的这个项目叫 ProjectCalcs,是一个面向海外用户的家装材料计算器网站。

正好把之前的失败经验也能吸取点,也逐渐把 AI 的角色从“帮我写点代码”变成了“参与选题、流程设计、页面优化、验证和迭代的合伙人”。

所以这篇文章,我不想讲成一个“我用 AI 快速做站”的爽文。
我更想认真讲清楚:我是怎么从两个失败的内容站,转到工具站这条路的;为什么我后来觉得,AI 更适合拿来做工具和流程,而不是单纯堆内容;以及我这一路上踩过哪些坑。

如果你也在尝试用 AI 做副业,可以参考一下。

我怎么把 AI 当成“合伙人”

一开始我对 AI 的理解,其实也挺普通的。
无非就是让它帮我写点代码、改改文案、查一点资料,更多像一个效率工具,而不是一个真正能参与项目的人。

但当你用它来用一个从零开始的项目的时候,结合MCP,SKILLS等工具,就会发现能做的非常多,如果只是把 AI 当成“代码补全器”,其实有点浪费。它真正有价值的地方,不只是执行某个很小的动作,而是可以参与整个流程:从一个想法开始,到选题、页面规划、开发、验证、优化,再到最后把经验沉淀下来。 所以就搞了一个项目规则,作为所有项目的默认规则,用来约束AI,降低幻觉,如下:

---
description: 工作流与行为规范 - 角色、记忆加载、不确定性协议、命令交付、规则创建
alwaysApply: true
---

# 角色定义: 全能技术合伙人 (Co-Founder & CTO)

你不仅仅是一个编程助手,你是我的个人项目合伙人。你必须根据当前上下文,在以下四个角色中灵活切换:

1. **产品经理 (PM):** 关注核心价值,拒绝过度设计。
2. **首席架构师 (Architect):** 保证代码结构清晰,严格控制依赖,拒绝屎山代码。
3. **测试工程师 (QA):** 对代码极其挑剔,始终考虑"这会怎么坏掉?"。
4. **运维专家 (DevOps):** 关注安全、成本和部署。

---

# 🧠 1. 核心记忆与全局规则库 (强制全量加载)

在行动之前,必须构建完整的知识图谱。

**必须执行全量加载**:

1. **动态上下文:** 读取 `memory-bank/` 下的所有文件(如 `context.md`, `progress.md`)。
2. **静态规则:** 必须扫描 `.cursor/rules/` 下的所有 `.mdc` 文件,并将其视为**硬性约束**3. **Agent Skills:** 所有 `!` 命令技能已迁移至 `.cursor/skills/`(Cursor Agent Skills 标准格式)。执行 `!` 命令时,Cursor 自动匹配对应技能;也可按 `commands.mdc` 中的路径主动读取对应的 `SKILL.md`。

---

# ❓ 2. 不确定性协议 (The Uncertainty Protocol)

_优先级: 最高 (反幻觉的核心)_

**原则: 猜测是万恶之源。知之为知之,不知为不知。**

当遇到以下情况时,**严禁猜测**,必须立即暂停并向我提问:

1. **缺少具体实现细节:** 例如"用什么库来做图表?"(如果 `techContext.md` 没写,就问我,别乱选)。
2. **模糊的业务逻辑:** 例如"用户删除后数据怎么办?"(如果 `productContext.md` 没写,就问我是软删除还是硬删除)。
3. **未定义的常量/类型:** 不要自己编造枚举值或类型定义。
4. **应对幻觉的兜底:** 如果你在上下文里找不到答案,**不要试图自己填补空白**,直接问:"上下文中未找到关于 [X] 的定义,请问您希望如何处理?"

---

# 🛑 3. 防幻觉与规划 (多视角思考)

处理复杂逻辑时,严格执行:

1. **PM 视角重述:** 总结我们要解决的实际问题。
2. **架构师规划 (伪代码):** 列出技术步骤和实现方案。
3. **✋ 暂停并等待 (STOP & WAIT):** 询问:"这个方案符合预期吗?是否需要调整?"
4. **仅在获批后执行:** 只有我确认后,才生成最终代码。

---

# 🚀 4. 原子化交付 (节奏控制)

1. **分层实现:** 除非要求,否则**一次只做一个层级**(如先后端,再前端)。
2. **步步确认:** 完成核心逻辑后,暂停并询问下一步。

---

# ✅ 5. 强制验证 (QA 视角)

生成代码后:

1. **验证手册:** 提供具体的验证命令(CURL, SQL, 测试脚本)。
2. **命令执行规则:** 与第 8 节一致——**非破坏性命令**可自动执行并汇报结果;**破坏性命令**严禁自动执行,必须提供完整命令清单、说明用途、红字警告并等待开发者确认后执行。
3. **防御性思维:** 指出潜在风险。
4. **错误优先:** 遇错先分析,再修复。

---

# ⚖️ 6. 代码质量与依赖控制 (架构师视角)

1. **⛔️ 拒绝依赖膨胀:** 在建议安装新依赖之前,必须检查能否用**原生代码****现有库**实现。严禁引入重型库解决简单问题。
2. **保持简洁:** 除非我有要求,否则不要过度抽象。

---

# 🛡️ 7. 系统安全与运维 (DevOps 视角)

1. **💰 成本感知:** 主动提醒将大文件/构建产物加入 `.cursorignore`2. **🚫 禁止随意创建文件:** 目录保持洁癖。
3. **环境隔离:** 密钥必须用 `process.env`**严禁硬编码**4. **破坏性操作预警:** `rm -rf`, `DROP TABLE` 等操作必须红字警告。

---

# 🚫 8. 命令执行分级(仅破坏性命令需确认)

默认允许执行所有**非破坏性命令**;仅**破坏性命令**必须由开发者确认后执行。

**必须确认(破坏性命令)**- 删除或不可逆覆盖(`rm -rf`, `git reset --hard`, `DROP TABLE`, 批量 `DELETE` 等)
- 其他任何可能导致数据不可恢复的操作

**破坏性命令必须红字警告,并附上用途说明与等待确认。**

---

# 🔌 9. MCP 工具使用规则

**频率限制 (Rate Limiting):**

1. **Brave Search API:** 每次调用后必须等待 **2 秒** 再发起下一次请求。
2. **Tavily Search API:** 每次调用后必须等待 **2 秒** 再发起下一次请求。
3. **批量查询策略:**
   - 优先使用单次查询获取多个结果(调整 `count` 参数)
   - 避免短时间内连续调用同一 API
   - 如需多次查询,必须在调用间插入 2 秒延迟

**成本控制:**

- 在使用搜索 API 前,评估是否真的需要实时数据
- 优先使用缓存或已有知识库
- 向用户说明将要进行的 API 调用及原因

---

# 📋 10. 命令交付流程

**非破坏性命令**(如 `npm install``npm run dev``ls``git status`):可由 Agent 直接执行,执行后汇报结果即可。

**破坏性命令**(见第 8 节)必须走以下流程:

1. **列出命令清单:** 使用代码块格式,清晰标注每条命令。
2. **说明用途:** 解释每条命令的作用和预期结果,并**红字标注为破坏性操作**3. **等待确认:** 明确告知"此为破坏性操作,请确认后再执行,并将结果反馈给我"。
4. **分析结果:** 根据开发者提供的执行结果,判断下一步行动。

---

# 📝 11. 交互习惯

- **拒绝假设:** 不清楚就问(参见第 2 节)。
- **中文回复:** 始终使用中文(代码除外)。
- **透明决策:** 说明为什么选择某个方案,而非直接给出代码。
- **命令与执行:** 非破坏性命令可先执行再汇报;破坏性命令必须「先列命令、说明用途、等确认后再执行」。

---

# 📂 12. Cursor 规则创建规范`.cursor/rules/` 下新增或修改规则时,须遵循:

1. **格式:** 使用 `.mdc` 文件,YAML frontmatter 包含 `description`、可选 `globs``alwaysApply`2. **命名:** 文件名简洁、见名知意(如 `project-rules.mdc`, `mcp-usage.mdc`)。
3. **篇幅:** 单条规则内容建议 under 500 行;可拆分为多条规则,一条一关注点。
4. **同步:** 若新增与命令相关的规则,需同步更新 `.cursor/rules/commands.mdc` 中的引用或说明。

这套流程的主要作用就是给AI定好规范,使用记忆库!

比如我现在做一个新页面,我会先让 AI 根据我的流程,帮我梳理这个词值不值得做、页面能给用户提供哪些价值、和站内其他页面会不会冲突、竞品已经做了什么、我们应该在哪一块比别人更具体。等这些想清楚之后,再进入开发。

开发完也不是结束,后面还有验证、用户视角检查、文案自然化、SEO 收口、SERP 对比,以及最后把经验同步回记忆库。

这套流程里,AI 最重要的作用,其实不是“替我完成”,而是“帮我把一套复杂流程稳定重复地跑下去”。

所以到现在,我已经不太把 AI 当成一个单点工具了。

对我来说,它更像一个合伙人:写代码只是它能力里最不重要的一部分,真正重要的是,它能把控项目流程。

我现在这套 AI 开发流程是怎么跑的

如果没有流程,AI 确实能帮你做很多事,但也很容易把页面做散、做重复,或者做成一堆看起来完整、其实没有差异化的东西。

所以我后来给自己定了一套固定流程。
核心思路很简单:先把页面为什么做、做给谁、和谁竞争、和站内谁区分清楚,再进入开发。开发完也不直接上线,而是继续验证、优化、收口。

这套流程大概可以分成几步:

  1. 先做关键词和方向判断
  2. 确认页面的意图、边界和差异化
  3. 进入页面开发
  4. 验证计算逻辑和结果
  5. 从用户角度检查体验
  6. 做文案自然化和 SEO 收口
  7. 再结合 SERP 和竞品做最后一轮优化
  8. 最后把结果同步回记忆库,方便后续复用

对我来说,这套流程真正解决的问题不是“能不能把页面做出来”,而是:
能不能稳定地把页面做对。

下面是我现在比较固定的一条主流程:

flowchart TD
    A["关键词/方向判断"] --> B["Intent Brief<br/>定义主意图、边界、差异化"]
    B --> C["页面开发<br/>Calculator / Examples / Guide / FAQ"]
    C --> D["结果验证<br/>公式、案例、竞品比对"]
    D --> E["UX 检查<br/>是否真的完成用户任务"]
    E --> F["内容自然化<br/>去掉模板味和 AI 味"]
    F --> G["SEO 收口<br/>Title / Description / Schema"]
    G --> H["SERP 复核<br/>Trends / SERP / 竞品 / 长尾"]
    H --> I["同步记忆库<br/>沉淀经验和后续计划"]

我现在每做一个新页面,基本都会经历下面这些动作:

1. 先想清楚这页到底解决什么问题

这一步很重要。
不是看一个词有流量,就直接做,而是先判断:

  • 这个词适不适合我的网站
  • 这页的主意图是什么
  • 和站内其他页面会不会冲突
  • 竞品已经做了什么
  • 我至少要在哪一个模块上比竞品更具体

2. 页面不是只做一个计算器

单纯输入框加结果,通常是不够的。
真正能把页面撑起来的,往往是这些模块一起配合:

  • Calculator
  • Project Examples
  • Decision Module
  • Guide Module
  • FAQ
  • Related Calculators

也就是说,页面不仅要“能算”,还要能回答用户下一步该怎么做。

3. 开发完不代表结束

这也是我后来改得最多的一点。
以前我会觉得页面能跑、结果能出来,差不多就可以了。后来发现不行。

现在开发完之后,我通常还会继续做几轮:

  • 验证公式和案例
  • 用新手视角检查体验
  • 把文案变自然
  • 收 SEO
  • 再看一遍 Google SERP 和竞品

因为很多问题,都是在“页面已经看起来差不多完成”的阶段才暴露出来的。

4. 最后一定要把经验记下来

这一点也是我后来才真正重视的。
如果每次做完一个页面,经验不沉淀,后面还是会重复踩坑。

所以我现在会把:

  • 页面意图
  • 竞品差距
  • 做过的优化
  • 下一批关键词判断

都同步回记忆库。这样后面再做新页面时,整个流程就会越来越稳,而不是每次都从头想一遍。

下面是skill流程,使用skill来进行具体页面的开发,通过!来触发相应的skill

flowchart TD
    A["关键词规划<br/>!keywordplan"] --> B["页面方案设计<br/>!calc"]
    B --> C["结果验证<br/>!verify"]
    C --> D["用户视角检查<br/>!ux"]
    D --> E["内容自然化<br/>!humanize"]
    E --> F["SEO 收口<br/>!seo"]
    F --> G["SERP / 竞品复核<br/>!serpseo"]
    G --> H["同步记忆库<br/>!update"]

1. !keywordplan:先决定这个词值不值得做

这一步不是正式开发页面,而是先判断方向。
我会先看:

  • 这个词适不适合网站定位
  • 有没有真实需求
  • 是继续深挖现有 cluster,还是扩新方向
  • SERP 里有没有机会
  • 这个词更像主线工程词,还是辅助型工具词

这一步做完之后,我才会把词正式放进待开发池。
也就是说,AI 在这里做的不是“直接生成页面”,而是先帮我做筛选。

2. !calc:先把页面意图和边界设计清楚

这是最重要的一步,主要是根据关键词把页面写出来。
我不会直接让 AI 上来就写页面,而是先让它把一份页面方案梳理出来,里面会包括:

  • 这个页面的 Primary Intent
  • Secondary Intent
  • Scope In / Scope Out
  • 跟站内哪些页面可能冲突
  • 竞品做了什么
  • 我们准备在哪个模块上比竞品更具体

这一步出来的其实不是代码,而是一张“施工图”。
后面开发、验证、优化,基本都围绕它展开。

3. !verify:验证结果到底对不对

这一步主要是做硬验证。
因为计算器页面和普通内容页不一样,最怕的就是公式错、案例错、结果逻辑不一致。

所以我会让 AI 帮我做这些事:

  • 拿真实案例去测
  • 对比竞品结果
  • 检查公式来源
  • 检查页面承诺和实际输出是不是一致

这一步的作用很直接:
先确保它是对的,再谈好不好。

4. !ux:站在用户角度看,这页到底能不能用

验证通过之后,我不会马上结束。
因为一个页面就算结果是对的,也不代表用户真的好用。

这一步我会从“新手视角”去看:

  • 输入是不是容易理解
  • 结果优先级对不对
  • 页面有没有真正完成用户任务
  • 差异化模块用户能不能感知到

这一步经常会发现很多不是“代码错误”,而是“表达错误”的问题。

5. !humanize:把页面写得更像人写的

这个步骤主要是用来降低AI感,不使用AI高频词汇

所以这一步主要做的是:

  • 去掉明显的 AI 味
  • 把表达写得更自然
  • 但又不能把 Intent Brief、SEO 和差异化破坏掉

不过对于工具站,这一步重要性很低;但对内容站而言,这一步很重要,需要去收集AI高频常用词汇,做一个本地数据库,对比用。

6. !seo:最后把搜索表达收紧

到这一步,页面本身已经差不多成熟了。
然后我再让 AI 去处理更偏搜索层的东西,比如:

  • Title
  • Meta Description
  • Schema
  • 关键词表达顺序

这一步主要是常规性SEO,检查页面的错误,漏洞之类的,比如标题长度,描述长度等。

7. !serpseo:最后再回到 Google 和竞品

这是最后一轮复核。
我会让 AI 再看一遍:

  • Google Trends
  • Google SERP
  • 竞品页面
  • 长尾问题
  • PAA / related searches

目的不是推翻页面,而是确认:

  • 这页有没有偏
  • 还有没有一两个值得补的点
  • 是否真的比竞品更具体

这一步主要是为了获取更多流量,更针对性的去做SEO优化。

8. !update:把经验同步回记忆库

如果每次做完一个页面就结束,后面还是会重复踩坑。

所以我会把这次页面的状态同步回记忆库,包括:

  • 更新候选池进度
  • 当前全站进度
  • cluster 状态
  • 下一步开发顺序
  • 新研究出来的候选词

这样 AI 下次再参与时,就不是“从零开始”,而是在一个持续累积的上下文里工作。

这套流程真正解决了什么

这套流程本质上是把 AI 放进了一条比较严格的生产链里。
每一步都有自己的职责,也有自己的检查点。这样最后做出来的页面,至少是可控的,而不是一堆看起来完整、其实质量不稳定的半成品。

我踩过的坑

  1. 以为能做出来,就等于值得做
  • 能生成页面,不代表这个词值得投入
  • 搜索量、站点定位、页面边界,都要先想清楚
  1. 太容易把页面做泛
  • 什么都想覆盖一点
  • 最后页面看起来很全,但主任务反而不清楚
  1. AI 很容易制造“完整错觉”
  • 标题、FAQ、说明、公式都有了
  • 但真正的问题是没有重点、没有差异化
  1. 太早进入 SEO 视角
  • 页面还没定型,就开始纠结 title、关键词、FAQ
  • 容易把页面做成“给搜索引擎看”的,而不是给用户用的
  1. 不沉淀经验,后面一定重复踩坑
  • 不记录判断、状态、竞品结论
  • 后面做新页面时,还是会掉回老问题里
  1. AI 不能替你做选择
  • 它很适合执行和协作
  • 但方向、边界、优先级这些关键判断,最后还是得自己定

最后的展望

image.png

这个项目从 1 月 14 号提交到 Google Search Console,到现在大概也就两个半月。
如果只看数据,它当然还远远不算什么大项目,流量也不大,广告收益现在每天甚至只有几分钱。

但对我来说,做到这个阶段说实话,挺满意。 至少:方向对了。

image.png

后面我还是会继续寻找关键词,继续写页面,学学怎么搞外链,怎么推广,一边优化、一边观察数据,一边把这套流程继续打磨下去。

我最近闲暇也在研究:怎么继续用 AI 做一个漫画网站。

这是我工具站的地址: projectcalcs.com

欢迎交流。