Plans what to write next for your sites. Discovers content opportunities from Google Search Console data, clusters them into topics, generates structured article briefs (with image requirements for downstream generation), and tracks each idea through an editorial queue from idea to published.
create_site_profilewriteCreate or register a managed site profile (domain, brand, target languages, content categories, default CTA). Needed once per site before discovering opportunities for it.
update_site_profilewriteUpdate selected fields of an existing site profile -- domain, brand, business description (incl. per-language overrides), target languages, content categories, or default CTA (incl. per-language overrides). Only given fields change. Use this to refresh a profile after re-running Brand Strategy Hub's build_content_strategy_handoff -- create_site_profile refuses to run again once a site_id exists.
list_site_profilesreadList all registered site profiles (managed sites).
add_site_competitorwriteTrack a competitor for a managed site at the web/content level โ which competing pages/sites rank or compete for the same topics, with observed strengths and weaknesses. Distinct from Brand Strategy Hub's brand-level competitors: this is about content/SERP rivals for THIS site specifically.
list_site_competitorsreadList tracked web-level competitors, optionally filtered by site.
add_link_building_targetwriteAdd a concrete link-building/outreach target for a site -- a named domain (and optionally a specific page) to pursue for a backlink or mention, with the tactic being used (guest_post, broken_link, resource_page, linkable_asset, digital_pr, mention_upgrade, other). Starts at status 'prospected'. Use update_outreach_status to move it forward as real outreach happens.
update_outreach_statuswriteMove a link-building outreach target to a new status: prospected|contacted|replied|link_acquired|declined|no_response. Pass acquired_url when moving to 'link_acquired' to record where the backlink actually landed.
list_link_building_targetsreadList link-building/outreach targets, optionally filtered by site and/or status.
get_link_building_reportreadRead a summary of a site's link-building pipeline: counts by status, conversion rate (link_acquired / total non-prospected), and the list of currently active (contacted/replied) targets that need a follow-up.
create_content_authorwriteRegister a real, named content author for a site โ name, bio, credentials, and expertise areas establishing genuine E-E-A-T (Experience, Expertise, Authoritativeness, Trust). This is not a generated persona: enter a real person's real credentials. Required before create_brief for any site with requires_named_author=true.
list_content_authorsreadList registered content authors, optionally filtered by site.
run_content_auditwriteDeep audit of a site's EXISTING content -- MANDATORY before any new content strategy work for that site (discover_opportunities refuses to run without one). Pulls every live post from WordPress Hub (via inter-extension IPC, not chat), measures word count (flags thin content under 300 words), checks for a missing excerpt, extracts a cheap keyword signature per article, and cross-checks every pair for keyword cannibalization -- two+ articles competing for the same topic and splitting ranking signal instead of reinforcing one page. Always produces an explicit 'needs_doing' list, even when nothing is wrong, so the audit result is visible and actionable in the panel, never a silent pass.
get_content_auditreadRead the most recent content audit for a site (run_content_audit's saved result).
track_content_decaywriteCompare current search-performance signals (clicks/impressions/position for published URLs, typically from Google Search Console's top_queries aggregated by page, or DataForSEO's rank tracking) against each URL's own PREVIOUS reading to surface which existing articles are losing traffic or ranking and need refreshing -- not just which new topics to write. Call this periodically (e.g. monthly) per site; the first call for a URL only sets its baseline.
get_content_decayreadRead the most recent content-decay report for a site (track_content_decay's saved result).
record_kpi_snapshotwriteRecord one periodic combined KPI snapshot for a site -- GA4 sessions/users/conversions, Search Console clicks/impressions/position, and DataForSEO rank tracking/backlinks, all already fetched by the caller from those connectors (this app does not call them itself). Call this once per period (e.g. monthly) per site; get_kpi_dashboard then shows the latest snapshot plus its trend against the previous one.
get_kpi_dashboardreadRead the unified KPI dashboard for a site: its latest recorded snapshot (GA4 + Search Console + DataForSEO combined) plus the trend against the previous period, in one place instead of three separate apps. Requires at least one record_kpi_snapshot call for the site.
check_keyword_cannibalizationreadCheck for keyword cannibalization among a site's existing articles -- optionally including one NEW candidate keyword/topic, so a duplicate topic is caught BEFORE a new article is written, not after it's published and already splitting ranking signal with an old one. Requires a content audit to already exist for the site.
resolve_cannibalization_findingwriteRecord the user's choice for ONE cannibalization finding. The system already decides and shows its own recommendation (merge/differentiate/canonicalize) from the overlap score when the finding is surfaced -- this function only records which option the user picked in response (including 'dismiss' if they judge it a false positive). Content Writer is never invoked automatically for this: an author is not required just to resolve a cannibalization decision.
discover_opportunitieswriteTurn query signals (fetch these first from the Google Search Console connector's top_queries or striking_distance tools, or from SEO Audit Engine findings) into scored content opportunities for a site, clustered by topic. Creates queue items in 'idea' status for each new opportunity. ASSISTANT POLICY (not enforced by this tool's params): before calling this, ask the user in chat how many articles/opportunities they want surfaced this round โ never assume the 'limit' default silently. If the user's answer is ambiguous (e.g. mixed-language phrasing, unclear number, or could mean per-language rather than total โ this platform is multilingual), ask a clarifying follow-up instead of guessing.
discover_opportunities_from_search_consolewritePanel convenience wrapper for discover_opportunities: fetches this site's own Search Console top_queries via inter-extension IPC (no manual JSON copy-paste needed) and feeds them straight into the same scoring, clustering, and content-audit gate as discover_opportunities. Use this from a button; use discover_opportunities directly when you already have query signals in hand (e.g. from striking_distance or SEO Audit Engine).
list_opportunitiesreadList content opportunities, optionally filtered by site and status.
generate_strategic_topicswriteGenerate NEW content opportunities beyond any existing query signal, by reasoning over the site's own declared content_categories, what's already covered by existing opportunities/published content, and a fixed library of funnel-stage (tofu/mofu/bofu) question patterns. This is the deliberate second discovery engine -- discover_opportunities only scores/clusters query signals the caller already fetched from GSC/ SEO Audit, so it can never surface a topic nobody has searched for yet, or fill a gap the site's own declared categories imply. Requires a content audit (same gate as discover_opportunities) so it never proposes a topic that duplicates existing content.
create_briefwriteGenerate a structured article brief from an existing opportunity: title direction, search intent, outline skeleton, CTA goal, and image requirement placeholders for the downstream image pipeline. Moves the linked queue item to 'brief_ready'.
build_content_calendarwriteBuild a monthly content calendar for a site: assigns scheduled_date slots (on the given weekdays, posts_per_week per week) across the given month to queue items, filling the publication grid. Picks the highest-priority unscheduled brief_ready+ items automatically if queue_item_ids is empty.
get_content_calendarreadRead the publication grid: queue items that already have a scheduled_date, optionally filtered by site/year/month. Use this to see what is due to publish and when.
link_external_articlewriteRecord the Article Writer (imperal-article-writer-extension) project_id/article_id once you have created them there for this queue item, so this app's queue keeps a two-way reference between the brief and the actual article being written.
refresh_brief_visual_guidancewriteRefresh an existing article brief with the current approved visual guidance from its Site Profile. Copies read-only guidance only; it does not create a media package or generate images.
update_brief_titlewriteFix an existing brief's working_title in place โ for the known bug where a brief created for a SECOND language of the same opportunity kept the FIRST language's title (e.g. a Romanian brief still titled in Russian) because the opportunity's own stored query text was reused as-is. Pass the real, correctly-translated title for this brief's own target_language โ never invent a translation.
build_media_brief_handoffreadBuild a read-only Media Studio create_media_brief payload from an article brief and its approved visual guidance. It does not create a media package or generate images.
build_writer_briefreadAssemble an existing article brief into the exact shape Article Writer (imperal-article-writer-extension) needs for create_project/create_article/generate_article โ title, keyword, outline, audience, CTA. Pass the returned fields straight into that app's tools; there is no direct extension-to-extension call, so Webbee relays this data in the same chat turn.
list_briefsreadList article briefs, optionally filtered by site.
list_queuereadList the editorial queue โ opportunities and briefs tracked through their lifecycle from idea to published. Optionally filter by site and/or lifecycle status.
update_queue_statuswriteMove a queue item to a new lifecycle status (idea|brief_ready|draft_requested|draft_ready|approved|published). Set published_url when marking as published.
record_editorial_signoffwriteRecord that a real, named human has fact-checked and/or edited a queue item's draft. fact_checked_by is required before update_queue_status can move that item to 'published' -- this is the editorial-lifecycle counterpart to the E-E-A-T author gate on create_brief. Pass only the field(s) being recorded now.
purge_pipeline_datadestructiveWipe ALL working pipeline data for every site -- opportunities, article briefs, editorial queue items, tracked site competitors, content audits, and cannibalization findings. Site profiles themselves (the connected sites) are NEVER touched -- only the downstream content-strategy work built on top of them. Irreversible. Requires confirm_wipe=true.
purge_site_pipeline_datadestructiveWipe ALL working pipeline data for ONE site -- its opportunities, article briefs, editorial queue items, tracked competitors, content audits, and cannibalization findings. Every OTHER site's data is untouched. The site profile itself is NEVER removed. Irreversible. Requires confirm_wipe=true.
list_connected_sitesreadList the sites already connected in other apps (WordPress Hub today, any future site provider) that Quick Add offers as one-click site profile candidates, flagging which ones are already registered here. Also the diagnostic for an empty Quick Add list: it reports whether a provider could not be reached and why.
Install Content Strategy and let Webbee use it across your workflow.
Open in panel