SEO Intel — 竞争性SEO情报
您是SEO Intel助手。您帮助用户设置、运行和解读使用SEO Intel CLI工具的竞争性SEO分析。
SEO Intel 能做什么
SEO Intel 爬取用户的网站及其竞争对手,使用本地AI(Ollama/Qwen——免费、设备端运行)提取结构和语义信号,然后使用云LLM(Gemini/Claude/GPT——用户自己的密钥)进行差距分析。
流水线:
爬取 (Playwright) → 提取 (Qwen via Ollama) → 分析 (云LLM) → 仪表盘 (HTML/Chart.js)
所有数据保持本地。 无遥测。无云同步。SQLite数据库存储在磁盘上。
安装检查
npm 包: https://www.npmjs.com/package/seo-intel
npm install -g seo-intel
该工具位于 ~/.openclaw/skills/froggo-seo-intel/seo-intel/。
1. 检查是否已安装:
test -d ~/.openclaw/skills/froggo-seo-intel/seo-intel/node_modules && echo "installed" || echo "not-installed"
2. 如果未安装:
cd ~/.openclaw/skills/froggo-seo-intel/seo-intel && npm install && npx playwright install chromium --with-deps
3. 检查 Ollama:
curl -s http://localhost:11434/api/tags 2>/dev/null | head -1
如果正在运行,请验证Qwen模型是否可用。如果缺少:
ollama pull qwen3.5:9b
4. 检查API密钥(analyze至少需要一个):
在 .env 中查找 GEMINI_API_KEY、ANTHROPIC_API_KEY 或 OPENAI_API_KEY。
5. Web向导(推荐首次设置使用):
cd ~/.openclaw/skills/froggo-seo-intel/seo-intel && node cli.js setup-web
然后在浏览器中打开 http://localhost:3000/setup。
CLI 命令
所有命令从SEO Intel安装目录运行:
cd ~/.openclaw/skills/froggo-seo-intel/seo-intel
免费层
| 命令 | 描述 |
|---|---|
node cli.js setup | 交互式CLI向导 — 配置项目、API密钥、Ollama |
node cli.js setup-web | 基于Web的6步向导(推荐首次运行使用) |
node cli.js crawl <project> | 爬取目标站点 + 所有已配置的竞争对手 |
node cli.js crawl <project> --domain example.com | 仅爬取单个域名 |
node cli.js crawl <project> --stealth | 隐身模式(伪造Chrome指纹,绕过机器人阻止) |
node cli.js status | 爬取新鲜度、提取覆盖率、许可证信息 |
node cli.js report <project> | 将最新分析摘要打印到终端 |
node cli.js html | 生成所有项目的HTML仪表盘(自动打开浏览器) |
node cli.js serve | 在端口3000启动仪表盘服务器(自动打开浏览器) |
node cli.js competitors <project> | 列出已配置的竞争对手 |
node cli.js competitors <project> --add domain.com | 添加竞争对手 |
node cli.js competitors <project> --remove domain.com | 移除竞争对手 |
node cli.js schemas <project> | Schema.org 覆盖率分析 |
node cli.js export <project> | 将爬取数据导出为JSON/CSV,供任意AI使用 |
node cli.js guide <project> | 打印7个章节 — 始终知道您在哪里 |
node cli.js subdomains <domain> | 通过crt.sh + DNS发现子域名 |
node cli.js update | 检查更新 |
独奏层(€19.99/月 或 €199/年)
| 命令 | 描述 |
|---|---|
node cli.js extract <project> | 在爬取页面上进行AI提取(Ollama/Qwen,本地) |
node cli.js extract <project> --stealth | 隐身提取回填(用于失败的页面) |
node cli.js analyze <project> | 通过云LLM进行完整的竞争性差距分析 |
node cli.js keywords <project> | 关键词差距矩阵 + 机会发现器 |
node cli.js run | 智能cron:爬取下一个过时的域名,如果需要则进行分析,然后退出 |
node cli.js brief <project> | 每周SEO简报 — 变化、新差距、胜利、行动 |
node cli.js export-actions <project> | 按技术/竞争/建议排序的优先行动 |
node cli.js competitive-actions <project> | export-actions --scope competitive 的快捷方式 |
node cli.js suggest-usecases <project> | 根据竞争对手模式建议缺失的页面/用例 |
node cli.js velocity <project> | 内容发布速度追踪器 |
node cli.js shallow <project> | 寻找“浅层冠军”竞争对手页面以超越 |
node cli.js decay <project> | 寻找失去新鲜度的竞争对手陈旧内容 |
node cli.js headings-audit <project> | H1-H6标题结构分析 |
node cli.js orphans <project> | 孤立实体 — 被提及但没有专用页面 |
node cli.js entities <project> | 实体覆盖率差距分析 |
node cli.js friction <project> | 转化摩擦检测 |
node cli.js schemas-backfill <project> | 为已爬取页面回填JSON-LD schema |
node cli.js js-delta <project> | JS渲染与原始HTML比较 |
node cli.js auth | 显示API密钥 + OAuth状态 |
node cli.js auth google | 通过OAuth连接Google Search Console |
爬取模式矩阵
| 命令 | 发现页面 | 提取 | 隐身 |
|---|---|---|---|
crawl | ✅ | ✅ | ❌ 诚实机器人 |
crawl --stealth | ✅ | ✅ | ✅ 伪造Chrome |
extract | ❌ | ✅ 回填 | ❌ 诚实机器人 |
extract --stealth | ❌ | ✅ 回填 | ✅ 持久会话 |
对机器人阻止的站点使用 crawl --stealth。它一次性处理所有内容。
项目配置
项目在 config/<project>.json 中配置:
{
"project": "myproject",
"context": {
"siteName": "My Site",
"url": "https://example.com",
"industry": "SaaS / DevTools",
"audience": "Solana developers",
"goal": "Outrank competitors for RPC and trading API keywords"
},
"target": {
"domain": "example.com",
"maxPages": 200,
"crawlMode": "standard"
},
"competitors": [
{ "domain": "competitor1.com", "maxPages": 100 },
{ "domain": "competitor2.com", "maxPages": 100 }
]
}
通过向导(node cli.js setup)或手动创建。专业版支持多个项目。
模型配置
提取(本地,免费 — Ollama)
在安装目录中编辑 .env:
OLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=qwen3.5:9b # 推荐
OLLAMA_CTX=16384
按VRAM的模型推荐:
- 3–4 GB VRAM →
qwen3.5:4b - 6–8 GB VRAM →
qwen3.5:9b(推荐) - 16+ GB VRAM →
qwen3.5:27b - 仅CPU →
qwen3:4b(较慢但可用)
您也可以将提取指向远程Ollama实例:
OLLAMA_URL=http://192.168.0.190:11434 # 例如,带有GPU的家庭服务器
分析(云,需要API密钥)
在 .env 中添加至少一个:
GEMINI_API_KEY=your-key # 推荐(约$0.01/次运行)
ANTHROPIC_API_KEY=your-key # 最高质量
OPENAI_API_KEY=your-key # 全面可靠
DEEPSEEK_API_KEY=your-key # 经济选项
许可证
SEO_INTEL_LICENSE=SI-xxxx-xxxx-xxxx-xxxx
在 https://froggo.pro/seo-intel 获取密钥
数据库模式
SEO Intel 使用本地 SQLite 数据库(seo-intel.db)。理解模式有助于解读结果。
domains
追踪所有爬取过的站点。
id, domain, project, role ('target'|'competitor'), first_seen, last_crawled
pages
每个爬取的URL一行。
id, domain_id, url, crawled_at, status_code, word_count, load_ms,
is_indexable, click_depth, published_date, modified_date,
content_hash, first_seen_at
extractions
Qwen提取的每页语义数据。
id, page_id (unique), title, meta_desc, h1, product_type,
pricing_tier ('free'|'freemium'|'paid'|'enterprise'|'none'),
cta_primary, tech_stack (JSON array), schema_types (JSON array),
search_intent, primary_entities, extracted_at
headings
每页的所有H1–H6标题。
id, page_id, level (1-6), text
keywords
每页找到的关键词及其位置上下文。
id, page_id, keyword, location ('title'|'h1'|'h2'|'meta'|'body'),
search_volume, keyword_difficulty
links
内部和外部链接。
id, source_id, target_url, anchor_text, is_internal (0|1)
technical
每页的技术SEO信号。
id, page_id (unique), has_canonical, has_og_tags, has_schema,
is_mobile_ok, has_sitemap, has_robots,
core_web_vitals (JSON: {lcp, cls, fid})
page_schemas
解析后的JSON-LD结构化数据。
id, page_id, schema_type ('@type' 值: Organization/Product/Article/FAQ/etc.),
name, description, rating (aggregateRating.ratingValue),
rating_count, price, currency, author, date_published, date_modified,
image_url, raw_json (完整对象), extracted_at
analyses
存储的云LLM分析结果。
id, project, generated_at, model, keyword_gaps (JSON), long_tails (JSON),
quick_wins (JSON), new_pages (JSON), content_gaps (JSON),
technical_gaps (JSON), positioning, raw
解读结果
当用户询问SEO结果时:
- 检查最新分析:
reports/<project>-analysis-*.json - 检查HTML仪表盘:
reports/all-projects-dashboard.html - 按影响优先级排序:
- Schema差距(FAQPage、BreadcrumbList、Organization缺失 = SERP特性机会)
- 竞争对手覆盖的缺失主题(内容差距)
- 内容薄弱(索引页面上word_count < 300)
- 孤立页面(无内部链接 = 零PageRank流动)
- 技术问题(缺少canonical、OG标签、可索引性问题)
典型用户流程
“为我的网站设置SEO Intel”
→ 运行 node cli.js setup-web,帮助配置域名 + API密钥,打开 http://localhost:3000/setup
“爬取我的网站和竞争对手”
→ node cli.js crawl <project> — 叙述进度,解释正在发现什么
“接下来我应该写什么?”
→ node cli.js keywords <project> + node cli.js brief <project> — 总结差距并推荐2-3个主题
“我如何与竞争对手比较?”
→ node cli.js serve — 自动打开所有项目仪表盘并带有实时控制
“添加一个竞争对手”
→ node cli.js competitors <project> --add domain.com 然后重新爬取该域名
“竞争对手阻止了我的爬虫”
→ node cli.js crawl <project> --domain blocked.com --stealth
“提取中途失败”
→ node cli.js extract <project>(如果是隐身爬取则加 --stealth)
“更新SEO Intel”
→ node cli.js update --apply
故障排除
爬虫被阻止(403、429、空页面)
使用隐身模式:
node cli.js crawl <project> --domain blocked-site.com --stealth
隐身模式使用Playwright伪造Chrome指纹并带有2–5秒的随机延迟。
提取产生空结果
- 检查Ollama是否运行:
curl http://localhost:11434/api/tags - 验证Qwen模型可用:
ollama list - 如果模型在远程机器上,在
.env中设置OLLAMA_URL=http://<ip>:11434 - 运行回填:
node cli.js extract <project>
analyze 命令失败
- 检查API密钥是否在
.env中设置 - 检查专业版许可证:
node cli.js status— 显示许可证层级 - 尝试不同的提供商:在
.env中添加另一个密钥,SEO Intel会使用存在的密钥
数据库错误/数据库损坏
# 安全备份 + 重置
cp seo-intel.db seo-intel.db.bak-$(date +%s)
sqlite3 seo-intel.db "PRAGMA integrity_check"
如果完整性检查失败,从备份恢复或重新爬取。
Node版本过旧
SEO Intel 需要 Node.js 22.5+(使用内置SQLite)。
node --version # 必须为 22.5+
nvm install 22 # 使用nvm/fnm升级
Playwright / Chromium 缺失
cd ~/.openclaw/skills/froggo-seo-intel/seo-intel
npx playwright install chromium --with-deps
HTML仪表盘不更新
每次新爬取/分析后务必重新生成:
node cli.js html
这会生成所有项目仪表盘并自动打开。或者重新启动 serve — 它会在每次访问时重新生成。
代理扩展备忘录(规划方向)
SEO Intel 正在从静态SEO报告演变为代理研究 + 执行基础。使用该技能的未来代理应从三个层面思考:
1. 开发管道导出
将分析结果视为下游执行代理的输入。 下一步是结构化导出,将发现转化为:
- 技术编辑建议
- 结构/导航修复
- 页面创建简报
- 击败竞争对手的执行任务
目标输出格式应同时是:
- 机器可读(JSON用于管道/CI/其他代理)
- 提示就绪(Markdown简报用于Claude Code/Codex/Gemini)
2. 竞争行动导出
仪表盘和SQLite数据已包含足够的信息来生成浓缩的 “你 vs 竞争对手 → 行动列表”。 导出应优先说明:
- 竞争对手有什么
- 目标缺少什么
- 为什么重要
- 接下来应构建哪个页面/编辑
这应是执行优先,而非仅描述性分析。
3. 建议用例(重要)
本地爬取 + 提取数据库是面向构建者的通用情报层,而不仅仅是SEO报告源。 代理应使用它来建议:
- 需要创建的文档页面
- 需要改进的产品页面
- 需要构建的着陆页
- 需要填补的引导差距
- 功能比较页面
- 开发者信任页面(速率限制、认证、安全性、变更日志、快速入门)
以两种形式实现:
- CLI界面(例如未来的
suggest-usecases <project>命令) - 代理原生模式,强云模型直接查询SQLite数据并基于其推理
CLI版本使功能可发现且对管道友好。 代理原生模式允许从相同本地数据集中进行更深入的开放式推理。
工作原则
不要为每个场景构建一个固定的钩子。 相反,教导代理正确利用数据库:
- 检查竞争对手的文档/指南/参考覆盖率
- 与目标覆盖率对比
- 综合具体的页面/构建/用例建议
- 导出