Integration
Seo Operator
AI-powered SEO operations plugin for OpenClaw with technical SEO auditing, website crawling, WordPress integration, approval workflows, and verified SEO actions.
Install
npm install
npm
README
# OpenClaw SEO Operator
An OpenClaw tool plugin that turns an OpenClaw agent into an SEO operations agent: crawling,
technical/on-page audits, WordPress + Rank Math, Google Search Console, competitor/backlink/local
SEO intelligence, a unified status overview with transparent priority scoring, report generation,
change detection, and a safety-gated recommend -> approve -> execute -> verify -> rollback action
engine — across one or many isolated projects/sites in a single installation.
**This is Part 5 of 5**: production hardening. See [PRODUCTION_READINESS.md](docs/PRODUCTION_READINESS.md)
for the honest, current verdict on what's ready to run against a real site and what isn't.
## Documentation
| | |
|---|---|
| [INSTALLATION.md](docs/INSTALLATION.md) | Build, load, verify |
| [QUICKSTART.md](docs/QUICKSTART.md) | Shortest path from zero to a fix executed |
| [ONBOARDING.md](docs/ONBOARDING.md) | The full guided setup flow |
| [CONFIGURATION.md](docs/CONFIGURATION.md) | Config shape, credentials, single vs. multi-site |
| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | Layer-by-layer code map |
| [SECURITY.md](docs/SECURITY.md) | SSRF protection, credential handling, injection/traversal review |
| [AGENT_SECURITY.md](docs/AGENT_SECURITY.md) | Treating crawled content as untrusted input |
| [MULTI_SITE.md](docs/MULTI_SITE.md) | Project/credential/data isolation, verified |
| [PRIORITY_ENGINE.md](docs/PRIORITY_ENGINE.md) | The transparent scoring formula |
| [CHANGE_DETECTION.md](docs/CHANGE_DETECTION.md) | Comparing two audits without false alarms |
| [WORDPRESS_SETUP.md](docs/WORDPRESS_SETUP.md) | Application Password setup, what's actually writable |
| [GSC_SETUP.md](docs/GSC_SETUP.md) | OAuth setup |
| [CRAWLER_CONFIGURATION.md](docs/CRAWLER_CONFIGURATION.md) | Crawl parameters and what's respected automatically |
| [AUDIT_RULES.md](docs/AUDIT_RULES.md) | Every rule, by category |
| [ACTION_APPROVAL_MODEL.md](docs/ACTION_APPROVAL_MODEL.md) | The full DETECT..ROLLBACK lifecycle |
| [BACKLINKS.md](docs/BACKLINKS.md) | What backlink discovery actually does (and doesn't) |
| [LOCAL_SEO.md](docs/LOCAL_SEO.md) | NAP consistency, local audit, what's NOT verified |
| [PLUGIN_UX.md](docs/PLUGIN_UX.md) | Human-friendly error messages, before/after |
| [SCHEDULING.md](docs/SCHEDULING.md) | Why this plugin can't self-schedule, and what to do instead |
| [PERFORMANCE.md](docs/PERFORMANCE.md) | What's bounded, the one real bottleneck, why it's untouched |
| [TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md) | Common errors and what they mean |
| [DEVELOPMENT.md](docs/DEVELOPMENT.md) | Conventions for extending this plugin |
| [TESTING.md](docs/TESTING.md) | How the suite is organized, what's not covered |
| [CONTRIBUTING.md](docs/CONTRIBUTING.md) | Contribution checklist |
| [EXAMPLE_USE_CASE.md](docs/EXAMPLE_USE_CASE.md) | A full worked conversation |
| [KNOWN_LIMITATIONS.md](docs/KNOWN_LIMITATIONS.md) | The consolidated, honest gap list |
| [ROADMAP.md](docs/ROADMAP.md) | What's next, in priority order |
| [PRODUCTION_READINESS.md](docs/PRODUCTION_READINESS.md) | The verdict |
| [RELEASE_NOTES.md](RELEASE_NOTES.md) | This release |
## Architecture (short version — see [ARCHITECTURE.md](docs/ARCHITECTURE.md))
```
src/
index.ts Plugin entry point (defineToolPlugin), registers 34 tools
config/ TypeBox config schema — single-site + multi-project
domain/ Typed domain models
projects/ Multi-project scope resolution
priority/ Priority-scoring engine
safety/ Action safety classification
security/ SSRF guard, IP-range checks, credential redaction, untrusted-content fencing
errors/ Typed error hierarchy + human-friendly message mapping
logging/ Structured, redacting operation logger
storage/ Repository interface + JSON-file implementation
adapters/ HTTP fetch with SSRF validation, timeout, retry, size cap
crawler/ BFS crawler, robots.txt, sitemap, HTML extraction, link graph
audit-engine/ Rules, health score, comparison, change detection
integrations/ wordpress/ search-console/ backlinks/ local-seo/ website/
services/ Orchestration — every function takes an explicit projectId
action-engine/ Recommend -> prepare -> approve -> execute -> verify -> rollback
tools/ One thin file per model-facing tool
```
## Tools (34)
**Overview & reporting**: `seo_health`, `seo_status` (Command Center), `seo_report_generate`
**Crawl & audit**: `seo_crawl_site`, `seo_site_inspect`, `seo_audit_run`, `seo_audit_summary`,
`seo_issues_list`, `seo_issue_get`, `seo_page_info`, `seo_audit_compare`, `seo_change_detect`
**WordPress**: `wordpress_test_connection`, `wordpress_pages`, `wordpress_page_analysis`
**Search Console**: `search_console_test_connection`, `search_console_opportunities`
**Intelligence**: `competitor_add`, `competitor_list`, `competitor_analyze`, `backlinks_discover`,
`backlinks_list`, `backlinks_qualify`, `local_audit`, `content_opportunities`,
`internal_link_recommendations`
**Actions**: `action_plan_prepare`, `action_plan_list`, `action_plan_show`, `action_decide`,
`action_modify`, `action_execute`, `action_verify`, `action_rollback`
All read-only except the intelligence-tracking writes (local plugin storage only, never the live
site — `competitor_add`, `backlinks_discover`, `backlinks_qualify`, `local_audit`'s optional
upsert) and the action-engine writes, which are approval-gated by default. See
[ACTION_APPROVAL_MODEL.md](docs/ACTION_APPROVAL_MODEL.md).
## What's new in Part 5
- **Multi-project isolation** (`projects/`) — the substantial gap closed this part: every
service/tool now takes an explicit `projectId`, every stored record carries one, credentials
never fall back across projects. See [MULTI_SITE.md](docs/MULTI_SITE.md).
- **`seo_status`** — the SEO Command Center: one call for health, prioritized problems,
opportunity counts, and action status.
- **Priority Engine** (`priority/priority-engine.ts`) — documented, transparent scoring; never
predicts traffic.
- **`seo_report_generate`** — the full report (executive summary through change history) as
JSON + markdown.
- **`seo_change_detect`** — structural change detection between two audits, designed to avoid
false alarms.
- **Human-friendly errors** (`errors/human-message.ts`) — plain language plus a next step,
in place of raw error codes.
- **Untrusted-content fencing** wired into `seo_page_info` and `wordpress_page_analysis`.
- A full documentation set (this table), an honest [KNOWN_LIMITATIONS.md](docs/KNOWN_LIMITATIONS.md),
and the [PRODUCTION_READINESS.md](docs/PRODUCTION_READINESS.md) verdict.
## Build
```bash
npm install
npm run build # tsc -p tsconfig.json
npm test # vitest — 530 tests as of this release
npm run plugin:build # build, then `openclaw plugins build --entry ./dist/index.js`
npm run plugin:validate # build, then `openclaw plugins validate --entry ./dist/index.js`
```
See [INSTALLATION.md](docs/INSTALLATION.md) to load it into OpenClaw.
integration
Comments
Sign in to leave a comment