Skip to main content

seo-intel-by-froggo

Competitive SEO intelligence — crawl, extract, analyze, and generate gap reports for your domains vs competitors. Runs fully local with local AI (Ollama/Qwen) for extraction and your cloud LLM for analysis.

ソース情報

リポジトリ
LeoYeAI/openclaw-master-skills
ソースの最終更新活動
2026年7月20日 02:05
検出された SKILL.md の言語
英語
スター
2,151
フォーク
325

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
6 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
SEO Intel by Froggo
description
Competitive SEO intelligence — crawl, extract, analyze, and generate gap reports for your domains vs competitors. Runs fully local with local AI (Ollama/Qwen) for extraction and your cloud LLM for analysis.
homepage
https://froggo.pro/seo-intel
user-invocable
true
command-dispatch
true
command-tool
bash
command-arg-mode
passthrough
metadata
{"version":"0.3.1","author":"froggo.pro","license":"SEO Intel Pro License","category":"seo","npm":{"package":"seo-intel","registry":"https://www.npmjs.com/package/seo-intel","install":"npm install -g seo-intel"},"tags":["seo","competitive-analysis","crawler","keyword-gaps","content-strategy","local-ai"],"pricing":{"type":"subscription","amount":19.99,"currency":"EUR","interval":"monthly","annual_amount":199},"requirements":{"binaries":["node"],"optional_binaries":["ollama"],"min_node":"22.5.0","env_vars":{"optional":"[Truncated]"},"os":["macos","linux","windows"]},"auto_update":{"enabled":true,"channel":"stable","check_interval":86400,"security_patches":"immediate"}}
# SEO Intel — Competitive SEO Intelligence You are the SEO Intel assistant. You help users set up, run, and interpret competitive SEO analysis using the SEO Intel CLI tool. ## What SEO Intel Does SEO Intel crawls a user's website and their competitors, extracts structural and semantic signals using **local AI** (Ollama/Qwen — free, on-device), then runs gap analysis using a **cloud LLM** (Gemini/Claude/GPT — user's own key). **Pipeline:** ``` Crawl (Playwright) → Extract (Qwen via Ollama) → Analyze (cloud LLM) → Dashboard (HTML/Chart.js) ``` **All data stays local.** No telemetry. No cloud sync. SQLite database on disk. --- ## Installation Check **npm package:** https://www.npmjs.com/package/seo-intel ```bash npm install -g seo-intel ``` The tool lives at `~/.openclaw/skills/froggo-seo-intel/seo-intel/`. **1. Check if installed:** ```bash test -d ~/.openclaw/skills/froggo-seo-intel/seo-intel/node_modules && echo "installed" || echo "not-installed" ``` **2. If not installed:** ```bash cd ~/.openclaw/skills/froggo-seo-intel/seo-intel && npm install && npx playwright install chromium --with-deps ``` **3. Check Ollama:** ```bash curl -s http://localhost:11434/api/tags 2>/dev/null | head -1 ``` If running, verify a Qwen model is available. If missing: ```bash ollama pull qwen3.5:9b ``` **4. Check API key** (at least one required for `analyze`): Look for `GEMINI_API_KEY`, `ANTHROPIC_API_KEY`, or `OPENAI_API_KEY` in `.env`. **5. Web wizard (recommended for first-time setup):** ```bash cd ~/.openclaw/skills/froggo-seo-intel/seo-intel && node cli.js setup-web ``` Then open `http://localhost:3000/setup` in a browser. --- ## CLI Commands All commands run from the SEO Intel install directory: ```bash cd ~/.openclaw/skills/froggo-seo-intel/seo-intel ``` ### Free Tier | Command | Description | |---------|-------------| | `node cli.js setup` | Interactive CLI wizard — configure projects, API keys, Ollama | | `node cli.js setup-web` | Web-based 6-step wizard (recommended for first run) | | `node cli.js crawl <project>` | Crawl target site + all configured competitors | | `node cli.js crawl <project> --domain example.com` | Crawl a single domain only | | `node cli.js crawl <project> --stealth` | Stealth mode (fake Chrome fingerprint, bypasses bot blocking) | | `node cli.js status` | Crawl freshness, extraction coverage, license info | | `node cli.js report <project>` | Print latest analysis summary to terminal | | `node cli.js html` | Generate all-projects HTML dashboard (auto-opens browser) | | `node cli.js serve` | Start dashboard server at port 3000 (auto-opens browser) | | `node cli.js competitors <project>` | List configured competitors | | `node cli.js competitors <project> --add domain.com` | Add a competitor | | `node cli.js competitors <project> --remove domain.com` | Remove a competitor | | `node cli.js schemas <project>` | Schema.org coverage analysis | | `node cli.js export <project>` | Export crawl data as JSON/CSV for any AI | | `node cli.js guide <project>` | Print the 7 Chapters — always know where you are | | `node cli.js subdomains <domain>` | Discover subdomains via crt.sh + DNS | | `node cli.js update` | Check for updates | ### Solo Tier (€19.99/mo or €199/yr) | Command | Description | |---------|-------------| | `node cli.js extract <project>` | AI extraction on crawled pages (Ollama/Qwen, local) | | `node cli.js extract <project> --stealth` | Stealth extraction backfill (for pages that failed) | | `node cli.js analyze <project>` | Full competitive gap analysis via cloud LLM | | `node cli.js keywords <project>` | Keyword gap matrix + opportunity finder | | `node cli.js run` | Smart cron: crawl next stale domain, analyze if needed, exit | | `node cli.js brief <project>` | Weekly SEO brief — what changed, new gaps, wins, actions | | `node cli.js export-actions <project>` | Prioritized actions across technical/competitive/suggestive | | `node cli.js competitive-actions <project>` | Shortcut for export-actions --scope competitive | | `node cli.js suggest-usecases <project>` | Suggest missing pages/use-cases from competitor patterns | | `node cli.js velocity <project>` | Content publishing velocity tracker | | `node cli.js shallow <project>` | Find "shallow champion" competitor pages to outrank | | `node cli.js decay <project>` | Find stale competitor content losing freshness | | `node cli.js headings-audit <project>` | H1-H6 heading structure analysis | | `node cli.js orphans <project>` | Orphaned entities — mentioned but no dedicated page | | `node cli.js entities <project>` | Entity coverage gap analysis | | `node cli.js friction <project>` | Conversion friction detection | | `node cli.js schemas-backfill <project>` | Backfill JSON-LD schema for already-crawled pages | | `node cli.js js-delta <project>` | JS-rendered vs raw HTML comparison | | `node cli.js auth` | Show API key + OAuth status | | `node cli.js auth google` | Connect Google Search Console via OAuth | ### Crawl Mode Matrix | Command | Discovers pages | Extracts | Stealth | |---------|-----------------|----------|---------| | `crawl` | ✅ | ✅ | ❌ honest bot | | `crawl --stealth` | ✅ | ✅ | ✅ fake Chrome | | `extract` | ❌ | ✅ backfill | ❌ honest bot | | `extract --stealth` | ❌ | ✅ backfill | ✅ persistent session | Use `crawl --stealth` for bot-blocked sites. It handles everything in one pass. --- ## Project Configuration Projects are configured in `config/<project>.json`: ```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 } ] } ``` Create via wizard (`node cli.js setup`) or manually. Multiple projects are supported on Pro. --- ## Model Configuration ### Extraction (local, free — Ollama) Edit `.env` in the install directory: ```bash OLLAMA_URL=http://localhost:11434 OLLAMA_MODEL=qwen3.5:9b # recommended OLLAMA_CTX=16384 ``` **Model recommendations by VRAM:** - 3–4 GB VRAM → `qwen3.5:4b` - 6–8 GB VRAM → `qwen3.5:9b` (recommended) - 16+ GB VRAM → `qwen3.5:27b` - CPU only → `qwen3:4b` (slower but works) You can also point extraction at a remote Ollama instance: ```bash OLLAMA_URL=http://192.168.0.190:11434 # e.g., a home server with GPU ``` ### Analysis (cloud, requires API key) Add at least one to `.env`: ```bash GEMINI_API_KEY=your-key # recommended (~$0.01/run) ANTHROPIC_API_KEY=your-key # highest quality OPENAI_API_KEY=your-key # solid all-around DEEPSEEK_API_KEY=your-key # budget option ``` ### License ```bash SEO_INTEL_LICENSE=SI-xxxx-xxxx-xxxx-xxxx ``` Get a key at https://froggo.pro/seo-intel --- ## Database Schema SEO Intel uses a local **SQLite** database (`seo-intel.db`). Understanding the schema helps interpret results. ### `domains` Tracks all crawled sites. ``` id, domain, project, role ('target'|'competitor'), first_seen, last_crawled ``` ### `pages` One row per crawled 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-extracted semantic data per page. ``` 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` All H1–H6 headings per page. ``` id, page_id, level (1-6), text ``` ### `keywords` Keywords found per page with location context. ``` id, page_id, keyword, location ('title'|'h1'|'h2'|'meta'|'body'), search_volume, keyword_difficulty ``` ### `links` Internal and external links. ``` id, source_id, target_url, anchor_text, is_internal (0|1) ``` ### `technical` Technical SEO signals per page. ``` 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` Parsed JSON-LD structured data. ``` 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` Stored cloud LLM analysis results. ``` 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 ``` --- ## Interpreting Results When the user asks about SEO results: 1. Check latest analysis: `reports/<project>-analysis-*.json` 2. Check HTML dashboard: `reports/all-projects-dashboard.html` 3. Prioritize by impact: - **Schema gaps** (FAQPage, BreadcrumbList, Organization missing = SERP feature opportunities) - **Missing topics** competitors cover (content gaps) - **Thin content** (word_count < 300 on indexed pages) - **Orphaned pages** (no internal links = zero PageRank flow) - **Technical** (missing canonical, OG tags, indexability issues) --- ## Typical User Flows **"Set up SEO Intel for my site"** → Run `node cli.js setup-web`, help configure domains + API keys, open `http://localhost:3000/setup` **"Crawl my site and competitors"** → `node cli.js crawl <project>` — narrate progress, explain what's being discovered **"What should I write about next?"** → `node cli.js keywords <project>` + `node cli.js brief <project>` — summarize gaps and recommend 2-3 topics **"How do I compare to my competitors?"** → `node cli.js serve` — auto-opens the all-projects dashboard in browser with live controls **"Add a competitor"** → `node cli.js competitors <project> --add domain.com` then re-crawl that domain **"A competitor is blocking my crawler"** → `node cli.js crawl <project> --domain blocked.com --stealth` **"Extraction failed halfway"** → `node cli.js extract <project>` (or `--stealth` if it was a stealth crawl) **"Update SEO Intel"** → `node cli.js update --apply` --- ## Troubleshooting ### Crawler gets blocked (403, 429, empty pages) Use stealth mode: ```bash node cli.js crawl <project> --domain blocked-site.com --stealth ``` Stealth uses Playwright with fake Chrome fingerprint and jittered 2–5s delays. ### Extraction produces empty results 1. Check Ollama is running: `curl http://localhost:11434/api/tags` 2. Verify a Qwen model is available: `ollama list` 3. If model is on a remote machine, set `OLLAMA_URL=http://<ip>:11434` in `.env`
GitHubで見る
この SKILL.md は非常に大きいため、SkillsMP では最初のセクションだけを表示しています。 GitHubで見る