Install
openclaw skills install seo-intelLocal SEO competitive intelligence tool. Use when the user asks about SEO analysis, competitor research, keyword gaps, content strategy, site audits, AI citability, or wants to crawl/analyze websites. Covers: setup, crawling, extraction, analysis, AEO (AI citability scoring), keyword invention, content briefs, dashboards, agentic exports, suggestive SEO, and competitive action planning. Also use when asked to generate implementation briefs from SEO data, compare sites, audit AI citability, or suggest what pages/docs/features to build based on competitor intelligence. Includes gap-intel for topic/content gap analysis between your site and competitors.
openclaw skills install seo-intelLocal SEO competitive intelligence — crawl your site + competitors, extract structure and semantic signals, then use OpenClaw to reason over the data and drive real implementation.
OpenClaw is the recommended primary experience. Standalone local Qwen handles extraction fine. But analysis, gap synthesis, and "what should I build next" reasoning needs a real model — Opus, Sonnet, GPT — and OpenClaw routes that automatically. No API keys to manage, no model config, just results.
npm install -g seo-intel
seo-intel setup # detects OpenClaw automatically, configures everything
Crawl → Extract (Ollama local) → Analyze (OpenClaw cloud model) → AEO → Export Actions → Implement
| Stage | Command | Gate | Best engine |
|---|---|---|---|
| Scan | seo-intel scan <domain> | Solo | Full pipeline (no config) |
| Crawl | seo-intel crawl <project> | Free | Playwright |
| Extract | seo-intel extract <project> | Solo | Ollama / Gemma 4 or Qwen local |
| Analyze | seo-intel analyze <project> | Solo | OpenClaw (Opus/Sonnet) |
| AEO | seo-intel aeo <project> | Solo | Pure local (no AI needed) |
| Watch | seo-intel watch <project> | Free | Pure local (diff engine) |
| Keywords | seo-intel keywords <project> | Solo | OpenClaw (Opus/Sonnet) |
| Blog Draft | seo-intel blog-draft <project> | Solo | Cloud LLM (Gemini/Claude/GPT) |
| Actions | seo-intel export-actions <project> | Free (technical) / Solo (full) | SQL heuristics |
| Dashboard | seo-intel serve | Free (limited) / Solo (full) | HTML |
Do not treat SEO Intel as just a report generator. It is a decision layer.
Agents using this skill should interpret outputs like this:
When helping a docs writer, page builder, or implementation agent:
seo-intel scan <domain> # One-shot full audit (no config needed)
seo-intel setup # First-time wizard — detects OpenClaw
seo-intel crawl <project> # Crawl target + competitors
seo-intel extract <project> # Local AI extraction (Ollama)
seo-intel analyze <project> # Strategic gap analysis → Intelligence Ledger
seo-intel aeo <project> # AI Citability Audit — score pages for AI citation
seo-intel keywords <project> # Keyword Inventor — traditional + AI/agent queries
seo-intel brief <project> # Generate content briefs for new pages
seo-intel gap-intel <project> # Topic/content gap analysis vs competitors (Solo)
seo-intel watch <project> # Site health monitor — diff between crawl runs
seo-intel blog-draft <project> # Generate AEO-optimised blog post draft (Solo)
seo-intel html <project> # Generate dashboard
seo-intel serve # Web dashboard at localhost:3000
seo-intel status # Data freshness + summary
seo-intel run # Full pipeline: crawl → extract → analyze → dashboard
seo-intel guide # Interactive chapter-based walkthrough
seo-intel export <project> # Raw data export (JSON/CSV)
Zero-config audit pipeline. Just pass a domain — no project setup, no competitor config needed.
seo-intel scan carbium.io # Full pipeline with AI-enriched export
seo-intel scan carbium.io --no-ai # Deterministic export only (no LLM enrichment)
seo-intel scan carbium.io --pages 50 # Limit crawl to 50 pages
seo-intel scan carbium.io --model claude # Use Claude instead of Gemini
seo-intel scan carbium.io --no-stealth # Disable stealth browser mode
Pipeline: crawl (stealth) → extract (Ollama) → analyze (Gemini/Claude) → AI-enriched markdown export.
Output: reports/scan-<domain>-<date>.md — full report with filled tables, instruction blocks, and AI action plan.
Dashboard export: The web dashboard (seo-intel serve) has per-card download buttons (MD/JSON/CSV) and profile-based export via /api/export/download.
Single unified export — everything actionable in one file. Sections: Technical Scorecard, Site Watch, Technical Gaps, Quick Wins, Keyword Gaps, Long-tails, New Pages, Content Gaps, Positioning, AI Citability, Internal Links, Schema Types, Keyword Ideas.
Deterministic fills: Empty table columns are now auto-filled from DB data (long-tail parents, content gap suggestions, keyword potential, page rationale). Instruction blocks between sections explain how to use each data set.
AI Smart Export: Toggle in dashboard opens a popup with swarm animation + progress bar. Gemini enriches the report: fills remaining gaps, scores priorities, adds a top-10 AI Action Plan. Non-blocking (async spawn).
Formats: Markdown, JSON, CSV, ZIP. API: /api/export/download?project=<name>&format=<md|json|csv|zip>&ai=true
Per-card exports (MD/JSON/CSV) on individual dashboard cards still work for granular downloads.
Use this section when an isolated agent needs the whole toolbox in one place.
seo-intel scan <domain> # One-shot full audit (no config needed)
seo-intel setup # First-time wizard — detects OpenClaw
seo-intel guide # Interactive chapter-based walkthrough
seo-intel status # Data freshness + system summary
seo-intel serve # Web dashboard at localhost:3000
seo-intel html <project> # Generate dashboard HTML
seo-intel run <project> # Full pipeline: crawl → extract → analyze → dashboard
seo-intel export <project> # Raw data export (JSON/CSV)
seo-intel crawl <project> # Crawl target + competitors
seo-intel extract <project> # Local AI extraction (Ollama)
seo-intel analyze <project> # Strategic competitive analysis
seo-intel aeo <project> # AI citability audit
seo-intel watch <project> # Site health monitor — diff between crawl runs
seo-intel keywords <project> # Traditional + AI/agent keyword discovery
seo-intel brief <project> # Content brief generation
seo-intel blog-draft <project> # AEO-optimised blog post draft
seo-intel gap-intel <project> # Topic/content gap analysis vs competitors
seo-intel export-actions <project> # Action export (technical by default / full in Solo)
seo-intel export-actions <project> --scope technical # Technical fixes from crawl data
seo-intel export-actions <project> --scope all # Combined action export
seo-intel competitive-actions <project> # Competitor-backed action list
seo-intel suggest-usecases <project> # Suggest missing pages/docs/features
seo-intel schemas <project> # Schema coverage audit
seo-intel headings-audit <project> # H1-H6 structure analysis
seo-intel orphans <project> # Orphan page/entity detection
seo-intel entities <project> # Entity/topic mapping
seo-intel friction <project> # Intent/CTA friction detection
seo-intel velocity <project> # Content publishing velocity
seo-intel decay <project> # Content freshness / decay detection
seo-intel js-delta <project> # JS-rendered vs raw HTML changes
seo-intel shallow <project> # Thin/shallow content opportunity scan
seo-intel templates <project> # URL pattern / content type mapping
seo-intel competitors <project> # List competitors
seo-intel competitors <project> --add rival.com # Add competitor
seo-intel competitors <project> --remove rival.com# Remove competitor
seo-intel subdomains <domain> # Discover subdomains
seo-intel aeo <project> # AI Citability Audit (0-100 per page, 6 signals)
seo-intel keywords <project> # Keyword Inventor (traditional + Perplexity + agent queries)
seo-intel brief <project> # Content brief generation for gap pages
seo-intel templates <project> # URL pattern analysis and content type mapping
seo-intel entities <project> # Entity extraction and topic mapping (Ollama)
seo-intel schemas <project> # Schema.org markup audit
seo-intel headings-audit <project> # H1-H6 structure analysis
seo-intel orphans <project> # Find orphan pages (no internal links)
seo-intel decay <project> # Content freshness and decay detection
seo-intel friction <project> # UX friction and conversion blocker detection (Ollama)
seo-intel velocity <project> # Content publishing velocity tracking
seo-intel js-delta <project> # JavaScript dependency change detection
seo-intel shallow <project> # Quick technical audit (no full crawl needed)
seo-intel competitors <project> # Manage competitor list
seo-intel subdomains <domain> # Subdomain discovery
seo-intel gap-intel <project> # Topic gap analysis vs competitor domains (Solo)
seo-intel watch <project> # Site health monitor — diff between crawl runs (Solo)
seo-intel blog-draft <project> # AEO-optimised blog post draft (Solo)
Tracks crawl-to-crawl changes and computes a site health score (0-100) from page errors, missing titles, and missing H1s. Site Watch is available on the free tier and auto-runs after every crawl.
seo-intel watch <project> # Brief health report
seo-intel watch <project> --format json # Structured JSON output
How it works:
site_watch insightsrun('watch', project)Detected event types (10):
page_addedpage_removedstatus_changednew_errortitle_changedh1_changedmeta_desc_changedword_count_changedindexability_changedcontent_changedSeverity classes: critical, warning, notice
Agent use: Run watch after every crawl to detect regressions early. If the health score drops, investigate critical/warning events before spending cycles on higher-order analysis.
Generates blog post drafts from Intelligence Ledger data — keyword gaps, citability insights, and competitor patterns feed into structured markdown with frontmatter.
seo-intel blog-draft <project> # Auto-pick topic from ledger
seo-intel blog-draft <project> --topic "api security" # Specific topic
seo-intel blog-draft <project> --lang fi # Finnish
seo-intel blog-draft <project> --model claude --save # Use Claude, save to reports/
Models: gemini (default), claude, gpt, deepseek
Solo tier only.
Compares your crawled pages against competitor domains to surface topic gaps — content they cover that you don't, and depth gaps where they go deeper.
seo-intel gap-intel <project> # vs all crawled competitors
seo-intel gap-intel <project> --vs helius,quicknode # specific competitors
seo-intel gap-intel <project> --type docs # filter to doc pages only
seo-intel gap-intel <project> --raw # skip LLM, raw topic matrix
seo-intel gap-intel <project> --out ./gap-report.md # write to file
Output: Prioritised gap report (High/Medium/Low buyer intent) with:
Use --out ~/clawd/projects/carbium/docs-mirror/waiting-room/gap-intel-latest.md to feed the docs pipeline automatically.
Solo tier only.
Gemma 4 e4b is now the default extraction model (replaces Qwen 3 4B).
| Model | Size | Speed | Tier |
|---|---|---|---|
gemma4:e2b | 6.7 GB | ~47 t/s | Budget |
gemma4:e4b | 8.9 GB | ~23 t/s | Balanced (default) |
gemma4:26b | ~18 GB | — | Quality |
gemma4:31b | ~20 GB | — | Power |
All Qwen models remain available. Change model via seo-intel setup or edit config/<project>.json.
Score every page for how well AI assistants (ChatGPT, Perplexity, Claude) can cite it. This is not traditional SEO — it's Answer Engine Optimization.
seo-intel aeo <project> # Full citability audit
seo-intel aeo <project> --target-only # Skip competitor scoring
seo-intel aeo <project> --save # Export .md report
6 citability signals scored per page:
AI Query Intent classification: synthesis, decision support, implementation, exploration, validation
Low-scoring pages automatically feed into the Intelligence Ledger as citability_gap insights.
Insights from analyze, keywords, and aeo accumulate across runs — they're never overwritten. The ledger uses fingerprint-based dedup: same insight found again = updated timestamp, not duplicated.
POST /api/insights/:id/status to toggle status programmaticallyThese turn crawl data into prioritized implementation briefs. The right inputs for coding agents, docs writers, or any downstream workflow.
seo-intel export-actions <project> --scope technical
seo-intel export-actions <project> --scope technical --format json
Finds: missing schemas, broken links, orphan pages, thin content, deep pages, missing H1/meta, canonical issues. Works without AI — pure crawl data.
seo-intel competitive-actions <project>
seo-intel competitive-actions <project> --vs helius.dev
seo-intel competitive-actions <project> --format json
Finds: content gaps, keyword gaps, schema coverage delta, topic authority gaps, missing trust/comparison pages. Needs extraction + analysis to have run first.
seo-intel suggest-usecases <project>
seo-intel suggest-usecases <project> --scope docs
seo-intel suggest-usecases <project> --scope product-pages
seo-intel suggest-usecases <project> --scope onboarding
Infers what pages, docs, or features should exist based on competitor patterns. Uses the local intelligence DB to reason about what's missing, not just what's broken.
seo-intel export-actions <project> --scope all --format json
seo-intel export-actions <project> --scope all --format brief
If the agent is writing docs, landing pages, comparison pages, or implementation briefs in an isolated environment, use this order:
crawl, watch, schemas, headings-audit, statusextract, entities, keywords, gap-intelcompetitive-actions, export-actions, suggest-usecases, briefaeosuggest-usecases and gap-intel overlap on the same topic → treat that as a high-confidence build targetFor automation, treat SEO Intel as the upstream decision layer, not a live database you rediscover every run.
Automation should prefer:
waiting-room/gap-intel-latest.mdreports/<project>-latest-analysis.jsonreports/<project>-docs-brief.mdAutomation should avoid depending on:
seo-intel.db queries unless the workflow is explicitly advanced/customIf timestamped files are all you have, read the newest reports/<project>-analysis-*.json and then normalize it into one stable handoff file for the downstream automation.
The main report to automate against is the analysis export:
reports/<project>-analysis-*.json
Useful keys:
new_pages = net-new page candidatescontent_gaps = topics competitors cover that you do not, or where your coverage is materially weakerkeyword_gaps = missing demand clusters or landing/doc opportunitieslong_tails = specific problem-led queries worth docs/blog coveragequick_wins = existing pages that can be improved quicklytechnical_gaps = crawl-backed fixes, usually for technical/site work rather than net-new contentOther high-value exports:
gap-intel output = competitor-backed topic and depth gapscompetitive-actions output = prioritized strategic actionsexport-actions --scope technical = technical fixes from crawl dataaeo output = weakest pages by AI citability, answer density, and claim structuresuggest-usecases output = inferred missing docs/pages/features based on competitor patternsUse the report fields like this:
new_pages → create-page queuecontent_gaps → docs/product/content gap queuekeyword_gaps → landing page, glossary, comparison, or docs opportunity queuelong_tails → problem-led docs, recipes, or blog queuequick_wins → rewrite queue for weak existing pagestechnical_gaps → engineering/site-health queueFor docs automations specifically:
gap-intel markdown if presentsuggest-usecases, content_gaps, and aeoFor recurring docs pipelines, create a stable file like:
reports/<project>-docs-brief.md
Recommended sections:
New Pages to CreateContent GapsWeak Existing PagesCompetitor ProofBlockersBest Next PickThis is the simplest way to make downstream automation reliable. The SEO Intel job does the heavy analysis once; docs/product automations consume a short, fixed-format brief instead of rediscovering the entire workspace each run.
When running inside OpenClaw, the full intelligence loop becomes conversational:
seo-intel aeo <project>seo-intel brief <project>seo-intel suggest-usecases <project> --format jsonseo-intel competitive-actions <project> --format jsonseo-intel export-actions <project> --scope technical --format jsonseo-intel keywords <project> --saveseo-intel brief <project>SEO Intel tells you what's wrong and what to build. Wrangler deploys it. Agents can close the loop end-to-end.
npm install -g wrangler
wrangler login # opens browser for Cloudflare OAuth
The site needs a wrangler.toml in its root:
name = "your-cloudflare-project-name"
compatibility_date = "2024-01-01"
assets = { directory = "." }
And a .wranglerignore to keep internal files off the public site:
.DS_Store
.claude/
.wrangler/
deploy.sh
wrangler.toml
cd /path/to/site && wrangler deploy
Only changed files are uploaded. Deploy is instant and global (Cloudflare edge, no staging).
Run analysis to get findings
seo-intel aeo <project> --format json
seo-intel export-actions <project> --scope technical --format json
seo-intel schemas <project> --format json
Apply fixes to static HTML based on findings:
| SEO Intel finding | What to fix in the HTML |
|---|---|
| Low schema coverage (AEO) | Add/update <script type="application/ld+json"> blocks |
| Low answer density (AEO) | Add direct-answer paragraphs after H2/H3 headings |
| Low Q&A proximity (AEO) | Add FAQ sections: <h3> question + <p> answer |
| Low freshness signal (AEO) | Add dateModified to JSON-LD, add "Updated [date]" near content |
| Schema gap vs competitors | Add the missing @type to JSON-LD |
| Missing meta tags | Add og:title, og:description, twitter:card, meta description |
| Missing hreflang | Add <link rel="alternate" hreflang="..."> pairs in <head> |
| Content/topic gap | Create new page, update sitemap.xml and llms.txt |
| Version drift | Update softwareVersion in JSON-LD, nav badge, llms.txt, skill.md |
Deploy
cd /path/to/site && wrangler deploy
Re-crawl to verify lift
seo-intel crawl <project> --scope new
seo-intel aeo <project>
After any version bump or feature release, update and redeploy. Also keep public listing surfaces aligned, not just local docs:
# Update skill.md from source
cp /path/to/seo-intel/skill/SKILL.md /path/to/site/seo-intel/skill.md
# Update version references in llms.txt and llms-ctx.txt
# (sed or agent edit — bump version number, update feature list)
# Deploy
cd /path/to/site && wrangler deploy
Files/surfaces that must stay in sync on every version bump:
skill/SKILL.mdseo-intel/skill.md — copy from skill/SKILL.mdllms.txt — version number + feature summaryllms-ctx.txt — full context, version number, feature descriptionssoftwareVersion on product pagesCHANGELOG.mdThe SQLite DB at ./seo-intel.db (in your working directory) can be queried directly for custom reasoning.
Key tables: pages, domains, headings, links, extractions, analyses, insights, citability_scores
Key pattern — what competitors have that target doesn't:
-- Topic clusters in competitor pages missing from target
SELECT DISTINCT h.text FROM headings h
JOIN pages p ON p.id = h.page_id
JOIN domains d ON d.id = p.domain_id
WHERE d.role = 'competitor' AND d.project = 'myproject' AND h.level <= 2
AND h.text NOT IN (
SELECT h2.text FROM headings h2
JOIN pages p2 ON p2.id = h2.page_id
JOIN domains d2 ON d2.id = p2.domain_id
WHERE d2.role = 'target' AND d2.project = 'myproject' AND h2.level <= 2
);
-- Pages with low AI citability that have high keyword potential
SELECT cs.url, cs.total_score, cs.weakest_signal, i.data
FROM citability_scores cs
JOIN insights i ON i.project = cs.project AND i.type = 'long_tail' AND i.status = 'active'
WHERE cs.project = 'myproject' AND cs.total_score < 35
ORDER BY cs.total_score ASC;
All commands support --format json for structured output. For deep integration, use the programmatic API:
import { run, capabilities, pipeline } from 'seo-intel/froggo';
// Unified runner — one function, all commands
const aeoResult = await run('aeo', 'myproject');
const gaps = await run('gap-intel', 'myproject', { vs: ['competitor.com'] });
const brief = await run('brief', 'myproject', { days: 7 });
// Every result: { ok, command, project, timestamp, data }
if (aeoResult.ok) {
console.log(aeoResult.data.summary.avgTargetScore);
}
// Capability introspection
capabilities.forEach(c => console.log(c.id, c.phase, c.tier));
// Dependency graph for orchestration
pipeline.graph['entities']; // → ['extract']
Available: aeo, gap-intel, watch, shallow, decay, headings-audit, orphans, entities, schemas, friction, brief, velocity, js-delta, export-actions, competitive-actions, suggest-usecases, blog-draft, insights, status
See AGENT_GUIDE.md for full orchestration patterns.
# Daily crawl (14:00 recommended)
seo-intel crawl <project>
# Weekly analysis + AEO + brief (Sunday)
seo-intel analyze <project> && seo-intel aeo <project> && seo-intel export-actions <project> --format brief
For ongoing operator summaries, treat reports/ as a folder-aware signal surface, not a one-file source. In practice, the most useful recurring artifacts are:
triage-continuous.mdtriage-YYYY-MM-DD.mdbugscan-*bugfix-*cross-debate-*Wire via OpenClaw cron for proactive briefings delivered to your chat.
| Tier | Price | Features |
|---|---|---|
| Free | €0 | Unlimited crawl, technical exports, crawl-only dashboard, Site Watch |
| Solo | €19.99/mo or €199.99/yr | Full AI pipeline, AEO, all exports, full dashboard |
Solo via ukkometa.fi/seo-intel.