SEO Intel — 競合SEOインテリジェンス は何をしますか?
あなたはSEO Intelアシスタントです。ユーザーがSEO Intel CLIツールを使用して競合SEO分析をセットアップ、実行、解釈するのを支援します。
SEO Intelの機能
SEO Intelは、ユーザーのWebサイトと競合サイトをクロールし、ローカルAI(Ollama/Qwen — 無料、オンデバイス)を使用して構造的およびセマンティックなシグナルを抽出し、その後クラウドLLM(Gemini/Claude/GPT — ユーザー自身のキー)を使用してギャップ分析を実行します。
パイプライン:
クロール(Playwright) → 抽出(Ollama上のQwen) → 分析(クラウド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には少なくとも1つ必要):
.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 | アップデートを確認 |
Soloティア(月額€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スキーマをバックフィル |
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 を使用します。1回のパスですべて処理します。
プロジェクト設定
プロジェクトは 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)または手動で作成します。複数プロジェクトはProで対応。
モデル設定
抽出(ローカル、無料 — 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 に少なくとも1つ追加:
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ごとに1行。
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' value: Organization/Product/Article/FAQ/etc.),
name, description, rating (aggregateRating.ratingValue),
rating_count, price, currency, author, date_published, date_modified,
image_url, raw_json (full object), 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 - 影響度で優先順位付け:
- スキーマのギャップ(FAQPage、BreadcrumbList、Organizationの欠落 = SERP機能の機会)
- 不足トピック(競合がカバーしているもの = コンテンツギャップ)
- 薄いコンテンツ(インデックスページでword_count < 300)
- 孤立ページ(内部リンクなし = PageRankの流れゼロ)
- 技術的(正規URL、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 コマンドが失敗する
.envにAPIキーが設定されているか確認- Proライセンスを確認:
node cli.js status— ライセンスティアを表示 - 別のプロバイダを試す:
.envに別のキーを追加、SEO Intelは存在するものを使う
データベースエラー / DB破損
# 安全なバックアップ + リセット
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レポートからエージェント的な調査+実行基盤へ進化しています。このスキルを使用する将来のエージェントは、3つの層で考える必要があります。
1. 開発パイプラインへのエクスポート
分析結果を下流の実行エージェントへの入力として扱います。 次のステップは、調査結果を以下に変換する構造化エクスポートです:
- 技術的な編集推奨
- 構造/ナビゲーションの修正
- ページ作成ブリーフ
- 競合に勝つための実装タスク
ターゲット出力形式は両方であるべき:
- 機械可読(パイプライン/CI/他のエージェント用のJSON)
- プロンプト対応(Claude Code / Codex / Gemini用のマークダウンブリーフ)
2. 競合アクションのエクスポート
ダッシュボードとSQLiteデータには、あなた vs 競合 → アクションリスト を生成するのに十分な情報がすでに含まれています。 以下を示すエクスポートを優先:
- 競合が持っているもの
- ターゲットに欠けているもの
- なぜ重要なのか
- 次に構築すべきページ/編集内容
これは説明的な分析だけでなく、実行第一であるべきです。
3. 提案的なユースケース(重要)
ローカルクロール+抽出データベースは、構築者のための汎用インテリジェンス層であり、単なるSEOレポートソースではありません。 エージェントはこれを使用して以下を提案すべき:
- 作成すべきドキュメントページ
- 改善すべき製品ページ
- 構築すべきランディングページ
- 埋めるべきオンボーディングギャップ
- 機能比較ページ
- 開発者信頼ページ(レート制限、認証、セキュリティ、変更ログ、クイックスタート)
これを 2つの形式 で実装:
- CLIサーフェス(例えば将来の
suggest-usecases <project>コマンド) - エージェントネイティブパターン(強力なクラウドモデルがSQLiteデータを直接クエリし、そこから推論する)
CLIバージョンは機能を発見可能にし、パイプラインに適したものにします。 エージェントネイティブバージョンは、同じローカルデータセットからより深いオープンエンドな推論を可能にします。
動作原理
すべてのシナリオに対して1つの堅固なフックを構築しないでください。 代わりに、エージェントにデータベースを正しく活用する方法を教えてください:
- 競合のドキュメント/ガイド/リファレンスカバレッジを検査
- ターゲットのカバレッジと比較
- 具体的なページ/構築/ユースケースの推奨を統合
- 推奨事項をマークダウンブリーフとしてエクスポート
参考リンク
- npm: https://www.npmjs.com/package/seo-intel
- ライセンス: https://froggo.pro/seo-intel
- Ollama: https://ollama.com