Install
openclaw skills install @bitsandtea/postking-competitor-intelKnow exactly who you're up against. Discover, classify, and track competitors and pull comparison data. Delivers a live competitor map and comparison pages that sharpen your positioning and win side-by-side searches.
openclaw skills install @bitsandtea/postking-competitor-intelBuild a competitive-intelligence picture for a brand in PostKing — discover rivals, classify them, register and analyze them, and review the resulting comparison/overview data.
Once competitors are registered on the brand, PostKing's SEO clustering automatically becomes competitor-aware — see the postking-seo skill for how registered competitors then shape keyword clustering (product-fit classification + competitor "conquest" brief plans).
Use this skill when a user wants to know who their competitors are, wants specific domains tracked and analyzed, or wants a head-to-head comparison or landscape overview against registered rivals.
Not for keyword/content work itself — once competitors are registered, hand off to postking-seo for competitor-aware clustering and conquest briefs. Not for generic brand content — that's postking-social/postking.
This skill needs 7 core tools:
competitor_probe — discover candidate rival domains for the brand.competitor_probe_status — poll the probe.competitor_probe_classify — classify each candidate as direct / similar / not_relevant.competitor_add — register up to 20 domains as tracked competitors (async).competitor_analyze — re-run analysis on existing, pending/failed BrandCompetitor rows (async). Requires brandCompetitorIds (array of 1–20 tracked-competitor row IDs) — get them from competitor_add's result or competitor_list.competitor_list — review registered competitors and their status.get_job — poll any async operation.Going deeper (optional) — read/refresh intelligence on already-registered competitors:
competitor_get_comparison — head-to-head keyword comparison against a competitor.competitor_recompute_comparison — refresh that comparison.competitor_get_overview — AI-synthesized landscape summary.competitor_generate_overview — (re)generate that overview (async).competitor_comparison_sources — the SEO sources feeding a comparison.competitor_update — edit a competitor row (e.g. toggle exclusion flags).competitor_delete — remove a competitor.postking-getting-started skill.postking-getting-started skill."Find our competitors and register them."
Async tools return { operationId, status } — poll get_job({ operationId }) until state is completed, failed, partially_failed, or cancelled. competitor_probe returns { started: true }; poll competitor_probe_status instead.
competitor_probe({ brandId }) — kicks off discovery of candidate rival domains. Returns { started: true }.competitor_probe_status({ brandId }) — poll until the probe completes.competitor_probe_classify({ brandId }) — classifies each discovered candidate as direct, similar, or not_relevant. Review the results with the user before adding — don't blindly register every candidate.competitor_add({ brandId, domains: [...] }) — registers up to 20 domains as tracked competitors; each domain triggers its own crawl + profile analysis. Async, poll get_job.competitor_list({ brandId, detail: "medium" }) — returns each registered competitor's id and analysisState.competitor_analyze({ brandId, brandCompetitorIds: [...] }) — brandCompetitorIds is required: 1–20 BrandCompetitor row IDs from step 5 (or directly from competitor_add's result) whose analysisState is pending or failed. Async, poll get_job.competitor_list({ brandId, detail: "medium" }) — status + analysis state per competitor.competitor_get_comparison / competitor_recompute_comparison for head-to-head keyword comparison against a specific competitor; competitor_get_overview / competitor_generate_overview (async, poll get_job) for an AI-synthesized landscape summary; competitor_comparison_sources for the SEO sources feeding the comparison; competitor_update (e.g. toggle exclusion flags) or competitor_delete to manage the list.Next: with competitors registered, run the SEO pipeline in the postking-seo skill — clustering will now automatically flag competitor-dominated clusters and draft conquest briefs.
Most competitor management has a pking competitors CLI equivalent — it's not MCP-only:
pking competitors list [--brand <id>]
pking competitors add <domain1> <domain2> ... [--no-wait] # register up to 20 domains, async
pking competitors import --file <path> [--no-wait] # bulk-import domains from a file
pking competitors delete <id> --destructive
pking competitors refresh [--no-wait] # re-analyze all (async)
pking competitors comparison # head-to-head keyword comparison
pking competitors comparison recompute # refresh that comparison
pking competitors sample # example competitor card
Discovery and read-only intelligence genuinely have no CLI path today — competitor_probe, competitor_probe_status, competitor_probe_classify, competitor_get_overview, competitor_generate_overview, and competitor_comparison_sources are MCP-only; drive those steps via MCP tool calls.
A set of registered, classified, analyzed competitors on the brand, plus (optionally) a saved head-to-head comparison and landscape overview.
INSUFFICIENT_CREDITS — point the user to the postking-getting-started skill's billing section (billing_list_packs → billing_topup).RATE_LIMITED — back off using the retryAfter value from the error envelope before retrying.UNAUTHORIZED — re-run the login flow described in the postking-getting-started skill.competitor_* tools lack a CLI equivalent — only the discovery/probe and read-only overview/comparison-sources tools do; list/add/import/delete/refresh/comparison/recompute/sample all have pking competitors commands.competitor_list({ brandId }) should return successfully and reflect any domains just added.competitor_analyze completes, competitor_list({ brandId, detail: "medium" }) should show updated analysisState values.