{"id":346481,"date":"2026-08-23T11:42:49","date_gmt":"2026-08-23T11:42:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/publisherkits-excerptbuilder\/"},"modified":"2026-08-23T13:48:26","modified_gmt":"2026-08-23T13:48:26","slug":"publisherkits-excerptbuilder","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/publisherkits-excerptbuilder\/","author":23505962,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.12.10","stable_tag":"0.12.10","tested":"7.1","requires":"7.0","requires_php":"7.4","requires_plugins":null,"header_name":"PublisherKits ExcerptBuilder","header_author":"Black and White Digital","header_description":"AI-powered excerpt generation for WordPress posts. Write, rewrite or tidy an excerpt in the editor, or have one drafted at publish time. Uses the WordPress AI Client (Settings > Connectors).","assets_banners_color":"758192","last_updated":"2026-08-23 13:48:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/publisherkits.com\/excerpt-builder-plugin\/","header_author_uri":"https:\/\/publisherkits.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":43,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.12.10":{"tag":"0.12.10","author":"publisherkits","date":"2026-08-23 13:48:26"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3661763,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3661763,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3661763,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3661763,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3661763,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.12.10"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3661763,"resolution":"1","location":"assets","locale":"","width":2230,"height":1101},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3661763,"resolution":"2","location":"assets","locale":"","width":1474,"height":1408},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3661763,"resolution":"3","location":"assets","locale":"","width":1468,"height":1836},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3661763,"resolution":"4","location":"assets","locale":"","width":1467,"height":1362}},"screenshots":{"1":"The ExcerptBuilder panel in the post editor. Choose Write, Rewrite or Tidy, set a length and a tone, and generate an excerpt without leaving the post.","2":"Setup. ExcerptBuilder uses the WordPress AI Client, so providers and keys are configured once at Settings &gt; Connectors and shared across the site - ExcerptBuilder stores no key of its own.","3":"Customize. Describe your site and audience so excerpts are framed for the right readers, set your defaults, and decide what happens when a post is published without an excerpt.","4":"Support. The built-in Support Copilot answers usage and setup questions, and is fully disclosed: what it sends, where it sends it, and consent before the first chat."}},"plugin_section":[],"plugin_tags":[2353,529,1395],"plugin_category":[],"plugin_contributors":[273231],"plugin_business_model":[],"class_list":["post-346481","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-content","plugin_tags-excerpt","plugin_contributors-publisherkits","plugin_committers-publisherkits"],"banners":{"banner":"https:\/\/ps.w.org\/publisherkits-excerptbuilder\/assets\/banner-772x250.png?rev=3661763","banner_2x":"https:\/\/ps.w.org\/publisherkits-excerptbuilder\/assets\/banner-1544x500.png?rev=3661763","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/publisherkits-excerptbuilder\/assets\/icon.svg?rev=3661763","icon":"https:\/\/ps.w.org\/publisherkits-excerptbuilder\/assets\/icon.svg?rev=3661763","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/publisherkits-excerptbuilder\/assets\/screenshot-1.png?rev=3661763","caption":"The ExcerptBuilder panel in the post editor. Choose Write, Rewrite or Tidy, set a length and a tone, and generate an excerpt without leaving the post."},{"src":"https:\/\/ps.w.org\/publisherkits-excerptbuilder\/assets\/screenshot-2.png?rev=3661763","caption":"Setup. ExcerptBuilder uses the WordPress AI Client, so providers and keys are configured once at Settings &gt; Connectors and shared across the site - ExcerptBuilder stores no key of its own."},{"src":"https:\/\/ps.w.org\/publisherkits-excerptbuilder\/assets\/screenshot-3.png?rev=3661763","caption":"Customize. Describe your site and audience so excerpts are framed for the right readers, set your defaults, and decide what happens when a post is published without an excerpt."},{"src":"https:\/\/ps.w.org\/publisherkits-excerptbuilder\/assets\/screenshot-4.png?rev=3661763","caption":"Support. The built-in Support Copilot answers usage and setup questions, and is fully disclosed: what it sends, where it sends it, and consent before the first chat."}],"raw_content":"<!--section=description-->\n<p>ExcerptBuilder generates accurate excerpts for your WordPress posts using the WordPress AI Client (Settings &gt; Connectors). No separate API key to manage - it uses the provider you have already configured for your site.<\/p>\n\n<h4>Three edit modes<\/h4>\n\n<ul>\n<li>Write - create a new excerpt from the post title and content<\/li>\n<li>Rewrite - improve an existing excerpt, correcting inaccuracies against the post content<\/li>\n<li>Tidy - fix only spelling, typos, capitalisation, and line-break errors, without changing meaning<\/li>\n<\/ul>\n\n<h4>On-demand and automatic<\/h4>\n\n<ul>\n<li>Generate from the post edit meta box, preview, and save<\/li>\n<li>Excerpts at publish: when an editor publishes a post without an excerpt, ExcerptBuilder offers a draft for confirmation. For scheduled, imported or REST-driven publications, it can write the excerpt directly or hold it for later review, according to your setting.<\/li>\n<\/ul>\n\n<h4>Uses the WordPress AI Client<\/h4>\n\n<p>ExcerptBuilder requires WordPress 7.0 and a configured AI provider at Settings &gt; Connectors. It stores no provider key of its own. Choose which model answers from the models your key can use, with an optional strict mode.<\/p>\n\n<h4>Framed for your site and its readers<\/h4>\n\n<p>Excerpts are written from more than the post copy. On the Customize tab you describe your publication, what kind of site it is, and who reads it. ExcerptBuilder passes that context to the model so an excerpt is pitched at your actual audience rather than a generic reader, and it feeds the SEO-aware writing too.<\/p>\n\n<p>This applies to Write and Rewrite. Tidy deliberately ignores it, because Tidy must never reframe or change meaning.<\/p>\n\n<p>If you also run <a href=\"https:\/\/publisherkits.com\/insight-engine-plugin\/\">PublisherKits Insight Engine<\/a>, ExcerptBuilder picks up the shared site profile automatically and you do not need to describe your site twice.<\/p>\n\n<h4>Free and Pro<\/h4>\n\n<p>Everything you need to give individual posts great excerpts is free: the three edit modes (Write, Rewrite, Tidy), the publish-time auto-draft, SEO-aware writing, and audience and author framing.<\/p>\n\n<p>ExcerptBuilder Pro adds Bulk Fill - scan your entire published archive for posts with no excerpt and write one for each in a single operated run, with a live count, a per-year breakdown, a progress bar, a per-post log, and stop\/resume.<\/p>\n\n<h4>More from PublisherKits<\/h4>\n\n<p>ExcerptBuilder is one of a small range of tools built for people who actually run publications. Each works on its own, and all are free on WordPress.org:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/publisherkits-biobuilder\/\">PublisherKits BioBuilder<\/a> - stop leaving author profiles blank. When a post is published, BioBuilder finds the author's professional profile and fills in their bio, social handles, job title and employer.<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/publisherkits-socialpromoter\/\">PublisherKits SocialPromoter<\/a> - write, post and schedule social promotions from inside the WordPress editor, straight to X, LinkedIn, Facebook Pages and Bluesky.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<h4>1. Freemius (licensing, checkout and optional diagnostics)<\/h4>\n\n<p>ExcerptBuilder uses the Freemius SDK, from Freemius, Inc., for optional account connection, licence administration, checkout and optional usage diagnostics. Updates to this free package are supplied by WordPress.org. This free plugin does not download, install or update the separately distributed Pro package.<\/p>\n\n<p>When data may be transmitted: when you opt in to the activation flow, connect or manage an account or licence, use checkout, or consent to optional usage diagnostics.<\/p>\n\n<p>What may be transmitted: broad account and installation information such as the site URL, the administrator email address you provide, plugin and WordPress version data, and licence identifiers. Opting in to the activation flow is optional - you can skip it and every free feature keeps working. Usage diagnostics are sent only when you consent.<\/p>\n\n<p>Your post content and the excerpts ExcerptBuilder generates are never sent to Freemius.<\/p>\n\n<p>Terms of service: https:\/\/freemius.com\/terms\/\nPrivacy policy: https:\/\/freemius.com\/privacy\/<\/p>\n\n<h4>2. Your AI provider (excerpt generation)<\/h4>\n\n<p>Excerpt text is generated by the AI provider you connect at Settings &gt; Connectors, through the WordPress AI Client. ExcerptBuilder does not operate an AI service of its own and has no hosted fallback: if no provider is configured, no request is made and no excerpt is generated.<\/p>\n\n<p>A request is sent only when an administrator or editor triggers one, specifically when you: click Generate in the ExcerptBuilder box (Write or Rewrite); click Tidy; accept or request a draft in the publish-step panel; run the self-test on the Setup tab; or publish a post while \"Excerpts at publish\" is enabled, which generates a draft in the background.<\/p>\n\n<p>A request may contain: the post title; the post content, with tags stripped and truncated to the first 3,000 characters; the existing excerpt, for Rewrite and Tidy; your publication, site-type and audience description; the post author's display name, role or job title, employer, and a short biography summary, where those are available; and any custom instruction you have configured.<\/p>\n\n<p>The provider you selected processes the request, and that provider's own terms and privacy policy apply to it - please consult the documentation for whichever provider you connect. ExcerptBuilder does not write generated text into the live post excerpt until the workflow you chose allows it: in the editor you preview and save it yourself, and at publish time it is either offered for confirmation or handled according to your scheduled-post setting. Always review generated output before relying on it.<\/p>\n\n<h4>3. PublisherKits Support Service (optional support assistant)<\/h4>\n\n<p>The Help button on ExcerptBuilder admin screens opens an optional support assistant provided by the PublisherKits Support Service at bwtlsupport.com, operated by Black and White Trading Ltd. Nothing is sent until you open the assistant and accept the privacy notice shown inside it. Passwords, API keys and post content are never collected automatically.<\/p>\n\n<p>Who answers your question. If this site has its own AI provider configured, your question and chat history are sent to that provider, and the support service is used only to supply documentation matched to your plugin version - it still receives the authorisation and diagnostic metadata described below. If no provider is configured, or if the local attempt fails, your question and chat history are sent to the PublisherKits Support Service instead, which answers them.<\/p>\n\n<p>Identifying data. Every request carries your site address, and where available the Freemius licence installation identifier for this site. These are used to authorise the request and to apply the fair-use limit described below. On the free tier a value derived from your site address is stored against a monthly counter for that limit, and kept for the current and previous month only.<\/p>\n\n<p>Operational metadata. Each request also carries this plugin's version and those of installed sibling plugins, the identifier of the admin screen you are on, a short whitelist of non-sensitive diagnostic settings, your support tier, the question category, and counts and response timings. This is retained only as aggregated operational statistics, in a non-identifying day, plugin and counter format. It is not retained as a per-site behavioural event log.<\/p>\n\n<p>Question content. This is the question you type and the chat history sent so the assistant can follow the conversation. It is transmitted in order to answer the request, processed transiently, and not retained after the response is returned. Because you control what you type, a question could contain information you consider personal - please avoid including anything sensitive.<\/p>\n\n<p>Escalation payload. If, and only if, you click \"Send to support\", the full transcript, the diagnostic context and the contact email address you supply are sent and retained so that a support agent can answer you. Nothing is retained from an ordinary question that you do not escalate.<\/p>\n\n<p>Terms of service: https:\/\/publisherkits.com\/terms\/\nPrivacy policy: https:\/\/publisherkits.com\/privacy-policy\/<\/p>\n\n<h3>Source code and build tools<\/h3>\n\n<p>ExcerptBuilder's own PHP, JavaScript and CSS source is included in this package in human-readable form. Nothing first-party is minified, compiled or obfuscated.<\/p>\n\n<p>The bundled Freemius SDK includes one compiled file, vendor\/freemius\/assets\/js\/pricing\/freemius-pricing.js, which is a webpack build of the Freemius pricing app. Its source and build instructions are public:<\/p>\n\n<p>Freemius WordPress SDK source (GPL v3): https:\/\/github.com\/Freemius\/wordpress-sdk\nFreemius pricing app source and build instructions (MIT, npm install then npm run build): https:\/\/github.com\/Freemius\/pricing-page<\/p>\n\n<p>The bundled SDK is based on Freemius WordPress SDK 2.13.4, byte-identical to upstream master at commit fa43eb9 when it was vendored. One small PHP 8 multisite compatibility fix has been applied and is documented in full in vendor\/freemius\/BWD-PATCH-NOTES.md, which is included in this package. The SDK's internal loader marker reads 2.13.5 so that this fixed copy takes precedence over an unpatched 2.13.4 copy bundled by another plugin on the same site. The patch will be dropped and the stock SDK re-vendored once an official release contains the fix.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate PublisherKits ExcerptBuilder from Plugins &gt; Add New, or by uploading the plugin ZIP.<\/li>\n<li>ExcerptBuilder requires WordPress 7.0 or later and PHP 7.4 or later. It uses the WordPress AI Client, which is part of WordPress 7.0; on earlier versions the plugin stays inactive rather than generating anything.<\/li>\n<li>Connect an AI provider at Settings &gt; Connectors (this is a WordPress screen, not an ExcerptBuilder one). ExcerptBuilder stores no provider key of its own and uses whichever provider you have configured there.<\/li>\n<li>Open ExcerptBuilder from the WordPress admin sidebar. There is also a Settings link on the Plugins screen.<\/li>\n<li>On the Setup tab, confirm the status reads Ready and choose a preferred model if you want a specific one. On the Customize tab, describe your publication and audience and set the default mode, length and tone.<\/li>\n<li>Edit a post and use the ExcerptBuilder box: Write creates an excerpt from the post, Rewrite improves the existing one, Tidy fixes only spelling, typos, capitalisation and line breaks. Preview the result, then save it to the post.<\/li>\n<li>Optionally enable \"Excerpts at publish\". When an editor publishes a post with no excerpt, a draft is offered at the publish step for confirmation. For scheduled, imported or REST publishes there is no editor present, so ExcerptBuilder either writes the excerpt directly or holds it for review in the post editor, according to the setting next to it.<\/li>\n<li>Generated text is a starting point. Review every excerpt before relying on it - AI output can be inaccurate, and the excerpt is often what search engines and social networks show.<\/li>\n<li>The Help button on ExcerptBuilder screens opens an optional support assistant. It sends nothing until you open it and accept its privacy notice; see \"External services\" below.<\/li>\n<li>Bulk Fill, which writes excerpts across a whole published archive in one operated run, is not part of this plugin. It is included only in the separately distributed ExcerptBuilder Pro package.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20use%20this%20when%20there%20are%20other%20excerpt%20tools%3F\"><h3>Why use this when there are other excerpt tools?<\/h3><\/dt>\n<dd><p>Three practical differences.<\/p>\n\n<p><strong>It has no API key of its own.<\/strong> ExcerptBuilder uses the WordPress AI Client, so you configure a provider once at Settings &gt; Connectors and every plugin on the site shares it. There is no key to paste into yet another settings screen, and nothing to redo when you rotate one.<\/p>\n\n<p><strong>It knows what your site is.<\/strong> Most excerpt tools see only the post. ExcerptBuilder also passes a short description of your publication and its readers, so the excerpt is pitched at your audience rather than at nobody in particular.<\/p>\n\n<p><strong>It has a mode that does not rewrite.<\/strong> Tidy fixes spelling, typos, capitalisation and stray line breaks, and nothing else. That matters when an excerpt is already right and you only want the errors gone.<\/p>\n\n<p>There is also a safety net: with \"Excerpts at publish\" enabled, a post cannot quietly go live with an empty excerpt - including scheduled posts and imports, where no editor is present to be prompted.<\/p><\/dd>\n<dt id=\"what%20effect%20does%20the%20site%20profile%20have%20on%20the%20excerpt%20drafts%3F\"><h3>What effect does the site profile have on the excerpt drafts?<\/h3><\/dt>\n<dd><p>On the Customize tab you describe your publication, what kind of site it is, and who reads it. Those fields are sent to the model alongside the post, as a short context block, before the excerpt is written.<\/p>\n\n<p>In practice it changes emphasis and register rather than facts. The same article on a B2B trade title and on a consumer blog will lead with a different detail, assume a different amount of prior knowledge, and use different phrasing.<\/p>\n\n<p>It applies to Write and Rewrite. Tidy deliberately ignores it, because Tidy must not reframe or change meaning.<\/p>\n\n<p>Leaving the fields empty is perfectly fine - the excerpt is then written from the post alone.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20api%20key%2C%20and%20which%20ai%20providers%20work%3F\"><h3>Do I need an API key, and which AI providers work?<\/h3><\/dt>\n<dd><p>You need one AI provider configured on the site, but not a key belonging to this plugin. ExcerptBuilder reads whatever is set up at Settings &gt; Connectors through the WordPress AI Client, and stores no key of its own.<\/p>\n\n<p>The Setup tab lists the providers it can see and whether each one's plugin is active. If nothing is configured, ExcerptBuilder makes no request and generates nothing - it has no hosted fallback and never sends your content anywhere by default.<\/p><\/dd>\n<dt id=\"the%20setup%20tab%20says%20the%20ai%20connection%20is%20not%20ready.%20what%20now%3F\"><h3>The Setup tab says the AI connection is not ready. What now?<\/h3><\/dt>\n<dd><p>Install and activate a provider plugin, add its key at Settings &gt; Connectors, then return to ExcerptBuilder's Setup tab and click <strong>Run self-test<\/strong>. The self-test performs one real request and reports exactly what came back, which is usually enough to identify a wrong key, an inactive provider plugin, or a model your key cannot use.<\/p>\n\n<p>If you need a specific model, set it under Model on the same tab. Leaving it alone is fine - a sensible default is used.<\/p><\/dd>\n<dt id=\"does%20it%20need%20wordpress%207.0%3F\"><h3>Does it need WordPress 7.0?<\/h3><\/dt>\n<dd><p>Yes. The WordPress AI Client that ExcerptBuilder depends on arrived in WordPress 7.0, so earlier versions are not supported.<\/p><\/dd>\n<dt id=\"will%20it%20overwrite%20excerpts%20i%20have%20already%20written%3F\"><h3>Will it overwrite excerpts I have already written?<\/h3><\/dt>\n<dd><p>No. Nothing is overwritten without you asking.<\/p>\n\n<p>The publish-time feature only ever acts on a post whose excerpt is empty - if there is already an excerpt, it does nothing. In the editor, Write and Rewrite show you the result in a preview box and you decide whether to save it.<\/p>\n\n<p>Rewrite and Tidy are the only features that change existing text, and only when you run them deliberately on that post.<\/p><\/dd>\n<dt id=\"which%20post%20types%20does%20it%20work%20on%3F\"><h3>Which post types does it work on?<\/h3><\/dt>\n<dd><p>Posts. The ExcerptBuilder box appears on the post editor and the publish-time behaviour applies to posts.<\/p><\/dd>\n<dt id=\"does%20it%20work%20in%20the%20classic%20editor%3F\"><h3>Does it work in the Classic Editor?<\/h3><\/dt>\n<dd><p>Yes. The generation box appears in both the block editor and the Classic Editor, and the publish-step prompt works in both.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20my%20seo%20plugin%27s%20meta%20description%3F\"><h3>Does this work with my SEO plugin's meta description?<\/h3><\/dt>\n<dd><p>ExcerptBuilder writes the WordPress excerpt. It never reads, writes or overwrites any SEO plugin's own fields, so there is nothing for the two to fight over.<\/p>\n\n<p>What it does do is write excerpts that are usable as a meta description: front-loaded so the important part survives truncation, self-contained and accurate to the article, no clickbait and no trailing ellipsis, and on Short or Medium roughly search-snippet length.<\/p>\n\n<p>Whether that excerpt actually becomes your meta description is your SEO plugin's decision, and the two most common ones behave differently:<\/p>\n\n<ul>\n<li><strong>Rank Math<\/strong> sets a post's meta description to the excerpt out of the box, so a generated excerpt is used as the search snippet with no further setup.<\/li>\n<li><strong>Yoast<\/strong> ships with an empty meta description template and will not use the excerpt for the search snippet until you set one. Search Appearance &gt; Content Types &gt; Posts, and set the meta description to <code>%%excerpt%%<\/code>. Yoast does already fall back to the excerpt for Facebook and X descriptions.<\/li>\n<\/ul>\n\n<p>For any other SEO plugin, look for its post-type description template and set it to that plugin's excerpt variable.<\/p>\n\n<p>Either way the excerpt is worth filling: themes, feeds, search results pages, archive listings and social previews all use it regardless of your SEO setup.<\/p><\/dd>\n<dt id=\"what%20is%20actually%20sent%20to%20the%20ai%20provider%3F\"><h3>What is actually sent to the AI provider?<\/h3><\/dt>\n<dd><p>Only when you trigger it: the post title; the post content with tags stripped and truncated to the first 3,000 characters; the existing excerpt for Rewrite and Tidy; your publication, site-type and audience description; the post author's name, job title, employer and a short biography summary where those exist; and any custom instruction you have set.<\/p>\n\n<p>It goes to the provider you configured, and nowhere else. Your content is never sent to Freemius. The full disclosure is in the External services section below.<\/p><\/dd>\n<dt id=\"what%20is%20free%2C%20and%20what%20is%20pro%3F\"><h3>What is free, and what is Pro?<\/h3><\/dt>\n<dd><p>Everything that gives an individual post a good excerpt is free, with no quota or trial: all three modes, the publish-time draft, SEO-aware writing, and site, audience and author framing.<\/p>\n\n<p>Pro adds one thing - Bulk Fill, which scans your whole published archive for posts with no excerpt and writes one for each in a single operated run, with a live count, a per-year breakdown, a progress bar, a per-post log, and stop\/resume.<\/p><\/dd>\n<dt id=\"does%20uninstalling%20remove%20my%20settings%3F\"><h3>Does uninstalling remove my settings?<\/h3><\/dt>\n<dd><p>Only if you ask it to. \"Delete all ExcerptBuilder settings when the plugin is uninstalled\" is off by default, so your settings survive a reinstall. Shared PublisherKits site data is never removed by ExcerptBuilder.<\/p><\/dd>\n<dt id=\"what%20other%20tools%20do%20you%20make%3F\"><h3>What other tools do you make?<\/h3><\/dt>\n<dd><p>Two more are on WordPress.org, free:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/publisherkits-biobuilder\/\">PublisherKits BioBuilder<\/a> - finds and fills author bios, social handles and job titles automatically.<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/publisherkits-socialpromoter\/\">PublisherKits SocialPromoter<\/a> - post and schedule social promotions from the editor to X, LinkedIn, Facebook Pages and Bluesky.<\/li>\n<\/ul>\n\n<p>The full range, including tools not distributed on WordPress.org, is at <a href=\"https:\/\/publisherkits.com\/\">publisherkits.com<\/a> - among them <a href=\"https:\/\/publisherkits.com\/insight-engine-plugin\/\">Insight Engine<\/a>, whose shared site profile ExcerptBuilder will use automatically if you have it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.12.10<\/h4>\n\n<ul>\n<li>Added: the description now explains how your site and audience description shapes the excerpt, and which modes use it.<\/li>\n<li>Added: captions for the plugin directory screenshots.<\/li>\n<li>No functional change from 0.12.9.<\/li>\n<\/ul>\n\n<h4>0.12.9<\/h4>\n\n<ul>\n<li>Changed: the settings screen now uses the standard PublisherKits header band, with the ExcerptBuilder identity mark, matching the rest of the range.<\/li>\n<li>Fixed: admin notices raised by other plugins no longer render inside the ExcerptBuilder header.<\/li>\n<li>Internal: support-assistant module updated to 2.1.1, which checks the security token and the user permission as two separate checks.<\/li>\n<li>Tested against WordPress 7.1.<\/li>\n<\/ul>\n\n<h4>0.12.8<\/h4>\n\n<ul>\n<li>Changed: ExcerptBuilder now has its own entry in the WordPress admin sidebar, instead of appearing as one line inside a shared PublisherKits menu. Existing links to the settings screen are unchanged.<\/li>\n<\/ul>\n\n<h4>0.12.7<\/h4>\n\n<ul>\n<li>Changed: every global name the plugin creates now uses a single prefix family (pkeb_ \/ PKEB_). The Freemius bootstrap helpers, which previously used a second prefix, were renamed to match.<\/li>\n<li>Changed: the bundled support-assistant module now uses its full vendor prefix for the WordPress hooks and transients it creates, since those are global names and are not covered by its PHP namespace.<\/li>\n<li>No settings, stored data or behaviour change. The renamed transients are short-lived caches that simply expire.<\/li>\n<\/ul>\n\n<h4>0.12.6<\/h4>\n\n<ul>\n<li>Security hardening: the bundled support assistant now sends its requests with wp_safe_remote_post() instead of wp_remote_post(). The support endpoint can be changed by an administrator, so the destination counts as user input; the safe variant validates it and rejects private, loopback and link-local addresses, and applies the same validation to redirects. No change for the normal support service.<\/li>\n<li>Fixed: the support settings form unslashed its input twice, which could silently drop a backslash from a saved token or endpoint.<\/li>\n<li>Internal: reworded two comments describing Freemius so they state plainly that WordPress.org supplies updates to this free package and that the separately distributed Pro implementation is not included in it.<\/li>\n<\/ul>\n\n<h4>0.12.5<\/h4>\n\n<ul>\n<li>Changed: whether an AI provider is ready is now determined entirely by WordPress core. The plugin no longer inspects any provider credential - not its option, not a constant, not an environment variable - since those belong to the Connectors screen and are not a plugin's to read. The Setup tab therefore no longer shows a per-provider \"Key set\" column; the overall readiness state is unchanged and still shown.<\/li>\n<li>Fixed: the Plugin URI in the plugin header pointed at a page that does not exist. It now points to the ExcerptBuilder product page.<\/li>\n<\/ul>\n\n<h4>0.12.4<\/h4>\n\n<ul>\n<li>Documentation: corrected the description of Freemius in the external services section. Updates to this free package come from WordPress.org, and the free plugin does not download or install the separately distributed Pro package. Added a \"Source code and build tools\" section covering the one compiled file in the bundled Freemius SDK and the local SDK patch. No behaviour change.<\/li>\n<\/ul>\n\n<h4>0.12.3<\/h4>\n\n<ul>\n<li>Corrected the description of what happens at publish time. Scheduled, imported and REST-driven publishes write the excerpt directly by default; the previous wording implied every generated excerpt waited for approval. Documentation only, no behaviour change.<\/li>\n<\/ul>\n\n<h4>0.12.2<\/h4>\n\n<ul>\n<li>Internal: corrected documentation comments in the bundled support-assistant module and its wiring. No functional change.<\/li>\n<\/ul>\n\n<h4>0.12.1<\/h4>\n\n<ul>\n<li>Internal: a file in the bundled support-assistant module now carries its direct-access guard nearer the top, satisfying an automated WordPress.org check. No behaviour changes.<\/li>\n<\/ul>\n\n<h4>0.12.0<\/h4>\n\n<ul>\n<li>Internal: the bundled support-assistant module moved into its own namespace, replacing global class names that used a short prefix. Housekeeping for WordPress.org coding guidelines; nothing you interact with changes.<\/li>\n<li>If another PublisherKits plugin on the site still bundles the older module, ExcerptBuilder now pauses its own Help assistant and explains why, instead of a second assistant appearing. Every other ExcerptBuilder feature carries on as normal, and the assistant returns automatically once that plugin is updated.<\/li>\n<\/ul>\n\n<h4>0.11.1<\/h4>\n\n<ul>\n<li>ExcerptBuilder can now be installed on its own. It creates the PublisherKits menu itself when no other PublisherKits plugin is present, and joins the existing one when there is - so the settings screen is always reachable, and the menu is never duplicated. A Settings link has also been added on the Plugins screen.<\/li>\n<li>Every settings form on the ExcerptBuilder screen - AI settings, publication context and support - now follows the standard WordPress save-and-redirect pattern, so refreshing the page after a save no longer re-submits the form.<\/li>\n<li>The support assistant's privacy notice now lists exactly what is sent, including your site address and licence installation identifier, and explains that when this site has its own AI provider your question goes to that provider rather than to the support service.<\/li>\n<li>The plugin description now states accurately that ExcerptBuilder works on standard WordPress posts.<\/li>\n<li>Excerpt generation and saving are restricted to the post types ExcerptBuilder is configured for, and can no longer act on a revision or an autosave.<\/li>\n<li>Added a full Installation section, and rewrote the external-services documentation so the licensing service, your AI provider and the optional support assistant are each described separately, with what is sent, when, and how long it is kept.<\/li>\n<\/ul>\n\n<h4>0.10.2<\/h4>\n\n<ul>\n<li>The plugin no longer loads its translations before WordPress is ready for them, which removed a notice on sites running with debugging enabled.<\/li>\n<\/ul>\n\n<h4>0.10.1<\/h4>\n\n<ul>\n<li>The post-editor note about filling excerpts in bulk is now a plain upgrade note in the free edition, and the link to run a bulk fill is added by the Pro edition itself - so the free edition never shows a link to a screen it does not have.<\/li>\n<li>Bulk Fill is included only in the separately distributed Pro package.<\/li>\n<\/ul>\n\n<h4>0.10.0<\/h4>\n\n<ul>\n<li>ExcerptBuilder now has a Pro tier, managed with the Freemius licensing SDK. All on-demand and at-publish excerpt generation stays free: the Write, Rewrite, and Tidy edit modes, the publish-time auto-draft, SEO-aware writing, audience and author framing, and model control.<\/li>\n<li>Bulk Fill - backfilling excerpts across your whole published archive in one operated run - is now an ExcerptBuilder Pro feature. In the free build it is absent; a link in the post editor points to how to add it.<\/li>\n<li>Freemius opt-in is optional: skipping it leaves every free feature fully working.<\/li>\n<li>Added the Support Copilot - a Help button on ExcerptBuilder screens that answers usage and setup questions in a popup, grounded in version-matched documentation. It answers on your own AI provider when one is connected (at your expense, labelled in the chat), otherwise via the support service, and can raise a support ticket with the conversation attached. Ships in both the free and Pro builds; authorises by licence or an admin-entered token (no secret in the plugin) and asks for consent before sending anything.<\/li>\n<\/ul>\n\n<h4>0.9.0<\/h4>\n\n<ul>\n<li>Added Bulk Fill: from the ExcerptBuilder settings page you can now scan all published posts that have no excerpt and write one for each in a single run. The run works through the backlog in small batches from the browser - with a live count, progress bar, per-post log, and a Stop button - so large archives never hit a PHP timeout, and you can resume later. Choose to write excerpts directly or hold each for review in the post editor. Respects your configured post types, default length, and tone.<\/li>\n<li>Bulk Fill now shows a breakdown of how many posts are missing an excerpt by year, and the run log shows each excerpt as it is written with a link to the post editor for quick checking.<\/li>\n<li>Bulk Fill processes newest posts first by default (better SEO - recent posts get excerpts first), with an Oldest-first option. Ordering is by publication date.<\/li>\n<li>Bulk Fill run loop is leaner: larger batches, the progress count is tracked in the browser instead of re-counting the whole archive every batch, and transient request failures are retried so a long run is not aborted by a single blip.<\/li>\n<li>The settings page is now organised into Setup, Customize, and Fill missing excerpts tabs.<\/li>\n<li>Excerpt generation now decodes HTML entities in the title and content before prompting the model, so imported content (e.g. entity-encoded quotes from a CSV import) produces clean excerpts.<\/li>\n<li>Added PKEB_Read::get_missing_excerpt_count() - a public read method so Insight Engine can surface how many published posts are missing an excerpt.<\/li>\n<\/ul>\n\n<h4>0.8.2<\/h4>\n\n<ul>\n<li>Added PKEB_Read::get_pending_draft_count() - a public read method so Insight Engine can surface the number of auto-drafted excerpts awaiting approval as a tactical finding. Uses an efficient COUNT query, cached for five minutes and flushed whenever a draft is held, approved, or discarded.<\/li>\n<\/ul>\n\n<h4>0.8.1<\/h4>\n\n<ul>\n<li>Adopted the PublisherKits Suite Admin Menu Standard. ExcerptBuilder now registers as a guest under the PublisherKits menu (owned by Insight Engine) at hook priority 30, with no parent-creation race. Fixes duplicate menu entries and ordering when multiple suite plugins are active.<\/li>\n<\/ul>\n\n<h4>0.8.0<\/h4>\n\n<ul>\n<li>Added author context: Write and Rewrite prompts now include the post author's role, employer, and a short bio summary so excerpts are framed for the contributor's expertise. Reads BioBuilder's author bridge when present (covering third-party author plugins too), or the WP core author description otherwise. Tidy mode is unaffected.<\/li>\n<\/ul>\n\n<h4>0.7.0<\/h4>\n\n<ul>\n<li>Auto-draft generation is now offloaded to an async background event instead of running inside the publish request. This prevents timeouts during scheduled-cron batches and bulk publishes.<\/li>\n<li>Added a \"Delete all data on uninstall\" setting (default off) so settings survive a reinstall.<\/li>\n<li>Scheduled events are cleared on deactivation and uninstall.<\/li>\n<li>Added wp_unslash() to all superglobal reads for coding-standards compliance.<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>Excerpts are now confirmed at the publish step. When an editor publishes a post with no excerpt, a draft appears immediately for confirmation or rewrite - in the Block editor pre-publish panel and in a Classic editor modal - so no post goes live blank.<\/li>\n<li>Scheduled and automated publishes (no editor present) write the excerpt directly by default, with a setting to hold for review instead.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Excerpts now follow SEO best practice (front-loaded, snippet-length, self-contained, no clickbait) in Write and Rewrite modes.<\/li>\n<li>Reads shared PublisherKits site context (Insight Engine site profile or ES Intelligence site context) to frame excerpts for the publication's audience and goals.<\/li>\n<li>Added a Site &amp; Audience settings section as a fallback when no shared context is present.<\/li>\n<li>Settings page reachable at both publisherkits-excerptbuilder and excerptbuilder slugs for cross-plugin links.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Rebuilt on the WordPress AI Client exclusively (wp_ai_client_prompt). No bespoke key storage.<\/li>\n<li>Three edit modes: Write, Rewrite, Tidy.<\/li>\n<li>Auto-draft on publish, held for review in the meta box.<\/li>\n<li>Model discovery, preference, and strict mode.<\/li>\n<li>Self-test on the settings page.<\/li>\n<\/ul>","raw_excerpt":"AI-powered excerpt generation using the WordPress AI Client. Write, rewrite, or tidy excerpts on demand, or auto-draft them on publish for review.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/346481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=346481"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/publisherkits"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=346481"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=346481"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=346481"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=346481"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=346481"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=346481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}