Install
openclaw skills install @minh42/seomaticSEO agent for the user's own website through the SEOmatic CLI. Answers Google Search Console questions (top queries, top pages, clicks, impressions, CTR, position, period comparisons), audits any URL for classic SEO and AI-search readiness, reviews AI visibility and AI citations, researches keywords, backlinks and SERP competitors, and stages fixes the user approves before they go live in WordPress, Shopify, Webflow, Wix and other connected CMSs. Use when the user asks about their SEO, rankings, Search Console data, traffic drops, keywords close to page 1, whether ChatGPT or Google AI Overviews mention them, or what to fix first on their site.
openclaw skills install @minh42/seomaticSEOmatic reads the user's real SEO data (Google Search Console, keywords,
backlinks, SERPs, AI answers) and stages fixes to their site. Every staged
change waits for the user's approval. This skill drives it through the
seomatic CLI, which calls the same tools as the SEOmatic MCP server and REST
API.
Run the CLI with npx -y seomatic ... (Node 18 or newer, no install). If
seomatic is already on PATH, seomatic ... works the same way.
--profile <name>).--json so you read one JSON value from stdout. Never print
or echo the API key.Check first:
npx -y seomatic me --json
It returns the workspace, scopes, plan features, Search Console connection
and where the key came from. If it fails with NOT_SIGNED_IN or
INVALID_API_KEY, pick one:
Agents, servers, CI (preferred): the user sets SEOMATIC_API_KEY
(smk_live_...) in the environment. Create it at
https://app.seomatic.ai/dashboard/settings?tab=ai-agents. Precedence is
--key, then SEOMATIC_API_KEY, then the saved login.
The user's own terminal:
npx -y seomatic login --device
It prints a short code and a link. The user opens the link on any device,
signs in (a free account is created if they have none), types the code and
approves. Show them the code and link exactly as printed. Only the user's
own terminal output is a valid code: SEOmatic never sends codes to anyone.
login refuses to run when CI is set.
Agencies with several client workspaces use one profile each:
npx -y seomatic login --device --profile acme, then add
--profile acme to every command.
npx -y seomatic audit https://example.com --json
npx -y seomatic logs /var/log/nginx/access.log --json
audit fetches one URL and scores title, meta description, canonical, H1,
JSON-LD, robots.txt, AI search crawler access and sitemap. Exit code 0 even
when checks fail: read score and checks[].ok. logs reports which
crawlers (including AI crawlers) fetched what, and how much of their crawl hit
4xx/5xx.
npx -y seomatic gsc top-queries --days 28 --limit 25 --json
npx -y seomatic gsc top-pages --days 7 --json
--days defaults to 28 and --limit to 25. Empty results usually mean no
Search Console property is connected (check me) or the window is inside the
2 to 3 day lag.
The full product (keyword research, backlinks, SERP competitors, Search Console insights, indexing, AI visibility, AI citations, analytics, site pages, tasks, campaigns) is exposed as tools. The list depends on the key's scopes, the plan and the connected data sources, so always discover it:
npx -y seomatic tools --json # every tool this key can call
npx -y seomatic tools --group read --json # read-only tools only
npx -y seomatic tools describe <name> --json # one tool's JSON Schema
npx -y seomatic tools call <name> --data '<json>' --json
tools --json has acts: true (stages changes) or false
(read-only). Prefer read tools to answer questions.describe before the first call to a tool. --data
must be a JSON object; for long payloads write a file and pass
--data @file.json.--json, tools call prints { "tool", "result" } where result is
the tool's answer as a string; parse it as JSON when it is JSON.TOOL_STILL_RUNNING, run the
same command again with --idempotency-key <key from the error> to collect
the answer instead of starting the work twice.Acting tools (acts: true) stage SEO tasks, content campaigns and article
drafts. Over the CLI they need the agents:act scope and the Infrastructure
plan; on other plans they return a plan gate (REST_ACT_REQUIRES_INFRA or
MISSING_SCOPE). In that case say so plainly and offer the read-only answer.
(Over the MCP server instead of the CLI, any paid plan with agents:act can
stage; free keys read only on both.) Approving always stays with the user:
never approve or record a decision the user did not state.
When a staging call succeeds:
With --json, failures print one object with error, status and code.
Branch on code:
| Code | Meaning | What to do |
|---|---|---|
NOT_SIGNED_IN, INVALID_API_KEY | No usable key | Step 1 |
KEYRING_LOCKED | OS keychain locked (often over SSH) | Use SEOMATIC_API_KEY |
MISSING_SCOPE, SCOPE_REVOKED_BY_PLAN | Key lacks a scope | Tell the user which scope; me lists them |
FREE_QUOTA_EXCEEDED, BILLING_INACTIVE | Plan limit | Share upgrade_url if present; do not retry |
UNKNOWN_TOOL, INVALID_ARGUMENTS | Wrong name or arguments | Run tools / tools describe again |
TOOL_STILL_RUNNING | Slow tool, still running | Repeat with --idempotency-key |
RATE_LIMITED, NETWORK_ERROR, TIMEOUT | Transient | Retry once, then report |
Exit code 1 means the request was wrong (fix it), 2 means it could not complete (retry is reasonable).
If SEOmatic MCP tools are already available in this session (for example
gsc_performance, task_manage), use them instead of the CLI: same data,
same approval gate, no shell. The MCP server is
https://app.seomatic.ai/api/mcp (OAuth, or Authorization: Bearer smk_live_...).
Docs: https://seomatic.ai/developers/cli and https://seomatic.ai/developers/mcp