{"id":363471,"date":"2026-09-10T09:26:18","date_gmt":"2026-09-10T09:26:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/katalizator-ai-chat-bot\/"},"modified":"2026-09-12T17:19:41","modified_gmt":"2026-09-12T17:19:41","slug":"zuczkowski-ai-chat-assistant","status":"publish","type":"plugin","link":"https:\/\/cor.wordpress.org\/plugins\/zuczkowski-ai-chat-assistant\/","author":23548815,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.3","stable_tag":"2.0.3","tested":"7.1.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Zuczkowski AI Chat Assistant","header_author":"Miros\u0142aw \u017buczkowski","header_description":"A simple, configurable AI chat widget for your site. Supports ChatGPT (OpenAI), Google Gemini, DeepSeek, and Claude (Anthropic). Use your own API key for free.","assets_banners_color":"","last_updated":"2026-09-12 17:19:41","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/zuczkowski.com.pl","rating":0,"author_block_rating":0,"active_installs":0,"downloads":177,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.1":{"tag":"2.0.1","author":"katalizatorai","date":"2026-09-10 09:25:58","revision":3689635},"2.0.2":{"tag":"2.0.2","author":"katalizatorai","date":"2026-09-11 20:34:14","revision":3692066},"2.0.3":{"tag":"2.0.3","author":"katalizatorai","date":"2026-09-12 17:19:41","revision":3692953}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3689740,"resolution":false,"location":"assets","locale":false}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.1","2.0.2","2.0.3"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2353,2364,216196,229563,224606],"plugin_category":[],"plugin_contributors":[280070],"plugin_business_model":[],"class_list":["post-363471","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chatbot","plugin_tags-chatgpt","plugin_tags-claude","plugin_tags-gemini","plugin_contributors-katalizatorai","plugin_committers-katalizatorai"],"banners":[],"icons":{"svg":"https:\/\/ps.w.org\/zuczkowski-ai-chat-assistant\/assets\/icon.svg?rev=3689740","icon":"https:\/\/ps.w.org\/zuczkowski-ai-chat-assistant\/assets\/icon.svg?rev=3689740","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Zuczkowski AI Chat Assistant adds a floating chat widget to your site that answers visitor questions using the AI model you choose:<\/p>\n\n<ul>\n<li><strong>ChatGPT (OpenAI)<\/strong><\/li>\n<li><strong>Google Gemini<\/strong><\/li>\n<li><strong>DeepSeek<\/strong><\/li>\n<li><strong>Claude (Anthropic)<\/strong><\/li>\n<\/ul>\n\n<p>The free version is fully functional: paste your own API key for the provider you choose in the settings panel, adjust the system prompt, and the widget is ready.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Choice of 4 AI providers: ChatGPT (OpenAI), Google Gemini, DeepSeek, Claude (Anthropic)<\/li>\n<li>Model selection per provider - use the pre-filled default or enter any other model the provider supports<\/li>\n<li>Configurable system prompt: control what the bot knows, its tone, and what it should or shouldn't answer<\/li>\n<li>Optional bot name - if set, the bot introduces itself with it<\/li>\n<li>Chat widget inserted automatically, or manually via the <code>[zuczek_chat_widget]<\/code> shortcode<\/li>\n<li>Widget position: bottom-left or bottom-right<\/li>\n<li>Built-in AI disclosure message required by the EU AI Act (Article 50, in effect since August 2, 2026) - wording is editable<\/li>\n<li>API keys stored encrypted in the database (AES-256-GCM)<\/li>\n<li>Test a provider connection before saving the key<\/li>\n<li>Settings history with one-click restore, in case a change breaks something<\/li>\n<li>Rate limiting: a per-IP message limit and a daily site-wide limit, to protect your API budget<\/li>\n<li>Optional email notification when a visitor starts a new conversation<\/li>\n<li>Optional log of recent conversations, capped at 50 entries with automatic cleanup<\/li>\n<li>Uses the WordPress REST API (no external JS dependencies)<\/li>\n<\/ul>\n\n<h4>Planned Pro add-on<\/h4>\n\n<p>A separate, paid Pro add-on (sold outside this repository) is in development, for users who need more than the basic free version. Details and feature scope will be announced closer to launch.<\/p>\n\n<p>This plugin (the free version) works fully on its own and does not require any add-on.<\/p>\n\n<p>If you like this plugin, please leave a <a href=\"https:\/\/wordpress.org\/support\/plugin\/zuczkowski-ai-chat-assistant\/reviews\/#new-post\">5-star review<\/a> - it helps keep it free and updated.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to external AI services to generate replies in the chat widget. The connection happens only when a visitor sends a message through the widget, and only to the provider selected by the administrator in the plugin settings.<\/p>\n\n<p>Depending on the provider selected, the visitor's message content and the last few messages from the conversation history are sent to:<\/p>\n\n<ul>\n<li><p><strong>OpenAI<\/strong> (api.openai.com) - used when ChatGPT is selected as the provider.\nTerms of use: https:\/\/openai.com\/policies\/terms-of-use\nPrivacy policy: https:\/\/openai.com\/policies\/privacy-policy<\/p><\/li>\n<li><p><strong>Google (Gemini API)<\/strong> (generativelanguage.googleapis.com) - used when Gemini is selected as the provider.\nTerms of use: https:\/\/ai.google.dev\/gemini-api\/terms\nPrivacy policy: https:\/\/policies.google.com\/privacy<\/p><\/li>\n<li><p><strong>DeepSeek<\/strong> (api.deepseek.com) - used when DeepSeek is selected as the provider.\nTerms of use: https:\/\/cdn.deepseek.com\/policies\/en-US\/deepseek-open-platform-terms-of-service.html\nPrivacy policy: https:\/\/cdn.deepseek.com\/policies\/en-US\/deepseek-privacy-policy.html<\/p><\/li>\n<li><p><strong>Anthropic<\/strong> (api.anthropic.com) - used when Claude is selected as the provider.\nTerms of use: https:\/\/www.anthropic.com\/legal\/consumer-terms\nPrivacy policy: https:\/\/www.anthropic.com\/legal\/privacy<\/p><\/li>\n<\/ul>\n\n<p>The API key needed to connect to the selected provider is supplied by the site administrator (by creating an account with that provider). The plugin does not send any data to any of these services without an active interaction from a visitor with the chat widget.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>, or install it through the \"Plugins\" screen in WordPress.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to <strong>AI Chat Bot<\/strong> in the admin sidebar menu.<\/li>\n<li>Choose a provider (OpenAI \/ Gemini \/ DeepSeek \/ Claude) and paste the matching API key.<\/li>\n<li>Save the settings - the chat widget appears on your site automatically.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20my%20own%20api%20key%3F\"><h3>Do I need my own API key?<\/h3><\/dt>\n<dd><p>Yes, in the free version. You get one by creating an account with the provider you choose (OpenAI, Google AI Studio, DeepSeek, or Anthropic\/Claude).<\/p><\/dd>\n<dt id=\"can%20i%20choose%20which%20ai%20model%20to%20use%3F\"><h3>Can I choose which AI model to use?<\/h3><\/dt>\n<dd><p>Yes. Each provider has a pre-filled default model, but the model field is a plain text input - enter any other model name the provider supports. Use \"Test connection\" to check it works before saving.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20how%20the%20bot%20responds%3F\"><h3>Can I customize how the bot responds?<\/h3><\/dt>\n<dd><p>Yes, through the system prompt field. Describe what the bot should know about your site or business, how it should sound, what topics to stick to, and what to say when it doesn't know an answer.<\/p><\/dd>\n<dt id=\"is%20this%20compliant%20with%20the%20eu%20ai%20act%3F\"><h3>Is this compliant with the EU AI Act?<\/h3><\/dt>\n<dd><p>The widget shows visitors a disclosure that they're talking to an AI system, as required by Article 50 of the EU AI Act (in effect since August 2, 2026). It appears automatically in the chat header and as the first message; you can edit the wording but not remove it.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20settings%20change%20breaks%20something%3F\"><h3>What happens if a settings change breaks something?<\/h3><\/dt>\n<dd><p>Every saved change is added to a short history on the settings page. Restore any previous version with one click.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20store%20my%20conversation%20data%20anywhere%3F\"><h3>Does the plugin store my conversation data anywhere?<\/h3><\/dt>\n<dd><p>Not by default - the conversation history only exists in the visitor's browser, for the current session. The administrator can optionally enable a log of recent conversations (\"Conversation log\" section in settings, disabled by default) - when enabled, the first message and reply from each new conversation, along with the IP address, are saved to the WordPress database, visible to administrators only, capped at 50 entries with automatic cleanup after a set number of days. If you enable this, mention it in your site's privacy policy.<\/p><\/dd>\n<dt id=\"can%20i%20use%20more%20than%20one%20bot%20on%20my%20site%3F\"><h3>Can I use more than one bot on my site?<\/h3><\/dt>\n<dd><p>This (free) version supports one, global bot configuration.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>Security hardening: the system prompt now always includes an instruction telling the model to disregard attempts, embedded in a visitor's message, to override its instructions or reveal them.<\/li>\n<li>The server now keeps its own short-lived record of each conversation (expires after 1 hour of inactivity) instead of trusting the conversation history sent by the browser, closing a prompt-injection-via-forged-history vector.<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Added a \"Rate this plugin\" link on the Plugins screen and in the plugin description.<\/li>\n<li>Expanded the Features list and FAQ to cover model selection, system prompt customization, AI Act disclosure, and settings history\/undo.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Renamed all internal function, class, option, and hook names from the <code>aicb<\/code>\/<code>AICB_<\/code> prefix to <code>zuczek<\/code>\/<code>ZUCZEK_<\/code>, per a WordPress.org review requirement (the old prefix was flagged as too generic\/common to safely avoid collisions with other plugins).<\/li>\n<li>The chat widget shortcode is now <code>[zuczek_chat_widget]<\/code>. Removed the old, unprefixed <code>[ai_chat_widget]<\/code> alias - also flagged as too generic.<\/li>\n<li>Fixed a race condition in the per-IP and daily message rate limiters: the counters now increment atomically instead of a plain read-then-write, so concurrent requests can no longer slip past the configured limits.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Renamed the plugin to \"Zuczkowski AI Chat Assistant\" (slug: zuczkowski-ai-chat-assistant) to resolve a trademark conflict flagged during the WordPress.org review.<\/li>\n<li>The chat widget shortcode is now <code>[aicb_chat_widget]<\/code> (prefixed); the old <code>[ai_chat_widget]<\/code> still works as an alias.<\/li>\n<li>The \"Powered by\" footer link is now off by default and must be turned on explicitly in settings.<\/li>\n<li>Moved <code>load_plugin_textdomain()<\/code> to the <code>init<\/code> hook (was <code>plugins_loaded<\/code>).<\/li>\n<li>Fixed outdated DeepSeek Terms of Use \/ Privacy Policy links in the External Services disclosure.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>The chat widget is now hidden from visitors until an API key is configured for the active provider - previously it always appeared once enabled, so visitors could open a chat that immediately replied with an error. Added an admin notice explaining this when no key is set.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Added a \"Powered by\" footer toggle in settings (Widget appearance section), letting you turn off the \"Powered by Katalizator AI\" link at the bottom of the chat independently of Free\/Pro version. Enabled by default.<\/li>\n<li>Added an optional email notification (Email notifications section, disabled by default) to the WordPress admin address when a visitor starts a new conversation with the bot. Includes a short preview of the first message, throttled to at most one email every 5 minutes.<\/li>\n<li>Added an optional log of recent conversations (Conversation log section, disabled by default; new \"AI Chat Bot \u2192 Conversations\" screen) - first message and reply per conversation, capped at the 50 most recent entries, automatic cleanup after a set number of days (WP-Cron), a button to clear it permanently. When the log is enabled, the email notification links straight to the logged conversation instead of just the homepage.<\/li>\n<li>Prepared for submission to the WordPress.org plugin repository: trimmed the short description to the 150-character limit, trimmed tags to 5, filled in <code>Contributors<\/code>, toned down mentions of the not-yet-built Pro version (plugin description, settings panel, FAQ) to avoid listing features that don't exist yet.<\/li>\n<li>Rewrote the plugin's source strings from Polish to English (the WordPress.org convention), with Polish shipped as a bundled translation (<code>languages\/katalizator-ai-chat-bot-pl_PL.mo<\/code>).<\/li>\n<\/ul>\n\n<h4>1.0.7-beta<\/h4>\n\n<ul>\n<li>Fixed a double-encryption bug in the API keys: <code>sanitize_settings()<\/code> was hooked as the global <code>sanitize_option_aicb_settings<\/code> filter, which fires on EVERY <code>update_option()<\/code> call on that option, not just when the settings form is submitted. This caused two problems - (1) the \"Delete key\" button would silently restore the old value instead of actually deleting it, and (2) every \"Delete key\" or history \"Restore\" call would re-encrypt the other, already-encrypted provider keys, corrupting them over time. <code>handle_delete_key()<\/code> and <code>handle_restore_settings()<\/code> now temporarily remove this filter before their own <code>update_option()<\/code> call.<\/li>\n<\/ul>\n\n<h4>1.0.6-beta<\/h4>\n\n<ul>\n<li>Added the ability to permanently delete a saved API key from the database (a \"Delete key\" button next to \"Test connection\" for each provider). The action can be undone via the \"Change History\" panel.<\/li>\n<li>Updated the documentation - it was missing mentions of Claude (Anthropic) support, added in the previous version.<\/li>\n<\/ul>\n\n<h4>1.0.5-beta<\/h4>\n\n<ul>\n<li>Fixed a stale-security-token risk under long page-cache TTLs (e.g. LiteSpeed Cache) - the widget now fetches a fresh nonce when the chat is opened.<\/li>\n<\/ul>\n\n<h4>1.0.4-beta<\/h4>\n\n<ul>\n<li>Removed the download counter (moved to a separate, non-distributed plugin \"Katalizator Site Tools\" - not a product feature, just a marketing tool for the zuczkowski.com.pl site).<\/li>\n<\/ul>\n\n<h4>1.0.3-beta<\/h4>\n\n<ul>\n<li>Added a full LICENSE.txt file (GPLv2) - required before publishing to the WordPress.org repository.<\/li>\n<\/ul>\n\n<h4>1.0.2-beta<\/h4>\n\n<ul>\n<li>Switched API key encryption from AES-256-CBC to AES-256-GCM (authenticated encryption), keeping backward compatibility.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"An AI chat widget for your WordPress site - ChatGPT, Gemini, DeepSeek, and Claude. Use your own API key and go live for free.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/363471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=363471"}],"author":[{"embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/katalizatorai"}],"wp:attachment":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=363471"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=363471"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=363471"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=363471"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=363471"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=363471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}