1. SEO 内容部署 Skill
SEO 内容自动部署 Skill,含内容生成、发布、索引提交、效果追踪
Prompt
---
name: KeepRule SEO 开发循环规范
description: 模块化开发、代码检查、部署触发。只要接收到 SEO 相关需求,必须按照这个流程执行:声明模块 → 修改代码 → Build 检查 → 触发部署
---
# KeepRule SEO 开发循环规范
> **核心原则**:一次一个模块,改完检查代码,触发词部署
## ⚠️ 强制执行规则(必须遵守)
### 1. 模块化开发
**开始修改前必须声明**:「本次修改属于 M[X] - [模块名称]」
每次只修改一个模块区域内的代码,不跨模块修改。
### 2. 本地 Build 检查
修改完成后执行本地 Build 检查错误:
| 修改内容 | 检查命令 |
| ------------- | ---------------------------------------------- |
| 前端 (M1-M12) | `cd frontend-nuxt && npm run build` |
| 后端 (M13) | `cd backend && go build -o buffett-api api.go` |
**说明**:
- 本地 Build 用于提前发现 TypeScript 错误、语法错误等
- 本地 Build 结果不影响发布(`prod.sh` 会在远程服务器重新 Build)
- Build 失败必须修复,避免发布后远程也失败
### 3. 部署触发词
当用户说以下词汇时,执行部署脚本:
| 用户说 | 执行命令 |
| ------------------------------------------------------------------ | -------------------- |
| 发布前端 / 部署前端 / 上线前端 | `./prod.sh frontend` |
| 发布后端 / 部署后端 / 上线后端 | `./prod.sh backend` |
| 发布 / 部署 / 上线 / 推上去 / 上生产 / 更新线上 / deploy / publish | `./prod.sh` |
**部署前提**:代码必须已 commit 并 push 到 main 分支(prod.sh 会从远程 git pull)
---
## 模块定义(13 个模块)
### 前端模块(M1-M12)
| 模块编号 | 模块名称 | 涉及文件范围 |
| -------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **M1** | 未登录首页(营销页或者官网) | `pages/index.vue`(未认证部分)、`components/marketing/` |
| **M2** | 登录后首页 | `pages/keeprule/index.vue`、笔记/交易组件 |
| **M3** | 规则模块 | `pages/rules.vue`、`pages/keeprule/rules.vue`、`components/principles/PrincipleCard.vue`、`components/principles/PrincipleGrid.vue` |
| **M4** | 原则详情 | `pages/principles/[slug].vue`、`components/principles/detail/` |
| **M5** | Chat AI | `components/chat/`、`components/layout/MobileAI.vue`、Chat 相关 API |
| **M6** | 投资大师 | `pages/master.vue`、`pages/masters/`、`components/masters/` |
| **M7** | Wiki 知识库 | `pages/wiki/`、`pages/keeprule/wiki/` |
| **M8** | 用户中心/设置 | 用户信息、偏好设置相关页面和组件 |
| **M9** | 新手引导 | `components/onboarding/` 全部组件(WelcomeModal、Guide、EmptyState 等) |
| **M10** | 布局/导航 | `components/layout/Header.vue`、`components/layout/SidePanel.vue`、`components/auth/` |
| **M11** | 关于/帮助 | `components/common/AboutModal.vue`、帮助文档相关页面 |
| **M12** | SEO/Meta | 页面 `useHead()`、结构化数据、sitemap、robots、composables/useSeoMetaTags.ts |
### 后端模块(M13)
| 模块编号 | 模块名称 | 涉及文件范围 |
| -------- | -------- | ------------------------------------------------ |
| **M13** | 后端 API | `backend/internal/`(handler、logic、model) |
---
## 开发循环流程
┌─────────────────────────────────────────────────────────────────┐ │ 1. 用户需求 │ │ ↓ │ │ 2. 声明:「本次修改属于 M[X] - [模块名称]」 │ │ ↓ │ │ 3. 修改代码(仅限该模块范围) │ │ ↓ │ │ 4. 本地 Build 检查错误 │ │ ├── 有错误 → 修复 → 重新 Build │ │ └── 无错误 → 继续 │ │ ↓ │ │ 5. commit & push 到当前分支 │ │ ↓ │ │ 6. 用户说「发布」触发词 → 合并到 main → 执行 ./prod.sh │ │ (远程服务器会重新 Build,本地 Build 只是提前检查) │ └─────────────────────────────────────────────────────────────────┘
---
## Build 检查清单
### 前端修改后(M1-M12)
在 `frontend-nuxt` 目录执行:
```bash
cd frontend-nuxt
npm run build检查项:
-
npm run build无错误 - 无 TypeScript 编译错误
- 响应式布局考虑(移动端 < 768px)
- 多语言文本使用
$t()包裹 - 路由使用
localePath()生成 - SEO 相关修改:
- 每个页面都有
useSeoMetaTags()或setSeoMeta() - canonical URL 正确
- hreflang 标签完整(5种语言)
- Open Graph 标签齐全
- JSON-LD 结构化数据正确
- 每个页面都有
后端修改后(M13)
在 backend 目录执行:
cd backend
go build -o buffett-api api.go检查项:
-
go build无错误 - API 遵循
/api/v1/buffett/xxx前缀 - 数据库操作带 WHERE 条件
- 禁止操作:DROP、DELETE 不带条件、TRUNCATE
部署流程
前提条件
代码已提交到分支:
git add -A git commit -m "feat: xxx" git push origin <当前分支>技术主管审核后合并到 main(或直接在 main 分支操作)
部署命令
# 方式1:只部署前端(SEO 相关修改通常只需要部署前端)
./prod.sh frontend
# 方式2:只部署后端
./prod.sh backend
# 方式3:全部部署
./prod.shprod.sh 脚本说明
- 自动在远程服务器执行
git pull - 自动执行
npm install和npm run build(前端) - 自动执行
go build(后端) - 自动重启服务
- 本地 Build 结果不会被发布,只是提前检查
示例对话
示例 1:SEO Meta 标签优化
用户:「原则详情页缺少 canonical URL,需要添加」
Claude:
本次修改属于 M12 - SEO/Meta
修改文件:
pages/principles/[slug].vue[执行修改:添加 useSeoMetaTags() composable]
修改完成,执行 Build 检查...
cd frontend-nuxt && npm run build✅ Build 成功,无错误
代码已提交到
feat_260128_15分支
用户:「好的,发布前端」
Claude:
检查前提条件...
- ✅ 代码已 commit 并 push
- ✅ 已合并到 main 分支(或在 main 分支)
执行部署命令:
./prod.sh frontend部署脚本将在远程服务器执行:
git pull origin maincd frontend-nuxt && npm installnpm run build- 重启前端服务
示例 2:Sitemap 生成
用户:「Sitemap 需要支持5种语言,而不是2种」
Claude:
本次修改属于 M12 - SEO/Meta
修改文件:
scripts/generate-sitemap.cjs[执行修改:将原则页面从 2 语言改为 5 语言]
修改完成,执行 Build 检查...
cd frontend-nuxt && npm run build✅ Build 成功,无错误
重新生成 sitemap...
node scripts/generate-sitemap.cjs✅ Sitemap 生成成功!
- 总计: 105 URLs(从 63 增加到 105)
- 原则页面: 70 URLs(14 × 5 语言)
代码已提交并推送
注意事项
1. 跨模块需求
如果用户需求涉及多个模块,先拆分任务,按顺序逐个模块处理。
示例:
- 需求:「首页和原则详情页都要添加结构化数据」
- 拆分:
- M1 - 未登录首页:添加 Organization Schema
- M4 - 原则详情:添加 Article Schema
2. 本地 vs 远程 Build
| 阶段 | 目的 | 位置 | 结果影响 |
|---|---|---|---|
| 本地 Build | 提前检查错误,避免发布失败 | 本地开发机 | 不影响线上,仅检查 |
| 远程 Build | 生成生产环境代码并部署 | 生产服务器 | 直接影响线上 |
3. SEO 专项注意事项
M12 - SEO/Meta 模块特殊规则
- Sitemap 生成:修改后必须运行
node scripts/generate-sitemap.cjs - 5 语言支持:所有 SEO 元素都要支持 en, zh, es, fr, ar
- hreflang 标签:每个页面都要有 6 个标签(5 语言 + x-default)
- JSON-LD:使用
useStructuredData()composable - Meta 标签:统一使用
useSeoMetaTags()composable
常见 SEO 修改类型
| 修改类型 | 影响模块 | Build 检查重点 |
|---|---|---|
| Meta 标签 | M12 | 所有页面都有 canonical + hreflang |
| 结构化数据 | M12 | JSON-LD 格式正确,通过 Google 测试工具 |
| Sitemap | M12 | 生成后检查 URL 数量和格式 |
| 路由重构 | 多模块 | 所有 localePath() 调用都更新 |
| 图片优化 | M1 | LCP 图片无 lazy loading,有 fetchpriority |
| 多语言支持 | 所有模块 | $t() 和 localePath() 正确使用 |
4. 部署决策
直接部署(适用于):
- ✅ 紧急 SEO 修复(404、死链接等)
- ✅ Meta 标签补全
- ✅ Sitemap 更新
- ✅ 小型样式调整
推送让技术主管部署(适用于):
- ⚠️ 大规模路由重构
- ⚠️ 数据库结构变更
- ⚠️ 新功能上线
- ⚠️ 涉及多个模块的复杂改动
判断原则:
- 改动文件 < 5 个 → 可直接部署
- 改动文件 ≥ 5 个 → 推送审核
- 涉及后端 API 变更 → 推送审核
- 纯 SEO 配置(Meta/Sitemap) → 可直接部署
检查清单总结
修改前
- 声明模块:「本次修改属于 M[X] - [模块名称]」
- 确认在正确的 git 分支上(feat_yymmdd_hh)
修改中
- 只修改该模块范围内的代码
- 遵循项目规范(多语言、响应式、API 前缀等)
修改后
- 执行本地 Build 检查(前端或后端)
- Build 无错误
- SEO 修改:运行生成脚本(如 sitemap)
- commit 并 push 到当前分支
部署前
- 代码已合并到 main 分支(或在 main 分支)
- 确认是否需要技术主管审核
- 等待用户说出触发词(发布/部署/上线等)
部署时
- 执行正确的部署命令(
./prod.sh frontend或./prod.sh backend或./prod.sh) - 等待远程 Build 完成
- 验证线上效果
快速参考
触发词速查表
| 用户说 | 执行命令 |
|---|---|
| 发布前端 | ./prod.sh frontend |
| 发布后端 | ./prod.sh backend |
| 发布 / 部署 / 上线 | ./prod.sh |
| 推上去 / 上生产 | ./prod.sh |
| 更新线上 / deploy | ./prod.sh |
Build 命令速查表
| 项目类型 | 目录 | 命令 |
|---|---|---|
| 前端 | frontend-nuxt |
npm run build |
| 后端 | backend |
go build -o buffett-api api.go |
模块速查表
| 模块 | 名称 | 关键词 |
|---|---|---|
| M1 | 未登录首页 | 营销页、官网、Landing Page |
| M4 | 原则详情 | /principles/[slug] |
| M6 | 投资大师 | /masters |
| M12 | SEO/Meta | Sitemap、Meta 标签、结构化数据 |
| M13 | 后端 API | API、数据库、Handler、Logic |
常见问题
Q: Build 失败怎么办?
A: 查看错误信息,常见问题:
- TypeScript 类型错误 → 修复类型定义
- 导入路径错误 → 检查 import 路径
- 语法错误 → 修复语法
- 修复后重新 Build
Q: 需要修改多个模块怎么办?
A: 按顺序逐个模块处理:
- 处理模块 A → Build 检查 → commit
- 处理模块 B → Build 检查 → commit
- 全部完成后,用户说「发布」→ 一次性部署
Q: 本地 Build 通过,远程 Build 失败?
A: 可能原因:
- 依赖版本不一致 → 检查 package.json 和 package-lock.json
- 环境变量缺失 → 检查 .env 配置
- 网络问题导致依赖安装失败 → 重试部署
Q: SEO 修改需要重启服务吗?
A:
- 前端 SEO:需要重新 Build,
prod.sh frontend会自动处理 - Sitemap 更新:重新生成后部署即可,无需重启
- Meta 标签修改:需要重新 Build
- 结构化数据:需要重新 Build
结束语
遵循此规范可以确保:
- ✅ 代码模块化,易于维护
- ✅ 提前发现错误,减少线上问题
- ✅ 部署流程标准化,避免手误
- ✅ SEO 修改规范化,保证质量
记住核心流程:声明模块 → 修改代码 → Build 检查 → 触发部署