Creator Assistant Planner

Description

Creator Assistant Planner connects to your site’s Google Search Console and Google Analytics data (via Creator Assistant Hub’s shared Google connection) to find search queries with real demand but no dedicated content on your site, groups them into topic clusters, and ranks them by priority so you always know what to write next.

Requires Creator Assistant Hub, active and connected to Google.

External services

This plugin connects to the following third-party services. Data is sent only after the site owner has connected Creator Assistant Hub to Google and accepted the Creator Assistant terms in the Hub settings, and only when the weekly content-gap run (or “Generate now”) runs, or when a plan item is saved. Nothing is sent on activation.

  • Google Search Console API and Google Analytics (GA4) Data and Admin APIs (searchconsole.googleapis.com, analyticsdata.googleapis.com, analyticsadmin.googleapis.com): read the site’s search queries (query text, impressions, clicks) and page views of its own posts, and list the properties of the connected Google account so the site owner can choose one. The requests are authenticated with the access token of the Google connection managed by Creator Assistant Hub (read-only scopes webmasters.readonly and analytics.readonly). What is sent to Google is the property identifier, the date range and the page paths of the site itself. No visitor data is sent.

  • Clustering service (AWS Lambda and AWS Fargate), operated by the plugin author: groups the unclaimed search queries into topic clusters. When a run reaches that step, the plugin sends the service the URLs of two REST endpoints of your own site (to read the query vectors and to post the result back), the name of the vector collection and the clustering parameters. The service then reads the search queries and their vectors from your site and posts the clusters back. It processes them only while the job runs and does not store them.

  • OpenAI and Qdrant Cloud, through Creator Assistant Hub: to check that a suggestion does not duplicate existing content, the text of the suggested titles and summaries and of the editorial plan items is sent to OpenAI to generate embeddings and short summaries, and the resulting vectors are stored in the site owner’s own Qdrant Cloud cluster. The API credentials are the ones configured in Creator Assistant Hub; see its readme for details.

Screenshots

Installation

  1. Install and activate Creator Assistant Hub first, and connect it to Google (Search Console + Analytics) from its settings page.
  2. Install and activate Creator Assistant Planner.
  3. Open Creator Assistant Planner’s admin screen and click “Generate now”, or wait for the weekly scheduled run.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Creator Assistant Planner” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.0.0

  • New: the Planner page comes right after the Hub page in the Creator Assistant menu, through Creator Assistant Hub’s creator_assistant_hub_menu_positions filter.
  • New: Weekly content-gap detection pipeline — reads Search Console queries, filters semantic gaps against existing content, clusters them via the shared clustering infrastructure, validates candidate title+summary pairs for novelty, and scores them by search demand and nearby-content performance.
  • New: Own “Planner” admin page under Creator Assistant, with a “Search Console” section (minimum impressions, analysis window) and a separate “Google properties” section with two selects for the Search Console/GA4 properties to use, populated from the connected Google account with a manual refresh link.
  • New: “Similarity matching” section on the Settings tab — minimum/maximum similarity thresholds the pipeline uses to accept a candidate and to match supporting articles, configurable instead of fixed, with a live cross-check that keeps the two values from forming an invalid range.
  • New: “Generate now” button and last-run status on the Planner admin page.
  • New: Each suggestion in the Content suggestions tab shows the generated summary of what the article would cover, alongside its title and a narrative explaining why it was suggested, built from the underlying search-demand metrics.
  • New: Planner now describes itself in the list of services shown on Hub’s “Google Connection” settings screen, so site owners see why connecting is useful before they do it.
  • Fix: the Search Console/GA4 property selects stayed disabled after connecting (or reconnecting) a Google account until the 12-hour property-list cache expired on its own. Planner now clears that cache as soon as Hub’s Google connection changes, via the new creator_assistant_hub_google_connected/creator_assistant_hub_google_disconnected hooks.
  • Fix: the GA4 property list only ever read the first page of accountSummaries.list, silently dropping any properties past it for a Google account with enough GA4 accounts to need a second page. It now follows nextPageToken across as many requests as the account needs.
  • Fix: the “Last run” timestamp on the Planner admin page ignored the site’s configured timezone, showing the raw UTC time instead.
  • New: the “Content suggestions” tab now shows, after a run, how many Search Console queries were read and how many turned out to be a content gap; once the asynchronous clustering step replies, also how many clusters it produced, how many became a new suggestion, how many existing posts were checked for page views, and when the reply arrived — with an explicit “clustering in progress” message shown in between, so a run that is still waiting is never mistaken for a stuck one.
  • Fix: a run could stay “clustering in progress” for good, and refuse every new “Generate now”, when the clustering job died (for example out of memory) after being accepted. The plugin now keeps the id of the job, asks the clustering service whether it is still alive while it waits (every few minutes, and while the page is open), and ends the wait with an explanation when the job is gone and no result arrived; a result that turns up later is still used. A wait never lasts more than 24 hours, and clusters that were delivered but not processed (the processing died halfway) are processed again.
  • Change: suggestions are now items of an editorial plan, with a source (Search Console, or created with Agent through Planner Pro), a type (new article or update of an existing one) and a status (incomplete, proposed, approved, published). “Dismiss” and “Mark as done” are replaced by Approve, Back to proposed, Mark as published and Delete; Delete and “Mark as published” ask for confirmation in the browser.
  • Change: every pipeline run replaces only the Search Console suggestions still awaiting approval; approved items and items created with Agent are kept. “Generate now” says so, and asks for confirmation when there are suggestions it would replace. The debug-only “Clear report data” tool follows the same rule and also keeps approved items and items created with Agent.
  • New: plan items are indexed in their own Qdrant collection (creator_assistant_<id>_planner_plan_item, with the per-site identifier Creator Assistant Hub generates), and a Search Console candidate is discarded when it duplicates an item already in the plan, not only an existing article. The “Rejected candidates” section shows which of the two blocked it. Items left unindexed by an OpenAI or Qdrant failure are retried by an hourly background job, and the collection is rebuilt when Hub’s embedding model changes.
  • New: candidate summaries follow the same 3-5 sentence format as Hub’s post summaries, so the similarity check compares texts of the same kind.
  • New: the items created with Agent have their own “Editorial plan” tab on the Planner page, with its own status filter and paging. The “Content suggestions” tab lists only the Search Console suggestions: the items created with Agent have no score, so in a single list they came after every scored suggestion, many pages away.
  • New: a search box in the “Content suggestions” and “Editorial plan” tabs, to find a plan item by a word in its title, description or summary. It is a plain text search, so it works without OpenAI or Qdrant and also finds the items not indexed yet.
  • New: creator_assistant_planner_plan_item_status_changed action ($id, $old_status, $new_status), fired after every successful status change of a plan item.
  • New: creator_assistant_planner_plan_item_deleted action ($id, $item), fired after a plan item is deleted, with the item as it was before deletion.
  • New: Similarity_Search::search_checked() for add-ons: like search(), but it returns a WP_Error (status 503) when the embedding or the vector database does not answer, so an empty list is not mistaken for “nothing similar” when no comparison was made. Limit: a failure of only one of the two collections while the Qdrant cluster answers is not detected, and that collection’s results are simply missing.
  • New: Similarity_Search::summarize_for_search() for add-ons: summarizes a free text the way posts are (one OpenAI call, cached for an identical text), so it can be passed to search_checked() and compared with summaries of the same kind; it returns a WP_Error (status 503) when the summary cannot be generated.