全自动 SEO 内容新鲜度引擎。监听关键词研究报告目录,自动生成落地页和博客文章,运行 SEO 审计后推送更新。适用于任何需要定期更新内容以保持 Google 排名新鲜度的网站项目。支持 Next.js / Astro / Nuxt 等主流框架。
npx skills add https://github.com/kennyzir/7deer_skills --skill seo-autopilot
> 把关键词研究报告变成已部署的 SEO 页面,零人工干预。
当你有一个外部 Agent(如 OpenClaw)定期生成关键词研究报告并推送到 Git 仓库时,这个 skill 会:
时间节省: 从报告到页面上线,传统方式需要 2-4 小时/页,自动化后 < 5 分钟/页。
┌─────────────────────────────────────────┐
│ 外部 Agent(OpenClaw 等) │
│ 生成关键词报告 → git push │
└──────────────┬──────────────────────────┘
│ (git push to main)
▼
┌─────────────────────────────────────────┐
│ IDE(Kiro / Claude Code / Cursor) │
│ git.autofetch: true (每 2 分钟) │
│ git.pullOnFetch: true │
│ → 自动拉取新 commit │
└──────────────┬──────────────────────────┘
│ (检测到新 .md 文件)
▼
┌─────────────────────────────────────────┐
│ fileCreated Hook 触发 │
│ Pattern: {report_dir}/*.md │
│ → 启动 Agent 执行流水线 │
└──────────────┬──────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ Agent 执行 8 阶段流水线 │
│ 解析 → 去重 → 决策 → 生成 → 审计 │
│ → git commit + push │
└──────────────┬──────────────────────────┘
│ (git push to main)
▼
┌─────────────────────────────────────────┐
│ 自动部署(Vercel / Cloudflare / etc) │
│ 新页面上线生产环境 │
└─────────────────────────────────────────┘
| 依赖 | 说明 | 必须? |
|------|------|--------|
| Git 仓库 | GitHub / GitLab / Bitbucket | ✅ |
| 外部关键词报告源 | 定期推送 .md 报告到仓库的 Agent 或脚本 | ✅ |
| Web 框架 | Next.js / Astro / Nuxt / 静态站 | ✅ |
| 自动部署 | Vercel / Cloudflare Pages / Netlify | ✅ |
| IDE 保持打开 | Kiro / Claude Code / Cursor(需要运行 hook) | ✅ |
# 方式 1: 只复制这个 skill
cp -r 7deer_skills/seo-autopilot .agent/skills/seo-autopilot
# 方式 2: 克隆整个技能库
git clone https://github.com/kennyzir/7deer_skills.git .agent/skills
安装后,对 Agent 说:
启动 SEO autopilot,报告目录是 keyword-research/
或英文:
Set up SEO autopilot, report directory is keyword-research/
Agent 会自动执行 7 步 setup 流程。
Agent 需要识别:
创建或更新 .vscode/settings.json:
{
"git.autofetch": true,
"git.autofetchPeriod": 120,
"git.autoStash": true,
"git.pullOnFetch": true
}
> ⚠️ 不要覆盖已有设置,只合并这些 key。
创建 Kiro hook 监听报告目录:
{
"name": "SEO Autopilot",
"version": "1.0.0",
"when": {
"type": "fileCreated",
"patterns": ["{report_dir}/*.md"]
},
"then": {
"type": "askAgent",
"prompt": "新的关键词研究报告已检测到。按照 #seo-autopilot steering 执行完整流水线:解析报告 → 去重 → 决策页面类型 → 生成页面(最多3个) → 注册 navigation + sitemap → SEO 审计 → git commit and push → 更新 processed.json。"
}
}
创建 .kiro/steering/seo-autopilot.md,包含完整的 8 阶段处理指令(见 references/steering-template.md)。
创建 {report_dir}/processed.json:
{
"processed": []
}
.vscode/settings.json 已配置 autofetch + pullOnFetch用现有报告执行一次完整流水线,验证所有环节正常。
读取 processed.json → 扫描报告目录 → 过滤未处理的报告
提取 Top 关键词、搜索意图、竞争度、推荐页面类型
对比现有页面(navigation + blog),跳过已覆盖的关键词
按项目现有模式生成页面代码(metadata、JSON-LD、FAQ、内链、CTA)
添加到 navigation 系统 + sitemap
git add → commit → push
更新 processed.json,记录已处理报告和生成的页面
报告为 Markdown 格式,需包含以下内容之一:
Agent 会自适应解析不同格式的报告。
{
"processed": [
{
"report": "2026-04-10-keyword-research.md",
"processedAt": "2026-04-10",
"pagesCreated": [
{ "type": "landing", "slug": "/personalized-tarot", "keyword": "personalized tarot card generator" }
],
"skipped": [
{ "keyword": "oracle card generator AI", "reason": "Already covered by /ai-oracle-card-generator" }
]
}
]
}
| 框架 | 页面位置 | 博客位置 | Sitemap |
|------|---------|---------|---------|
| Next.js (App Router) | app/{slug}/page.tsx | lib/blog.ts 或 content/blog/*.mdx | app/sitemap.ts |
| Next.js (Pages Router) | pages/{slug}.tsx | pages/blog/[slug].tsx | next-sitemap.config.js |
| Astro | src/pages/{slug}.astro | src/content/blog/*.md | astro.config.mjs |
| Nuxt | pages/{slug}.vue | content/blog/*.md | nuxt.config.ts |
| 静态 HTML | {slug}/index.html | blog/{slug}/index.html | sitemap.xml |
| 问题 | 解决方案 |
|------|---------|
| Hook 没触发 | 检查 filePatterns 是否匹配报告文件名 |
| 自动 pull 不工作 | 重启 IDE,确认 settings.json 已加载 |
| 页面风格不匹配 | 更新 steering 文件中的示例页面引用 |
| 重复生成页面 | 检查 processed.json 是否正确更新 |
| git push 失败 | 检查 git 凭证 / SSH key 配置 |
| Build 失败 | 确保引用的 mock 数据 / 组件在远端存在 |
CardMuse.com 使用此 skill 实现了:
MIT
Take kennyzir/seo-autopilot from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.